Repository navigation
feat(desktop): add the Logs tab (HACK-2214) - #808
Conversation
…CK-2214) New Cargo workspace under apps/desktop, separate from runtime-core: - core: lenient models for hack --json and hackd payloads, a CLI runner that kills the whole process group on timeout, a read-only hackd socket client, project state derivation, list/detail view models and fixtures for every designed state. 33 hermetic unit tests. - app: the gpui-kit window (sidebar, header with Start/Stop/Restart/Open, services table, log tail, status bar, light and dark), --fixtures mode and offscreen PNG rendering behind the screenshots feature. - A separate, non-required Linux CI job for the desktop workspace. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…finished one-shot services as completed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eout, drop stale log tails Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…abel Docker state as Docker Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…arden chunk parsing, never count unknown as stopped Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, gate native actions and logs, clear recovered failures Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er peer Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…iled log read as failed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r and machine rows Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r, long lines, end states) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
@codex review |
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
Security findingsAdvisory findings (2)
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
… as down Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8366c34336
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
…ling lines and error reasons, follow selection changes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s; mark oversized records Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…/desktop-app-logs # Conflicts: # apps/desktop/app/src/view.rs
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6bee49a882
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@codex review |
# Conflicts: # apps/desktop/README.md # apps/desktop/core/src/runner.rs # apps/desktop/core/src/source.rs # apps/desktop/core/tests/dump_state.rs
|
@codex review |
|
Codex Review: Didn't find any major issues. You're on a roll. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
@codex review |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
Ready for lead: 5ff6ee6 Two merges of
Not verified by me: anything on a real Mac. 🤖 Generated with Claude Code |
# Conflicts: # apps/desktop/core/src/runner.rs
The Logs tab's poll reaps the stream's child when it exits, but Drop then sent SIGKILL to that PID and process group. Once reaped, the PID can belong to another process. The stream now records that it was reaped and Drop sends no signal; a test counts group signals after a reaped drop. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@codex review |
|
Codex Review: Didn't find any major issues. Keep them coming! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
Ready for lead: fb6a5ed Changes since my 5ff6ee6 note:
Evidence:
Not verified by me: macOS. The new 🤖 Generated with Claude Code |
Adds the names-only Env tab: read on open, project change and Check again, missing required names first, locked/unknown key readability, and explicit empty versus unreadable states. Uses `hack env list --json --path <root>` without a value flag; exit 1 still accepts a bare report. Typed models discard values/materialized fields and raw diagnostics. Generations drop stale selections; marker/discovery guards refuse missing or ancestor-shadowed roots. Canonical selected-scope absence differs from project-wide absence; empty legacy scope arrays show global. Visible copy explains that key readability can be unknown and that Set indicates storage, not confirmed readability. The locked state shows `hack doctor` beside **Copy command**. The available app/core tabs and fixtures contain no internal request/ticket IDs outside source comments; the core always-on tooltip and README are aligned. No native Env, key handling, badge styling or upstream CLI-shape changes. Based on `next`; core warmups, ordered snapshots, log-tail invalidation and recovery gates are preserved. Local Linux at **08db90a75609b1fea06791eeb9847b95949ec55e**: Rust 1.98.1, own target, jobs 2; fmt, 77 unit + 6 integration tests, both Clippy modes with warnings denied, both builds and privacy pass. Eight affected Env light/dark screenshots were rendered and inspected at the copy-fix head bb70d35; the subsequent frozen-next merge changes no UI/fixtures and retains those receipts. Loading/error renders are retained unchanged. Fake CLI/temp HOME/HACK_HOME/autostart disabled; no real env command, owner registry/daemon, Docker, sudo or GUI window. Normal merge of frozen next 8e7242d is pushed at 08db90a. README preserves Env docs and incoming process-retirement test guidance; runner tests match next/843. No app/Env read logic changed. Root and desktop scripts/test.sh are absent, so pinned own-target Cargo checks were used; no unmerged 846 wrapper was imported. Exact-head Codex and SAME persistent Claude r5 are clean; review-status CLEAR. Both hosted desktop jobs and successful replacement CI selected shards/fan-in pass. **[Final Ready for lead](#818 (comment) at frozen 08db90a supersedes all earlier holds; superseded cancellation excluded. Absolutely no more pushes. No PR merge during next.17 freeze; lead only after publication. Lead's macOS build/renders/state pass covers the previous 609d5cc head; new copy has fresh Linux offscreen evidence and the frozen merge head has hosted Linux/macOS desktop success; runtime limitations remain. Separately tracked macOS spawn flakes are not changed here. No full-CI-green, merge or release claim. Limits: real env CLI rejects native roots, so native Env is Unreadable pending CLI support; fake native tests prove backend selection/parser behavior only. macOS keychain prompting remains unverified. Reads are bounded but not deduplicated; stale results are discarded. Marker pre/post checks are not an atomic filesystem fence. No merge or watcher by this unit.   Freeze branch-update order: #846 → #818 → #808. Env MERGE PUSHED is complete, so Logs can be NEXT. Preserve shared tab/fixture/screenshot/source hooks. No PR merges during freeze; lead only after publication. No new shape adoption or scope. --------- Co-authored-by: Dimitri Kennedy <344842+roodboi@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # apps/desktop/README.md # apps/desktop/app/src/screenshots.rs # apps/desktop/app/src/view.rs # apps/desktop/core/src/source.rs
|
@codex review |
|
Codex Review: Didn't find any major issues. Can't wait for the next one! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
Ready for lead: 7ab1542 Merge of The Logs and Env tabs now live in the same app:
Evidence:
Not verified by me: interactive use on a Mac. The committed 🤖 Generated with Claude Code |
…econcile Brings in next at 081a526 (#811 supervisor opt-in runner, #863 candidate launcher names HACK-2251, #808 desktop Logs tab). No conflicts. The CLI reference, machine-output table and error-code reference regenerate unchanged; E_DAEMON_SERVICE kept. #863 changes which launcher printed commands name and the candidate update refusal; it does not change the executing-CLI identity, the service program checks, durability or the post-update binding, and a candidate install is still refused before any install or reconcile. #811's supervisor reads process identities through process-tree.ts and runs its own sibling binary; it does not use this PR's ps/lsof helpers, process-ancestry or the orphan sweep. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds the Logs tab for HACK-2214 on
next, after merged #801. Compose projects get a generation-ownedhack logs --jsonstream with Pause/Resume, search, one-service filtering, expandable lines, and reconnect. Stopped projects get a finite read; native projects retain a terminal-command note.The memory-only ring holds at most 10,000 lines and 8 MiB. A nonblocking 1,024-event queue discards overflow while continuing to consume CLI stdout, and shows a cumulative skipped-event count. Valid event messages are capped at 64 KiB; raw records over 1 MiB leave a visible marker. Bounded stdout/stderr diagnostic tails preserve pretty CLI failure-envelope messages and human-readable exit status. No copy-all or disk logging.
Accepted refreshes invalidate tails and replace streams when project root or backend changes; rejected sequence/action-epoch tokens have no Logs side effects. Services-tail polling stops on the Logs tab. Final core warmups, daemon-unavailable states, explicit recovery gates and generation ordering are preserved.
Validation on Linux: 95 unit + 4 integration tests; fmt; Clippy default and screenshots with warnings denied; both app builds; all 46 offscreen fixture images. Cargo jobs were bounded to 2 with an independent target. Fake CLI runs use temporary HOME/HACK_HOME and disable daemon autostart. Tests include flood completion without UI drain, exact queue loss/bounds, multiline error envelopes, stderr diagnostics, process groups and inherited pipe draining.
Light Logs board · Dark Logs board
Exact-head Codex and the lead's persistent second-family review are acceptance gates; this description does not assert readiness. macOS, live project streams, interactive gestures and crash/force-quit cleanup remain unqualified by these hermetic Linux checks. Release intent: optional desktop capability (
feat), no release or onboarding integration.Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.