Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
36ff9f5
Move plugins to single binary runtime
backnotprop May 18, 2026
e7260ee
Add plugin subpath exports to shared package
backnotprop May 18, 2026
c5b203d
Add long-running Plannotator daemon runtime (#734)
backnotprop May 27, 2026
66f0494
Remove legacy standalone apps, archive, and integrations (#797)
backnotprop May 27, 2026
ebe989a
Simplify extensions to thin wrappers: server-owned prompts, vendor tr…
backnotprop May 28, 2026
f864e4b
Start daemon on install with stop-before-replace upgrade cycle
backnotprop May 28, 2026
12d7bd2
Replace ConfigStore with Zustand vanilla store
backnotprop May 28, 2026
9b1b33b
Add full provenance record for feat/single-server-runtime stack
backnotprop May 28, 2026
a6e1796
Update provenance record with full 13-PR stack history
backnotprop May 28, 2026
c9fc47a
Mark Tab mode config backlog item DONE (already wired end-to-end)
backnotprop May 28, 2026
94e287c
Add post-merge human verification steps for PR #813 (dialog) and #814…
backnotprop May 28, 2026
e5394a8
refactor(frontend): migrate AddProjectDialog to Radix Dialog (#813)
backnotprop May 28, 2026
39b4ead
Support GitLab: custom-domain detection + MR list/detailed (#814)
backnotprop May 28, 2026
769fcee
Fix order-dependent PR-stack grouping via leaf-rooting (#815)
backnotprop May 28, 2026
2c50bff
Backlog: mark configStore→Zustand migration DONE (shipped in #808)
backnotprop May 28, 2026
66593cf
Fix PR review reactivation posting against stale head commit (#816)
backnotprop May 28, 2026
46ab2cd
Docs: document PR re-review reactivation + head-SHA refresh as canoni…
backnotprop May 28, 2026
aa4430f
Backlog: notify the user when a session updates live (session-revision)
backnotprop May 28, 2026
06f555a
Remove docs/ (single-binary-runtime, adversarial_rubric); fix dead li…
backnotprop May 28, 2026
f483e60
Add main→branch merge carry-in inventory (what to port, what's silent…
backnotprop May 28, 2026
286f038
Merge remote-tracking branch 'origin/main' into merge/main-into-ssr
backnotprop May 29, 2026
13d7532
Make Amp a conforming thin wrapper (plugin-client); drop orphan pi se…
backnotprop May 29, 2026
4690e6b
Fix release smoke: authenticate /daemon/* requests with the daemon token
backnotprop May 29, 2026
eef3754
Fix Windows smoke: force IPv4 on session URL + add failure diagnostics
backnotprop May 29, 2026
eac9178
Remove unused @vitest/browser-playwright scaffolding
backnotprop May 29, 2026
7d2dd7b
Drop deleted vitest.browser.config.ts from frontend tsconfig include
backnotprop May 29, 2026
ed1dea1
Backlog: Amp plugin needs a bundled dist for standalone (curl) install
backnotprop May 29, 2026
6e65aa3
Stop ignoring /goals/ — it holds tracked project docs, not setup-goal…
backnotprop May 29, 2026
6964b34
Re-inventory performance findings: 8 fixed, 2 partial, 29 open (HEAD …
backnotprop May 29, 2026
5dd3484
Provenance: add post-stack phase (#813-816, main merge, CI fixes); re…
backnotprop May 29, 2026
4c30498
Pin geist-mono to 5.2.7, harden landing banner font
backnotprop May 29, 2026
f799d3e
Add architecture decision facts: project/worktree/session model + cwd…
backnotprop May 29, 2026
d5c3cd5
Fix review/plan/annotate sessions dying after 5 minutes (#824)
backnotprop May 30, 2026
2cb7629
Project resolution: project → worktree → session model, history, and …
backnotprop May 30, 2026
6d40b28
Backlog: review/plan/annotate command still dies at 5min (Bun fetch 3…
backnotprop May 30, 2026
5eda59a
Backlog: clarify it's the CLI process that exits at 5min, not the dae…
backnotprop May 30, 2026
8333d28
Add UI 2.0 design docs: legacy state, prototype target, transfer map
backnotprop May 30, 2026
a19594a
Add Simple theme: faithful port of the prototype palette
backnotprop May 30, 2026
2905118
Add packages/ui primitive foundation: cn util + Card
backnotprop May 30, 2026
b9764c5
Add Badge, StatePill, Textarea primitives
backnotprop May 30, 2026
7e655f4
Make packages/ui the canonical Button home; add success + accent vari…
backnotprop May 30, 2026
f1cc880
Add DropdownMenu primitive
backnotprop May 30, 2026
c0511a8
Record locked UI 2.0 decisions
backnotprop May 30, 2026
df3152d
Document production plan header functionality (pre-reskin inventory)
backnotprop May 30, 2026
49e4c76
Reskin header band 1 (app bar) onto primitives
backnotprop May 30, 2026
3f193fd
Reskin header band 2 (annotation toolstrip), animation preserved
backnotprop May 30, 2026
84dc63e
Reskin header band 3 (diff badge)
backnotprop May 30, 2026
b46795e
Add scripts/launch-session.sh: ad-hoc plan/annotate/review launcher
backnotprop May 30, 2026
242ddb4
Fix header button styling to match the prototype
backnotprop May 30, 2026
ab9e369
Customize the sidebar-trigger glyph to match the prototype (no hugeic…
backnotprop May 30, 2026
18b9089
Scope the plan-document reskin (production → prototype)
backnotprop May 30, 2026
5e8855b
Lock plan-document decisions: native scrollbars, grid default-off, wi…
backnotprop May 30, 2026
2d5bc9d
Grid background: optional, default OFF, via the config store
backnotprop May 30, 2026
2aa2a92
Plan card: flat/subtle when grid off, floating card when grid on
backnotprop May 30, 2026
da9e84a
Grid-off plan card: fully flat/embedded (drop the card-shadow ring)
backnotprop May 30, 2026
465ee3e
Grid-off plan: use page background so it embeds in every theme
backnotprop May 30, 2026
c2f7de3
Grid-off plan: bg-card plan on a bg-card main (embedded at the card c…
backnotprop May 30, 2026
cf9fed9
Unify in-plan sidebars to solid bg-card (match the document)
backnotprop May 30, 2026
7eb5da6
Backlog the HTML-rendering fact: always full-width, never card/grid
backnotprop May 30, 2026
d575ed8
Native scrollbars: gut OverlayScrollArea to a native shim, kill the 6…
backnotprop May 30, 2026
a156ebf
Native scrollbars cleanup: remove dead overlayscrollbars deps/CSS, dedup
backnotprop May 31, 2026
c5bef9e
Add prototype's sample plan as a test fixture (16)
backnotprop May 31, 2026
c892fa9
Fix plan-width setting (move to config store) + add ultrawide tier
backnotprop May 31, 2026
68a4724
Plan settings consolidation: vetted migration plan to one global conf…
backnotprop May 31, 2026
2d8e637
Settings consolidation U1: extract diff-option constants to settings/…
backnotprop May 31, 2026
2dd43f6
Settings consolidation U2-U5: extract review tabs; global dialog is m…
backnotprop May 31, 2026
4674b59
Settings consolidation U6-U7 + identity: mode-aware dialog, event re-…
backnotprop May 31, 2026
841c7c3
Unify settings into one shared, daemon-aware dialog; delete monolith
backnotprop May 31, 2026
d6ff177
Share one design-system stylesheet across frontend and portal
backnotprop May 31, 2026
f5bd27d
Settings cleanup: dead props gone, toc/sticky reactive, AI origin fixed
backnotprop May 31, 2026
bf0bf1b
Restyle plan annotation/comment system to the prototype's flat look
backnotprop May 31, 2026
2b73b26
Rewrite resize handles for fluid, render-free dragging
backnotprop May 31, 2026
a7dce60
Restyle annotation toolstrip + token-based comment color
backnotprop May 31, 2026
27484ea
Simplify TableOfContents rendering
backnotprop May 31, 2026
4f8f726
Sprite module, sidebar polish, and render-free in-plan panels
backnotprop May 31, 2026
cdd4ceb
Sidebar tree: drop chevrons, fold open/closed via the folder icon
backnotprop May 31, 2026
114bcfd
Unify in-plan sidebar headers + hover-reveal collapse on the handle
backnotprop May 31, 2026
39931e5
Restore comment icon for annotations toggle; fade the sidebar trigger
backnotprop May 31, 2026
fc215c8
Align plan card chrome with content edges when grid is off
backnotprop Jun 1, 2026
ca2efc7
Add drag-to-snap-shut to the app sidebar and right panel
backnotprop Jun 1, 2026
fe1bd13
Remove theme toggle from the global sidebar footer
backnotprop Jun 1, 2026
c9a5791
Add standalone code-review dev harness (apps/review)
backnotprop Jun 1, 2026
a7790de
Hide zero +/- stat in file tree and dashboard PR rows
backnotprop Jun 1, 2026
744b95d
Git dashboard: add project filter (mirrors Sessions & History)
backnotprop Jun 1, 2026
7fa7a87
PR dashboard: query open/merged separately so open PRs aren't crowded…
backnotprop Jun 1, 2026
df44c56
Reskin code-review sidebar Agents tab to match the prototype
backnotprop Jun 1, 2026
aaafcd7
Folder-annotate: launch & open folder sessions from the sidebar
backnotprop Jun 1, 2026
817b8c2
Landing redesign: act-on-row projects, simplified active/history, dir…
backnotprop Jun 1, 2026
cdcecc7
Add Opus 4.8 / Opus 4.8 (1M) to the Claude Ask AI provider
backnotprop Jun 2, 2026
aab76be
Session presentation: print session URL and always open a tab locally
backnotprop Jun 2, 2026
aac21e8
Code-review sidebar reskin: parity resize, headers, agent launchpad t…
backnotprop Jun 2, 2026
5f691f5
Merge feat/ui2-code-review: code-review reskin, git-dashboard filter,…
backnotprop Jun 2, 2026
b75b3f3
Remove daemon auth token
backnotprop Jun 2, 2026
4401fd9
Fix auth-removal fallout: CI smoke, function name, manual-test doc
backnotprop Jun 2, 2026
e1dcf3e
Purge remaining daemon-auth scaffolding
backnotprop Jun 2, 2026
ed74d9d
Fix stale auth references in docs after token removal
backnotprop Jun 2, 2026
097a995
HTML-first annotate: render by default + full-width view
backnotprop Jun 2, 2026
489dd4d
Fix parser tests + clean up --render-html stragglers
backnotprop Jun 2, 2026
cb8ff4d
Fix HTML resubmission dropping new content + add tests
backnotprop Jun 2, 2026
ad7a5da
HTML annotation UX: full-width controls, type-to-comment, pinpoint
backnotprop Jun 2, 2026
747a120
HTML annotate polish: hide-tools toggle, edge-to-edge surface, bridge…
backnotprop Jun 8, 2026
2f7386f
Merge UI 2.0 + HTML annotate into single-server-runtime
backnotprop Jun 8, 2026
6f5738b
Fix simple-theme PR-label contrast: route text-accent -> annotation-c…
backnotprop Jun 8, 2026
178b041
Fix incorrect SelectMenu comment: popover opens downward (top-full), …
backnotprop Jun 8, 2026
f5fdc8b
Folder-HTML UX fixes (keep in sync with ui-2.0-extraction)
backnotprop Jun 8, 2026
cb157e9
Fix pre-existing useHtmlAnnotation TS2352: cast e.data through unknown
backnotprop Jun 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
137 changes: 0 additions & 137 deletions .agents/skills/pierre-guard/SKILL.md

This file was deleted.

86 changes: 38 additions & 48 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
- name: Install dependencies
run: bun install

- name: Generate Pi extension shared copies
- name: Generate Pi extension shared helpers
run: bash apps/pi-extension/vendor.sh

- name: Type check
Expand Down Expand Up @@ -68,7 +68,6 @@ jobs:

- name: Build UI
run: |
bun run build:review
bun run build:hook

- name: Compile binaries (cross-compile all targets)
Expand Down Expand Up @@ -168,24 +167,31 @@ jobs:
PLANNOTATOR_PORT="$port" "$@" &
local pid=$!
local ok=0

# Daemon control routes (/daemon/*) are open on localhost — no auth.
for _ in $(seq 1 60); do
if curl -sf "http://127.0.0.1:${port}${endpoint}" -o /dev/null 2>/dev/null; then
ok=1
break
local sessions
sessions="$(curl -sf "http://127.0.0.1:${port}/daemon/sessions" 2>/dev/null || true)"
if [ -n "$sessions" ]; then
local session_url
session_url="$(python3 -c 'import json,sys; data=json.load(sys.stdin); sessions=data.get("sessions") or []; print(sessions[0].get("url","") if sessions else "")' <<< "$sessions")"
if [ -n "$session_url" ] && curl -sf "${session_url}${endpoint}" -o /dev/null 2>/dev/null; then
ok=1
break
fi
fi
sleep 0.5
done

kill "$pid" 2>/dev/null || true
wait "$pid" 2>/dev/null || true
PLANNOTATOR_PORT="$port" "$BINARY" daemon stop >/dev/null 2>&1 || true

if [ "$ok" = "0" ]; then
echo "FAIL: ${label} did not respond on :${port}${endpoint}"
echo "FAIL: ${label} did not expose a daemon-scoped ${endpoint}"
exit 1
fi

echo "OK: ${label} responded on :${port}${endpoint}"
echo "OK: ${label} exposed daemon-scoped ${endpoint}"
}

# 2. review: exercises server startup, bundled HTML, git diff, and HTTP.
Expand Down Expand Up @@ -229,36 +235,54 @@ jobs:
-RedirectStandardError $stderr
$ok = $false

# Daemon control routes (/daemon/*) are open on localhost — no auth.
$diagSessions = "(none)"
$diagSessionUrl = "(none)"
$diagApi = "(not reached)"
try {
for ($i = 0; $i -lt 60; $i++) {
try {
Invoke-WebRequest -Uri "http://127.0.0.1:$Port$Endpoint" -UseBasicParsing -TimeoutSec 1 | Out-Null
$ok = $true
break
$sessionsResponse = Invoke-WebRequest -Uri "http://127.0.0.1:$Port/daemon/sessions" -UseBasicParsing -TimeoutSec 2
$diagSessions = "HTTP $($sessionsResponse.StatusCode)"
$sessionsBody = $sessionsResponse.Content | ConvertFrom-Json
if ($sessionsBody.sessions.Count -gt 0) {
# The daemon binds IPv4 127.0.0.1, but the session url uses
# "localhost", which Invoke-WebRequest resolves to IPv6 ::1
# first on Windows and then fails to connect. Force IPv4.
$sessionUrl = ($sessionsBody.sessions[0].url) -replace '://localhost:', '://127.0.0.1:'
$diagSessionUrl = $sessionUrl
$apiResponse = Invoke-WebRequest -Uri "$sessionUrl$Endpoint" -UseBasicParsing -TimeoutSec 2
$diagApi = "HTTP $($apiResponse.StatusCode)"
$ok = $true
break
}
} catch {
$diagApi = "exception: $($_.Exception.Message)"
if ($process.HasExited) {
break
}
Start-Sleep -Milliseconds 500
}
Start-Sleep -Milliseconds 500
}
} finally {
if (-not $process.HasExited) {
Stop-Process -Id $process.Id -Force
Wait-Process -Id $process.Id -ErrorAction SilentlyContinue
}
& $binary daemon stop *> $null
Remove-Item Env:\PLANNOTATOR_PORT -ErrorAction SilentlyContinue
}

if (-not $ok) {
Write-Host "diag: sessions=$diagSessions sessionUrl=$diagSessionUrl api=$diagApi"
Write-Host "stdout:"
Get-Content $stdout -ErrorAction SilentlyContinue
Write-Host "stderr:"
Get-Content $stderr -ErrorAction SilentlyContinue
throw "FAIL: $Label did not respond on :$Port$Endpoint"
throw "FAIL: $Label did not expose a daemon-scoped $Endpoint"
}

Write-Host "OK: $Label responded on :$Port$Endpoint"
Write-Host "OK: $Label exposed daemon-scoped $Endpoint"
}

# 2. review: exercises server startup, bundled HTML, git diff, and HTTP.
Expand All @@ -267,37 +291,6 @@ jobs:
# 3. annotate: exercises annotate server startup with a real file.
Test-PlannotatorServer "plannotator annotate" "19501" "/api/plan" @("annotate", "README.md")

pi-extension-ai-runtime-windows:
needs: test
# Exercises the Pi extension's Node/jiti server mirror on Windows with an
# npm-style `pi` shim pair. The binary smoke above covers the compiled Bun
# CLI, but the published Pi extension uses this separate Node path.
name: Pi extension AI runtime (Windows)
runs-on: windows-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.3.11

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24

- name: Install dependencies
run: bun install

- name: Generate Pi extension shared copies
shell: bash
run: bash apps/pi-extension/vendor.sh

- name: Build Pi AI runtime smoke
run: bun build scripts/smoke-pi-extension-ai-runtime.ts --target=node --outfile "$env:RUNNER_TEMP/pi-ai-runtime-smoke.mjs"

- name: Run Pi AI runtime smoke
run: node "$env:RUNNER_TEMP/pi-ai-runtime-smoke.mjs"

install-script-smoke:
needs: build
runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -454,7 +447,6 @@ jobs:
needs:
- build
- smoke-binaries
- pi-extension-ai-runtime-windows
- install-script-smoke
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
Expand Down Expand Up @@ -521,7 +513,6 @@ jobs:
needs:
- build
- smoke-binaries
- pi-extension-ai-runtime-windows
- install-script-smoke
runs-on: ubuntu-latest
permissions:
Expand All @@ -544,7 +535,6 @@ jobs:

- name: Build packages
run: |
bun run build:review
bun run build:hook
bun run build:opencode
bun run build:pi
Expand Down
33 changes: 1 addition & 32 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
- name: Install dependencies
run: bun install

- name: Generate Pi extension shared copies
- name: Generate Pi extension shared helpers
run: bash apps/pi-extension/vendor.sh

- name: Type check
Expand All @@ -31,37 +31,6 @@ jobs:
- name: Run tests
run: bun test

pi-extension-ai-runtime-windows:
# Exercises the Pi extension's Node/jiti server mirror on Windows with an
# npm-style `pi` shim pair. This catches regressions where `where pi`
# resolves the extensionless shim before pi.cmd and the Ask AI provider
# crashes before the plan review UI opens.
name: Pi extension AI runtime (Windows)
runs-on: windows-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: latest

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24

- name: Install dependencies
run: bun install

- name: Generate Pi extension shared copies
shell: bash
run: bash apps/pi-extension/vendor.sh

- name: Build Pi AI runtime smoke
run: bun build scripts/smoke-pi-extension-ai-runtime.ts --target=node --outfile "$env:RUNNER_TEMP/pi-ai-runtime-smoke.mjs"

- name: Run Pi AI runtime smoke
run: node "$env:RUNNER_TEMP/pi-ai-runtime-smoke.mjs"

install-cmd-windows:
# End-to-end integration test for scripts/install.cmd on real cmd.exe.
# The unit tests in scripts/install.test.ts are file-content string checks
Expand Down
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,4 @@ plannotator-local
# Local research/reference docs (not for repo)
/reference/
/Plannotator Waitlist Signup/
# Local goal setup packages generated by the setup-goal skill.
/goals/
*.bun-build
Loading