Codex/fix tui stale autocomplete 407 - #1
Open
REI-330 wants to merge 105 commits into
Open
Conversation
Adds a reproducible npm trusted-publishing workflow with fail-closed tag provenance, unprivileged validation, a minimal OIDC publish job, protected npm environment guidance, and maintainer release documentation.
* fix(workflows): make terminal delivery recoverable * fix(workflows): preserve aborted terminal delivery * fix(workflows): close durable delivery review gaps --------- Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
* docs: document linear git history * docs: address linear history review * docs: fix rebased branch update sequence --------- Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
…i-dev#149) * fix(background-terminals): 强化输出、磁盘与终止边界 在模型侧截断前统一清洗终端输出,并保留原始 spill 证据。 增加 session spill 总预算与 prune 回收,串行等待 Windows taskkill 并补充 Windows CI 验证。 Refs openpi-dev#72 * fix(background-terminals): 修正 Windows shell 引号 * fix(background-terminals): 保留 Windows 强制终止句柄 * fix(background-terminals): reclaim spill budget before replacement Release settled spill reservations synchronously during pruning and before starting a new terminal, so a full session budget does not reject the newest terminal at the MAX_TRACKED boundary. Add a regression test for immediate replacement output. * fix(background-terminals): retain pending completion evidence * fix(background-terminals): close review boundary gaps * fix(background-terminals): serialize taskkill closure --------- Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
…ayer provides (openpi-dev#170) (openpi-dev#230) Co-authored-by: tt-a1i <53142663+tt-a1i@users.noreply.github.com>
Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
* feat(ci): notify Feishu for new pull requests * feat(ci): localize Feishu PR notification * fix(ci): sanitize Feishu PR notifications --------- Co-authored-by: tt-a1i <53142663+tt-a1i@users.noreply.github.com> Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
* fix(workflows): reject failed acceptance during replay * test(workflows): split replay acceptance projection coverage * test(workflows): remove unused replay fixture state --------- Co-authored-by: REI-330 <173389910+REI-330@users.noreply.github.com> Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
* perf(tui): index transcript tool pairing * perf(tui): carry transcript pairing index on the document Build the tool-call pairing index at document-construction time instead of inside render, so repaint ticks do not rescan the full history: - AgentTranscriptDocument gains an optional pairing index; render reads it and only falls back to building it for callers that omit it. - WorkflowTranscriptAdapter already returns a stable document while the transcript is unchanged, so the cached document now carries a matching index (no per-frame rebuild). - Subagent snapshot gains a monotonic transcriptVersion bumped on every mutation; subagentTranscriptDocument caches items+pairing keyed on snapshot identity + version, so an open takeover view pays O(1) per tick instead of O(n). The dynamic half (liveTools / liveAssistant / queued) is still assembled fresh each call. Measured: subagent document construction at n=2000 drops ~360x (0.0725ms to 0.0002ms) and no longer scales with transcript length. Refs openpi-dev#185
* fix(subagents): surface worktree cleanup failures * fix(worktree): report retained branches without reason * style(subagents): terminate index file * fix(worktree): avoid claiming unknown checkouts remain
…#210) * feat(model-info): add session metrics tracker * test(model-info): cover cached prefix traversal * feat(model-info): sync metrics on lifecycle edges * test(model-info): cover repeated ordinary refreshes * bench(model-info): compare session metric scans * fix(bench): model each tool loop as a turn
* fix(workflows): bound settled run retention * style(workflows): format retention test
* fix(context-pivot): clarify native no-history failures * fix(context-pivot): report headless compaction failures --------- Co-authored-by: QuinnWan <144975606+somewan820@users.noreply.github.com>
* feat(contract): mechanize config provenance checks * fix(checks): close configuration and ledger gaps * test(checks): prove config drift detection * style(checks): keep contract checker format stable * fix(checks): verify persisted config writer wiring
* ci: source shared automation workflows * test: pin reviewed automation contracts * ci: follow automation main branch * docs: describe automation main references
* fix(tui): stop settled strip redraw timers * perf(tui): collapse unchanged extension status writes Pi's setStatus() requests a global render without diffing the text, and the subagent manager notifies on every child event, so streaming deltas, tool cycles, and usage ramps each repainted the whole TUI to rewrite a footer line that never changed. The strip's own repaint key could not help: setStatus had already asked for the render before the widget gate ran. Route both extensions' footer writes through a shared writer that remembers the last value per UI and forwards only real changes. Cover the complete manager -> setStatus path with an extension-level UI spy driving a real spawn against a stub backend, and add the 60-second idle requestRender/CPU benchmark openpi-dev#189 asked for. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(bench): update subagent fixture contract --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Establishes the repository knowledge and evidence governance contract, including Decision 0001 and discipline-ledger boundaries.
Adds a fail-closed Windows process start-time query for setup lock recovery and makes capability path assertions portable across platforms.
…y evidence (openpi-dev#283) * refine workflow completion rendering * refactor workflow completion projection * fix workflow completion spec regressions * fix(workflows): split oversized completion deliveries * fix(workflows): batch completion deliveries before flushing * style(workflows): align completion projection formatting * test(workflows): assert structured completion display * test(workflows): type completion display alerts
* docs: define child tool activity design * feat(tui): unify child tool activity views - render Direct Subagent and Workflow child tools through the shared compact activity projection\n- keep Pi-native evidence available through a page-local app.tools.expand toggle\n- inherit the parent expansion state without mutating the parent transcript\n- document and test shared compact/expanded behavior for issue openpi-dev#93 * docs: link child activity design to pr * docs: keep setup guide scoped to configuration --------- Co-authored-by: tt-a1i <53142663+tt-a1i@users.noreply.github.com>
* fix(workflows): bound settled run retention * fix(workflows): retain dashboard fallback projections * test(workflows): cover delivery and retention pressure --------- Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
* fix(subagents): preserve transport payload and surface artifact failures * test(subagents): update snapshots for transcript version * fix(subagents): surface canonical result exceptions Preserve separated display content, propagate interrupted and recovery metadata, and isolate compact renderer configuration in tests. * fix(subagents): enforce automatic result batch cap --------- Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
…v#298) * perf(workflows): run cheap replay fingerprint checks before the binary diff Replay is disabled wholesale for repositories with ignored files, but repositoryFingerprint() still paid for a full `git diff --binary` (up to 32 MiB buffered) before discovering that. Move every cheap terminating check ahead of the diff: repository root, ignored files, HEAD, tracked modes/symlinks, then the diff, then untracked collection and hashing. All git invocations share a single deadline, so reordering a fixed command set cannot change the outcome for any input; the unbounded non-git work still runs after every git call. Ignored-file repositories now fail within two git processes instead of five to six and never buffer the diff. repositoryFingerprint() is exported with an injectable git runner so a regression test can lock the command order: a disqualifying repository must never reach the diff. Fixes openpi-dev#294 * fix(workflows): recheck replay disqualifiers after diff --------- Co-authored-by: zhangms <zhangms@xx.com> Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
…v#229) Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com> Co-authored-by: tt-a1i <53142663+tt-a1i@users.noreply.github.com>
* fix(workflows): recover terminal artifact commits * docs: record workflow artifact commit protocol * docs: link workflow artifact recovery PR * fix(workflows): preserve newer manifest during recovery * docs(workflows): update artifact recovery identity contract * docs(workflows): align recovery identity contract --------- Co-authored-by: testikun <320479488+testikun@users.noreply.github.com> Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
* docs(web): define React migration MVP Record the frozen PR openpi-dev#352 behavior baseline, Pi-native ownership boundaries, selected frontend stack, static delivery contract, and validation matrix for the local migration experiment. * docs(web): define development port conflict handling Document default port fallback, strict explicit ports, fast startup diagnostics, and TUI error projection for the local React validation branch. * feat(web): migrate workbench UI to React - replace the imperative browser UI with typed React and Zustand projections - add Vite HMR, production asset builds, and bounded port conflict handling - cover the Web store, packaged host, responsive browser flows, and artifact drift in CI * fix(packaging): stabilize Git source installs - disable npm peer resolution for Pi-provided host packages - guard the Git install contract and record the production smoke rationale * fix(web): address React MVP review feedback * fix(ci): provide Pi host peers to source smoke * docs(web): record React MVP review validation * fix(web): keep backend readiness deadline alive Use an explicitly referenced timer for each readiness probe so Node 22 does not let the test process or launcher exit while the fetch is still pending. Clear the timer after every probe. * docs(web): record Node 22 readiness validation Advance the design evidence boundary to the readiness timer fix and record the focused Node 22 and Node 24 regression runs. * docs(web): record green full test run Replace the superseded load-sensitive test note with the successful Node 24 full-suite result observed after the readiness fix. * fix(web): install shutdown handlers before ready output Ensure the CLI cannot advertise a ready Web Host before its SIGINT and SIGTERM cleanup handlers are installed. * docs(web): record CLI shutdown race validation Advance the implementation boundary and distinguish focused CLI evidence from unrelated full-suite timing failures. * fix(web): keep running phase for queued follow-up prompts prompt_accepted and the HTTP receipt were resetting an active turn to preparing. Preserve running unless the command already settled, matching the openpi-dev#364 live-phase rule without copying legacy app.js. --------- Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
…utions (openpi-dev#439) Restore the clipboard fallback from openpi-dev#352 in React with honest failure feedback, focus and selection restoration, and cleanup. Keep current exact-turn cancellation and request deadlines, and add timeout regression coverage inspired by openpi-dev#377. Credit the original openpi-dev#352, openpi-dev#377, and openpi-dev#358 contributions in README. Closes openpi-dev#438 Co-authored-by: QuinnWan <144975606+somewan820@users.noreply.github.com> Co-authored-by: seekskyworld <djh1813553759@gmail.com>
…tics (openpi-dev#442) Integrate openpi-dev#398 Session provenance and openpi-dev#392 authenticated Pi trust diagnostics. Correct refreshRequired when project resources change and identify the current controlled Session by both ID and file. Preserve optional-controller compatibility, unknown failure states, and current runtime authority. Closes openpi-dev#440 Refs openpi-dev#398, openpi-dev#392 Co-authored-by: testikun <320479488+testikun@users.noreply.github.com>
…ferences (openpi-dev#436) A partial path segment could stop right before rm after complete earlier segments, so a URL path like apache/storm/issues counted as an rm reference and piped read-only commands were blocked as opaque destructive input. Every repeated segment now consumes its own trailing slash, so rm must sit at a segment start. Bare rm, /bin/rm and xargs rm references keep failing closed.
) Integrate the useful provider authentication status contribution from openpi-dev#390 onto current main. Preserve existing trust, capability, diagnostics and cancellation routes while retaining the original bounded, non-secret, read-only projection. No UI or credential write behavior is introduced. Refs openpi-dev#348, openpi-dev#390 Co-authored-by: testikun <320479488+testikun@users.noreply.github.com>
Co-authored-by: testikun <320479488+testikun@users.noreply.github.com>
…penpi-dev#444) Integrate Session-scoped terminal details from openpi-dev#389, Pi thinking reads from openpi-dev#375, and unarchive from openpi-dev#361 while preserving current trust diagnostics. Add authenticated endpoint and persistent unarchive integration tests. Co-authored-by: testikun <320479488+testikun@users.noreply.github.com> Co-authored-by: seekskyworld <djh1813553759@gmail.com>
…penpi-dev#445) Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
…v#447) Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
…-dev#449) Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
…i-dev#462) Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
…on (openpi-dev#484) * fix(cursor): recover from unsupported native execution requests * docs: record Cursor native recovery acceptance --------- Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
* fix(web): distinguish models by provider identity * fix(web): avoid repeated fallback model identity --------- Co-authored-by: REI-330 <173389910+REI-330@users.noreply.github.com> Co-authored-by: tt-a1i <53142663+tt-a1i@users.noreply.github.com> Co-authored-by: tt-a1i <tt-a1i@users.noreply.github.com>
REI-330
force-pushed
the
codex/fix-tui-stale-autocomplete-407
branch
from
September 8, 2026 12:39
f9ed007 to
6f10280
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Windows regular TUI 在 slash 命令自动补全列表缩小时可能残留旧行,影响界面可读性。
Value
避免 Windows 用户看到过期的自动补全内容,恢复稳定的终端重绘行为。
Approach
clearOnShrink。OPENPI_WINDOWS_TUI_COMPAT=0环境变量作为退出开关。Validation
bun test tests/extensions/windows-terminal-compat/index.test.ts:3/3 通过Impact
仅改变 Windows regular TUI 的终端重绘策略,不改变命令注册、编辑器行为、fullscreen TUI 或其他平台行为。
Fixes openpi-dev#407