Skip to content

Closed: opened against wrong repository#5780

Closed
hansjm10 wants to merge 33 commits into
earendil-works:mainfrom
hansjm10:feat/improve-review
Closed

Closed: opened against wrong repository#5780
hansjm10 wants to merge 33 commits into
earendil-works:mainfrom
hansjm10:feat/improve-review

Conversation

@hansjm10

@hansjm10 hansjm10 commented Jun 15, 2026

Copy link
Copy Markdown

Opened against the wrong repository. Closed.

Jordan Hans and others added 30 commits June 12, 2026 09:52
Rename the built-in /new session command to /clear. /new is no longer
recognized and is sent to the model as a regular prompt. The
app.session.new keybinding action id is unchanged so existing
keybindings.json configs keep working. Update docs and comments.
… logo

Restyle built-in dark and light themes around an electric purple accent
palette. Replace the plain-text startup logo with a half-block ASCII
wordmark; renamed forks (voltConfig.name) keep the plain-text logo.
The editor previously drew only horizontal rules above and below the
content. It now renders side borders and rounded corners so the input
feels like a box. Scroll indicators remain integrated into the top and
bottom borders, and autocomplete lines align with the box interior.
Config-driven multi-server LSP manager that lazily spawns language
servers per (server, project root) and appends diagnostics to edit/write
tool results. Enabled via --lsp or the lsp.enabled setting; servers are
configured under lsp.servers with built-in defaults for typescript,
python, go, and rust.

Also makes SettingsManager.applyOverrides() durable across reload() and
internal settings re-merges so CLI-driven overrides like --lsp survive
/reload.
…hover, symbols, diagnostics)

Single lsp tool with an action enum, active by default when LSP is
enabled and respecting --tools/--exclude-tools. Symbols are located by
name (word-boundary match with optional line hint) and translated into
positional LSP requests; failures are returned as text so the model can
react.

Also fixes project-root detection to treat rootMarkers as
priority-ordered (a tsconfig.json anywhere up the tree beats a closer
package.json, fixing monorepo false positives) and displays absolute
paths for diagnostics outside the working directory.
First diagnostics collection on a fresh server now waits up to
lsp.firstSettleMs (default 10s) since servers like tsserver publish
nothing until the project has loaded; previously the first edit missed
its diagnostics.

LSP clients now track per-document disk state (mtime/size/content) and,
before every diagnostics collection or navigation query, re-sync open
documents that changed on disk outside the edit/write tools (e.g. git
checkout via bash). Deleted files are closed on the server and servers
are notified via workspace/didChangeWatchedFiles. Redundant syncs of
unchanged content are skipped and reuse the last published diagnostics.
…d dependency changes

Found live: querying diagnostics for an unchanged file returned its
stale publish even when a dependency had just been refreshed from disk,
hiding cross-file breakage introduced via bash.

The disk-staleness refresh now happens inside getDiagnostics, and the
unchanged-content shortcut only applies when no other document was
refreshed; otherwise the client waits for a fresh publish. The fake LSP
server now republishes all open documents on every change (like real
servers) with a cross-file rule to regression-test this.
…eEdits

New lsp tool actions: rename (project-wide symbol rename) and fix
(quick-fix application, e.g. auto-import). The server's WorkspaceEdit is
applied to disk through the file mutation queue, supporting both edit
shapes plus create/rename/delete file operations; changed open documents
are re-synced and servers notified about the rest.

fix auto-applies a single available action, lists multiple with their
titles, and selects by title on rerun. Command-based code actions run
via workspace/executeCommand with server-initiated workspace/applyEdit
requests applied the same way; deferred edits are resolved through
codeAction/resolve. Diagnostics context is populated on demand before
requesting code actions since servers derive quick fixes from it.

Verified live against typescript-language-server: cross-file rename and
auto-import quick fix.
…shutdown

/lsp lists running language servers with root, liveness, open document
count, and idle time; /lsp restart stops them all so they respawn
lazily on next use.

Servers idle for lsp.idleShutdownMs (default 10 minutes, 0 disables)
are shut down automatically by an unref'd reaper interval and respawn
on demand, reclaiming memory held by warm servers like tsserver.
…bol search

lsp.servers.<name>.settings is sent via workspace/didChangeConfiguration
after the handshake and answers workspace/configuration section requests
with dot-separated path lookups (e.g. pyright analysis options).

lsp symbols with a symbol query now performs a project-wide
workspace/symbol search, routed to the right server by the given file.

Verified workspace symbol search live against typescript-language-server.
…or LSP

Edit/write diagnostics now include a 'Newly failing in other open files'
section listing open documents that went from clean to failing as a
result of the change (capped at 5 files, best-effort within the settle
window), so the model immediately sees dependents broken by an edit.

New lsp tool actions: callers (callHierarchy/incomingCalls) and callees
(callHierarchy/outgoingCalls), one level per query.
…n, and more LSP server defaults

lsp fix gains a kind parameter for kind-filtered code actions such as
source.organizeImports and source.fixAll, requested over the whole file
when no symbol or line is given.

New lsp actions: implementations (textDocument/implementation) and
type-definition (textDocument/typeDefinition).

New built-in server defaults: clangd (C/C++), zls (Zig),
lua-language-server, and bash-language-server.

Verified live against typescript-language-server: organize imports
merging import statements, interface implementations, and callers.
Solid half-block art was bisected by the inter-line gap on macOS
terminals, making the logo look split. Switch to a slanted ASCII
outline letterform that stays legible across terminals.
A missing server binary previously surfaced only as a cryptic
'spawn ... ENOENT'. The one-time failure message now appends the
install command for built-in servers, matched on the command's
binary basename so custom commands never get a wrong hint. Also
document install commands in the built-in servers table.
…blishes

lsp.traceFile and the /lsp trace [path|off] runtime toggle append
timestamped JSON-RPC traffic, server stderr, and lifecycle events to a
log file through a persistent handle (per-line open/append was
prohibitively slow under antivirus scanning).

Diagnostics waits now ignore publishes tagged with an older document
version, which could surface stale results after rapid consecutive
edits (observed live against tsserver).

Missing-server detection on Windows now pre-checks PATH/PATHEXT before
shell spawning, producing proper ENOENT failures so install hints fire
instead of a bare 'exited (code 1)'.
…ring

- lsp diagnostics action now goes through the start-failure breaker
  instead of respawning a broken server on every call
- navigation and refactoring requests honor abort signals instead of
  waiting out the 30s request timeout
- a failed initialize handshake disposes and removes the client (killing
  the stuck process) so retries spawn fresh; request errors on a healthy
  server no longer count toward the breaker
- WorkspaceEdit application preserves array order for same-position
  insert edits per the LSP spec
Brings in 8 upstream fixes:
- fix(ai): relax Codex SSE header timeout
- fix(coding-agent): preserve custom fallback thinking
- fix(coding-agent): handle missing export themes
- fix(tui): support slash-separated fuzzy filter tokens
- fix(coding-agent): resolve authenticated slash model ids
- fix(coding-agent): rechain fork paths without labels
- fix(agent): ignore late tool progress updates
- fix(tui): preserve unordered user list markers

Conflict resolutions keep Volt package names (volt-ai, volt-agent-core)
while adopting upstream's new imports. The new upstream regression test
was renamed to Volt package imports. Also fixed pre-existing useTemplate
lint infos in tui editor.ts required by npm run check.
Documents the workflow for merging upstream pi-mono into Volt and adds
scripts/rename-upstream.mjs to rewrite @earendil-works/pi-* package
references to @earendil-works/volt-* after merges.
Reviews uncommitted changes, branch diffs vs a base, GitHub PRs, or
single commits in an isolated in-process review session with a
dedicated reviewer prompt and full tool access (so it can read
surrounding code and run tests to verify findings). When the review
completes, a fresh session is started seeded only with the numbered
findings, so follow-ups like "fix 1 and 3" run with clean context.

The reviewer model is configurable via the new reviewModel setting
(also exposed as "Review model" in /settings) and falls back to the
active session model.
…re-edit content

Unversioned publishes that race a content change now trigger a re-wait
for a fresher publish, unversioned publishes pointing past the end of
the synced content are dropped at arrival (also keeping them out of the
newly-failing cross-file sweep), and failed diagnostic pulls are retried
once before falling back to published diagnostics.

fixes #1
… send versions

Servers that omit the optional publishDiagnostics version field and
publish once per change never produce a fresher publish, so the
staleness re-wait always ran to the settle deadline on every edit.
Cap that re-wait at a 250ms grace window when the server has never
sent a versioned publish; versioned servers keep the full
deadline-bounded re-wait since their versioned republish resolves it
promptly.
Re-wait for a fresher publish after an unversioned one when only
dependencies were refreshed, not just when the document's own content
changed. Relax the arrival-time out-of-bounds drop to tolerate
end-of-file diagnostics one past the last line, which linters
legitimately emit (e.g. missing trailing newline).
… rejection

Retrying every pull failure doubled the worst-case latency to ~60s when a
pull-capable server hangs (timeout + retry timeout). Retry only JSON-RPC
error responses (e.g. ContentModified), which return fast; fall back to
published diagnostics immediately on timeout, abort, or server exit.
fix(coding-agent): prevent stale cross-file LSP diagnostics against pre-edit content
- vitest 3.2.4 -> 3.2.6 and @vitest/coverage-v8 3.2.4 -> 3.2.6: clears
  critical advisories against the vitest 3.2.4 chain (UI/API server
  arbitrary file read/execute)
- esbuild 0.28.0 -> 0.28.1 (root devDep): clears GHSA-gv7w-rqvm-qjhr and
  the Windows dev-server file read advisory
- remove unused root devDep tsx (nothing invokes it; scripts run via
  node strip-types or jiti)
- remove coding-agent @types/diff (diff v8 ships bundled types) and
  @types/ms (ms only used by the with-deps example, which declares its
  own types)
- remove ai devDep canvas and scripts/generate-test-image.ts: one-off
  generator for the already-committed test/data/red-circle.png; canvas
  is a heavy native module

Provider SDKs (@anthropic-ai/sdk, @google/genai, openai, etc.) are
intentionally left pinned in lockstep with upstream Pi per its
supply-chain policy.
fix: bump vitest/esbuild for security advisories, drop unused dev deps
@github-actions

Copy link
Copy Markdown
Contributor

This PR was auto-closed. Only contributors approved with lgtm can open PRs. Open an issue first.

Maintainers review auto-closed issues daily. Issues that do not meet the quality bar in CONTRIBUTING.md will not be reopened or receive a reply.

If a maintainer replies lgtmi, your future issues will stay open. If a maintainer replies lgtm, your future issues and PRs will stay open.

See CONTRIBUTING.md.

@github-actions github-actions Bot closed this Jun 15, 2026
@hansjm10 hansjm10 deleted the feat/improve-review branch June 15, 2026 19:11
@hansjm10 hansjm10 restored the feat/improve-review branch June 15, 2026 19:12
@hansjm10 hansjm10 changed the title feat(coding-agent): improve /review command behavior Closed: opened against wrong repository Jun 15, 2026
@hansjm10 hansjm10 deleted the feat/improve-review branch June 15, 2026 19:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant