Skip to content

Repository files navigation

@aholbreich/pi-tl

Pi extension package for tl, the Git-native TaskLedger CLI.

This package shells out to the local tl binary. It does not bundle or install tl.

Task Ledger board overlay

Requirements

  • pi
  • tl available on PATH
  • Run Pi from a repository initialized with tl init for normal use

Installation

pi install npm:@aholbreich/pi-tl

Or install from local sources:

pi install /home/aho/git/pi-tl

For project-local installation, add -l:

pi install -l npm:@aholbreich/pi-tl

Try locally

From any repository where you want to use TaskLedger:

pi -e /home/aho/git/pi

Agent usage

The extension intentionally does not mirror the full tl CLI as Pi agent tools. The agent should use plain tl ... commands directly for normal ledger work (tl ready, tl show, tl claim, tl note, tl close, etc.). This keeps the extension from drifting behind upstream tl.

One helper remains because it adds orchestration beyond a single CLI call:

  • tl_bulk_create - create multiple task ledger tasks sequentially from a user-approved cleaned list and report partial failures.

When .tl/ exists in the current repository, the extension nudges the agent to use the normal task ledger workflow through the tl CLI: ready → claim → note → close/block/pending/cancel/release.

Commands

A live Task Ledger overlay is shown above the editor when the current repository has a ledger and at least one ready/in-progress/blocked/pending/stale task. It keeps tl as the source of truth by refreshing from tl --json output on session start, compaction/tree navigation, and successful tl_bulk_create executions. Use Alt+T to show/hide this passive overlay during the current session. The footer status shows the installed tl version plus compact colored counts, for example tl 0.9.0: ○3 ▲1.

Human-facing commands focus on the overlay workflow. Agent tools keep color disabled for clean JSON/model output.

  • /tl-capture - open an editor for rough todos, then ask the agent to refine and create clean tasks
  • /tl-board or Alt+L - open a keyboard-navigable modal board for ready, in-progress, blocked, pending, and stale tasks; use arrows/j/k to move, enter/d for in-modal details, b/esc to return, i/r/v/p for implement/refine/review/plan, c to cancel with a reason, x to remove with a reason, and a to toggle between focused (active) and all (including done/cancelled) views
  • /tl-init - initialize task ledger after confirmation

Development

npm install
npm run check
npm test

Pi loads TypeScript extensions directly, so no build step is required.

About

pi extensions

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - aholbreich/pi: pi extensions · GitHub
Skip to content

Repository files navigation

@aholbreich/pi-tl

Pi extension package for tl, the Git-native TaskLedger CLI.

This package shells out to the local tl binary. It does not bundle or install tl.

Task Ledger board overlay

Requirements

  • pi
  • tl available on PATH
  • Run Pi from a repository initialized with tl init for normal use

Installation

pi install npm:@aholbreich/pi-tl

Or install from local sources:

pi install /home/aho/git/pi-tl

For project-local installation, add -l:

pi install -l npm:@aholbreich/pi-tl

Try locally

From any repository where you want to use TaskLedger:

pi -e /home/aho/git/pi

Agent usage

The extension intentionally does not mirror the full tl CLI as Pi agent tools. The agent should use plain tl ... commands directly for normal ledger work (tl ready, tl show, tl claim, tl note, tl close, etc.). This keeps the extension from drifting behind upstream tl.

One helper remains because it adds orchestration beyond a single CLI call:

  • tl_bulk_create - create multiple task ledger tasks sequentially from a user-approved cleaned list and report partial failures.

When .tl/ exists in the current repository, the extension nudges the agent to use the normal task ledger workflow through the tl CLI: ready → claim → note → close/block/pending/cancel/release.

Commands

A live Task Ledger overlay is shown above the editor when the current repository has a ledger and at least one ready/in-progress/blocked/pending/stale task. It keeps tl as the source of truth by refreshing from tl --json output on session start, compaction/tree navigation, and successful tl_bulk_create executions. Use Alt+T to show/hide this passive overlay during the current session. The footer status shows the installed tl version plus compact colored counts, for example tl 0.9.0: ○3 ▲1.

Human-facing commands focus on the overlay workflow. Agent tools keep color disabled for clean JSON/model output.

  • /tl-capture - open an editor for rough todos, then ask the agent to refine and create clean tasks
  • /tl-board or Alt+L - open a keyboard-navigable modal board for ready, in-progress, blocked, pending, and stale tasks; use arrows/j/k to move, enter/d for in-modal details, b/esc to return, i/r/v/p for implement/refine/review/plan, c to cancel with a reason, x to remove with a reason, and a to toggle between focused (active) and all (including done/cancelled) views
  • /tl-init - initialize task ledger after confirmation

Development

npm install
npm run check
npm test

Pi loads TypeScript extensions directly, so no build step is required.

About

pi extensions

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - aholbreich/pi: pi extensions · GitHub
Skip to content

Repository files navigation

@aholbreich/pi-tl

Pi extension package for tl, the Git-native TaskLedger CLI.

This package shells out to the local tl binary. It does not bundle or install tl.

Task Ledger board overlay

Requirements

  • pi
  • tl available on PATH
  • Run Pi from a repository initialized with tl init for normal use

Installation

pi install npm:@aholbreich/pi-tl

Or install from local sources:

pi install /home/aho/git/pi-tl

For project-local installation, add -l:

pi install -l npm:@aholbreich/pi-tl

Try locally

From any repository where you want to use TaskLedger:

pi -e /home/aho/git/pi

Agent usage

The extension intentionally does not mirror the full tl CLI as Pi agent tools. The agent should use plain tl ... commands directly for normal ledger work (tl ready, tl show, tl claim, tl note, tl close, etc.). This keeps the extension from drifting behind upstream tl.

One helper remains because it adds orchestration beyond a single CLI call:

  • tl_bulk_create - create multiple task ledger tasks sequentially from a user-approved cleaned list and report partial failures.

When .tl/ exists in the current repository, the extension nudges the agent to use the normal task ledger workflow through the tl CLI: ready → claim → note → close/block/pending/cancel/release.

Commands

A live Task Ledger overlay is shown above the editor when the current repository has a ledger and at least one ready/in-progress/blocked/pending/stale task. It keeps tl as the source of truth by refreshing from tl --json output on session start, compaction/tree navigation, and successful tl_bulk_create executions. Use Alt+T to show/hide this passive overlay during the current session. The footer status shows the installed tl version plus compact colored counts, for example tl 0.9.0: ○3 ▲1.

Human-facing commands focus on the overlay workflow. Agent tools keep color disabled for clean JSON/model output.

  • /tl-capture - open an editor for rough todos, then ask the agent to refine and create clean tasks
  • /tl-board or Alt+L - open a keyboard-navigable modal board for ready, in-progress, blocked, pending, and stale tasks; use arrows/j/k to move, enter/d for in-modal details, b/esc to return, i/r/v/p for implement/refine/review/plan, c to cancel with a reason, x to remove with a reason, and a to toggle between focused (active) and all (including done/cancelled) views
  • /tl-init - initialize task ledger after confirmation

Development

npm install
npm run check
npm test

Pi loads TypeScript extensions directly, so no build step is required.

About

pi extensions

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - aholbreich/pi: pi extensions · GitHub
Skip to content

Repository files navigation

@aholbreich/pi-tl

Pi extension package for tl, the Git-native TaskLedger CLI.

This package shells out to the local tl binary. It does not bundle or install tl.

Task Ledger board overlay

Requirements

  • pi
  • tl available on PATH
  • Run Pi from a repository initialized with tl init for normal use

Installation

pi install npm:@aholbreich/pi-tl

Or install from local sources:

pi install /home/aho/git/pi-tl

For project-local installation, add -l:

pi install -l npm:@aholbreich/pi-tl

Try locally

From any repository where you want to use TaskLedger:

pi -e /home/aho/git/pi

Agent usage

The extension intentionally does not mirror the full tl CLI as Pi agent tools. The agent should use plain tl ... commands directly for normal ledger work (tl ready, tl show, tl claim, tl note, tl close, etc.). This keeps the extension from drifting behind upstream tl.

One helper remains because it adds orchestration beyond a single CLI call:

  • tl_bulk_create - create multiple task ledger tasks sequentially from a user-approved cleaned list and report partial failures.

When .tl/ exists in the current repository, the extension nudges the agent to use the normal task ledger workflow through the tl CLI: ready → claim → note → close/block/pending/cancel/release.

Commands

A live Task Ledger overlay is shown above the editor when the current repository has a ledger and at least one ready/in-progress/blocked/pending/stale task. It keeps tl as the source of truth by refreshing from tl --json output on session start, compaction/tree navigation, and successful tl_bulk_create executions. Use Alt+T to show/hide this passive overlay during the current session. The footer status shows the installed tl version plus compact colored counts, for example tl 0.9.0: ○3 ▲1.

Human-facing commands focus on the overlay workflow. Agent tools keep color disabled for clean JSON/model output.

  • /tl-capture - open an editor for rough todos, then ask the agent to refine and create clean tasks
  • /tl-board or Alt+L - open a keyboard-navigable modal board for ready, in-progress, blocked, pending, and stale tasks; use arrows/j/k to move, enter/d for in-modal details, b/esc to return, i/r/v/p for implement/refine/review/plan, c to cancel with a reason, x to remove with a reason, and a to toggle between focused (active) and all (including done/cancelled) views
  • /tl-init - initialize task ledger after confirmation

Development

npm install
npm run check
npm test

Pi loads TypeScript extensions directly, so no build step is required.

About

pi extensions

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - aholbreich/pi: pi extensions · GitHub
Skip to content

Repository files navigation

@aholbreich/pi-tl

Pi extension package for tl, the Git-native TaskLedger CLI.

This package shells out to the local tl binary. It does not bundle or install tl.

Task Ledger board overlay

Requirements

  • pi
  • tl available on PATH
  • Run Pi from a repository initialized with tl init for normal use

Installation

pi install npm:@aholbreich/pi-tl

Or install from local sources:

pi install /home/aho/git/pi-tl

For project-local installation, add -l:

pi install -l npm:@aholbreich/pi-tl

Try locally

From any repository where you want to use TaskLedger:

pi -e /home/aho/git/pi

Agent usage

The extension intentionally does not mirror the full tl CLI as Pi agent tools. The agent should use plain tl ... commands directly for normal ledger work (tl ready, tl show, tl claim, tl note, tl close, etc.). This keeps the extension from drifting behind upstream tl.

One helper remains because it adds orchestration beyond a single CLI call:

  • tl_bulk_create - create multiple task ledger tasks sequentially from a user-approved cleaned list and report partial failures.

When .tl/ exists in the current repository, the extension nudges the agent to use the normal task ledger workflow through the tl CLI: ready → claim → note → close/block/pending/cancel/release.

Commands

A live Task Ledger overlay is shown above the editor when the current repository has a ledger and at least one ready/in-progress/blocked/pending/stale task. It keeps tl as the source of truth by refreshing from tl --json output on session start, compaction/tree navigation, and successful tl_bulk_create executions. Use Alt+T to show/hide this passive overlay during the current session. The footer status shows the installed tl version plus compact colored counts, for example tl 0.9.0: ○3 ▲1.

Human-facing commands focus on the overlay workflow. Agent tools keep color disabled for clean JSON/model output.

  • /tl-capture - open an editor for rough todos, then ask the agent to refine and create clean tasks
  • /tl-board or Alt+L - open a keyboard-navigable modal board for ready, in-progress, blocked, pending, and stale tasks; use arrows/j/k to move, enter/d for in-modal details, b/esc to return, i/r/v/p for implement/refine/review/plan, c to cancel with a reason, x to remove with a reason, and a to toggle between focused (active) and all (including done/cancelled) views
  • /tl-init - initialize task ledger after confirmation

Development

npm install
npm run check
npm test

Pi loads TypeScript extensions directly, so no build step is required.

About

pi extensions

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - aholbreich/pi: pi extensions · GitHub
Skip to content

Repository files navigation

@aholbreich/pi-tl

Pi extension package for tl, the Git-native TaskLedger CLI.

This package shells out to the local tl binary. It does not bundle or install tl.

Task Ledger board overlay

Requirements

  • pi
  • tl available on PATH
  • Run Pi from a repository initialized with tl init for normal use

Installation

pi install npm:@aholbreich/pi-tl

Or install from local sources:

pi install /home/aho/git/pi-tl

For project-local installation, add -l:

pi install -l npm:@aholbreich/pi-tl

Try locally

From any repository where you want to use TaskLedger:

pi -e /home/aho/git/pi

Agent usage

The extension intentionally does not mirror the full tl CLI as Pi agent tools. The agent should use plain tl ... commands directly for normal ledger work (tl ready, tl show, tl claim, tl note, tl close, etc.). This keeps the extension from drifting behind upstream tl.

One helper remains because it adds orchestration beyond a single CLI call:

  • tl_bulk_create - create multiple task ledger tasks sequentially from a user-approved cleaned list and report partial failures.

When .tl/ exists in the current repository, the extension nudges the agent to use the normal task ledger workflow through the tl CLI: ready → claim → note → close/block/pending/cancel/release.

Commands

A live Task Ledger overlay is shown above the editor when the current repository has a ledger and at least one ready/in-progress/blocked/pending/stale task. It keeps tl as the source of truth by refreshing from tl --json output on session start, compaction/tree navigation, and successful tl_bulk_create executions. Use Alt+T to show/hide this passive overlay during the current session. The footer status shows the installed tl version plus compact colored counts, for example tl 0.9.0: ○3 ▲1.

Human-facing commands focus on the overlay workflow. Agent tools keep color disabled for clean JSON/model output.

  • /tl-capture - open an editor for rough todos, then ask the agent to refine and create clean tasks
  • /tl-board or Alt+L - open a keyboard-navigable modal board for ready, in-progress, blocked, pending, and stale tasks; use arrows/j/k to move, enter/d for in-modal details, b/esc to return, i/r/v/p for implement/refine/review/plan, c to cancel with a reason, x to remove with a reason, and a to toggle between focused (active) and all (including done/cancelled) views
  • /tl-init - initialize task ledger after confirmation

Development

npm install
npm run check
npm test

Pi loads TypeScript extensions directly, so no build step is required.

About

pi extensions

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - aholbreich/pi: pi extensions · GitHub
Skip to content

Repository files navigation

@aholbreich/pi-tl

Pi extension package for tl, the Git-native TaskLedger CLI.

This package shells out to the local tl binary. It does not bundle or install tl.

Task Ledger board overlay

Requirements

  • pi
  • tl available on PATH
  • Run Pi from a repository initialized with tl init for normal use

Installation

pi install npm:@aholbreich/pi-tl

Or install from local sources:

pi install /home/aho/git/pi-tl

For project-local installation, add -l:

pi install -l npm:@aholbreich/pi-tl

Try locally

From any repository where you want to use TaskLedger:

pi -e /home/aho/git/pi

Agent usage

The extension intentionally does not mirror the full tl CLI as Pi agent tools. The agent should use plain tl ... commands directly for normal ledger work (tl ready, tl show, tl claim, tl note, tl close, etc.). This keeps the extension from drifting behind upstream tl.

One helper remains because it adds orchestration beyond a single CLI call:

  • tl_bulk_create - create multiple task ledger tasks sequentially from a user-approved cleaned list and report partial failures.

When .tl/ exists in the current repository, the extension nudges the agent to use the normal task ledger workflow through the tl CLI: ready → claim → note → close/block/pending/cancel/release.

Commands

A live Task Ledger overlay is shown above the editor when the current repository has a ledger and at least one ready/in-progress/blocked/pending/stale task. It keeps tl as the source of truth by refreshing from tl --json output on session start, compaction/tree navigation, and successful tl_bulk_create executions. Use Alt+T to show/hide this passive overlay during the current session. The footer status shows the installed tl version plus compact colored counts, for example tl 0.9.0: ○3 ▲1.

Human-facing commands focus on the overlay workflow. Agent tools keep color disabled for clean JSON/model output.

  • /tl-capture - open an editor for rough todos, then ask the agent to refine and create clean tasks
  • /tl-board or Alt+L - open a keyboard-navigable modal board for ready, in-progress, blocked, pending, and stale tasks; use arrows/j/k to move, enter/d for in-modal details, b/esc to return, i/r/v/p for implement/refine/review/plan, c to cancel with a reason, x to remove with a reason, and a to toggle between focused (active) and all (including done/cancelled) views
  • /tl-init - initialize task ledger after confirmation

Development

npm install
npm run check
npm test

Pi loads TypeScript extensions directly, so no build step is required.

About

pi extensions

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - aholbreich/pi: pi extensions · GitHub
Skip to content

Repository files navigation

@aholbreich/pi-tl

Pi extension package for tl, the Git-native TaskLedger CLI.

This package shells out to the local tl binary. It does not bundle or install tl.

Task Ledger board overlay

Requirements

  • pi
  • tl available on PATH
  • Run Pi from a repository initialized with tl init for normal use

Installation

pi install npm:@aholbreich/pi-tl

Or install from local sources:

pi install /home/aho/git/pi-tl

For project-local installation, add -l:

pi install -l npm:@aholbreich/pi-tl

Try locally

From any repository where you want to use TaskLedger:

pi -e /home/aho/git/pi

Agent usage

The extension intentionally does not mirror the full tl CLI as Pi agent tools. The agent should use plain tl ... commands directly for normal ledger work (tl ready, tl show, tl claim, tl note, tl close, etc.). This keeps the extension from drifting behind upstream tl.

One helper remains because it adds orchestration beyond a single CLI call:

  • tl_bulk_create - create multiple task ledger tasks sequentially from a user-approved cleaned list and report partial failures.

When .tl/ exists in the current repository, the extension nudges the agent to use the normal task ledger workflow through the tl CLI: ready → claim → note → close/block/pending/cancel/release.

Commands

A live Task Ledger overlay is shown above the editor when the current repository has a ledger and at least one ready/in-progress/blocked/pending/stale task. It keeps tl as the source of truth by refreshing from tl --json output on session start, compaction/tree navigation, and successful tl_bulk_create executions. Use Alt+T to show/hide this passive overlay during the current session. The footer status shows the installed tl version plus compact colored counts, for example tl 0.9.0: ○3 ▲1.

Human-facing commands focus on the overlay workflow. Agent tools keep color disabled for clean JSON/model output.

  • /tl-capture - open an editor for rough todos, then ask the agent to refine and create clean tasks
  • /tl-board or Alt+L - open a keyboard-navigable modal board for ready, in-progress, blocked, pending, and stale tasks; use arrows/j/k to move, enter/d for in-modal details, b/esc to return, i/r/v/p for implement/refine/review/plan, c to cancel with a reason, x to remove with a reason, and a to toggle between focused (active) and all (including done/cancelled) views
  • /tl-init - initialize task ledger after confirmation

Development

npm install
npm run check
npm test

Pi loads TypeScript extensions directly, so no build step is required.

About

pi extensions

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages