Upstream Commit Implementation Review¶
This file records the fork decision for every reviewed upstream commit. The review is functional: a commit may be implemented in different modules or through a different public API when the same outcome is fully available. Start with the user-facing Comparison with upstream; detailed migration and architecture evidence is retained in Fork and upstream differences.
Status values:
- Implemented: the upstream behavior is directly available.
- Implemented (adapted): the complete outcome is available through the fork architecture.
- Partial (adapted): related behavior exists, but a user-visible, operational, transport, or packaging capability remains absent.
- Not adopted: the upstream direction is intentionally absent; the handling column states why.
- Superseded by reviewed commits: merge, generated, or reconciliation history whose constituent behavior is decided in other rows.
- Superseded by fork release line: upstream-only release metadata that must not replace the fork version line.
Do not infer current product parity from status counts alone. In particular, version bumps, translations, merge commits, and obsolete workflow repairs are not missing runtime features, while capabilities that existed before the reviewed range may still differ. The product comparison is the authoritative summary of current user-visible differences; this table is chronological implementation evidence.
Rows for previously reviewed upstream refs are retained even when later upstream history rewrites make those commits unreachable from the current upstream/main. Reachable-current and historical rows therefore coexist; maintenance checks require every current reachable commit to appear exactly once without deleting earlier review evidence.
| # | Date | Upstream commit | Subject | Fork status | Fork handling |
|---|---|---|---|---|---|
| 1 | 2026-06-12 | 37b87f1 |
fix-html-output | Implemented | OAuth authorization-page fields are escaped in the split OAuth module. |
| 2 | 2026-06-12 | de6d459 |
fix-worker-vendor-path | Implemented | Remote worker bootstrap includes the vendored dependency path and is tested. |
| 3 | 2026-06-12 | 2afbde2 |
check-release-version-match | Implemented | The release workflow validates that the release tag matches the project version. |
| 4 | 2026-06-12 | ce2a9a7 |
handle-truncated-unicode | Implemented (adapted) | Byte-limited text reads do not fail on partial UTF-8 characters. |
| 5 | 2026-06-12 | 390a18f |
fix-pattern-edge-case | Implemented | Search treats dash-prefixed queries as patterns, not options. |
| 6 | 2026-06-12 | c971abd |
fix-git-add-path-separator | Not adopted | The old dedicated git-add wrapper is no longer part of the fork's tool surface. |
| 7 | 2026-06-12 | 0a7ee3f |
add-docker-build-ignore | Implemented (adapted) | The fork uses a stricter allowlist-style .dockerignore. |
| 8 | 2026-06-12 | 2593bc0 |
fix-search-test-literal | Implemented (adapted) | Equivalent search tests are maintained against the split search module. |
| 9 | 2026-06-12 | dc88eb3 |
fix-oauth-import-order | Not adopted | This style-only change applied to an obsolete single-file OAuth module. |
| 10 | 2026-06-12 | e761b07 |
ci-search-test-guard | Implemented | Search tests skip when the configured rg binary is unavailable. |
| 11 | 2026-06-13 | 78fd6d5 |
Raise public shell timeout cap to 120 seconds | Implemented (adapted) | Raised the configurable bounded-shell cap from 60 to 120 seconds while retaining the fork default of 10 seconds and cleanup-aware MCP watchdog budgeting. |
| 12 | 2026-06-13 | 8e5a988 |
Bump version to 2.3.0 | Not adopted | Upstream 2.x version bumps are superseded by the fork's 3.x version line. |
| 13 | 2026-06-13 | e44a6ad |
Exclude cryptography from PyInstaller binaries | Implemented | The release binary build excludes the unused crypto dependency. |
| 14 | 2026-06-13 | 572d947 |
Prepare v2.3.1 release | Not adopted | Upstream 2.x release metadata is not copied into the fork. |
| 15 | 2026-06-13 | 9b04a02 |
Add public file link downloads | Implemented (adapted) | Download-link tools and routes exist under the fork's split modules. |
| 16 | 2026-06-13 | 0c3dc20 |
Add remote file transfer tools | Implemented (adapted) | Remote file and directory transfer exists through the fork's transfer modules. |
| 17 | 2026-06-14 | 4384da8 |
Add MCP output schemas | Implemented (adapted) | MCP output schemas are generated through the declarative registry and typed result models. |
| 18 | 2026-06-15 | be33c71 |
Add stable MCP tool surface coverage | Implemented (adapted) | Tool-surface tests cover the current declarative registry and HTTP/MCP exposure. |
| 19 | 2026-06-15 | f92e662 |
Normalize REST tool validation errors | Implemented (adapted) | REST validation and tool errors use structured HTTP error handling. |
| 20 | 2026-06-15 | 5f9682d |
Audit routed MCP tool calls | Implemented (adapted) | Routed tool calls are audited through MCP watchdogs and local invocation helpers. |
| 21 | 2026-06-15 | 5d01c5d |
Filter shell subprocess environment | Implemented (adapted) | Shell subprocesses receive a filtered environment using the fork's fixed policy. |
| 22 | 2026-06-15 | 2516bd2 |
Improve MCP tool descriptions | Implemented (adapted) | Tool descriptions are maintained in registry modules and generated into MCP schemas/docs. |
| 23 | 2026-06-15 | 2a308c8 |
Add HTTP MCP parity coverage | Implemented (adapted) | HTTP and MCP tool exposure are derived from the same declarative registry. |
| 24 | 2026-06-15 | 60db561 |
Add remote capability checks | Implemented (adapted) | Remote worker allowlists and capability checks are maintained in split remote modules. |
| 25 | 2026-06-15 | e1ee6cf |
Add documentation site | Implemented (adapted) | The fork has a MkDocs site with its own information architecture. |
| 26 | 2026-06-15 | 19fe715 |
Add MCP tool export script | Implemented (adapted) | Tool reference JSON is exported from the current MCP/declarative registry path. |
| 27 | 2026-06-15 | acfbbfc |
Update metadata | Not adopted | Upstream package metadata and repository URLs are replaced by fork-owned metadata. |
| 28 | 2026-06-15 | 1c81534 |
Fix lint in added tests | Implemented (adapted) | Adapted tests are covered by pre-commit, pyright, and pytest. |
| 29 | 2026-06-15 | 7d71773 |
Add agent bridge core modules | Implemented (adapted) | The fork has a fuller split agent bridge implementation. |
| 30 | 2026-06-15 | 2c9e262 |
Add GitHub Pages docs deployment | Implemented (adapted) | The fork has a docs workflow that builds MkDocs and deploys Pages. |
| 31 | 2026-06-15 | caa11f8 |
Configure GitHub Pages workflow | Implemented (adapted) | The docs workflow is configured for the fork's Python and uv toolchain. |
| 32 | 2026-06-15 | 5f59004 |
Polish documentation landing page | Implemented (adapted) | The fork maintains its own canonical docs landing page. |
| 33 | 2026-06-15 | 9a284ea |
Improve docs and multilingual coverage | Not adopted | The fork maintains one English documentation set. Translating and continuously synchronizing upstream localization trees would add maintenance cost without changing runtime behavior. |
| 34 | 2026-06-15 | 65cfec4 |
Use native docs internationalization | Not adopted | The fork keeps one English documentation site. The multi-language MkDocs plugin, locale navigation, and language-specific build paths are intentionally not carried. |
| 35 | 2026-06-15 | 112e027 |
Improve documentation structure and coverage | Implemented (adapted) | The fork provides installation, configuration, security, transport, remote-worker, Human UI, generated reference, troubleshooting, and maintenance documentation under its own MkDocs information architecture. |
| 36 | 2026-06-15 | 9ceac6b |
Expand documentation structure and tool reference | Implemented (adapted) | Generated tool/config reference files and the docs renderer cover this goal. |
| 37 | 2026-06-15 | e49a142 |
Add localized documentation pages | Not adopted | Translated page copies are intentionally not maintained. Keeping one English source avoids stale architecture, security, and generated-reference documentation across duplicated locale trees. |
| 38 | 2026-06-15 | ea79fa9 |
Add native Windows persistent sessions | Implemented (adapted) | Windows persistent shells now use a pywinpty-backed ConPTY registry behind the same start/list/send/read/resize/kill tools used by tmux on POSIX. The fork adds platform-aware cmd/PowerShell argument rendering, filtered environments, bounded output, daemon-reader lifecycle management, and a dedicated Windows CI job rather than importing the upstream registry directly. |
| 39 | 2026-06-15 | 4c838fe |
Add Windows ConPTY shell backend | Implemented (adapted) | The fork now provides the broader Windows ConPTY design this row required: one pywinpty process and shared reader thread per persistent shell, plain and ANSI snapshots, exclusive raw xterm subscriptions, incremental UTF-8 input, optional resize, and browser disconnect semantics that preserve the underlying shell. |
| 40 | 2026-06-15 | a3a6267 |
Bump version to 2.6.0 | Not adopted | Upstream 2.x version bumps are superseded by the fork's 3.x version line. |
| 41 | 2026-06-15 | b30781c |
Fix remote worker join bootstrap | Implemented (adapted) | Remote worker join/bootstrap exists through the split worker entrypoint, join script, bundle, and tests. |
| 42 | 2026-06-16 | 3382d10 |
Fix remote worker dependency bootstrap | Implemented (adapted) | The worker bootstrap path avoids importing server-only dependencies until local tool execution is needed. |
| 43 | 2026-06-16 | e91fbf0 |
Fix remote worker HTTP client behind Cloudflare | Implemented (adapted) | Worker POSTs prefer curl, keep a urllib fallback, and handle non-2xx and invalid JSON responses. |
| 44 | 2026-06-17 | 2581856 |
Keep remote workers retrying connection failures | Implemented | Worker registration, polling, and result submission retry transient connection failures. |
| 45 | 2026-06-17 | 4283bce |
remote reconnect | Implemented (adapted) | Remote worker identity persistence, control-side resume, and /remote/resume are implemented. |
| 46 | 2026-06-17 | 5f0de67 |
Add purpose metadata to risky tool calls | Implemented (adapted) | Shell/Python execution tools keep optional purpose metadata in the schema and normal tool-call audit. |
| 47 | 2026-06-17 | e778822 |
Add tracked job management tools | Implemented (adapted) | Local and remote tracked job operations exist through the fork's job registry and result models. |
| 48 | 2026-06-17 | fd8411f |
Report remote worker status counts | Implemented | Remote machine listing reports online/offline/total counts and queue/last-seen information. |
| 49 | 2026-06-17 | 10f7806 |
Add built-in version reporting | Implemented (adapted) | CLI, HTTP, and MCP version reporting exist and report the fork's version line. |
| 50 | 2026-06-17 | 4e90402 |
Expand CI smoke coverage | Implemented (adapted) | CI now includes full pytest on Ubuntu, macOS, and Windows, Pyright, pre-commit, package smoke, release-matrix checks, Docker/Compose validation, OpenTUI on three platforms, Windows ConPTY, and VS Code extension builds. |
| 51 | 2026-06-17 | 5511920 |
Fix lint for new tool modules | Implemented (adapted) | The fork's current modules are maintained under its lint/type/test pipeline. |
| 52 | 2026-06-17 | 45abb91 |
Bump version to 2.7.0 | Not adopted | Upstream 2.x version bumps are superseded by the fork's 3.x version line. |
| 53 | 2026-06-17 | 58049c7 |
Fix localized docs translations | Not adopted | The fork does not maintain translated page snapshots. Current fork-specific OAuth, OpenTUI, remote-worker, and Skill-registry behavior is documented only in the canonical English pages. |
| 54 | 2026-06-17 | a0a60db |
Add docs i18n regression check | Not adopted | No locale parity checker is needed for the English-only documentation site. The normal strict MkDocs build and generated-reference checks remain authoritative. |
| 55 | 2026-06-17 | 8262a39 |
Handle remote worker KeyboardInterrupt cleanly | Implemented | The worker CLI handles interrupt shutdown cleanly. |
| 56 | 2026-06-18 | 4514979 |
Refine MCP tool security scopes | Implemented (adapted) | Tool security scopes are split by read/write/execute/download-style capabilities in generated MCP metadata. |
| 57 | 2026-06-23 | 91d0c9c |
ci-matrix-update | Implemented (adapted) | The fork uses a broader architecture-specific matrix: unified three-platform pytest, package and release checks, Docker amd64/arm64 validation, OpenTUI, ConPTY, and cross-platform VS Code packaging. Endpoint behavior is covered by real transport E2E tests rather than copying the upstream matrix verbatim. |
| 58 | 2026-06-23 | 713197d |
fix-ci | Not adopted | This only relaxes upstream's obsolete MCP metadata/scope tests; the fork should keep tests aligned to its current registry and scopes. |
| 59 | 2026-06-23 | b5f7825 |
fix-ci-2 | Not adopted | This continues relaxing obsolete upstream tests and does not change fork behavior. |
| 60 | 2026-06-23 | af6061d |
fix-ci-3 | Implemented (adapted) | Cross-platform VSIX packaging uses a Node packaging script and is tested on Ubuntu and Windows. The upstream Homebrew-specific workaround is unnecessary because this CI installs Python with setup-python and dependencies with uv. |
| 61 | 2026-06-24 | 954e1ed |
fix-ci-4 | Implemented (adapted) | The unified pytest matrix runs the full suite on Windows, Ubuntu, and macOS. Windows support includes native cmd.exe/PowerShell bounded shells, stable Win32 transfer file identities, detached Git and worker subprocess stdio, platform-neutral API paths and newline assertions, ConPTY-aware terminal coverage, and native job-runner commands. The temporary Windows compatibility preflight was removed after the complete matrix passed. |
| 62 | 2026-06-24 | 0543330 |
fix-ci-5 | Implemented (adapted) | VSIX packaging now uses a cross-platform Node script and CI runs the VS Code extension job on Ubuntu and Windows. |
| 63 | 2026-06-26 | aba28d8 |
ci: reduce warning annotations | Implemented (adapted) | Dockerfile CI now uses lightweight amd64/arm64 BuildKit checks instead of full PR image builds; the Dockerfile was reduced to an Ubuntu 26.04 uv-managed runtime, and release-only Docker publishing remains responsible for real image builds. |
| 64 | 2026-06-26 | 5c7121d |
ci: avoid Homebrew tap trust warnings | Not adopted | The fork CI and release workflows install Python through actions/setup-python and dependencies through uv; they contain no Homebrew tap or runtime-tool installation step, so the upstream Homebrew trust-warning workaround is inapplicable. |
| 65 | 2026-06-26 | 1b2b97d |
config: remove unused allow_network setting | Implemented | Removed the unused setting from runtime config, surface metadata, tests, examples, and generated configuration reference. |
| 66 | 2026-06-26 | f444f56 |
remote: enforce worker text input limits | Implemented (adapted) | Worker calls route through current local handlers, and large text inputs are already checked by shared text-size helpers; add regression tests if touched. |
| 67 | 2026-06-26 | 5ae46b4 |
shell: send tmux input literally | Implemented | Persistent-shell input now sends text with literal tmux send-keys -l and sends Enter as a separate key event. |
| 68 | 2026-06-26 | a63abeb |
search: return leading grep matches | Implemented (adapted) | Search now reads direct rg --json subprocess output incrementally and stops after the leading requested matches, avoiding shell tail truncation. |
| 69 | 2026-06-26 | 82b1b3b |
scan: honor gitignore in secret scan | Implemented (adapted) | secret_scan now prefers rg --files so ignore rules are honored, with a pathspec fallback for environments without ripgrep. |
| 70 | 2026-06-26 | fa62aa1 |
transfer: reject directory symlinks during pack | Implemented | Directory transfer packing now rejects symlink roots and symlink members before archive creation. |
| 71 | 2026-06-26 | 4467760 |
vscode: stop Windows process trees | Implemented | The VS Code extension now stops Windows server process trees with taskkill /T /F, falling back to normal process kill on error and non-Windows platforms. |
| 72 | 2026-06-26 | d0cb047 |
tools: mark read-only tools | Implemented (adapted) | Declarative read-only annotations were added to the fork's current read/list/search/status-style tools and generated tool reference. |
| 73 | 2026-06-26 | 55a2e59 |
scan: reduce placeholder secret noise | Implemented (adapted) | Generic assignment findings now skip obvious placeholder, fixture, and repeated-character values while preserving stronger token/private-key patterns. |
| 74 | 2026-06-26 | 2e6ef5a |
chore: prepare 2.7.3 | Not adopted | Upstream 2.x version bumps are superseded by the fork's 3.x version line. |
| 75 | 2026-06-26 | f4dfdae |
search: avoid shell-specific grep pipeline | Implemented (adapted) | Search uses direct rg subprocess execution and keeps fork-specific grounding metadata, selectors, pagination, and structured missing-ripgrep errors. |
| 76 | 2026-06-26 | 95bce13 |
chore: bump version to 2.7.4 | Not adopted | Upstream 2.x version bumps are superseded by the fork's 3.x version line. |
| 77 | 2026-06-26 | e1f2dc0 |
fix frozen shell loader environment | Implemented (adapted) | Shell subprocess environment filtering now restores original loader variables for frozen app bundles and removes bundled loader values when no original exists. |
| 78 | 2026-07-07 | ade54ef |
docs: improve Chinese translations | Not adopted | This localization-only documentation change is outside the fork's canonical English documentation set; keeping unsupported translated copies would create an unverified maintenance surface. |
| 79 | 2026-07-07 | 0be3f73 |
ci: publish Docker images to GHCR | Implemented (adapted) | The fork's current workflows provide the same maintenance outcome through uv-managed builds, package smoke, amd64/arm64 Docker checks and publishing, cross-platform binaries, VS Code packaging, and retained diagnostics. |
| 80 | 2026-07-07 | 0232135 |
ci: simplify release assets | Implemented (adapted) | The fork's current workflows provide the same maintenance outcome through uv-managed builds, package smoke, amd64/arm64 Docker checks and publishing, cross-platform binaries, VS Code packaging, and retained diagnostics. |
| 81 | 2026-07-07 | 0aa9d66 |
chore: update version metadata | Not adopted | Upstream release/version-history metadata is not copied because the fork maintains its independent 3.9.1 release line; user-visible functional commits are reviewed separately. |
| 82 | 2026-07-07 | 71b9605 |
ci: simplify Docker release notes | Implemented (adapted) | The fork's current workflows provide the same maintenance outcome through uv-managed builds, package smoke, amd64/arm64 Docker checks and publishing, cross-platform binaries, VS Code packaging, and retained diagnostics. |
| 83 | 2026-07-13 | 3820950 |
skills: add fixed list and load tools | Implemented (adapted) | The fork already had fixed list_agent_skills/activate_agent_skill tools; this batch keeps those names and adds bounded read_agent_skill_file rather than adopting upstream tool names. |
| 84 | 2026-07-13 | ddb1ea6 |
skills: remove dynamic tool registration plumbing | Not adopted | The fork intentionally retains dynamic Skill and MCP bridge tools; session-local capabilities will use fixed session-aware tools instead of changing the global dynamic tool surface. |
| 85 | 2026-07-13 | a63f32c |
docs: document fixed Skills workflow | Implemented (adapted) | Agent Bridge documentation now describes the fork-specific fixed Skill workflow and related-file reader while preserving dynamic tools. |
| 86 | 2026-07-13 | fd210be |
chore: bump version to 2.9.0 | Not adopted | Upstream release/version-history metadata is not copied because the fork maintains its independent 3.9.1 release line; user-visible functional commits are reviewed separately. |
| 87 | 2026-07-13 | 386b0e8 |
fix: derive state paths correctly on Windows | Implemented (adapted) | The fork derives audit_log_path and agent_config_dir from normalized state_dir properties instead of synchronizing independent defaults; custom-state regression coverage includes both dependent paths. |
| 88 | 2026-07-13 | 384f84b |
fix: derive agent paths from custom state directory | Implemented (adapted) | A custom state_dir already drives the fork's Agent Bridge config and audit paths through dynamic properties, with regression coverage. |
| 89 | 2026-07-13 | 0be1eff |
fix: expose readable Skill resource paths | Implemented (adapted) | Related files are exposed as canonical paths relative to the Skill directory, with VCS/cache metadata excluded. |
| 90 | 2026-07-13 | 971eb1e |
fix: validate Skill names and REST inputs | Implemented (adapted) | Skill names and related-file paths receive strict portable validation through the fork's existing declarative HTTP/MCP schemas. |
| 91 | 2026-07-13 | 2ee0188 |
fix: bound and directly load Skill files | Implemented (adapted) | Skill discovery, activation, and related-file reads are bounded by registered fork settings and do not read every Skill body during listing. |
| 92 | 2026-07-13 | 1fa8d4a |
fix: parse Skill descriptions consistently | Implemented | YAML/TOML front matter and Markdown fallback descriptions are parsed consistently with bounded output. |
| 93 | 2026-07-13 | d74bbee |
fix: harden Skill registry edge cases | Implemented (adapted) | The existing Agent Bridge scanner now has bounded traversal, regular-file checks, warning caps, VCS/cache exclusions, and path containment checks. |
| 94 | 2026-07-13 | 356a1af |
docs: document hardened Skill workflow | Implemented (adapted) | The hardened workflow is documented using the fork's existing Agent Bridge names and architecture. |
| 95 | 2026-07-13 | 3904578 |
chore: bump version to 2.9.1 | Not adopted | Upstream release/version-history metadata is not copied because the fork maintains its independent 3.9.1 release line; user-visible functional commits are reviewed separately. |
| 96 | 2026-07-13 | ac2b08d |
fix: close remaining Skill path and scan gaps | Implemented (adapted) | Remaining path, scan-budget, symlink, and file-size edge cases are covered in the fork scanner and tests. |
| 97 | 2026-07-13 | de1897a |
test: limit invalid-byte filename case to Linux | Implemented (adapted) | Equivalent behavior is covered by the fork's split-module unit, cross-platform, package-smoke, Human UI, remote-worker, and end-to-end regression suites. |
| 98 | 2026-07-13 | 63d9064 |
fix: normalize Skill text across platforms | Implemented | Skill text reads normalize CRLF and CR line endings while preserving the original byte count. |
| 99 | 2026-07-13 | 78c5b05 |
feat(ui): add shared human interface backend | Implemented (adapted) | The fork now carries the adapted current upstream React/OpenTUI client under ui-opentui, exposes it through local-shell-mcp tui and an optional authenticated browser Console, and shares the existing Human UI APIs while retaining the native WebUI as the default. |
| 100 | 2026-07-13 | 70b2e7b |
feat(ui): add shared OpenTUI and web terminal client | Implemented (adapted) | The adapted OpenTUI Terminals screen uses the fork machine-scoped persistent-shell API, normalizes shell_id to its client session model, resizes tmux or ConPTY from the viewport, preserves command history and raw input behavior, and is covered by the upstream TypeScript regression suite. |
| 101 | 2026-07-13 | 01315ea |
feat(ui): secure native and browser interface sessions | Implemented (adapted) | OpenTUI now shares the fork Human UI OAuth API. Native CLI access is restricted to a credential-free loopback URL and receives the mode-0600 local token only through its environment; the browser Console uses the existing OAuth WebSocket scopes and never exposes that local token. |
| 102 | 2026-07-13 | c715917 |
build(ui): package OpenTUI sidecars and Yazi | Implemented (adapted) | Platform OpenTUI sidecars are now built from the adapted ui-opentui source with pinned Bun. CI covers Linux, macOS, and Windows; release archives and Docker include the sidecar. Yazi remains intentionally excluded because Files uses the authenticated API. |
| 103 | 2026-07-13 | aed3c3a |
docs(ui): document the human interface | Implemented (adapted) | The fork now carries the adapted current upstream React/OpenTUI client under ui-opentui, exposes it through local-shell-mcp tui and an optional authenticated browser Console, and shares the existing Human UI APIs while retaining the native WebUI as the default. |
| 104 | 2026-07-13 | e3c429a |
test(ui): add OAuth browser end-to-end coverage | Implemented (adapted) | The fork now has a dedicated locked Playwright/Chromium CI job that drives real OAuth PKCE, Dashboard, Files, Todos, Audit, local/remote PTY, worker isolation, OpenTUI Console recovery, and responsive layouts against a real HTTP server and worker. Lower-level HTTP/WebSocket, tmux, and Windows ConPTY suites remain complementary. |
| 105 | 2026-07-13 | b670769 |
chore(release): prepare v3.0.0 | Not adopted | Upstream release/version-history metadata is not copied because the fork maintains its independent 3.9.1 release line; user-visible functional commits are reviewed separately. |
| 106 | 2026-07-13 | fd66537 |
fix(ui): harden the Windows ConPTY bridge | Implemented (adapted) | Windows raw terminals now share the persistent pywinpty reader instead of racing a second read path. Per-session state/I/O locks serialize writes, resize, subscription, and close; failed readers force-close and deregister stale sessions; browser close removes only the subscriber; backend and resize responses are validated end to end. pywinpty retains ownership of native handles and overlapped I/O. |
| 107 | 2026-07-13 | 2fb1ff4 |
test(ui): validate PTY bridges on every platform | Implemented (adapted) | Cross-platform bridge tests cover registry bounds, exclusivity, capabilities, binary envelopes, backend identity, optional resize, close semantics, real POSIX tmux attach output, and fake ConPTY failure/cleanup paths. A dedicated windows-latest job additionally exercises a real pywinpty cmd.exe session, snapshot reads, raw input/output, resize, subscriber close, session preservation, and kill. |
| 108 | 2026-07-13 | 8d3055d |
fix(build): scope Playwright Docker argument globally | Not adopted | The fork uses a separate uv-locked Playwright job and does not pass browser build arguments through the upstream Docker workflow, so this upstream scoping repair is inapplicable. |
| 109 | 2026-07-13 | b368873 |
docs(ui): translate the human-interface nav label | Not adopted | This localization-only documentation change is outside the fork's canonical English documentation set; keeping unsupported translated copies would create an unverified maintenance surface. |
| 110 | 2026-07-13 | 4ac8693 |
fix(ui): require OAuth on browser WebSockets | Implemented (adapted) | Browser terminal WebSockets validate the tab-scoped OAuth bearer token from a base64url subprotocol credential, require both shell scopes plus remote:use for remote machines, reject missing/invalid tokens with 4401 and insufficient scopes with 4403, never use localhost bypass, and accept only the non-secret lsm-ui-terminal subprotocol. |
| 111 | 2026-07-13 | 8e40343 |
fix(ui): make file management lossless and workspace-safe | Implemented (adapted) | OAuth-scoped local and remote Files support bounded listing, previews, complete text editing, create/delete, atomic local copy/move/rename, symlink-safe locking, and rollback. Cross-session and remote copies use the shared session_copy transfer protocol instead of duplicating transfer primitives in the UI. |
| 112 | 2026-07-13 | 221715d |
fix(ui): make raw terminal input exclusive and ordered | Implemented (adapted) | Each raw (machine, shell_id) attachment is exclusive, including remaining opens, and the single WebSocket receiver serializes binary input, JSON input, resize, ping, and close. PTY writes use a lock and complete each bounded chunk before the next operation; snapshot controls retain the same ordered receiver. |
| 113 | 2026-07-13 | 97258f8 |
fix(ui): bound terminal requests and session cleanup | Implemented (adapted) | Terminal frames and bridge chunks are capped at 64 KiB, snapshots at 5,000 lines and 4 MB, dimensions and IDs are bounded, bridge and connection counts are limited, idle cleanup covers WebSockets and abandoned worker capabilities, and tasks/capacity/attach processes are released on every exit. Browser disconnect preserves only the underlying persistent tmux shell. |
| 114 | 2026-07-13 | 080f68a |
fix(ui): preserve Windows TUI command paths | Implemented (adapted) | The adapted OpenTUI Files screen uses the fork workspace-confined local and remote APIs, mutation capability flags, SHA-256 editor revision guards, bounded RGBA previews, portable path normalization, mouse navigation, and responsive layouts. Unsupported remote mutations remain visibly disabled rather than shell-emulated. |
| 115 | 2026-07-13 | a13b302 |
fix(build): install Docker Python deps in a venv | Implemented (adapted) | The fork's current workflows provide the same maintenance outcome through uv-managed builds, package smoke, amd64/arm64 Docker checks and publishing, cross-platform binaries, VS Code packaging, and retained diagnostics. |
| 116 | 2026-07-13 | 98369c6 |
fix(auth): bound dynamic OAuth state and require S256 | Implemented (adapted) | The split OAuth service now requires explicit S256 PKCE, validates RFC 7636 challenge/verifier syntax, and bounds only unused, unexpired authorization codes through configurable capacity without evicting live state. Issue/exchange operations are serialized, capacity is checked before first-client approval persistence, and exhaustion is rendered in the local authorization form. Existing fork-native registration limits and approved-client persistence replace the upstream monolithic client-state changes. |
| 117 | 2026-07-13 | 9c45ae1 |
fix(ui): stabilize responsive state and fatal disconnects | Implemented (adapted) | The native OpenTUI client exits cleanly on terminal shutdown, and the optional browser Console reconnects after abnormal process or WebSocket exits while keeping intentional stop, authentication failures, and normal exits explicit. |
| 118 | 2026-07-13 | bf0c5c9 |
fix(ui): prevent stale todo overwrites | Implemented (adapted) | Todo files now carry a monotonic revision, replacements compare expected_revision while holding the shared path lock, and same-directory mode-0600 temporary files are atomically published with os.replace. The browser guards machine/request generations, preserves unsaved edits during polling, disables controls during saves, and reloads the latest list after HTTP 409 instead of allowing a stale replacement. |
| 119 | 2026-07-13 | 35ebcdb |
fix(ui): isolate mount paths and disabled remotes | Implemented (adapted) | The adapted OpenTUI Files screen uses the fork workspace-confined local and remote APIs, mutation capability flags, SHA-256 editor revision guards, bounded RGBA previews, portable path normalization, mouse navigation, and responsive layouts. Unsupported remote mutations remain visibly disabled rather than shell-emulated. |
| 120 | 2026-07-13 | 6a29ddf |
fix(ui): discard stale polling responses | Implemented (adapted) | Dashboard, Remotes, Terminals, Files, Todos, and Audit all use request or socket generations so slow responses from an earlier machine, path, worker inventory, or authentication state cannot replace current browser state. Remotes forced refreshes supersede prior polling requests while preserving a still-valid selected worker. |
| 121 | 2026-07-13 | f564761 |
fix(auth): require strong public OAuth approval credentials | Implemented (adapted) | Fork server entrypoints now reject public OAuth configurations whose approval PIN is missing, a known placeholder, or below the final upstream minimum. The fork does not expose a configurable JWT placeholder: it generates a private persisted signing key, serializes first-use creation across processes, and rejects existing placeholder or sub-32-byte keys instead of reusing them. |
| 122 | 2026-07-13 | d3050aa |
fix(audit): serialize trimming and appends | Implemented (adapted) | Audit append and retention are serialized with a process-wide lock plus a cross-process lock file; replacement is atomic and both log and lock remain private. |
| 123 | 2026-07-13 | bfc08df |
fix(remotes): bound invites and validate node identities | Implemented (adapted) | The fork-native manager trims and validates 128-character machine names, prunes expired/consumed invites, caps live invites and Human UI inventory at 1,024, and removes invites atomically on registration. The browser adapter further rejects duplicate identities, recomputes counts, bounds metadata/capabilities, omits raw invite codes and join URLs, and uses the configured canonical base URL instead of a request-derived origin. |
| 124 | 2026-07-13 | 69bb316 |
fix(ui): make editor saves atomic and conflict-safe | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 125 | 2026-07-13 | 5d0a5c6 |
test(auth): use S256 PKCE in the MCP endpoint probe | Implemented (adapted) | The fork has no standalone endpoint-probe script, but its OAuth compatibility and capacity suites exercise only S256 authorization challenges and verify that missing, malformed, or non-S256 PKCE is rejected without consuming a code. |
| 126 | 2026-07-14 | 4a4b9d2 |
fix(ui): reserve F8 for raw terminal mode | Implemented (adapted) | The browser does not use a global F8 mode toggle: mode=auto negotiates raw PTY before input is enabled, and once xterm is active its full keyboard path—including F8—is forwarded to the attached application rather than intercepted by page shortcuts. |
| 127 | 2026-07-14 | d810037 |
test(ui): make editor checks portable on Windows | Implemented (adapted) | Equivalent behavior is covered by the fork's split-module unit, cross-platform, package-smoke, Human UI, remote-worker, and end-to-end regression suites. |
| 128 | 2026-07-14 | c593612 |
fix(auth): enforce scopes and confine native UI token | Implemented (adapted) | OpenTUI now shares the fork Human UI OAuth API. Native CLI access is restricted to a credential-free loopback URL and receives the mode-0600 local token only through its environment; the browser Console uses the existing OAuth WebSocket scopes and never exposes that local token. |
| 129 | 2026-07-14 | f416d2b |
fix(files): preserve symlinks and serialize writes | Implemented (adapted) | Fork-native file mutations now reuse the bounded cross-thread and cross-process path-lock registry, perform same-directory atomic replacement while preserving existing file modes, and serialize full read/validate/modify/write transactions for exact-text, line, and multi-file hashline edits. Directory listings identify symlinks without following them, expose raw targets only for link entries, and deletion operates on the selected final directory entry rather than its target. |
| 130 | 2026-07-14 | 7a3cda8 |
fix(ui): bound remote work and unblock event loop | Implemented (adapted) | Blocking local filesystem work runs in worker threads; Files, Todos, Audit, and Terminals use bounded asynchronous worker RPCs, bounded payloads, integrity checks, and explicit remote-session ownership. The remote Human UI surfaces covered by this change are migrated. |
| 131 | 2026-07-14 | e769485 |
fix(ui): serialize state and isolate interactions | Implemented (adapted) | The fork now carries the adapted current upstream React/OpenTUI client under ui-opentui, exposes it through local-shell-mcp tui and an optional authenticated browser Console, and shares the existing Human UI APIs while retaining the native WebUI as the default. |
| 132 | 2026-07-14 | edae303 |
fix(release): remove rejected OAuth placeholders | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 133 | 2026-07-14 | f7fd688 |
fix(ci): eliminate error annotations | Not adopted | The fork's isolated pytest launcher emits ordinary job output and retained browser artifacts instead of upstream annotation parsing, so this annotation-specific repair is inapplicable. |
| 134 | 2026-07-14 | d172ecc |
fix(ci): drain grep subprocess cleanup | Not adopted | The fork's browser job does not use the upstream grep-based annotation pipeline; subprocesses are owned and terminated by the Python harness, so this cleanup patch is inapplicable. |
| 135 | 2026-07-14 | 8379169 |
fix: harden auth downloads and audit logging | Implemented (adapted) | Authentication, immutable private download snapshots, no-follow identity checks, token fingerprints, safe filenames, open-handle streaming, bounded audit serialization, search containment, and Human UI authorization are implemented across the fork-specific modules. |
| 136 | 2026-07-14 | 867330f |
fix: make remote transfers transactional | Implemented (adapted) | Chunked writes now bind private metadata to the destination and temporary-file identity, account for non-overlapping received ranges, recheck overwrite=false at commit, validate final size/hash, and publish with os.replace. Directory copies validate/extract in staging and restore the old destination if commit fails. |
| 137 | 2026-07-14 | 1bdb837 |
fix: isolate human UI state by machine | Implemented (adapted) | The fork now carries the adapted current upstream React/OpenTUI client under ui-opentui, exposes it through local-shell-mcp tui and an optional authenticated browser Console, and shares the existing Human UI APIs while retaining the native WebUI as the default. |
| 138 | 2026-07-14 | 51879f9 |
fix: persist long-running job results | Implemented (adapted) | Tracked jobs now use a private internal runner that durably records combined output, exit code, completion time, and errors; output remains pollable after process exit and restart. |
| 139 | 2026-07-14 | 17ed1e9 |
fix: correct MCP safety annotations | Implemented (adapted) | Every fork MCP tool now receives mode-independent semantic annotations after registration: declared and agent-bridge read surfaces remain read-only/idempotent, unknown mutations default to destructive, and command, PTY, remote-session, download-link, remote-admin, and Agent MCP proxy surfaces are marked open-world. Full-control and the deprecated relaxed-hints compatibility flag no longer suppress approval-relevant safety signals. |
| 140 | 2026-07-14 | c2acf69 |
fix: share shell output budget across streams | Implemented (adapted) | Bounded shell execution now lets either stdout or stderr consume unused capacity from the other stream while enforcing one aggregate byte limit. Each reader retains at most the configured cap to avoid pipe deadlock, then a deterministic tail allocator preserves both streams fairly, gives spare capacity to the active stream, and reports truncation whenever either per-stream retention or final aggregate clamping drops bytes. |
| 141 | 2026-07-14 | 212a4cb |
fix: sanitize all audit event fields | Implemented (adapted) | All audit() fields now pass through one recursive redaction and portability boundary, including direct shell, OAuth, download, job, and remote events. |
| 142 | 2026-07-14 | 55ff945 |
fix: bound path lock resource usage | Implemented (adapted) | Filesystem mutations use a ref-counted in-process path-lock registry that releases unused entries plus a fixed 256-shard cross-process lock set under private state, avoiding unbounded lock growth. |
| 143 | 2026-07-14 | 403e9bb |
docs: document job and transfer limits | Implemented (adapted) | Fork documentation and generated configuration describe max_job_log_bytes and max_jobs, including durable polling and active-job retention semantics. |
| 144 | 2026-07-14 | afb53ed |
fix: validate remote worker server URLs | Implemented (adapted) | The split remote-worker bootstrap validates every outbound request URL with urlsplit before selecting curl or urllib, accepts only absolute HTTP(S) URLs with a network location, and has regression coverage rejecting file:// worker endpoints. |
| 145 | 2026-07-14 | 20f3861 |
Merge pull request #4 from fwerkor/fix/deep-audit-bugs | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 146 | 2026-07-14 | e106ed4 |
fix(ui): normalize invalid token path errors on Windows | Implemented (adapted) | The fork covers the maintenance outcome through its current cross-platform subprocess, ConPTY/tmux, normalized settings, outbound remote-worker, and generated configuration architecture with regression coverage. |
| 147 | 2026-07-14 | d5c7cbb |
fix(jobs): invoke runner correctly from PowerShell | Implemented (adapted) | Internal runner argv is quoted per POSIX shell, cmd.exe, or PowerShell, including apostrophes and paths containing spaces; unit coverage locks down PowerShell quoting. |
| 148 | 2026-07-14 | 971688b |
Merge pull request #5 from fwerkor/fix/windows-ci-regressions | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 149 | 2026-07-14 | 41512fb |
fix(security): harden OAuth assets and file shares | Implemented (adapted) | OAuth assets and file shares are hardened with private transactional state, creation-time snapshots, cross-process locking, digest verification, orphan cleanup, local/remote session checks, and scoped Human UI access. |
| 150 | 2026-07-14 | d5a81b7 |
fix(jobs): serialize state and bound retention | Implemented (adapted) | The fork serializes job-store transactions with thread and cross-process locks, atomically writes primary and backup stores, and bounds logs and retained terminal jobs without pruning active jobs. |
| 151 | 2026-07-14 | 2319219 |
fix(settings): isolate persisted secret reads | Not adopted | The upstream change only made an obsolete _read_oauth_secret helper easier to isolate in tests. The fork has no persisted OAuth-secret file reader: secrets remain explicit configuration inputs, while approved public clients use a separate private atomic registry, so there is no corresponding read path to port. |
| 152 | 2026-07-14 | 557ca1b |
fix(io): preserve PTY input and dedupe lock shards | Implemented (adapted) | Multi-path mutations retain deduplicated lock shards. POSIX PTY input uses a per-bridge lock and completes every bounded byte chunk across short writes and EAGAIN. ConPTY subscriptions use an incremental UTF-8 decoder so multibyte input split across WebSocket frames is preserved before serialized pywinpty writes. |
| 153 | 2026-07-14 | 99b0c1a |
fix(remote): fail permanent errors and keep jobs online | Implemented (adapted) | Worker HTTP failures now distinguish transient statuses from permanent client errors, and long-running tool execution sends independent heartbeats so the control server does not mark an active worker offline. |
| 154 | 2026-07-14 | 311f0f1 |
fix(transfer): prune temporary artifacts | Implemented (adapted) | Transfer scratch allocation and directory packing already invoke the unified bounded temp-directory pruner with a minimum-age guard so active files survive; failed archive creation removes its partial output, and interrupted staging/archive cleanup is covered across local and remote transfer tests. |
| 155 | 2026-07-14 | fca3071 |
fix(ui): retry PTY writes under backpressure | Implemented (adapted) | POSIX raw writes wait and continue across BlockingIOError and partial writes without reordering. ConPTY writes retry temporary blocking under the session I/O lock. Remote bridge calls remain ordered and validate the accepted bounded byte count before processing the next control. |
| 156 | 2026-07-14 | 4cf053e |
fix(lifecycle): close cleanup edge cases | Implemented (adapted) | Download claims remove final-use snapshots after streaming and prune expired, exhausted, malformed, and orphaned state; job start/retry/stop transitions roll back failed shells and attempt files; OAuth signing-key initialization uses a private cross-process lock, atomic write, concurrent reuse, and invalid-value rejection. |
| 157 | 2026-07-14 | 81be9b1 |
test(oauth): use a strong compatibility key | Superseded by reviewed commits | The fork does not inject a static compatibility key. Runtime coverage now verifies strong random key generation, private persistence, concurrent first-use reuse, and rejection of placeholder or sub-32-byte persisted signing secrets. |
| 158 | 2026-07-14 | 3deee21 |
chore(vscode): update vulnerable packaging dependencies | Implemented (adapted) | The current VS Code extension uses updated packaging dependencies and explicit cross-platform process-tree shutdown with Ubuntu and Windows CI coverage. |
| 159 | 2026-07-14 | 7864dff |
fix(ui): accept queued ConPTY writes | Implemented (adapted) | The pywinpty adapter accepts None or any non-negative integer write result, including zero when input has been queued asynchronously, while rejecting negative or non-integer results. A regression verifies blocked retries followed by a queued-zero result. |
| 160 | 2026-07-14 | 21170ea |
fix(vscode): await process tree shutdown | Implemented (adapted) | The current VS Code extension uses updated packaging dependencies and explicit cross-platform process-tree shutdown with Ubuntu and Windows CI coverage. |
| 161 | 2026-07-14 | f26d826 |
fix(http): bound inbound request bodies | Implemented (adapted) | A shared ASGI middleware protects REST, MCP, OAuth, download, and remote HTTP routes. It rejects oversized declared lengths before reading, counts actual chunked/no-length bodies, replays accepted messages, preserves live receive for streaming, authenticates protected routes first, and audits metadata without body contents. |
| 162 | 2026-07-14 | 579fc2e |
Merge pull request #6 from fwerkor/fix/deep-audit-followups | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 163 | 2026-07-14 | 74d90e3 |
fix(transfer): stream remote files over HTTP | Implemented (adapted) | Benchmarks confirmed material control-channel/base64 overhead at 1 MiB and above. The fork keeps session_copy as the only public API and adds a private durable gateway with non-secret route ids, separate hashed worker/direction/session-bound capabilities, immutable snapshots, bounded Range/Content-Range chunks, exact replay, whole-object digest, cross-worker spools, quotas, and managed-job resume. Upstream's credential-in-URL, auth-bypass, in-memory ticket, unbound worker, and no-download-resume choices were rejected. |
| 164 | 2026-07-14 | 5f8404e |
test(transfer): cover streamed remote copies | Implemented (adapted) | Coverage spans local/local, local/remote, remote/local, same- and cross-machine remote files and directories, measured RPC fallback, source-only worker HTTP streaming, range/replay/digest/size/expiry/quota/symlink/TOCTOU cases, interrupted upload/download resume, cancellation cleanup, controller restart claims, and real one-/two-worker E2E. |
| 165 | 2026-07-14 | 6e90650 |
Fix interrupted remote downloads | Implemented (adapted) | Foreground cancellation revokes capabilities and removes controller/worker partials. Managed-job failures instead clear capabilities while retaining only validated cursor/spool/destination state, and retry with the same durable job id rotates new capabilities and resumes. A regression also fixes unchanged-cursor upload retry by rewinding the source handle before replay. |
| 166 | 2026-07-14 | e08d27e |
Harden persistent job recovery | Implemented (adapted) | Job metadata recovers from a valid backup, refuses silent reset when both copies are corrupt, migrates supported legacy stores, and reconciles interrupted lifecycle states. |
| 167 | 2026-07-14 | d869478 |
Synchronize remote worker registry | Implemented (adapted) | The fork serializes registry, token, queue, remaining-job, rename, revoke, heartbeat, and result state behind one manager lock, with per-job worker ownership checks. |
| 168 | 2026-07-14 | 99f5af3 |
Harden transfer and ConPTY cleanup | Implemented (adapted) | Transfer cleanup remains fully adapted. POSIX raw bridges close descriptors and reap only the tmux attach process group. ConPTY close resets pywinpty's closed flag when required, terminates the owned process once, finishes subscribers, joins the reader, removes registry ownership, and preserves the persistent process when only a browser attachment closes. |
| 169 | 2026-07-14 | 1bfaba5 |
fix: allow shell timeout cleanup before watchdog | Implemented (adapted) | MCP and REST watchdogs now resolve timeouts per tool. bash and run_python_code receive a bounded cleanup allowance beyond the configured shell timeout cap for SIGTERM, SIGKILL, reader draining, and scheduling margin, while unrelated tools retain the exact configured watchdog. Regression coverage verifies both transports return structured timed_out=true results with partial stdout/stderr instead of cancelling shell cleanup. |
| 170 | 2026-07-14 | eac80f6 |
Remove unused dynamic agent bridge | Not adopted | The fork's dynamic Agent Bridge is active, tested, and part of its product direction, so upstream removal is intentionally not ported. |
| 171 | 2026-07-14 | bbd5c67 |
Fix Windows cleanup regressions | Implemented (adapted) | The fork covers the maintenance outcome through its current cross-platform subprocess, ConPTY/tmux, normalized settings, outbound remote-worker, and generated configuration architecture with regression coverage. |
| 172 | 2026-07-14 | d3bd5be |
Bundle tmux for Linux persistent shells | Implemented (adapted) | Linux x86_64 and aarch64 standalone releases build a checksum-pinned, statically linked tmux 3.5a helper and embed only the matching architecture in the PyInstaller executable. Runtime resolution preserves explicit configuration, prefers system tmux, and falls back to the bundled helper consistently for persistent-shell tools and raw browser terminal attachments. Wheels, sdists, Docker images, and Python-only remote-worker bundles do not carry generated helper binaries. |
| 173 | 2026-07-14 | a59fce6 |
Fix bundled tmux tests on Windows | Implemented (adapted) | The fork covers the maintenance outcome through its current cross-platform subprocess, ConPTY/tmux, normalized settings, outbound remote-worker, and generated configuration architecture with regression coverage. |
| 174 | 2026-07-15 | a512008 |
security: harden MCP sessions and remote results | Implemented (adapted) | All MCP HTTP methods remain behind the fork's route-aware OAuth middleware, the SDK binds stateful sessions to the credential that created them, remote results are accepted only from their assigned worker, and cancellation tombstones plus per-worker remaining queues are bounded. Stateful MCP sessions now additionally have a configurable hard capacity and idle timeout. |
| 175 | 2026-07-15 | 0b043d7 |
fix: serialize job and shell lifecycle transitions | Implemented (adapted) | Start, stop, and retry use persisted transitional states plus operation ids, with rollback and stale-transition recovery around the fork's explicit session and shell APIs. |
| 176 | 2026-07-15 | 7f9daf1 |
fix: handle remote paths and file action types | Implemented (adapted) | The adapted OpenTUI Files screen uses the fork workspace-confined local and remote APIs, mutation capability flags, SHA-256 editor revision guards, bounded RGBA previews, portable path normalization, mouse navigation, and responsive layouts. Unsupported remote mutations remain visibly disabled rather than shell-emulated. |
| 177 | 2026-07-15 | 2f7bb3b |
guide agents through fixed skill tools | Implemented (adapted) | Tool descriptions guide callers through list_agent_skills, activate_agent_skill, then read_agent_skill_file; dynamic bridge compatibility remains available. |
| 178 | 2026-07-15 | af2503e |
fix: submit native Windows shell commands with CRLF | Implemented (adapted) | The fork covers the maintenance outcome through its current cross-platform subprocess, ConPTY/tmux, normalized settings, outbound remote-worker, and generated configuration architecture with regression coverage. |
| 179 | 2026-07-15 | e768b27 |
fix(ci): authenticate OAuth MCP probes before connecting | Implemented (adapted) | The fork's current workflows provide the same maintenance outcome through uv-managed builds, package smoke, amd64/arm64 Docker checks and publishing, cross-platform binaries, VS Code packaging, and retained diagnostics. |
| 180 | 2026-07-15 | 479138e |
fix: harden local execution and interfaces | Implemented (adapted) | Local execution and interfaces now include private readiness data, non-cancellable atomic mutations, case-insensitive denylist matching, safe tmux names, typed HTTP coercion, per-method OAuth, filtered subprocess environments, numeric validation, Windows executable defaults, and full three-platform tests. |
| 181 | 2026-07-15 | 33a30ae |
fix: make remote operations transactional | Implemented (adapted) | Remote calls reserve capacity and ownership transactionally, clean remaining state on timeout or cancellation, skip cancelled queued jobs, reject cross-worker results, and bound in-flight jobs per worker. |
| 182 | 2026-07-15 | ae68cd8 |
test: cover comprehensive bug audit regressions | Implemented (adapted) | Equivalent behavior is covered by the fork's split-module unit, cross-platform, package-smoke, Human UI, remote-worker, and end-to-end regression suites. |
| 183 | 2026-07-15 | 69f9b27 |
fix: pass job environment policy explicitly | Implemented (adapted) | The runner uses the fork's existing centralized _subprocess_env policy, and its parent persistent shell is launched with the same filtered environment, avoiding a second configurable policy surface. |
| 184 | 2026-07-15 | 64d2e52 |
fix: encode job policy arguments for powershell | Implemented (adapted) | Runner arguments are shell-neutrally structured and PowerShell-quoted as individual argv values, so no JSON policy payload needs shell-specific encoding in the fork. |
| 185 | 2026-07-15 | 892e829 |
Merge pull request #7 from fwerkor/fix/comprehensive-bug-audit | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 186 | 2026-07-15 | 9f317eb |
refactor: unify local and remote tool execution | Implemented (adapted) | The fork already uses declarative domain registries, split local handlers, typed success/result models, split REST assembly, and domain-based worker dispatch, providing the same de-duplication outcome in its own architecture. |
| 187 | 2026-07-15 | dff7644 |
chore: align auth and clients with compact tools | Implemented (adapted) | The fork already uses declarative domain registries, split local handlers, typed success/result models, split REST assembly, and domain-based worker dispatch, providing the same de-duplication outcome in its own architecture. |
| 188 | 2026-07-15 | 47fe235 |
test: lock down the compact tool contract | Implemented (adapted) | Equivalent behavior is covered by the fork's split-module unit, cross-platform, package-smoke, Human UI, remote-worker, and end-to-end regression suites. |
| 189 | 2026-07-15 | f0abf5c |
docs: generate tool reference from schemas | Implemented (adapted) | Fork documentation is generated from the declarative schemas and maintains one canonical configuration/tool workflow using the current compact registry. |
| 190 | 2026-07-15 | 2952132 |
docs: update compact tool workflows | Implemented (adapted) | Fork documentation is generated from the declarative schemas and maintains one canonical configuration/tool workflow using the current compact registry. |
| 191 | 2026-07-15 | 06448ae |
docs: remove obsolete tool names from localized pages | Not adopted | This localization-only documentation change is outside the fork's canonical English documentation set; keeping unsupported translated copies would create an unverified maintenance surface. |
| 192 | 2026-07-15 | a04892e |
Merge pull request #8 from fwerkor/refactor/compact-tool-surface | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 193 | 2026-07-15 | 77c5de9 |
ci: enforce combined coverage and reclaim Docker disk | Implemented (adapted) | Ubuntu CI runs the full Python suite under branch coverage, automatically records Python subprocesses, maps extracted remote-worker runtimes back to the canonical src/local_shell_mcp paths, emits JSON/XML artifacts, and fails if aggregate or existing-module coverage regresses. Local Linux and GitHub Ubuntu reports must describe the same source revision before their strict minima can update the baseline. Docker disk reclamation remains unnecessary in the fork's separate bounded Docker jobs. |
| 194 | 2026-07-15 | fbc3a91 |
fix: preserve explicit fallback settings updates | Implemented (adapted) | The fork covers the maintenance outcome through its current cross-platform subprocess, ConPTY/tmux, normalized settings, outbound remote-worker, and generated configuration architecture with regression coverage. |
| 195 | 2026-07-15 | c3ef371 |
test: cover persistent runtime recovery paths | Implemented (adapted) | Unit tests cover store recovery, migration, retention, completed output, failed starts, and interrupted start/retry transitions; stdio, HTTP, MCP, and remote-worker E2E paths exercise the durable job flow. |
| 196 | 2026-07-15 | 8a2a92a |
test: cover core API auth and Human UI branches | Implemented (adapted) | Equivalent behavior is covered by the fork's split-module unit, cross-platform, package-smoke, Human UI, remote-worker, and end-to-end regression suites. |
| 197 | 2026-07-15 | ef9771f |
test: cover tool surface storage and skill safety | Implemented (adapted) | Unit coverage now exercises Skill safety and bounds, and an integration test installs the pinned real LeonardNJU/code-humanizer repository through Git before using the HTTP tool surface. |
| 198 | 2026-07-15 | 3fbc891 |
test: add real remote worker end-to-end coverage | Implemented (adapted) | The fork has a real process-level remote worker E2E that registers, upgrades/restarts, resumes identity, creates sessions, and exercises read, image, download, shell, job, and transfer categories. |
| 199 | 2026-07-15 | 574515d |
test: cover UI clients and extension process lifecycle | Implemented (adapted) | Equivalent behavior is covered by the fork's split-module unit, cross-platform, package-smoke, Human UI, remote-worker, and end-to-end regression suites. |
| 200 | 2026-07-15 | b4e7fdc |
ci: enforce near-complete coverage and binary smoke builds | Implemented (adapted) | Coverage.py is pinned in the fork's dev environment, the Ubuntu coverage job replaces a duplicate plain Ubuntu test run, and coverage reports are retained as CI artifacts. Existing wheel/sdist package smoke, release-sidecar smoke, Docker checks, and release-matrix validation continue to provide the fork's broader binary-build coverage. |
| 201 | 2026-07-15 | 06eb86e |
test: make expanded coverage suite cross-platform | Implemented (adapted) | The full regression suite is split dynamically for local runs and executes on Ubuntu and macOS in CI, with Windows-specific ConPTY and VS Code jobs covering platform-only behavior. |
| 202 | 2026-07-15 | aca8ae8 |
test: use platform-specific TUI sidecar name | Implemented (adapted) | The fork now carries the adapted current upstream React/OpenTUI client under ui-opentui, exposes it through local-shell-mcp tui and an optional authenticated browser Console, and shares the existing Human UI APIs while retaining the native WebUI as the default. |
| 203 | 2026-07-15 | c649f27 |
ci: avoid duplicate feature branch matrices | Implemented (adapted) | The fork's current workflows provide the same maintenance outcome through uv-managed builds, package smoke, amd64/arm64 Docker checks and publishing, cross-platform binaries, VS Code packaging, and retained diagnostics. |
| 204 | 2026-07-15 | 119975a |
Merge pull request #9 from fwerkor/test/near-complete-coverage | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 205 | 2026-07-16 | 6ab0d2a |
feat: persist and manage remote workers | Implemented (adapted) | Durable identity, resume, rename, revoke, inventory, browser management, automatic/manual verified upgrade, and managed-process detection are joined by a breaking-clean local CLI for enroll/connect/run plus idempotent systemd-user and launchd lifecycle/status/logs. Units/plists use a stable credential-free launcher and private identity; Windows remains explicitly unsupported and no MCP persistence primitive is exposed. |
| 206 | 2026-07-16 | 44b3692 |
fix: harden persisted worker lifecycle | Partial (adapted) | Persisted identity, recovery, runtime preparation, reconnect, upgrade, revoke, disconnect, job cancellation, and cross-reexec locking are hardened. Service install/start/stop/restart/status/log commands are still not implemented. |
| 207 | 2026-07-16 | 21571b4 |
test: handle JSON-escaped Windows paths | Implemented (adapted) | Equivalent behavior is covered by the fork's split-module unit, cross-platform, package-smoke, Human UI, remote-worker, and end-to-end regression suites. |
| 208 | 2026-07-16 | 2051a53 |
fix(worker): secure connect and prepare runtime on start | Implemented (adapted) | Worker server URL validation, runtime preparation before settings load, credential persistence, verified runtime installation, reconnect, and automatic upgrade are implemented. The fork stays a foreground worker process instead of re-executing through an OS service launcher. |
| 209 | 2026-07-16 | 789520b |
Merge pull request #11 from fwerkor/fix/remote-worker-persist-lifecycle | Superseded by reviewed commits | Merge-only commit; persistence, runtime preparation, and service-lifecycle decisions are recorded on the underlying remote-worker commits. |
| 210 | 2026-07-16 | f837152 |
fix: harden compact tool contracts | Implemented (adapted) | The fork already uses declarative domain registries, split local handlers, typed success/result models, split REST assembly, and domain-based worker dispatch, providing the same de-duplication outcome in its own architecture. |
| 211 | 2026-07-16 | b918d18 |
docs: align examples with compact tools | Implemented (adapted) | Fork documentation is generated from the declarative schemas and maintains one canonical configuration/tool workflow using the current compact registry. |
| 212 | 2026-07-16 | 2aa1a31 |
Merge pull request #13 from fwerkor/fix/compact-tool-contracts | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 213 | 2026-07-16 | cd7d96f |
feat: add native image viewing tool | Implemented (adapted) | Added MCP-only view_image(session_id, path) with native ImageContent, explicit local/remote session dispatch, format magic checks, a 20 MiB bound, and validated remote transfer chunks instead of upstream's optional machine parameter. |
| 214 | 2026-07-16 | d592468 |
Merge pull request #15 from fwerkor/feat/view-image | Superseded by reviewed commits | Merge-only commit; the native image-viewing decision is recorded on the underlying feature commit. |
| 215 | 2026-07-16 | b4f87e2 |
deslop: remove tool wrapper boilerplate (#6) | Implemented (adapted) | The fork already uses declarative domain registries, split local handlers, typed success/result models, split REST assembly, and domain-based worker dispatch, providing the same de-duplication outcome in its own architecture. |
| 216 | 2026-07-16 | 7395ea3 |
deslop: share success envelopes (#1) | Implemented (adapted) | The fork already uses declarative domain registries, split local handlers, typed success/result models, split REST assembly, and domain-based worker dispatch, providing the same de-duplication outcome in its own architecture. |
| 217 | 2026-07-16 | aa3bc2b |
ci: use 90 percent module coverage floor | Implemented (adapted) | The fork does not pretend its mature split, remote-worker, and platform-specific modules already satisfy a uniform 90% floor. Instead, each existing module keeps the lowest branch-coverage percentage measured across supported Linux environments as a non-decreasing floor, aggregate coverage is independently ratcheted, and every new non-empty module must begin at 90% or higher. |
| 218 | 2026-07-16 | 0a7c983 |
deslop: simplify conpty tail trimming (#6) | Implemented (adapted) | ConPTY snapshots use one bounded bytearray tail with a single prefix deletion after append. Raw subscribers use the same direct bounded-tail approach and mark only the overflowing subscription EOF, avoiding redundant copy/trim branches while preserving the newest output. |
| 219 | 2026-07-16 | ee0e77d |
deslop: share transfer chunk writes (#1) — 2 instances | Implemented (adapted) | The fork already uses declarative domain registries, split local handlers, typed success/result models, split REST assembly, and domain-based worker dispatch, providing the same de-duplication outcome in its own architecture. |
| 220 | 2026-07-16 | 31eea53 |
deslop: remove runtime import indirection (#9) — 4 instances | Implemented (adapted) | The fork already uses declarative domain registries, split local handlers, typed success/result models, split REST assembly, and domain-based worker dispatch, providing the same de-duplication outcome in its own architecture. |
| 221 | 2026-07-16 | d702368 |
deslop: split MCP registration by domain (#6) — 11 groups | Implemented (adapted) | The fork already uses declarative domain registries, split local handlers, typed success/result models, split REST assembly, and domain-based worker dispatch, providing the same de-duplication outcome in its own architecture. |
| 222 | 2026-07-16 | c49c3b1 |
deslop: split remote worker dispatch (#6) — 7 domains | Implemented (adapted) | The fork already uses declarative domain registries, split local handlers, typed success/result models, split REST assembly, and domain-based worker dispatch, providing the same de-duplication outcome in its own architecture. |
| 223 | 2026-07-16 | 7f02ae2 |
deslop: split REST route assembly (#6) — 9 groups | Implemented (adapted) | The fork already uses declarative domain registries, split local handlers, typed success/result models, split REST assembly, and domain-based worker dispatch, providing the same de-duplication outcome in its own architecture. |
| 224 | 2026-07-16 | eba3f7b |
deslop: remove thread pass-through wrappers (#6) — 3 instances | Implemented (adapted) | The fork already uses declarative domain registries, split local handlers, typed success/result models, split REST assembly, and domain-based worker dispatch, providing the same de-duplication outcome in its own architecture. |
| 225 | 2026-07-16 | a25fc49 |
deslop: centralize shell argument policy (#1) — 2 implementations | Implemented (adapted) | The fork already uses declarative domain registries, split local handlers, typed success/result models, split REST assembly, and domain-based worker dispatch, providing the same de-duplication outcome in its own architecture. |
| 226 | 2026-07-16 | f547e5d |
deslop: share packed directory transfer (#1) — 2 implementations | Implemented (adapted) | The fork already uses declarative domain registries, split local handlers, typed success/result models, split REST assembly, and domain-based worker dispatch, providing the same de-duplication outcome in its own architecture. |
| 227 | 2026-07-16 | 94111d8 |
deslop: remove image thread wrapper calls (#6) — 4 instances | Implemented (adapted) | The fork already uses declarative domain registries, split local handlers, typed success/result models, split REST assembly, and domain-based worker dispatch, providing the same de-duplication outcome in its own architecture. |
| 228 | 2026-07-16 | 193a849 |
Merge pull request #14 from fwerkor/refactor/code-humanizer | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 229 | 2026-07-17 | e4bfdec |
Polish OAuth authorization page | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 230 | 2026-07-17 | 41ea83f |
fix: make OpenTUI usable on narrow screens | Implemented (adapted) | The current upstream React/OpenTUI screen, theme, responsive layout, loading, keyboard, mouse, footer, and repaint modules are carried under ui-opentui and run against the fork API adapter. Their Bun typecheck and regression suite are part of CI; the native browser UI remains the default. |
| 231 | 2026-07-17 | 250cb4f |
fix: add mobile WebUI terminal controls | Implemented (adapted) | The browser terminal exposes touch-sized Escape, Tab, Arrow Up/Down, Ctrl-C, and Ctrl-D controls. Each button sends only a fixed byte sequence through the currently open machine-scoped WebSocket, disables while disconnected, refocuses the command field, and collapses to three columns on narrow screens. |
| 232 | 2026-07-17 | 7f6c146 |
fix: preserve compact nav at 47 columns | Implemented (adapted) | The current upstream React/OpenTUI screen, theme, responsive layout, loading, keyboard, mouse, footer, and repaint modules are carried under ui-opentui and run against the fork API adapter. Their Bun typecheck and regression suite are part of CI; the native browser UI remains the default. |
| 233 | 2026-07-17 | d7643f7 |
Merge pull request #16 from fwerkor/ui/oauth-page-polish | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 234 | 2026-07-17 | 426c013 |
feat(ui): add distinct TUI screen themes | Implemented (adapted) | The current upstream React/OpenTUI screen, theme, responsive layout, loading, keyboard, mouse, footer, and repaint modules are carried under ui-opentui and run against the fork API adapter. Their Bun typecheck and regression suite are part of CI; the native browser UI remains the default. |
| 235 | 2026-07-17 | f4e3966 |
style(ui): align WebUI terminal palette | Implemented (adapted) | The standalone browser ANSI renderer and terminal CSS use one explicit dark foreground/background plus aligned standard and bright 16-color values. Extended palette and RGB colors are derived from validated numbers rather than arbitrary CSS text. |
| 236 | 2026-07-17 | 6ac77bc |
fix(ui): remove shortcut labels from top navigation | Implemented (adapted) | The current upstream React/OpenTUI screen, theme, responsive layout, loading, keyboard, mouse, footer, and repaint modules are carried under ui-opentui and run against the fork API adapter. Their Bun typecheck and regression suite are part of CI; the native browser UI remains the default. |
| 237 | 2026-07-17 | 4cb27aa |
test(ui): update smoke labels for simplified navigation | Implemented (adapted) | Equivalent behavior is covered by the fork's split-module unit, cross-platform, package-smoke, Human UI, remote-worker, and end-to-end regression suites. |
| 238 | 2026-07-17 | 4342afc |
Merge pull request #17 from fwerkor/ui/tui-color-polish | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 239 | 2026-07-17 | bf94284 |
feat(downloads): support inline file links | Implemented (adapted) | create_file_link(..., inline=true) now opts into inline browser rendering while attachment remains the default. Links are explicit-session, immutable snapshots and support both local and remote sources. |
| 240 | 2026-07-17 | 458917d |
test(windows): allow slower native shell startup | Implemented (adapted) | Equivalent behavior is covered by the fork's split-module unit, cross-platform, package-smoke, Human UI, remote-worker, and end-to-end regression suites. |
| 241 | 2026-07-17 | bb39e83 |
fix(downloads): sandbox inline responses | Implemented (adapted) | Inline responses add Content-Security-Policy: sandbox; all snapshot responses add nosniff, no-referrer, private no-store caching, safe content disposition, and streaming from a validated open file descriptor. |
| 242 | 2026-07-17 | b835b2c |
chore(release): bump version to 3.0.1 | Not adopted | Upstream release/version-history metadata is not copied because the fork maintains its independent 3.9.1 release line; user-visible functional commits are reviewed separately. |
| 243 | 2026-07-17 | 31d2b7b |
fix(downloads): infer MIME from display filename | Implemented (adapted) | MIME inference uses the original source filename first, then the optional browser display filename, and finally application/octet-stream. |
| 244 | 2026-07-17 | c684296 |
Merge pull request #18 from fwerkor/feat/inline-file-links | Superseded by reviewed commits | Merge-only commit; inline disposition, sandboxing, and MIME behavior are recorded on the underlying commits. |
| 245 | 2026-07-17 | 2e028d1 |
docs(config): keep one canonical example | Implemented (adapted) | Fork documentation is generated from the declarative schemas and maintains one canonical configuration/tool workflow using the current compact registry. |
| 246 | 2026-07-17 | 834fee5 |
fix(compose): forward canonical env settings | Implemented (adapted) | The fork's current workflows provide the same maintenance outcome through uv-managed builds, package smoke, amd64/arm64 Docker checks and publishing, cross-platform binaries, VS Code packaging, and retained diagnostics. |
| 247 | 2026-07-17 | a15c78d |
Merge pull request #19 from fwerkor/chore/single-config-example | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 248 | 2026-07-17 | 3f89325 |
feat(webui): render inline terminal images | Implemented (adapted) | The fork's shared browser xterm bundle now loads the official image addon in both the native terminal and optional browser OpenTUI Console. Sixel and iTerm IIP are enabled with explicit 16,777,216-pixel, 25 MB Sixel, 20 MB iTerm, and 64 MB retained-storage limits; output is rendered to a canvas layer and is never treated as HTML, SVG, or script. |
| 249 | 2026-07-17 | 2d49704 |
feat(ui): advertise inline image protocols | Implemented (adapted) | The browser OpenTUI PTY advertises xterm-256color, true color, and the VS Code/xterm.js program surface so compatible applications such as Yazi can select iTerm IIP or Sixel. The browser still receives only the authenticated PTY byte stream and no new server-side file capability. |
| 250 | 2026-07-17 | ad7d89a |
fix(webui): align image addon with xterm 5.5 | Implemented (adapted) | @xterm/addon-image 0.8.0 is pinned alongside @xterm/xterm 5.5.0 and @xterm/addon-fit 0.10.0. Its source wrapper, boundary tests, lockfile, reproducible generated bundle, license text, and sdist source checks are maintained in the fork's existing ui-terminal pipeline. |
| 251 | 2026-07-17 | eff6e65 |
Merge pull request #20 from fwerkor/feat/webui-inline-images | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 252 | 2026-07-17 | 054bcc5 |
fix(oauth): allow 8-character admin PINs | Implemented (adapted) | The public OAuth startup gate uses the final upstream minimum: seven-character values fail and an eight-character non-placeholder value succeeds. Documentation still recommends a substantially longer random approval secret for production. |
| 253 | 2026-07-17 | 5b174b7 |
fix(auth): persist OAuth clients and grant full access | Implemented (adapted) | The fork persists only locally approved public clients in a private atomic registry, restores them across app rebuilds, rolls back approval when persistence fails, and leaves unapproved registrations ephemeral. Its default grant already includes every advertised feature scope while explicit narrower requests remain scoped. |
| 254 | 2026-07-17 | a86f367 |
fix(auth): preserve scoped tokens and bound registrations | Implemented (adapted) | Authorization codes retain the normalized requested scope and token exchange signs and returns that exact grant. Dynamic registrations are serialized, remaining-only capacity is bounded, stale remaining clients expire, approved clients survive pruning and reload, and identical public registrations reuse the preferred existing client. |
| 255 | 2026-07-17 | 9137843 |
Merge pull request #21 from fwerkor/fix/oauth-pin-min-length-8 | Superseded by reviewed commits | Merge-only commit; the final eight-character approval-PIN threshold is recorded on 054bcc5 and incorporated into the adapted public OAuth credential gate. |
| 256 | 2026-07-17 | d5f9b73 |
build(ui): stage OpenTUI for standalone embedding | Implemented (adapted) | The adapted OpenTUI source is built and smoke-tested with pinned Bun across supported platforms; source distributions, release archives, Docker, runtime discovery, and generated-output exclusions cover this maintenance outcome. |
| 257 | 2026-07-17 | b6c8618 |
fix(binary): activate embedded OpenTUI runtime | Implemented (adapted) | The runtime supports bounded atomic materialization of an optional compressed platform payload, including executable permissions and concurrent Windows replacement handling. Official archives and Docker normally use a sidecar, while the same resolver also supports embedded and Bun-source modes. |
| 258 | 2026-07-17 | d29d2cb |
chore(ui): ignore staged native runtime | Implemented (adapted) | Generated OpenTUI node_modules, coverage, dist sidecars, and optional embedded payloads are ignored. The sdist includes only source, scripts, package metadata, and the lockfile. |
| 259 | 2026-07-17 | 35ca8b7 |
fix(docker): wire and verify bundled human UI runtime | Implemented (adapted) | Docker uses a pinned Bun build stage and installs the compiled OpenTUI sidecar beside the server launcher. Runtime discovery and smoke coverage verify the deployed command path. |
| 260 | 2026-07-17 | 88fce86 |
test(ui): add standalone and Docker runtime smoke | Implemented (adapted) | CI now type-checks, tests, compiles, and smoke-runs OpenTUI on Linux, macOS, and Windows. Docker and release paths build the sidecar, and PTY or ConPTY cleanup plus process termination have focused Python coverage. |
| 261 | 2026-07-17 | d032e8f |
ci(ui): verify standalone and Docker UI runtimes | Implemented (adapted) | CI now type-checks, tests, compiles, and smoke-runs OpenTUI on Linux, macOS, and Windows. Docker and release paths build the sidecar, and PTY or ConPTY cleanup plus process termination have focused Python coverage. |
| 262 | 2026-07-17 | 8e4ef5a |
fix(binary): embed compressed TUI payload | Implemented (adapted) | The runtime supports bounded atomic materialization of an optional compressed platform payload, including executable permissions and concurrent Windows replacement handling. Official archives and Docker normally use a sidecar, while the same resolver also supports embedded and Bun-source modes. |
| 263 | 2026-07-17 | a3abb41 |
fix(binary): unpack embedded TUI at startup | Implemented (adapted) | The runtime supports bounded atomic materialization of an optional compressed platform payload, including executable permissions and concurrent Windows replacement handling. Official archives and Docker normally use a sidecar, while the same resolver also supports embedded and Bun-source modes. |
| 264 | 2026-07-17 | c628d9c |
ci(ui): retain PyInstaller failure logs | Superseded by reviewed commits | Temporary diagnostics for the upstream embedded-runtime investigation are superseded by the fork cross-platform OpenTUI build, test, smoke, release, Docker, and ordinary workflow logs recorded on the implemented packaging rows. |
| 265 | 2026-07-17 | 029fa6f |
docs(ui): describe embedded standalone and Docker runtimes | Implemented (adapted) | The concise Human interface guide documents the browser UI, native CLI, browser Console, supported installation outcomes, and user-visible security boundaries. Runtime resolution, packaging, and artifact provenance remain in Development, Architecture, and the focused maintenance record rather than the user guide. |
| 266 | 2026-07-17 | b0d8547 |
ci(ui): report temporary macOS build diagnostics | Superseded by reviewed commits | Temporary diagnostics for the upstream embedded-runtime investigation are superseded by the fork cross-platform OpenTUI build, test, smoke, release, Docker, and ordinary workflow logs recorded on the implemented packaging rows. |
| 267 | 2026-07-17 | 0f21efd |
ci(ui): capture standalone runtime diagnostics | Superseded by reviewed commits | Temporary diagnostics for the upstream embedded-runtime investigation are superseded by the fork cross-platform OpenTUI build, test, smoke, release, Docker, and ordinary workflow logs recorded on the implemented packaging rows. |
| 268 | 2026-07-17 | 10347a6 |
ci(ui): expose failure summaries through artifacts | Superseded by reviewed commits | Temporary diagnostics for the upstream embedded-runtime investigation are superseded by the fork cross-platform OpenTUI build, test, smoke, release, Docker, and ordinary workflow logs recorded on the implemented packaging rows. |
| 269 | 2026-07-17 | 05039a1 |
ci(ui): add temporary cross-platform diagnostics | Superseded by reviewed commits | Temporary diagnostics for the upstream embedded-runtime investigation are superseded by the fork cross-platform OpenTUI build, test, smoke, release, Docker, and ordinary workflow logs recorded on the implemented packaging rows. |
| 270 | 2026-07-17 | 00f27f4 |
test(ui): terminate Windows one-file process trees reliably | Implemented (adapted) | CI now type-checks, tests, compiles, and smoke-runs OpenTUI on Linux, macOS, and Windows. Docker and release paths build the sidecar, and PTY or ConPTY cleanup plus process termination have focused Python coverage. |
| 271 | 2026-07-17 | 7d44444 |
ci(ui): keep final cross-platform runtime coverage | Implemented (adapted) | CI now type-checks, tests, compiles, and smoke-runs OpenTUI on Linux, macOS, and Windows. Docker and release paths build the sidecar, and PTY or ConPTY cleanup plus process termination have focused Python coverage. |
| 272 | 2026-07-17 | 1109c4e |
ci(ui): remove temporary diagnostic workflow | Superseded by reviewed commits | Temporary diagnostics for the upstream embedded-runtime investigation are superseded by the fork cross-platform OpenTUI build, test, smoke, release, Docker, and ordinary workflow logs recorded on the implemented packaging rows. |
| 273 | 2026-07-17 | d0d7319 |
ci: apply cross-workflow Bash compatibility patch | Not adopted | This patch mutates upstream workflow scripts across jobs. The fork's isolated browser launcher and existing uv/Bun jobs do not consume that compatibility patch surface. |
| 274 | 2026-07-17 | 41ada78 |
ci: run one-time Bash compatibility patch on PR | Not adopted | The fork does not rewrite browser workflow scripts during pull requests; its locked launcher and workflow YAML are validated directly, so this one-time patch job is unnecessary. |
| 275 | 2026-07-17 | b1bc388 |
ci: make one-time Bash patch line-based | Not adopted | This is a follow-up to the unused upstream PR-time workflow rewriter. The fork has no corresponding line-based mutation step to repair. |
| 276 | 2026-07-17 | ce71216 |
ci: export Bash-compatible workflow patches | Implemented (adapted) | The fork's current workflows provide the same maintenance outcome through uv-managed builds, package smoke, amd64/arm64 Docker checks and publishing, cross-platform binaries, VS Code packaging, and retained diagnostics. |
| 277 | 2026-07-17 | 786ddf4 |
fix(ui): quote embedded TUI command paths | Implemented (adapted) | Configured and discovered OpenTUI commands are represented as argv arrays; Windows quoted paths are parsed without shell interpolation and have regression coverage. |
| 278 | 2026-07-17 | 75ed15e |
fix(ci): support macOS Bash 3.2 in binary builds | Implemented (adapted) | The fork's current workflows provide the same maintenance outcome through uv-managed builds, package smoke, amd64/arm64 Docker checks and publishing, cross-platform binaries, VS Code packaging, and retained diagnostics. |
| 279 | 2026-07-17 | 205a299 |
Merge pull request #22 from fwerkor/fix/embedded-ui-runtime | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 280 | 2026-07-17 | a33453b |
Update pyproject.toml | Not adopted | This commit changes upstream project/repository history rather than portable runtime behavior; the fork retains its own packaging metadata and contribution history. |
| 281 | 2026-07-17 | ca2c402 |
Merge pull request #23 from fwerkor/fwerkor-patch-1 | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 282 | 2026-07-17 | 75cbf95 |
Fix job store migration and startup durability | Implemented (adapted) | Store v1 migration, primary/backup recovery, pre-launch reservation, durable starting state, startup rollback, and interrupted-start recovery are implemented in the fork job service. |
| 283 | 2026-07-17 | 0447f96 |
Cover job startup failure paths | Implemented (adapted) | Tests verify shell-launch failure is persisted as a terminal failed job and interrupted starts recover only when a matching shell remains active. |
| 284 | 2026-07-17 | 7b7e7c9 |
Merge pull request #24 from fwerkor/fix/job-store-migration | Superseded by reviewed commits | Merge-only commit; migration, startup durability, and failure-path decisions are recorded on the underlying job commits. |
| 285 | 2026-07-17 | 605f0c2 |
fix(audit): preserve tool inputs without redaction | Not adopted | The fork intentionally keeps best-effort credential redaction. Non-sensitive inputs remain complete within the event budget, but raw tokens, approval PINs, authorization headers, and download URLs are not retained. |
| 286 | 2026-07-17 | e3fe41b |
Merge pull request #25 from fwerkor/fix/audit-no-redaction | Superseded by reviewed commits | Merge-only commit for the upstream no-redaction direction, which the fork intentionally does not adopt. |
| 287 | 2026-07-17 | 005b98f |
Fix WebUI mouse and terminal shortcuts | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 288 | 2026-07-17 | e82a76b |
Cover human UI mouse interactions | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 289 | 2026-07-17 | 77ab1e2 |
Rebuild WebUI assets with CI Bun | Not adopted | This commit only regenerates upstream native WebUI assets. The fork maintains a different browser-native static UI, while OpenTUI has its own committed source, bun.lock, pinned Bun CI, and sidecar build pipeline. |
| 290 | 2026-07-17 | e2d5ac6 |
Stabilize terminal creation browser smoke | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 291 | 2026-07-17 | 584cfa6 |
ci: remove redundant UI runtime workflow | Implemented (adapted) | The fork's current workflows provide the same maintenance outcome through uv-managed builds, package smoke, amd64/arm64 Docker checks and publishing, cross-platform binaries, VS Code packaging, and retained diagnostics. |
| 292 | 2026-07-17 | eee29f3 |
Merge pull request #26 from fwerkor/fix/webui-tui-input | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 293 | 2026-07-17 | 65a09c6 |
fix: recycle idle MCP sessions sooner | Superseded by reviewed commits | The fork adopts the later finalized retention policy directly: stateful MCP sessions default to a 180-second idle timeout and a 1024-session capacity, so the intermediate 300-second value is not retained. |
| 294 | 2026-07-17 | b4f495d |
fix: recycle MCP sessions after three minutes | Implemented (adapted) | Stateful Streamable HTTP sessions are configured with the finalized 180-second idle timeout, exposed through env/YAML/CLI/generated configuration, and covered by real SDK integration tests. |
| 295 | 2026-07-17 | a3defb6 |
Merge pull request #28 from fwerkor/fix/mcp-session-retention | Superseded by reviewed commits | The merged session-retention behavior is accounted for by the reviewed 65a09c6 and b4f495d rows and the fork-native stateful session limiter. |
| 296 | 2026-07-17 | 347db8e |
fix(ui): consolidate audit tool calls | Implemented (adapted) | The fork keeps explicit start/end rows in private JSONL for retention integrity, then pairs them at query time by call_id or a legacy tool/node/session key. Unpaired calls remain visible and semantic child events are folded into the displayed call without deleting source records. |
| 297 | 2026-07-17 | f9940b0 |
test: cover audit call consolidation | Implemented (adapted) | Fork tests cover call pairing, legacy rows without IDs, child-event folding, unpaired status, filtering, malformed JSONL lines, and hidden authentication noise. |
| 298 | 2026-07-17 | 287cd61 |
Merge pull request #27 from fwerkor/fix/audit-ui-consolidation | Superseded by reviewed commits | Merge-only integration; fork handling is recorded on 347db8e and f9940b0. |
| 299 | 2026-07-17 | 27e6d35 |
chore: bump version to 3.0.3 | Not adopted | Upstream release/version-history metadata is not copied because the fork maintains its independent 3.9.1 release line; user-visible functional commits are reviewed separately. |
| 300 | 2026-07-17 | 1278272 |
Merge pull request #29 from fwerkor/release/v3.0.3 | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 301 | 2026-07-17 | ad1a6d5 |
fix(ui): render image previews in files pane | Implemented (adapted) | Files and Audit preserve the browser image payload and, for OpenTUI viewport requests, add a Pillow-decoded first-frame RGBA thumbnail with strict source-pixel, byte, dimension, and format limits. The copied OpenTUI renderer uses the corrected supersampling geometry and has focused tests. |
| 302 | 2026-07-18 | 41407b8 |
fix: keep runtime version in sync with releases | Not adopted | Upstream release/version-history metadata is not copied because the fork maintains its independent 3.9.1 release line; user-visible functional commits are reviewed separately. |
| 303 | 2026-07-17 | 7ad4d84 |
feat(skills): support multiple registry sources | Implemented (adapted) | Skill discovery now merges deduplicated project/session, managed, and global roots in that priority order under shared count, scan-entry, and path-byte budgets. Fixed tools accept an explicit local or remote session_id, remote scans execute inside the owning worker, dynamic tools track default-workspace source fingerprints, duplicate names are bounded warnings, and the fork retains strict no-symlink/source-containment rules. |
| 304 | 2026-07-17 | e3206a0 |
fix(skills): validate rooted paths portably | Implemented (adapted) | Portable rooted/name/path validation is implemented without adopting upstream's multi-source registry API. |
| 305 | 2026-07-18 | 4c61d21 |
fix(ui): correct image preview supersampling dimensions | Implemented (adapted) | Files and Audit preserve the browser image payload and, for OpenTUI viewport requests, add a Pillow-decoded first-frame RGBA thumbnail with strict source-pixel, byte, dimension, and format limits. The copied OpenTUI renderer uses the corrected supersampling geometry and has focused tests. |
| 306 | 2026-07-18 | 8bc1d9a |
test(ui): verify image preview cell mapping | Implemented (adapted) | The shared Pillow image preview and OpenTUI renderer use supersampled RGBA pixels with ceiling pixel-to-cell mapping. Direct tests cover odd, even, and minimum image dimensions in addition to the existing renderer clipping and viewport tests. |
| 307 | 2026-07-18 | 6666332 |
Merge pull request #30 from fwerkor/fix/files-image-preview | Superseded by reviewed commits | Merge-only commit for the reviewed Human UI preview fixes; each underlying commit retains its explicit decision. |
| 308 | 2026-07-18 | 42e0480 |
Merge branch 'main' into feat/multi-source-skills | Superseded by reviewed commits | Merge-only commit; functional decisions are recorded on the underlying Skill commits. |
| 309 | 2026-07-18 | 3746dbd |
Merge branch 'main' into fix/version-consistency | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 310 | 2026-07-18 | 1ab1b83 |
Merge pull request #32 from fwerkor/feat/multi-source-skills | Superseded by reviewed commits | Merge-only commit; multi-source behavior remains a session-scoped follow-up while portable validation was adapted. |
| 311 | 2026-07-18 | e808149 |
Merge branch 'main' into fix/version-consistency | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 312 | 2026-07-18 | 1834f9c |
test: avoid hard-coded CLI version assertions | Implemented (adapted) | Equivalent behavior is covered by the fork's split-module unit, cross-platform, package-smoke, Human UI, remote-worker, and end-to-end regression suites. |
| 313 | 2026-07-18 | bc706c4 |
Merge branch 'main' into fix/version-consistency-ci | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 314 | 2026-07-18 | 9c1f323 |
Merge pull request #33 from fwerkor/fix/version-consistency-ci | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 315 | 2026-07-18 | cf6b4e5 |
chore: bump version to 3.0.4 | Not adopted | Upstream release/version-history metadata is not copied because the fork maintains its independent 3.9.1 release line; user-visible functional commits are reviewed separately. |
| 316 | 2026-07-18 | 01c37f2 |
Merge pull request #34 from fwerkor/release/v3.0.4 | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 317 | 2026-07-18 | 46d3cde |
revert: restore original PR #31 contribution path | Not adopted | This commit changes upstream project/repository history rather than portable runtime behavior; the fork retains its own packaging metadata and contribution history. |
| 318 | 2026-07-18 | e4f4ae5 |
fix: keep version-agnostic CLI assertion during revert | Not adopted | Upstream release/version-history metadata is not copied because the fork maintains its independent 3.9.1 release line; user-visible functional commits are reviewed separately. |
| 319 | 2026-07-18 | 2176586 |
Merge pull request #35 from fwerkor/revert/pr33-for-original-contributor | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 320 | 2026-07-18 | 7d60caa |
fix(release): ship standalone UI as one executable | Implemented (adapted) | Official platform archives now contain the self-contained main executable together with the matching native OpenTUI sidecar. This keeps the server binary independent while preserving one-archive installation and local-shell-mcp tui discovery. |
| 321 | 2026-07-18 | 3ad2a58 |
fix(oauth): reuse matching public clients | Implemented (adapted) | Dynamic registration now uses a canonical client-name and redirect-URI-set key, prefers approved clients and then the oldest remaining match, and serializes prune, reuse lookup, capacity enforcement, id allocation, and insertion. The split HTTP adapter returns 200 with reused=true for matches and 201 with reused=false for new clients; approved matches remain reusable after persisted-state reload. |
| 322 | 2026-07-18 | 3ae1338 |
fix(audit): preserve complete call payloads | Implemented (adapted) | Non-sensitive call inputs, outputs, and nested errors are retained inline up to max_audit_event_bytes; oversized payloads become explicitly marked bounded previews instead of unbounded records. |
| 323 | 2026-07-18 | 07f4885 |
fix(ui): keep Escape available in fullscreen | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 324 | 2026-07-18 | c9b6de9 |
Merge pull request #37 from fwerkor/fix/embed-opentui-runtime | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 325 | 2026-07-18 | dc4b0b1 |
Merge branch 'main' into fix/webui-oauth-client-reuse | Superseded by reviewed commits | Merge-only integration commit. The OAuth registration behavior is covered by 3ad2a58; unrelated mainline changes remain tracked under their own entries. |
| 326 | 2026-07-18 | 1c4e1ee |
Merge pull request #38 from fwerkor/fix/webui-oauth-client-reuse | Superseded by reviewed commits | Merge-only completion of the public-client reuse change reviewed and implemented under 3ad2a58. |
| 327 | 2026-07-18 | b6e84c8 |
Merge branch 'main' into fix/webui-fullscreen-escape | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 328 | 2026-07-18 | ab3d9c9 |
Merge branch 'main' into fix/audit-full-payloads | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 329 | 2026-07-18 | 5d7e11d |
fix(ui): make terminal output scrollable | Implemented (adapted) | Terminal snapshots render in a bounded preformatted pane with both horizontal and vertical scrolling, preserved whitespace, a keyboard-focusable output region, and responsive height limits. The browser does not hide the scrollbar or rely on an embedded xterm canvas. |
| 330 | 2026-07-18 | 013661c |
fix(audit): harden external payload retention | Partial (adapted) | Portable bounded redacted payloads, binary summaries, event limits, atomic retention, private permissions, and authorized detail APIs are implemented. Unlike upstream, values beyond the event budget are not recoverable from a private gzip side store; this is a deliberate but real forensic-retention difference. |
| 331 | 2026-07-18 | 3438a32 |
test(audit): make permission assertion portable | Implemented (adapted) | Permission assertions are platform-aware, while POSIX tests verify both the JSONL log and lock file use mode 0600. |
| 332 | 2026-07-18 | 3db979b |
fix(ui): support mouse wheel navigation | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 333 | 2026-07-18 | fc61348 |
fix(ui): stop file preview reload loop | Implemented (adapted) | Periodic bootstrap refresh preserves a valid Files selection without re-requesting its preview. Selection changes, editor transitions, navigation, sign-out, and deletions advance a generation counter so stale preview or editor responses cannot overwrite current state. |
| 334 | 2026-07-18 | 88646d5 |
test(audit): cover detail validation paths | Implemented (adapted) | Tests cover cycles, binary values, non-finite floats, unsupported objects, nested errors, oversized events, irreversible fingerprints, and secret redaction. |
| 335 | 2026-07-18 | d3bc56b |
feat(ui): make footer shortcuts clickable | Implemented (adapted) | The current upstream React/OpenTUI screen, theme, responsive layout, loading, keyboard, mouse, footer, and repaint modules are carried under ui-opentui and run against the fork API adapter. Their Bun typecheck and regression suite are part of CI; the native browser UI remains the default. |
| 336 | 2026-07-18 | d8976a1 |
cleanup(ui): remove Yazi packaging and references | Implemented (adapted) | Yazi packaging and subprocess references remain removed. The newly migrated OpenTUI Files screen uses the authenticated local and remote Files APIs directly, so no Yazi sidecar is reintroduced. |
| 337 | 2026-07-18 | dc8cad0 |
Merge pull request #43 from fwerkor/fix/file-preview-reload | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 338 | 2026-07-18 | 527a18b |
Merge branch 'main' into cleanup/remove-yazi | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 339 | 2026-07-18 | 902f447 |
Merge pull request #45 from fwerkor/cleanup/remove-yazi | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 340 | 2026-07-18 | 4c25a66 |
Merge branch 'main' into feat/clickable-footer-shortcuts | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 341 | 2026-07-18 | 08dfbc6 |
Merge pull request #46 from fwerkor/feat/clickable-footer-shortcuts | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 342 | 2026-07-18 | 781da0d |
Merge remote-tracking branch 'origin/main' into fix/audit-full-payloads | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 343 | 2026-07-18 | 4815a5e |
fix(ui): decouple fullscreen resize from keyboard lock | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 344 | 2026-07-18 | f289f07 |
Merge remote-tracking branch 'origin/main' into fix/webui-fullscreen-escape | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 345 | 2026-07-18 | aa16c7a |
Merge remote-tracking branch 'origin/main' into fix/terminal-output-scrolling | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 346 | 2026-07-18 | b0fef20 |
Merge remote-tracking branch 'origin/main' into fix/webui-mouse-wheel | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 347 | 2026-07-18 | 763aa28 |
test(ui): assert raw mode state directly | Implemented (adapted) | Equivalent behavior is covered by the fork's split-module unit, cross-platform, package-smoke, Human UI, remote-worker, and end-to-end regression suites. |
| 348 | 2026-07-18 | 16cb4c6 |
fix(audit): keep payloads portable and calls paired | Implemented (adapted) | Audit values are converted to portable JSON and retention groups tool-call start/end rows by call_id, preserving completed pairs without adopting the upstream external payload store. |
| 349 | 2026-07-18 | e0bcdbf |
feat(ui): add mouse navigation to files | Implemented (adapted) | The adapted OpenTUI Files screen uses the fork workspace-confined local and remote APIs, mutation capability flags, SHA-256 editor revision guards, bounded RGBA previews, portable path normalization, mouse navigation, and responsive layouts. Unsupported remote mutations remain visibly disabled rather than shell-emulated. |
| 350 | 2026-07-18 | 85e11a7 |
fix(ui): preserve terminal history viewport | Implemented (adapted) | When output is pinned to the bottom, snapshots replace the pane and continue following. Scrolling away preserves the rendered DOM and viewport; returning to the bottom or selecting Jump to latest renders the newest remaining snapshot once. |
| 351 | 2026-07-18 | d45d379 |
fix(ui): require completed file clicks | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 352 | 2026-07-18 | 65bd9b3 |
test(audit): cover retention edge paths | Implemented (adapted) | Retention tests cover bounded log size, completed pair integrity, concurrent writers, and atomic private replacement. |
| 353 | 2026-07-18 | 4ce23cc |
fix(audit): collapse tool call lifecycle rows | Implemented (adapted) | Lifecycle rows remain explicit on disk, while the Human UI query collapses them into stable metadata summaries and scope-sensitive details. This preserves retention consumers without exposing duplicate UI rows. |
| 354 | 2026-07-18 | 8af939a |
Merge pull request #47 from fwerkor/feat/files-mouse-navigation | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 355 | 2026-07-18 | 7936891 |
feat(ui): show remote LSM versions | Implemented (adapted) | Workers advertise the fork package version in their bounded registration metadata, and the browser Remotes list/detail views render it as inert text. Missing versions remain explicit rather than becoming false zeros or inferred controller versions. |
| 356 | 2026-07-18 | a9f1b94 |
fix(ui): freeze terminal history while scrolled | Implemented (adapted) | While scrolled away, incoming local or remote snapshots no longer rewrite the DOM. The browser stores only the latest remaining snapshot plus a bounded update count, preventing viewport jumps and unbounded history copies; machine, shell, auth, exit, error, and kill transitions clear the frozen state. |
| 357 | 2026-07-18 | 45ce451 |
fix(ui): preserve image preview proportions | Implemented (adapted) | Browser Files and Audit image previews use bounded containers with max-width, max-height, and object-fit: contain, preserving proportions across responsive layouts. |
| 358 | 2026-07-18 | d35f1b0 |
fix(ui): let WebUI use large viewports | Implemented (adapted) | The current upstream React/OpenTUI screen, theme, responsive layout, loading, keyboard, mouse, footer, and repaint modules are carried under ui-opentui and run against the fork API adapter. Their Bun typecheck and regression suite are part of CI; the native browser UI remains the default. |
| 359 | 2026-07-18 | 94b537b |
Merge pull request #48 from fwerkor/feat/remotes-lsm-version | Superseded by reviewed commits | Merge-only integration of the adapted worker-version reporting recorded on 7936891. |
| 360 | 2026-07-18 | 7fef85d |
Merge branch 'main' into fix/image-preview-layout | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 361 | 2026-07-18 | 0067171 |
Merge branch 'main' into fix/webui-fluid-size | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 362 | 2026-07-18 | 59d9445 |
feat(ui): add responsive system dashboard | Implemented (adapted) | The fork-native browser Dashboard polls a selected local or remote process for CPU, memory, workspace disk, network, uptime, version, bounded alerts, and metadata-only Audit activity. It uses one sessionless worker RPC per remote sample, retains sixty in-tab sparkline samples, and deliberately avoids cross-session Jobs/Todos aggregation. |
| 363 | 2026-07-18 | 9d8eaa7 |
chore: prepare PR 31 compatibility merge | Not adopted | Upstream release/version-history metadata is not copied because the fork maintains its independent 3.9.1 release line; user-visible functional commits are reviewed separately. |
| 364 | 2026-07-18 | 4e292c9 |
chore: bump version to 3.0.5 | Not adopted | Upstream release/version-history metadata is not copied because the fork maintains its independent 3.9.1 release line; user-visible functional commits are reviewed separately. |
| 365 | 2026-07-18 | 6436d23 |
Merge pull request #53 from fwerkor/chore/pr31-compat | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 366 | 2026-07-18 | ce01734 |
Merge pull request #31 from LeonardNJU/fix/version-consistency | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 367 | 2026-07-18 | 1a98ac4 |
Merge pull request #54 from fwerkor/chore/version-3.0.5 | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 368 | 2026-07-18 | a9db53f |
fix(ui): improve mobile WebUI interaction | Implemented (adapted) | The fork keeps its native browser Human UI as the default and adds OpenTUI as an optional second client plus a separate authenticated browser Console. Both use the same normalized Human UI APIs without making the WebUI depend on terminal rendering. |
| 369 | 2026-07-18 | 4384a6e |
fix(ui): harden touch input mode switching | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 370 | 2026-07-18 | d155eac |
fix(ui): preserve soft keyboard across shortcut taps | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 371 | 2026-07-18 | e30df0f |
fix(ui): guard first touch shortcut after mouse input | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 372 | 2026-07-18 | b1cdbe2 |
fix(ui): replace Ctrl+Q with Alt+Q | Implemented (adapted) | The fork now carries the adapted current upstream React/OpenTUI client under ui-opentui, exposes it through local-shell-mcp tui and an optional authenticated browser Console, and shares the existing Human UI APIs while retaining the native WebUI as the default. |
| 373 | 2026-07-18 | c7c8919 |
chore(ui): refresh embedded WebUI assets | Superseded by reviewed commits | Generated upstream UI asset refresh; the fork ships and validates its own browser-native source assets directly. |
| 374 | 2026-07-18 | 9fb2e89 |
fix(ui): make Alt+Q exit reliable | Implemented (adapted) | The fork now carries the adapted current upstream React/OpenTUI client under ui-opentui, exposes it through local-shell-mcp tui and an optional authenticated browser Console, and shares the existing Human UI APIs while retaining the native WebUI as the default. |
| 375 | 2026-07-18 | 52d04d9 |
fix(ui): confirm WebUI exits from the server | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 376 | 2026-07-18 | 6533324 |
fix(ui): reconnect after abnormal TUI exits | Implemented (adapted) | The native OpenTUI client exits cleanly on terminal shutdown, and the optional browser Console reconnects after abnormal process or WebSocket exits while keeping intentional stop, authentication failures, and normal exits explicit. |
| 377 | 2026-07-18 | 623918f |
test(ui): avoid double-clicking during smoke retries | Implemented (adapted) | Equivalent behavior is covered by the fork's split-module unit, cross-platform, package-smoke, Human UI, remote-worker, and end-to-end regression suites. |
| 378 | 2026-07-18 | 7e1e5c8 |
Merge pull request #51 from fwerkor/fix/image-preview-layout | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 379 | 2026-07-18 | 924872d |
Merge pull request #50 from fwerkor/fix/webui-fluid-size | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 380 | 2026-07-18 | 7efbe6d |
fix(audit): address payload retention and scope reviews | Partial (adapted) | Cross-process append safety, retention, portability, redaction, and scope-sensitive detail reauthorization are implemented. The external full-payload store remains absent, so oversized values are safely summarized rather than recoverable in full. |
| 381 | 2026-07-18 | f9b54bd |
fix(ui): preserve zero-valued extended ANSI colors | Implemented (adapted) | The renderer validates extended-color components by numeric range rather than truthiness, so indexed color 0 and RGB channels equal to 0 are preserved for foreground and background. Focused Node-driven tests cover true black and palette index zero. |
| 382 | 2026-07-18 | 59531e8 |
Merge remote-tracking branch 'origin/main' into fix/mobile-webui-repaint | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 383 | 2026-07-18 | 56c2b14 |
Merge remote-tracking branch 'origin/main' into fix/remove-webui-ctrlq | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 384 | 2026-07-18 | 5e02d8c |
Merge pull request #40 from fwerkor/fix/audit-full-payloads | Superseded by reviewed commits | Merge-only integration of the full-payload work. The implemented bounded audit behavior and the omitted external side-store capability are recorded on the constituent rows, including 013661c and 7efbe6d. |
| 385 | 2026-07-18 | 2fec2b3 |
Merge pull request #42 from fwerkor/fix/terminal-output-scrolling | Superseded by reviewed commits | Merge-only integration of terminal output scrolling adapted on 5d7e11d; later viewport preservation and freeze behavior are recorded separately on 85e11a7 and a9f1b94. |
| 386 | 2026-07-18 | c6b2e21 |
fix(audit): preserve nested failures when collapsing calls | Implemented (adapted) | Query-time call coalescing copies nested tool_call_end.error structures into the detail record and never substitutes a shallow status for the retained failure payload. |
| 387 | 2026-07-18 | c9347ea |
Merge remote-tracking branch 'origin/main' into fix/audit-call-aggregation | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 388 | 2026-07-18 | 6c4d7b5 |
Merge remote-tracking branch 'origin/main' into fix/webui-fullscreen-escape | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 389 | 2026-07-18 | 2684f30 |
Merge remote-tracking branch 'origin/main' into fix/webui-mouse-wheel | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 390 | 2026-07-18 | 3c0bb5f |
chore(ui): rebuild embedded assets with CI Bun version | Implemented (adapted) | OpenTUI is reproducibly rebuilt from committed source and bun.lock with pinned Bun 1.3.14 in the cross-platform CI and release jobs. The fork-native browser assets remain maintained by their separate static asset pipeline. |
| 391 | 2026-07-18 | bc8cf52 |
chore(ui): rebuild embedded assets with CI Bun version | Implemented (adapted) | OpenTUI is reproducibly rebuilt from committed source and bun.lock with pinned Bun 1.3.14 in the cross-platform CI and release jobs. The fork-native browser assets remain maintained by their separate static asset pipeline. |
| 392 | 2026-07-18 | 00f563f |
chore(ui): rebuild embedded assets with CI Bun version | Implemented (adapted) | OpenTUI is reproducibly rebuilt from committed source and bun.lock with pinned Bun 1.3.14 in the cross-platform CI and release jobs. The fork-native browser assets remain maintained by their separate static asset pipeline. |
| 393 | 2026-07-18 | 2e8952f |
chore(ui): rebuild embedded assets with CI Bun version | Implemented (adapted) | OpenTUI is reproducibly rebuilt from committed source and bun.lock with pinned Bun 1.3.14 in the cross-platform CI and release jobs. The fork-native browser assets remain maintained by their separate static asset pipeline. |
| 394 | 2026-07-18 | a1d59c4 |
fix(dashboard): handle missing telemetry and degraded sources | Implemented (adapted) | Missing system metrics remain null and render as — rather than false zeroes. An unavailable Audit source produces a bounded warning and degraded source marker while preserving system telemetry; malformed remote values are rejected before browser delivery. |
| 395 | 2026-07-18 | 7c52e0b |
fix(audit): retain semantic child event details | Implemented (adapted) | Semantic child events remain independent JSONL records and are additionally folded into their parent call's authorized detail as related_events; metadata lists expose only the child-event count. |
| 396 | 2026-07-18 | 342d81a |
Merge pull request #41 from fwerkor/fix/webui-fullscreen-escape | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 397 | 2026-07-18 | e5c9aab |
Merge remote-tracking branch 'origin/main' into fix/webui-mouse-wheel | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 398 | 2026-07-18 | 169c108 |
Merge remote-tracking branch 'origin/fix/webui-mouse-wheel' into fix/remove-webui-ctrlq | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 399 | 2026-07-18 | de7a74c |
Merge remote-tracking branch 'origin/fix/remove-webui-ctrlq' into fix/mobile-webui-repaint | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 400 | 2026-07-18 | 24c1a3e |
Merge remote-tracking branch 'origin/fix/mobile-webui-repaint' into fix/audit-call-aggregation | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 401 | 2026-07-18 | eafe358 |
Merge remote-tracking branch 'origin/fix/audit-call-aggregation' into feat/dashboard | Superseded by reviewed commits | Merge synchronization only; the fork's Dashboard and Audit integration is recorded on 59d9445, 347db8e, 7c52e0b, and ab97555. |
| 402 | 2026-07-18 | 1dca0c0 |
Hide redundant WebUI terminal scrollbar | Implemented (adapted) | The current browser-native Human UI provides the corresponding authenticated, machine-scoped behavior with responsive controls, stale-response guards, bounded previews, safe text rendering, and focused regression coverage. |
| 403 | 2026-07-18 | ed7136b |
Merge pull request #44 from fwerkor/fix/webui-mouse-wheel | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 404 | 2026-07-18 | 5035536 |
Merge pull request #39 from fwerkor/fix/remove-webui-ctrlq | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 405 | 2026-07-18 | e17e9d7 |
Merge pull request #36 from fwerkor/fix/mobile-webui-repaint | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 406 | 2026-07-18 | ab97555 |
Merge pull request #49 from fwerkor/fix/audit-call-aggregation | Implemented (adapted) | The fork-native browser Audit surface now provides query-time aggregation while intentionally retaining explicit paired JSONL source events. |
| 407 | 2026-07-18 | d80dae9 |
Merge remote-tracking branch 'origin/main' into fix/webui-hide-scrollbar | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 408 | 2026-07-18 | 14053a1 |
fix(ui): clear terminal commands after submit | Implemented (adapted) | Submitting a non-empty terminal command sends it once through the active machine-scoped socket, records it in bounded in-tab history, and immediately clears the input field. Failed or disconnected sends do not clear or record the draft. |
| 409 | 2026-07-18 | c753f9c |
Merge pull request #55 from fwerkor/fix/webui-hide-scrollbar | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 410 | 2026-07-18 | 71d2383 |
Merge pull request #52 from fwerkor/feat/dashboard | Implemented (adapted) | Merge-only integration of the Dashboard feature; the fork-native implementation and architectural differences are recorded on 59d9445 and a1d59c4. |
| 411 | 2026-07-18 | d9f006f |
chore: bump version to 3.0.6 | Not adopted | Upstream release/version-history metadata is not copied because the fork maintains its independent 3.9.1 release line; user-visible functional commits are reviewed separately. |
| 412 | 2026-07-18 | e5410ae |
Merge pull request #56 from fwerkor/release/v3.0.6 | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 413 | 2026-07-19 | 1b82da8 |
fix(ui): prevent dashboard alert text overlap | Implemented (adapted) | Dashboard alert and activity rows bound title/meta columns independently, wrap details, constrain list height, and collapse to a vertical mobile layout so long machine names, timestamps, and messages cannot overlap adjacent content. |
| 414 | 2026-07-19 | b10d68d |
Merge pull request #62 from fwerkor/fix/dashboard-needs-attention-layout | Superseded by reviewed commits | Merge-only commit for the upstream-only dashboard layout change recorded on 1b82da8. |
| 415 | 2026-07-19 | 12eadd3 |
fix(ui): rebalance wide audit layout | Implemented (adapted) | The adapted OpenTUI Audit screen uses the fork machine-aware Audit API, bounded list/detail layouts, syntax highlighting, sanitized image details, and current upstream repaint and clipping fixes, with the native browser Audit remaining available independently. |
| 416 | 2026-07-19 | 04bbb43 |
fix(ui): resize persistent terminals with TUI viewport | Implemented (adapted) | The adapted OpenTUI Terminals screen uses the fork machine-scoped persistent-shell API, normalizes shell_id to its client session model, resizes tmux or ConPTY from the viewport, preserves command history and raw input behavior, and is covered by the upstream TypeScript regression suite. |
| 417 | 2026-07-19 | a127ebb |
fix(tui): add terminal command history navigation | Implemented (adapted) | The adapted OpenTUI Terminals screen uses the fork machine-scoped persistent-shell API, normalizes shell_id to its client session model, resizes tmux or ConPTY from the viewport, preserves command history and raw input behavior, and is covered by the upstream TypeScript regression suite. |
| 418 | 2026-07-19 | 236ce1b |
fix(tui): show loading before initial data arrives | Implemented (adapted) | The current upstream React/OpenTUI screen, theme, responsive layout, loading, keyboard, mouse, footer, and repaint modules are carried under ui-opentui and run against the fork API adapter. Their Bun typecheck and regression suite are part of CI; the native browser UI remains the default. |
| 419 | 2026-07-19 | a7404e7 |
test: cover unsupported ConPTY resize | Implemented (adapted) | When pywinpty does not expose setwinsize, persistent-shell and raw-bridge resize return resized=false with backend conpty and keep the session connected. Local and controller-side normalization tests verify that false is accepted while mismatched backend responses remain rejected. |
| 420 | 2026-07-19 | a7fe41c |
fix(ui): stabilize Files preview layout | Implemented (adapted) | The adapted OpenTUI Files screen uses the fork workspace-confined local and remote APIs, mutation capability flags, SHA-256 editor revision guards, bounded RGBA previews, portable path normalization, mouse navigation, and responsive layouts. Unsupported remote mutations remain visibly disabled rather than shell-emulated. |
| 421 | 2026-07-19 | b25adae |
feat(ui): navigate from directory previews | Implemented (adapted) | Directory preview children are actionable in the browser: selecting one navigates to the containing directory, preserves the child selection, and requests its preview through the same stale-response guard. |
| 422 | 2026-07-19 | f6d24dd |
Merge branch 'main' into fix/tui-initial-loading-states | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 423 | 2026-07-19 | 795e82d |
fix: stream remote file transfers over raw HTTP | Implemented (adapted) | The transfer intent is implemented through the fork transport model: same-worker file and archived-directory copies stream privately without JSON/base64, while local/remote and different-worker routes use bounded authenticated checksummed control-plane chunks. Both paths enforce session ownership, source-change detection, private temporaries, fsync, atomic publish, and cleanup. |
| 424 | 2026-07-19 | b01f437 |
Merge pull request #61 from fwerkor/fix/tui-initial-loading-states | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 425 | 2026-07-19 | fdd61df |
Merge branch 'main' into fix/tui-terminal-resize | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 426 | 2026-07-19 | 75b0ea9 |
Merge pull request #59 from fwerkor/fix/tui-terminal-resize | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 427 | 2026-07-19 | 908339f |
Merge branch 'main' into fix/remote-transfer-streaming | Superseded by reviewed commits | Merge synchronization only; the final remote-transfer behavior and fork-native partial adaptation are recorded on 795e82d. |
| 428 | 2026-07-19 | d5015c5 |
Merge pull request #65 from fwerkor/fix/remote-transfer-streaming | Superseded by reviewed commits | Merge-only integration of the remote-transfer streaming branch; reviewed with constituent commit 795e82d. |
| 429 | 2026-07-19 | baf5234 |
fix(tui): contain Todos list rows | Implemented (adapted) | The adapted OpenTUI Todos screen includes the upstream bounded row layout, loading states, keyboard and mouse interaction, and revision-guarded API writes. The native browser Todos panel remains the default web surface. |
| 430 | 2026-07-19 | 4f454cb |
style(webui): make TUI background subtly transparent | Implemented (adapted) | The native WebUI keeps local-only wallpaper modes, while the optional OpenTUI Console enables xterm transparency so the selected background remains visible. No external wallpaper service is contacted. |
| 431 | 2026-07-20 | 7beea70 |
Merge pull request #67 from fwerkor/fix/todos-list-clipping | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 432 | 2026-07-19 | 15e7178 |
docs: add multilingual FAQ for common integration issues | Not adopted | This localization-only documentation change is outside the fork's canonical English documentation set; keeping unsupported translated copies would create an unverified maintenance surface. |
| 433 | 2026-07-19 | 13b9458 |
Merge remote-tracking branch 'origin/main' into feat/tui-subtle-transparency | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 434 | 2026-07-19 | c0ce2c0 |
Merge remote-tracking branch 'origin/main' into fix/audit-wide-layout-local | Superseded by reviewed commits | Merge synchronization for the upstream-only audit layout change recorded on 12eadd3. |
| 435 | 2026-07-19 | eeb6034 |
Merge remote-tracking branch 'origin/main' into fix/terminal-command-history | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 436 | 2026-07-19 | 4f83f49 |
Merge remote-tracking branch 'origin/main' into fix/files-preview-layout | Superseded by reviewed commits | Merge synchronization for the upstream-only Files preview layout change recorded on a7fe41c. |
| 437 | 2026-07-19 | 499e8e0 |
Merge remote-tracking branch 'origin/fix/files-preview-layout' into feat/files-preview-enter-select-local | Superseded by reviewed commits | Merge synchronization for upstream-only Files preview and navigation changes recorded on a7fe41c and b25adae. |
| 438 | 2026-07-20 | 9a2a96e |
Merge pull request #68 from fwerkor/feat/tui-subtle-transparency | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 439 | 2026-07-19 | 40c11cb |
Merge remote-tracking branch 'origin/docs/faq-common-issues' into merge/repaired-open-prs | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 440 | 2026-07-19 | 417cc05 |
Merge remote-tracking branch 'origin/fix/audit-wide-layout' into merge/repaired-open-prs | Superseded by reviewed commits | Merge synchronization for the upstream-only audit layout change recorded on 12eadd3. |
| 441 | 2026-07-19 | 072db58 |
Merge remote-tracking branch 'origin/fix/terminal-command-history' into merge/repaired-open-prs | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 442 | 2026-07-19 | 41e1fff |
Merge remote-tracking branch 'origin/feat/files-preview-enter-select' into merge/repaired-open-prs | Superseded by reviewed commits | Merge synchronization for upstream-only Files preview and navigation changes recorded on a7fe41c and b25adae. |
| 443 | 2026-07-19 | 6e3b6ad |
fix(ci): verify stable Files preview selection | Implemented (adapted) | Stable Files preview selection is covered by packaged JavaScript/Node state tests plus focused local/remote API tests for stale-response guards, previews, editing, scope separation, containment, corruption, unavailable workers, and bounds. A separate Playwright runtime is unnecessary for this invariant. |
| 444 | 2026-07-20 | b80a3d3 |
Merge pull request #73 from fwerkor/merge/repaired-open-prs | Superseded by reviewed commits | Merge-only synchronization; functional behavior is covered by the constituent reviewed commits and the fork-native implementation decisions recorded in this table. |
| 445 | 2026-07-20 | 77ebb77 |
fix(packaging): ship OpenTUI runtime in Python wheels | Implemented (adapted) | The fork now publishes explicit non-pure same-version wheels for Linux x86_64/aarch64, macOS x86_64/arm64, and Windows x86_64. A repository-owned uv_build pipeline compiles with pinned Bun, creates a deterministic bounded gzip payload, rewrites and verifies WHEEL/RECORD, rejects cross-tag or unaudited manylinux claims, and retains a payload-free universal wheel and sdist. |
| 446 | 2026-07-19 | 78f2bcb |
fix(packaging): handle Windows runtime materialization race | Implemented (adapted) | Platform wheels reuse the fork's bounded private materializer. Concurrent first use, atomic replacement, executable permissions, version-isolated cache paths, and Windows replacement races remain covered without weakening sidecar or Bun-source fallback. |
| 447 | 2026-07-19 | 3bcb6f2 |
fix(packaging): copy build hook into Docker image | Implemented (adapted) | The fork deliberately keeps uv_build rather than copying the Hatchling hook. The repository build script is included in the source distribution, while native wheel compilation runs on five matching CI/release runners and Docker continues to build its sidecar with pinned Bun. |
| 448 | 2026-07-19 | a452a95 |
fix(packaging): address embedded runtime review feedback | Implemented (adapted) | The builder and clean-install smoke independently verify filename tags, Root-Is-Purelib, RECORD, payload and executable digests, native magic, size limits, failure cleanup, private materialization, no Bun/sidecar dependency, and absence of native payloads from the universal wheel and sdist. |
| 449 | 2026-07-20 | d1fb52f |
Merge pull request #74 from LeonardNJU/fix/wheel-tui-runtime | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 450 | 2026-07-20 | 8835dee |
chore: release v3.0.7 | Not adopted | Upstream version bump only; fork releases are independent. |
| 451 | 2026-07-20 | 5b1bff7 |
Merge pull request #75 from fwerkor/release/v3.0.7 | Superseded by reviewed commits | Merge-only upstream release commit; constituent changes are recorded above. |
| 452 | 2026-07-20 | 246db6b |
fix(remote): keep heartbeat during result submission | Implemented (adapted) | The split remote-worker runtime now keeps a concurrent heartbeat active while retrying /remote/result submission, including expired-job results, and cancels the heartbeat immediately after acceptance. Focused coverage verifies retries preserve liveness and leave no background heartbeat task. |
| 453 | 2026-07-20 | 8037482 |
Merge pull request #77 from fwerkor/fix/remote-result-heartbeat | Superseded by reviewed commits | Merge-only integration; fork handling is recorded on 246db6b. |
| 454 | 2026-07-20 | d448c70 |
fix(webui): make TUI transparency visible | Implemented (adapted) | The native WebUI keeps local-only wallpaper modes, while the optional OpenTUI Console enables xterm transparency so the selected background remains visible. No external wallpaper service is contacted. |
| 455 | 2026-07-20 | 375e95a |
Merge pull request #79 from fwerkor/fix/webui-visible-tui-transparency | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 456 | 2026-07-20 | cd0652a |
chore: release v3.0.8 | Not adopted | Upstream version metadata bump only; the fork remains on its independent release line. |
| 457 | 2026-07-21 | 95d3316 |
Merge pull request #80 from fwerkor/release/v3.0.8 | Superseded by reviewed commits | Merge-only upstream release commit; handling is recorded on cd0652a. |
| 458 | 2026-07-20 | d25ee4d |
fix: report public shell timeout limits | Implemented (adapted) | The fork exposes the configured bounded-shell default and cap directly in the model-facing bash and run_python_code descriptions, validates oversized requests with the actual configured cap, and tests the generated descriptions. This gives agents the limits at tool-selection time instead of adding duplicate keys to an environment-info payload. |
| 459 | 2026-07-21 | 47ab284 |
Merge branch 'main' into fix/environment-timeout-display | Superseded by reviewed commits | Merge synchronization for the timeout-reporting change recorded on d25ee4d. |
| 460 | 2026-07-21 | 5c71b6e |
Merge pull request #81 from fwerkor/fix/environment-timeout-display | Superseded by reviewed commits | Merge-only integration; fork handling is recorded on d25ee4d. |
| 461 | 2026-07-21 | be2fc75 |
fix(tui): contain audit detail rows | Implemented (adapted) | The adapted OpenTUI Audit screen uses the fork machine-aware Audit API, bounded list/detail layouts, syntax highlighting, sanitized image details, and current upstream repaint and clipping fixes, with the native browser Audit remaining available independently. |
| 462 | 2026-07-21 | 8dd8902 |
Merge pull request #80 from fwerkor/fix/audit-records-clipping | Superseded by reviewed commits | Merge-only integration of the Audit row-containment change recorded on be2fc75. |
| 463 | 2026-07-21 | 505507f |
fix(tui): polish remote invite and clipboard | Implemented (adapted) | The adapted OpenTUI Remotes screen uses the fork control-plane API for inventory, one-time invites, rename, and revoke, including responsive selection, interaction isolation, and sensitive-command handling. Browser Remotes remains an independent native panel. |
| 464 | 2026-07-21 | f526a72 |
Merge pull request #82 from fwerkor/fix/remote-invite-selection | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 465 | 2026-07-21 | fbcf4d3 |
Merge pull request #82 from fwerkor/fix/audit-records-clipping | Superseded by reviewed commits | Reachable merge-only integration of the Audit row-containment change recorded on be2fc75; no independent fork behavior is required. |
| 466 | 2026-07-21 | e74cb73 |
Merge branch 'main' into fix/remote-invite-selection | Superseded by reviewed commits | Reachable merge synchronization combining the reviewed Audit fix with the remote-invite branch; functional handling remains recorded on be2fc75 and 505507f. |
| 467 | 2026-07-21 | 9036846 |
fix(ci): preserve in-progress branch runs | Implemented | CI concurrency now sets cancel-in-progress: false, preserving already running branch workflows exactly as upstream. |
| 468 | 2026-07-21 | e3611de |
Merge pull request #83 from fwerkor/fix/ci-preserve-branch-runs | Superseded by reviewed commits | Merge-only integration of the CI concurrency-policy change recorded on 9036846. |
| 469 | 2026-07-21 | 67b61e1 |
Merge pull request #83 from fwerkor/fix/remote-invite-selection | Superseded by reviewed commits | Reachable merge-only integration of the remote invite and clipboard behavior recorded on 505507f. |
| 470 | 2026-07-21 | 00dbc32 |
Merge branch 'main' into fix/ci-preserve-in-progress | Superseded by reviewed commits | Reachable merge synchronization bringing reviewed UI changes into the CI branch; functional handling remains recorded on 9036846, 505507f, and be2fc75. |
| 471 | 2026-07-21 | 298df96 |
Merge branch 'main' into fix/remote-invite-selection | Superseded by reviewed commits | Merge synchronization only; functional review remains recorded on 505507f. |
| 472 | 2026-07-21 | f7c2695 |
Merge pull request #84 from fwerkor/fix/remote-invite-selection | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 473 | 2026-07-21 | 59576a6 |
fix(skills): ignore git metadata in related files | Implemented (adapted) | Already covered by the fork's stronger related-file scanner: .git, .hg, .svn, and __pycache__ directories are excluded before consuming scan budget, with regression coverage that verifies metadata is absent from exposed related files. This remains the behavior recorded on 0be1eff. |
| 474 | 2026-07-21 | 79ee0ba |
Merge branch 'main' into fix/skills-ignore-git | Superseded by reviewed commits | Merge synchronization only; the substantive Skills behavior is recorded on 59576a6, while unrelated merged UI and CI changes retain their own review rows. |
| 475 | 2026-07-21 | 337599a |
Merge pull request #85 from fwerkor/fix/skills-ignore-git | Superseded by reviewed commits | Merge-only integration of the already implemented Skills metadata exclusion recorded on 59576a6. |
| 476 | 2026-07-21 | 5a045fa |
feat(ui): add lightweight syntax highlighting | Implemented (adapted) | A dependency-free browser tokenizer highlights bounded Files previews and Audit JSON through textContent/text nodes only; language detection, text preservation, script ordering, and no-active-markup behavior are tested. |
| 477 | 2026-07-21 | b7fb06f |
Merge pull request #87 from fwerkor/feat/ui-light-syntax-highlighting | Superseded by reviewed commits | Merge-only integration of the reviewed syntax-highlighting feature recorded on 5a045fa. |
| 478 | 2026-07-21 | 507d62a |
feat: support apply_patch envelopes | Implemented (adapted) | The fork now exposes a typed session-bound apply_patch compatibility tool that accepts unified diffs and *** Begin Patch envelopes while keeping hashline_edit as the preferred grounded editor. |
| 479 | 2026-07-21 | 2d817f6 |
Merge branch 'main' into fix/apply-patch-envelope-compat | Superseded by reviewed commits | Merge synchronization only; the substantive reviewed envelope feature is recorded on 507d62a. |
| 480 | 2026-07-21 | b2d4eea |
fix: make patch envelopes portable | Implemented (adapted) | The imported envelope parser includes portable path validation, newline handling, executable-delete mode, malformed-input rejection, no-op checks, and the complete upstream parser regression suite. |
| 481 | 2026-07-21 | 8022998 |
Merge branch 'main' into fix/apply-patch-envelope-compat | Superseded by reviewed commits | Merge synchronization only; functional handling is recorded on 507d62a and b2d4eea. |
| 482 | 2026-07-21 | cd7c091 |
Merge pull request #86 from fwerkor/fix/apply-patch-envelope-compat | Superseded by reviewed commits | Merge-only integration of the reviewed patch-envelope implementation and portability fixes recorded on 507d62a and b2d4eea. |
| 483 | 2026-07-21 | 629fc12 |
chore: release v3.0.9 | Superseded by fork release line | Upstream version-only release metadata is not applied because the fork is already on its independent 3.9.1 version line; functional commits are reviewed separately above. |
| 484 | 2026-07-21 | c1fc47e |
Merge pull request #88 from fwerkor/release/v3.0.9 | Superseded by reviewed commits | Merge-only upstream release integration; the patch-envelope changes and version handling are recorded on 507d62a, b2d4eea, and 629fc12. |
| 485 | 2026-07-21 | 837a2b7 |
Render view_image results in TUI audit | Implemented (adapted) | Files and Audit preserve the browser image payload and, for OpenTUI viewport requests, add a Pillow-decoded first-frame RGBA thumbnail with strict source-pixel, byte, dimension, and format limits. The copied OpenTUI renderer uses the corrected supersampling geometry and has focused tests. |
| 486 | 2026-07-21 | ef62e09 |
Merge pull request #89 from fwerkor/feat/audit-view-image-preview | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 487 | 2026-07-21 | 1d88c5d |
fix(ui): keep dashboard alert rows aligned | Implemented (adapted) | The fork now carries the adapted current upstream React/OpenTUI client under ui-opentui, exposes it through local-shell-mcp tui and an optional authenticated browser Console, and shares the existing Human UI APIs while retaining the native WebUI as the default. |
| 488 | 2026-07-21 | 2af1172 |
Merge pull request #90 from fwerkor/fix/dashboard-alert-row-clipping | Superseded by reviewed commits | Merge-only integration of the Dashboard alert alignment fix recorded on 1d88c5d. |
| 489 | 2026-07-21 | 933292b |
Fix UTF-8 boundary binary detection | Implemented (adapted) | The MCP file reader already uses strict incremental UTF-8 decoding across its configured read boundary. The browser-local Files preview/editor probe now additionally reads up to three continuation bytes and validates only an incomplete sequence that starts inside the fixed 4 KiB sample, so valid split multibyte characters remain text while invalid continuations remain binary. |
| 490 | 2026-07-21 | 3e3ff1a |
Merge branch 'main' into fix/utf8-binary-boundary | Superseded by reviewed commits | Merge synchronization only; the substantive UTF-8 boundary handling is recorded on 933292b, while the merged Dashboard alignment change is recorded on 1d88c5d. |
| 491 | 2026-07-21 | 96653f9 |
Merge pull request #91 from fwerkor/fix/utf8-binary-boundary | Superseded by reviewed commits | Merge-only integration of the UTF-8 boundary fix recorded on 933292b. |
| 492 | 2026-07-21 | bd0a373 |
fix: make apply_patch context handling reliable | Implemented (adapted) | Patch envelopes use repository-prefix discovery, deterministic context anchoring, ambiguity rejection, and a mandatory git apply --check phase before any worktree mutation. |
| 493 | 2026-07-21 | d15e107 |
fix: make apply_patch portable on Windows | Implemented (adapted) | Patch execution is cross-platform and session-bound, invokes Git through an argument vector rather than shell chaining, and supports local and remote workers through the existing dispatch protocol. |
| 494 | 2026-07-21 | f25d806 |
fix: pass git directory as native argument | Implemented (adapted) | git apply --directory and its prefix are passed as separate native arguments, preserving spaces and avoiding shell parsing on every supported platform. |
| 495 | 2026-07-21 | 570cb72 |
fix: invoke quoted executables in PowerShell | Implemented (adapted) | The general maintenance outcome is already covered by the fork's argv-based internal runners: PowerShell command rendering prefixes native executable invocations with & and quotes each argument, while other process paths use create_subprocess_exec argument vectors. The upstream commit's only new consumer is the not adopted apply_patch git pipeline, which is not adopted in the current architecture with that stack. |
| 496 | 2026-07-21 | 9288811 |
Merge pull request #93 from fwerkor/fix/apply-patch-context-anchors | Superseded by reviewed commits | Merge-only integration of the reviewed patch-envelope reliability and portability work recorded on bd0a373, d15e107, and f25d806, plus the already adapted PowerShell executable-invocation outcome recorded on 570cb72. |
| 497 | 2026-07-21 | 67b2272 |
fix(webui): expose wallpaper through TUI | Implemented (adapted) | The native WebUI keeps local-only wallpaper modes, while the optional OpenTUI Console enables xterm transparency so the selected background remains visible. No external wallpaper service is contacted. |
| 498 | 2026-07-21 | bfb9974 |
Merge branch 'main' into fix/webui-visible-transparency | Superseded by reviewed commits | Merge synchronization for the transparency change recorded on 67b2272 and the already reviewed Dashboard alignment work recorded on 1d88c5d. |
| 499 | 2026-07-21 | ef5a106 |
feat(ui): add native WebUI with optional OpenTUI | Implemented (adapted) | The fork keeps its native browser Human UI as the default and adds OpenTUI as an optional second client plus a separate authenticated browser Console. Both use the same normalized Human UI APIs without making the WebUI depend on terminal rendering. |
| 500 | 2026-07-21 | 5040d3c |
Merge branch 'main' into fix/webui-visible-transparency | Superseded by reviewed commits | Merge-only synchronization; transparency remains recorded on 67b2272, while the merged UTF-8/file handling is already recorded on 933292b. |
| 501 | 2026-07-21 | da8c682 |
Merge branch 'main' into fix/webui-visible-transparency | Superseded by reviewed commits | Merge-only synchronization combining the reviewed transparency presentation with the reviewed patch-envelope work recorded on bd0a373 through 9288811. |
| 502 | 2026-07-21 | f947e2a |
fix(ui): preserve legacy contracts and terminal fallbacks | Implemented (adapted) | The adapted OpenTUI Terminals screen uses the fork machine-scoped persistent-shell API, normalizes shell_id to its client session model, resizes tmux or ConPTY from the viewport, preserves command history and raw input behavior, and is covered by the upstream TypeScript regression suite. |
| 503 | 2026-07-21 | d0a9ed0 |
Merge branch 'main' into feat/native-webui | Superseded by reviewed commits | Merge synchronization only; native browser handling is recorded on ef5a106 and the merged patch-envelope changes remain recorded on bd0a373 through 9288811. |
| 504 | 2026-07-21 | 5822e02 |
fix(ui): preserve native dashboard correctness | Implemented (adapted) | The fork Dashboard uses its own typed telemetry schema and does not combine jobs with persistent sessions into one inferred workload count. The separate Todos panel normalizes and renders the persisted content field directly. Generation guards, remote/local machine identity, missing-value handling, and focused browser/API tests preserve the same correctness outcome without importing the upstream aggregate-page helpers. |
| 505 | 2026-07-21 | e7a1cab |
Merge pull request #92 from fwerkor/fix/webui-visible-transparency | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 506 | 2026-07-21 | 470c90c |
merge: reconcile native WebUI with transparency update | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 507 | 2026-07-21 | 9d0d89e |
Merge pull request #94 from LeonardNJU/feat/native-webui | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 508 | 2026-07-21 | bcc69e8 |
chore: prepare v3.1.0 | Superseded by fork release line | Upstream changes only package and module version metadata from 3.0.9 to 3.1.0. The fork remains on its independent 3.9.1 release line; all functional native WebUI and terminal commits are reviewed separately above. |
| 509 | 2026-07-21 | 9805ab6 |
Merge pull request #95 from fwerkor/release/v3.1.0 | Superseded by reviewed commits | Merge-only upstream release integration; version handling is recorded on bcc69e8 and the constituent functional changes retain their individual review rows. |
| 510 | 2026-07-21 | cb3e412 |
fix: run remote transfers as resumable jobs | Implemented (adapted) | The fork preserves the existing synchronous, session-bound session_copy contract and adds explicit background=true instead of replacing it with upstream's global transfer_path job API. Background copies reuse the fork's transactional chunk/pack/unpack primitives, return a controller-managed job owned by src_session_id, expose throttled structured progress and the original SessionCopyOutput as result, abort active transactions on cancellation, and retry from the durable source/destination payload. Remote-session job calls merge controller-managed transfers with worker shell jobs while retaining local inspection and cancellation during worker outages. |
| 511 | 2026-07-21 | ebd5290 |
test: cover managed transfer failure paths | Implemented (adapted) | Managed-job regressions now cover registration validation, bounded payload/progress/result state, handler and launch failures, lost-task recovery, durable logs, stop/retry races, mixed controller/worker routing, offline-worker fallback, real background file copy, transactional abort on cancellation, and retry after a missing source later becomes available. Existing overlap, gap, hash, overwrite-race, replaced-temp, archive, and post-commit cleanup tests continue to protect the lower transfer layer. |
| 512 | 2026-07-21 | e5a167c |
Merge pull request #96 from fwerkor/fix/resumable-remote-transfers | Superseded by reviewed commits | Merge-only integration of the resumable managed-transfer implementation and its failure-path tests, reviewed separately on cb3e412 and ebd5290. |
| 513 | 2026-07-21 | 8fdfbcb |
Polish WebUI and TUI presentation | Implemented (adapted) | The current upstream React/OpenTUI screen, theme, responsive layout, loading, keyboard, mouse, footer, and repaint modules are carried under ui-opentui and run against the fork API adapter. Their Bun typecheck and regression suite are part of CI; the native browser UI remains the default. |
| 514 | 2026-07-21 | c6b7f70 |
feat: auto-upgrade remote workers during polling | Implemented (adapted) | The fork adds optional poll protocol v1 without breaking payload-less legacy workers, records reported package/protocol/runtime identity, and blocks dequeue only for protocol-aware workers whose actual bundle digest differs. Its deterministic source allowlist now exposes a no-store manifest and digest-qualified archive; workers enforce same-origin downloads and redirects, size/version/SHA-256 checks, safe bounded extraction, numeric downgrade protection, transactional runtime replacement with rollback, credential-free POSIX re-exec or Windows spawn-and-exit, redacted capped retry, and persistent join-time installation. Unlike upstream, upgrade authority is the actual fork bundle digest rather than a package-version string, and the 3.9.1 release line is unchanged. |
| 515 | 2026-07-21 | a4a918e |
test: use native PYTHONPATH separator | Implemented (adapted) | Fork remote-worker and E2E test helpers already compose inherited PYTHONPATH values with os.pathsep, so Windows uses ; and POSIX uses :. Auto-upgrade re-exec now also prepends the persistent runtime with os.pathsep, removes duplicate entries, and has explicit POSIX and Windows regression coverage. The POSIX join shell script intentionally retains : because it runs under Bash. |
| 516 | 2026-07-21 | 402427b |
Fix dashboard alert repaint overlap | Implemented (adapted) | The current upstream React/OpenTUI screen, theme, responsive layout, loading, keyboard, mouse, footer, and repaint modules are carried under ui-opentui and run against the fork API adapter. Their Bun typecheck and regression suite are part of CI; the native browser UI remains the default. |
| 517 | 2026-07-21 | 83540ac |
Merge pull request #98 from fwerkor/feat/remote-auto-upgrade | Superseded by reviewed commits | Merge-only integration of worker auto-upgrade and its native-path-separator test, reviewed separately on c6b7f70 and a4a918e. |
| 518 | 2026-07-21 | 5723e8d |
Merge branch 'main' into fix/webui-visual-polish | Superseded by reviewed commits | Branch-reconciliation merge only; worker auto-upgrade and visual changes retain their individual decisions on c6b7f70, a4a918e, 8fdfbcb, and 402427b. |
| 519 | 2026-07-21 | 4537c16 |
Merge pull request #97 from fwerkor/fix/webui-visual-polish | Superseded by reviewed commits | Merge-only synchronization. The constituent OpenTUI, native WebUI, packaging, security, layout, or presentation behavior is implemented or adapted on the corresponding reviewed commits in this table. |
| 520 | 2026-07-21 | c40fd05 |
chore: prepare v3.1.1 | Superseded by fork release line | Upstream changes only package and module version metadata from 3.1.0 to 3.1.1. The fork remains on its independent 3.9.1 release line. |
| 521 | 2026-07-21 | 727b0f9 |
Merge pull request #99 from fwerkor/release/v3.1.1 | Superseded by reviewed commits | Merge-only release integration; version handling is recorded on c40fd05, and the constituent functional changes retain their individual review rows. |
| 522 | 2026-07-22 | 9a2f982 |
fix: contain audit image previews | Implemented (adapted) | OpenTUI audit previews now request dimensions from the actual available pane, re-request after layout changes, and constrain image nodes to the layout bounds; the fork call also preserves the selected machine. |
| 523 | 2026-07-22 | 101bf86 |
Merge pull request #100 from fwerkor/fix/audit-image-preview-bounds | Superseded by reviewed commits | Merge commit; the functional change is reviewed in row 518. |
| 524 | 2026-07-22 | 123e2fb |
Fix Dashboard alerts and terminal scrollbar | Implemented (adapted) | Dashboard alerts receive dedicated bounded rows and the browser xterm viewport hides native scrollbars while retaining programmatic and wheel scrolling. |
| 525 | 2026-07-22 | 0fc34d4 |
Address Dashboard review feedback | Implemented (adapted) | Alert layout measurement and clearing behavior are carried forward in the final Dashboard implementation and covered by OpenTUI tests. |
| 526 | 2026-07-22 | 54f246e |
Complete Dashboard ANSI sanitization | Implemented (adapted) | Dashboard alerts now remove CSI, OSC, DCS, C1, and other terminal control sequences before measuring and rendering; regression tests cover representative escape families. |
| 527 | 2026-07-22 | b53e37d |
feat: diagnose stale calls to deprecated tools (#102) | Not adopted | The fork uses the MCP SDK standard unknown-tool error for every unregistered name and carries no custom removed-name behavior. |
| 528 | 2026-07-22 | f93c32b |
Merge remote-tracking branch 'origin/main' into fix/dashboard-alerts-and-scrollbar | Superseded by reviewed commits | Merge-only synchronization; the resulting Dashboard changes are reviewed in rows 520-522. |
| 529 | 2026-07-22 | 8598320 |
Merge pull request #101 from fwerkor/fix/dashboard-alerts-and-scrollbar | Superseded by reviewed commits | Merge commit; the functional changes are reviewed in rows 520-522. |
| 530 | 2026-07-22 | 666111a |
chore: prepare v3.1.2 | Not adopted | Upstream release metadata is not copied; the fork keeps its independent version and release history. |
| 531 | 2026-07-22 | 9861868 |
Merge pull request #103 from fwerkor/release/v3.1.2 | Superseded by reviewed commits | Release merge only; its metadata decision is reviewed in row 526 and its functional constituents in rows 518-523. |
| 532 | 2026-07-22 | 872161d |
fix(remote): prevent concurrent worker processes | Implemented (adapted) | The modular fork worker now takes a cross-platform worker.lock before resume or invite enrollment. Manual duplicate processes fail before they can consume an invite or compete for jobs; the operating system releases the lock after crash or forced exit. |
| 533 | 2026-07-22 | e2228af |
fix(remote): bound worker poll requests | Implemented (adapted) | Worker HTTP requests use a separate 10-second connection deadline and negotiated total poll deadline. Bounded long polls require curl, which is already a documented remote-worker prerequisite, rather than falling back to an unbounded urllib read. |
| 534 | 2026-07-22 | 34dbc52 |
test(remote): avoid reopening locked worker file | Implemented (adapted) | Lock regressions exercise duplicate rejection through independent handles, release after process exit, and inherited-lock behavior without reopening or truncating the active lock file. |
| 535 | 2026-07-22 | 461e7f3 |
fix(remote): preserve worker lock lifecycle | Implemented (adapted) | The lock remains held across enrollment, polling, job execution, result submission, and runtime replacement. POSIX upgrades inherit the locked descriptor through exec, while failure paths cancel inheritability and release the original handle. |
| 536 | 2026-07-22 | a1118a9 |
fix(remote): negotiate bounded poll deadlines | Implemented (adapted) | Registration and resume responses advertise the controller poll timeout. Workers add transport grace and report their usable deadline; the controller long-polls for the shorter of its configured timeout and the worker-advertised bound. |
| 537 | 2026-07-22 | 38eba1a |
fix(remote): distinguish worker lock contention | Implemented (adapted) | Only recognized lock-contention errors are retried or converted to WorkerAlreadyRunningError; I/O and backend failures propagate immediately instead of being misreported as an active worker. |
| 538 | 2026-07-22 | 0addfd4 |
fix(remote): lock connect before enrollment | Implemented (adapted) | run_worker acquires the process lock before persisted-identity lookup, resume, or invite registration, preventing two first-start processes from consuming enrollment state concurrently. |
| 539 | 2026-07-22 | 4247fd6 |
fix(remote): reacquire Windows lock after reexec | Implemented (adapted) | Windows upgrades pass an inheritable native file handle with close_fds=False; the child adopts that handle, waits for the parent byte-range lock to be released, and reacquires it before reconnecting. |
| 540 | 2026-07-22 | fd5b630 |
fix(remote): continuously negotiate poll timeout | Implemented (adapted) | Every poll response carries the controller timeout and every subsequent worker request advertises its current bounded deadline, so controller configuration changes take effect without worker restart. |
| 541 | 2026-07-22 | 66faea0 |
fix(remote): detect legacy managed workers | Implemented (adapted) | The fork recognizes systemd/launchd workers by service PID and now also installs and controls those user services through local CLI commands. Managed processes wait for orderly lock/reexec handoff, while unrelated manual workers fail fast. |
| 542 | 2026-07-22 | f72164a |
Merge pull request #105 from fwerkor/fix/remote-worker-lifecycle-phase1 | Superseded by reviewed commits | Merge-only integration of the lifecycle lock, reexec handoff, deadline negotiation, and legacy managed-worker detection reviewed in rows 528-537. |
| 543 | 2026-07-23 | 889a7a1 |
fix(worker): set product user agent for updates | Implemented (adapted) | The fork's bounded same-origin manifest/archive downloader now sends User-Agent: local-shell-mcp-worker/<version> together with its existing cache-bypass headers. This preserves the fork's redirect, size, digest, and source-only runtime protections while providing product/version attribution to controllers, proxies, and CDNs. |
| 544 | 2026-07-24 | 9f1484e |
Merge pull request #110 from fwerkor/fix/worker-installer-user-agent | Superseded by reviewed commits | Merge-only integration of 889a7a1, whose outcome is now adapted in the fork-native worker runtime downloader. |
| 545 | 2026-07-24 | cbe8aa0 |
fix: report shell startup failures correctly | Implemented (adapted) | The fork adds shared typed PathNotFoundError and ShellExecutableNotFoundError classification at bounded-shell and ConPTY startup boundaries, preserves the existing REST FileNotFoundError contract, uses FastMCP's standard error channel, serializes structured worker failures, and reconstructs their type at the controller session facade. POSIX tmux also preflights the configured default shell rather than reporting a successful session that immediately exits. |
| 546 | 2026-07-24 | 22f6bcb |
fix: cover shell startup error edge cases | Implemented (adapted) | Fork regressions cover vanished working directories even when the operating-system exception names the shell, missing configured executables, ConPTY startup, standard MCP errors, REST compatibility, source-only worker imports, and remote error round-trips. The implementation does not infer paths from platform-specific message text. |
| 547 | 2026-07-24 | 75d5728 |
test: cover error classification branches | Implemented (adapted) | The fork's focused suite exercises trusted and untrusted filename/filename2 endpoints, generic fallback errors, typed payload serialization and reconstruction, controller manager envelopes, and source-only bundle inclusion across the corresponding branch conditions. |
| 548 | 2026-07-24 | 7c3f6ab |
fix: select missing endpoint for path errors | Implemented (adapted) | Workspace syscall classification considers both absolute endpoints but selects only an endpoint that is inside the configured workspace and actually missing, so an existing source no longer hides a missing destination. Relative and out-of-workspace endpoints are deliberately ignored. |
| 549 | 2026-07-24 | e4609db |
Merge pull request #112 from fwerkor/fix/issue-106-file-not-found | Superseded by reviewed commits | Merge-only integration of the startup/path error work reviewed on cbe8aa0, 22f6bcb, 75d5728, and 7c3f6ab; no additional behavior requires a separate fork implementation. |
| 550 | 2026-07-23 | e2e0985 |
fix(jobs): bound job store lock waits | Implemented (adapted) | Job-store transactions now share a two-second process/file acquisition budget. The reusable private lock helper performs non-blocking cross-platform retries, while public timeout text omits the private state path and local audit records retain lock kind and path. Business TimeoutError raised inside a transaction is not misclassified as lock contention. |
| 551 | 2026-07-23 | 91da33e |
fix(jobs): preserve managed state after lock contention | Implemented (adapted) | Session-bound managed log, progress, and finish updates retry bounded contention rather than losing terminal state. The fork preserves its controller-managed session_copy payload/result bounds and session ownership instead of adopting upstream's global job-id assumptions. |
| 552 | 2026-07-24 | 0517551 |
Merge branch 'main' into fix/job-store-lock-timeout | Superseded by reviewed commits | Merge-only reconciliation; job-store behavior is decided in the surrounding functional rows. |
| 553 | 2026-07-24 | a658e54 |
fix(jobs): defer managed updates after lock contention | Implemented (adapted) | Persistent contention writes an atomic owner-private JSON journal under state_dir/jobs/deferred. Records are bounded, use opaque ids, bind both session and job, and are reconciled before the next successful store transaction. |
| 554 | 2026-07-24 | 344f8e5 |
fix(jobs): preserve deferred update order | Implemented (adapted) | Journal filenames start with a process-monotonic sequence, so append-log, progress, and finish updates replay in creation order even if wall-clock readings move backward. |
| 555 | 2026-07-24 | dc5ad3c |
fix(jobs): stabilize deferred update journal | Implemented (adapted) | Journal schema, version, filename/id match, session/job ids, operation, payload type, size, regular-file/link policy, and UTF-8/JSON are validated. Applied ids are saved before cleanup, making interrupted deletion idempotent; invalid rows are audited and removable while unreadable rows are retained. |
| 556 | 2026-07-24 | 7ffaef4 |
Merge remote-tracking branch 'origin/main' into fix/job-store-lock-timeout | Superseded by reviewed commits | Merge-only reconciliation of the bounded lock and deferred managed-update work. |
| 557 | 2026-07-24 | 64cc2a4 |
Merge pull request #109 from fwerkor/fix/job-store-lock-timeout | Superseded by reviewed commits | Merge-only integration of e2e0985, 91da33e, a658e54, 344f8e5, and dc5ad3c; no additional behavior requires a separate fork implementation. |
| 558 | 2026-07-24 | a985b83 |
fix(shell): honor configured shell for tmux sessions | Implemented (adapted) | POSIX tmux commands now execute the resolved tmux binary directly instead of routing through a shell. The configured shell_executable is expanded/resolved (including relative paths against the new session cwd), supplied as tmux $SHELL, and checked for executability. Default sessions omit a redundant shell-command and must survive an immediate has-session probe; failed starts are cleaned up and rejected. |
| 559 | 2026-07-24 | 025f674 |
Merge pull request #111 from fwerkor/fix/persistent-shell-nologin | Superseded by reviewed commits | Merge-only integration of a985b83; the fork-native direct-exec, configured-shell environment, and liveness behavior is recorded in the preceding row. |
| 560 | 2026-07-24 | 639e50b |
chore: prepare v3.1.3 | Not adopted (intentional version-line difference) | This changes only upstream package/version constants from 3.1.2 to 3.1.3. The fork has an independent 3.9.1 release line containing additional architecture, security, UI, worker, packaging, and transfer capabilities; adopting the upstream number would be a downgrade and would break the fork's release provenance. The functional fixes included in upstream 3.1.3 are reviewed and adapted separately above. |
| 561 | 2026-07-24 | 0d6f5df |
Merge pull request #113 from fwerkor/chore/release-v3.1.3 | Superseded by reviewed commits | Merge-only integration of the upstream 3.1.3 version bump. No product behavior remains beyond the intentionally independent fork version line recorded on 639e50b. |
| 562 | 2026-07-24 | 8bc7332 |
fix: expose Homebrew tools to macOS worker service | Implemented (adapted) | The fork launchd plist now carries an explicit sanitized PATH containing the active Python and private launcher directories, Homebrew defaults, absolute GUI launchd-session entries, and system directories. Managed workers repair their current PATH and installed plist on startup; runtime update refreshes stopped definitions and restarts only when an active worker needs the new runtime or PATH. The fork preserves its credential-free stable launcher, private identity, typed service lifecycle, and source-only runtime architecture. |
| 563 | 2026-07-24 | d7ec96f |
Merge pull request #116 from fwerkor/fix/launchd-homebrew-path-clean | Superseded by reviewed commits | Merge-only integration of the macOS launchd PATH repair reviewed in row 562. |
| 564 | 2026-05-25 | daa224e |
完成初版 | Late reconciliation — superseded baseline | Initial monolithic implementation is the repository ancestry. Its shell, files, search, OAuth, HTTP, Docker, audit, and tool-registration behavior has been independently reviewed and replaced by the fork's current layered packages, security boundaries, typed schemas, and cross-platform tests. |
| 565 | 2026-05-25 | ee3775f |
更新MCP OAuth机制 | Implemented (adapted) | Early MCP OAuth behavior is superseded by the fork OAuth package, PKCE/client reuse, public-credential policy, middleware separation, and MCP/HTTP executor integration. |
| 566 | 2026-05-25 | f5fc931 |
调整配置文件说明 | Superseded documentation | The one-line environment example change is superseded by generated configuration references and strict documentation checks. |
| 567 | 2026-05-25 | c16fa83 |
添加自动发布release支持 | Implemented (adapted) | Automated releases are retained through the fork release matrix, multi-platform wheels and binaries, native OpenTUI/tmux provenance, checksums, and package smoke gates. |
| 568 | 2026-05-25 | 458fef3 |
修复 ruff check 问题 | Superseded maintenance fix | The early formatting/lint cleanup is subsumed by the current all-files Ruff, Pyright, pre-commit, generated-asset, and cross-platform CI gates. |
| 569 | 2026-05-25 | f7a0207 |
修复 pytest 问题 | Superseded maintenance fix | The early settings-test fix is covered by the current configuration package and full cross-platform pytest suite. |
| 570 | 2026-05-25 | 64c21d8 |
放宽发布校验 | Not adopted as policy | The historical relaxation is not carried forward as a product decision; the fork intentionally uses stricter release-matrix, provenance, digest, tag, and clean-install validation. |
| 571 | 2026-05-25 | 34b45e0 |
修复 playwright python 版本要求不匹配问题 | Superseded build fix | The old Docker dependency compatibility adjustment is superseded by the current locked Python/Playwright setup and dedicated real-Chromium CI job. |
| 572 | 2026-05-25 | f3f47c6 |
把 docker-compose.yml 改成直接使用已发布镜像 | Implemented (adapted) | Published-image Compose usage remains available, while the fork additionally validates Compose and builds amd64/arm64 Docker images in CI. |
| 573 | 2026-05-25 | 039e3b2 |
Dockerfile 改成启动时自动修正挂载目录权限 | Implemented (adapted) | Container startup ownership handling is retained in the current entrypoint and covered by Docker build/entrypoint smoke tests. |
| 574 | 2026-05-25 | f4a04a9 |
添加search和fetch两个基准工具 | Implemented (adapted) | Search/read capabilities remain in the fork's bounded file/search operations and declarative tool registry; obsolete early tool shapes were not preserved. |
| 575 | 2026-05-25 | 66ac81e |
修复list_tools 500问题 | Superseded by current tool registry | Tool listing now derives from the declarative 40-tool registry with generated-reference and MCP-surface regression tests. |
| 576 | 2026-05-25 | a24ed10 |
更新仓库readme | Superseded documentation | The historical README rewrite is superseded by the maintained MkDocs guides, reference pages, generated assets, and current README. |
| 577 | 2026-05-25 | 6dfa52c |
修复认证问题 | Implemented (adapted) | Authentication and MCP compatibility are covered by the fork OAuth/auth middleware, public-origin safeguards, PKCE flows, and protocol tests rather than the early monolithic implementation. |
| 578 | 2026-05-26 | 111d132 |
放开权限控制并预装常用工具链 | Partially retained with stricter boundaries | Container toolchain availability remains configurable, but filesystem and command access follow the fork workspace, environment, secret, and audit boundaries rather than broadly relaxing controls. |
| 579 | 2026-05-26 | fe5819d |
OAuth 默认永不过期 | Not adopted as an unconditional default | The fork uses its reviewed OAuth token/client policy and configuration; it does not preserve an unqualified historical “never expires” rule as a migration invariant. |
| 580 | 2026-05-26 | f4e3f38 |
修复命令执行失败打断会话的问题 | Implemented (adapted) | Operation failures are isolated through typed result/error handling, session facades, REST/MCP adapters, and managed-job state rather than terminating unrelated sessions. |
| 581 | 2026-05-27 | 1cd7b12 |
完善预装python库 | Superseded dependency set | The historical agent requirements list is superseded by the current locked project, optional extras, container image, and package/release smoke tests. |
| 582 | 2026-05-27 | 7590298 |
修复路径不存在时返回失败的问题 | Implemented (adapted) | Missing paths and executables now use typed startup/path errors with compatible REST, audit, job, MCP, ConPTY, tmux, and remote-worker behavior. |
| 583 | 2026-05-28 | 15eb890 |
添加二进制文件读取保护 | Implemented (adapted) | Binary and bounded-read protections remain in the fork file/read operations and HTTP/UI adapters with explicit limits and tests. |
| 584 | 2026-05-28 | 9822399 |
修复命令执行超时无响应bug | Implemented (adapted) | Bounded shell execution now has queue/runtime deadlines, process-group termination, cancellation cleanup, output bounds, and cross-platform tests. |
| 585 | 2026-05-28 | 77df97f |
完善命令执行超时保护机制 | Implemented (adapted) | Timeout propagation and error behavior are retained through shared tool contracts, HTTP/MCP watchdogs, shell operations, and audit-safe errors. |
| 586 | 2026-05-28 | 248c79b |
修复大量稳定性漏洞 | Implemented (adapted) | The broad early hardening is superseded by current per-domain limits, typed schemas, private files, audit redaction/payload storage, process cleanup, and full CI coverage. |
| 587 | 2026-05-28 | d3e005d |
缩短shell默认时长 | Superseded configuration decision | Current shell defaults and maximums are defined in typed settings/tool contracts and tested across MCP, HTTP, local, and remote execution. |
| 588 | 2026-05-28 | ad3f7fd |
开启权限时免去高危命令用户确认 | Not adopted as a standalone bypass | The fork does not preserve the early confirmation shortcut; command authority follows its current tool exposure, workspace, environment, audit, and client-security model. |
| 589 | 2026-05-31 | a684cef |
Persist Docker credentials by default | Not adopted as a security invariant | Credential persistence is not treated as a required migration feature; current container and secret handling avoids making broad credential retention an architectural default. |
| 590 | 2026-05-31 | 250ee4c |
Add remote worker mode | Implemented (adapted) | Remote workers are a core fork feature with enrollment, private identity, source-only verified runtime, service management, session/machine selection, transfer gateway, UI, upgrades, and lifecycle hardening. |
| 591 | 2026-05-31 | ff024dc |
Parallelize release builds and add binaries | Implemented (adapted) | Parallel multi-platform binary and wheel release builds remain, with stricter matrix completeness, provenance, checksum, and clean-install verification. |
| 592 | 2026-05-31 | 4853f55 |
Install MCP CLI extras for binary release | Superseded packaging detail | Current frozen binaries and packages use the reviewed dependency/entrypoint configuration and package-smoke gates. |
| 593 | 2026-05-31 | 852f8ce |
Use current macOS release runners | Superseded CI maintenance | Current workflows use supported macOS x86_64/arm64 runners and validate both platform wheels and native UI artifacts. |
| 594 | 2026-05-31 | a99542c |
Make Cloudflare crypto dependency optional | Implemented by removal of obsolete coupling | The fork no longer relies on the early Cloudflare Access architecture; optional dependency boundaries are represented by current extras and OAuth design. |
| 595 | 2026-05-31 | 5c04ae0 |
Update GitHub actions for Node 24 | Implemented (maintenance) | Current workflows explicitly run supported Node-based actions and continuously validate VS Code/OpenTUI assets. |
| 596 | 2026-05-31 | 80b42ac |
Remove Cloudflare Access auth and Windows ARM64 binary | Partially retained | Obsolete Cloudflare Access coupling remains removed. Windows arm64 native artifacts remain intentionally unsupported until a truthful runner/build path exists. |
| 597 | 2026-05-31 | bdf929b |
Filter release artifacts before publishing | Implemented (adapted) | Release publication is constrained by explicit artifact names, matrix checks, provenance, checksums, and smoke verification. |
| 598 | 2026-06-05 | 42426c0 |
Add VS Code extension release artifact | Implemented (adapted) | The VS Code extension remains a packaged release artifact with format, lint, compile, VSIX packaging, and Windows/Ubuntu CI coverage. |
| 599 | 2026-06-05 | 61f297d |
Fix VSIX output directory | Superseded build fix | Current VSIX packaging paths are exercised by actual packaging in CI. |
| 600 | 2026-06-06 | ac10a7c |
test: isolate OAuth token audience defaults | Implemented (adapted) | OAuth settings and audience behavior are isolated by current fixtures/configuration and dedicated OAuth compatibility tests. |
| 601 | 2026-06-06 | ac7f5aa |
fix: redact diagnostic settings output | Implemented (adapted) | Diagnostic and audit outputs use explicit redaction, safe serialization, bounded payload storage, and secret-scan tests. |
| 602 | 2026-06-06 | 638a524 |
fix: allow remote worker bundle download | Implemented (adapted) | The worker bundle endpoint is an explicit public non-OAuth route with deterministic source-only archive, digest, size, redirect, and package-import tests. |
| 603 | 2026-06-06 | 78226fe |
fix: vendor remote worker dependencies | Implemented (adapted) | Source-only worker bundles include an explicit allowlisted Python runtime graph and verify importability without checkout fallback. |
| 604 | 2026-06-06 | 382be97 |
fix: reject unsafe public oauth defaults | Implemented (adapted) | Public OAuth defaults, origin/base URL validation, host/origin policy, and credential exposure are guarded by current configuration and middleware tests. |
| 605 | 2026-06-06 | a7a75fb |
chore: bump release version | Not adopted (independent version line) | The historical upstream version bump is not applied separately; the fork maintains its own release line and provenance. |
| 606 | 2026-07-24 | 5933a39 |
docs: mention session-oriented community fork (#117) | Upstream documentation only | Upstream now links to this independently maintained fork for users who prefer explicit session-bound workspaces, jobs, todos, and transfers. The statement accurately describes the fork's existing code and independent tool/release lifecycle; no code, configuration, security, or documentation migration is required here. |