Skip to content

Refine v2 web activity shell#2560

Open
henrypark133 wants to merge 2 commits intostagingfrom
henry/2542-routine-web-ux
Open

Refine v2 web activity shell#2560
henrypark133 wants to merge 2 commits intostagingfrom
henry/2542-routine-web-ux

Conversation

@henrypark133
Copy link
Copy Markdown
Collaborator

Summary

  • add an engine-v2-aware activity shell with a persistent compact jobs/missions ticker and tab badges for jobs/missions only
  • hide the legacy Routines tab in v2, keep mission progress derived from live thread activity, and rehydrate the shell from existing jobs/missions APIs
  • add focused browser coverage for the v2 shell and fix snapshot/SSE reconciliation issues for job and mission terminal states

Testing

  • cargo fmt
  • cargo clippy --all-targets --all-features -- -D warnings
  • node --check crates/ironclaw_gateway/static/app.js
  • python3 -m py_compile tests/e2e/scenarios/test_v2_activity_shell.py
  • tests/e2e/.venv/bin/pytest tests/e2e/scenarios/test_v2_activity_shell.py -v

Notes

  • WORKTREE_NOTES.md is intentionally left untracked and excluded.
  • One intermediate Playwright rerun failed due local disk exhaustion in the fixture build; the same focused file passed after rerunning once space/build artifacts were stable.

Copilot AI review requested due to automatic review settings April 17, 2026 00:19
@github-actions github-actions bot added scope: channel/web Web gateway channel size: XL 500+ changed lines risk: medium Business logic, config, or moderate-risk modules contributor: core 20+ merged PRs labels Apr 17, 2026
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces an ActiveWorkStore and a corresponding UI active work strip to provide real-time visibility into background jobs and missions. It includes integration with SSE for status updates, tab badges for active task counts, and logic to hide legacy Routines in favor of Missions when Engine V2 is active. Review feedback suggests refining the activity bar's visibility logic, fixing indentation, localizing hardcoded strings, adopting more robust state management for thread status, and optimizing the polling mechanism for mission progress.

Comment thread crates/ironclaw_gateway/static/app.js Outdated
Comment thread crates/ironclaw_gateway/static/app.js Outdated
Comment thread crates/ironclaw_gateway/static/app.js Outdated
Comment thread crates/ironclaw_gateway/static/app.js
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refines the web “activity shell” when engine v2 is enabled by adding a persistent jobs/missions activity strip, tab badges for active work, and mission progress derived from live thread activity, plus targeted Playwright coverage for the new shell behavior.

Changes:

  • Expose engine_v2 in /api/gateway/status and use it in the frontend to hide the legacy Routines tab in v2.
  • Add a persistent “active work strip” (jobs + missions) with tab count badges and mission/thread progress rendering.
  • Add focused Playwright e2e coverage for the v2 shell (routines hidden; activity strip persists across tab switches).

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
tests/e2e/scenarios/test_v2_activity_shell.py Adds Playwright coverage for v2 shell behavior (routines hidden, strip persists).
src/channels/web/server.rs Adds engine_v2 boolean to gateway status response for frontend gating.
crates/ironclaw_gateway/static/style.css Styles tab badges, the active work strip, and mission progress states.
crates/ironclaw_gateway/static/index.html Adds active work strip container and a Missions “Progress” column header.
crates/ironclaw_gateway/static/app.js Implements v2-aware shell logic: tab normalization/hiding, persistent strip store, mission progress hydration and refresh.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread crates/ironclaw_gateway/static/app.js
Comment thread crates/ironclaw_gateway/static/app.js
Comment thread crates/ironclaw_gateway/static/index.html Outdated
Comment thread crates/ironclaw_gateway/static/app.js Outdated
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ff6fe39cc6

ℹ️ 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".

Comment thread crates/ironclaw_gateway/static/app.js Outdated
Copy link
Copy Markdown
Collaborator Author

Addressed the current web-shell review feedback in 8a23af97.

Resolved in this follow-up:

  • hide/localize the v2 activity strip and related labels
  • localize the new activity/status strings in the SSE/chat startup paths
  • replace blocked-state string matching with explicit entry state
  • fix active job snapshot reconciliation
  • batch thread metadata ingestion during loadThreads()
  • clear mission refresh timers/flags during connection cleanup
  • advance the mission refresh watermark even when a force-refresh finds an in-flight fetch
  • localize the Missions Progress header

I left the current 5s active-mission polling interval in place for now. The correctness issues around stale mappings / reschedule churn are fixed, but the broader polling-vs-push tradeoff still depends on adding better mission/thread linkage from the backend.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contributor: core 20+ merged PRs risk: medium Business logic, config, or moderate-risk modules scope: channel/web Web gateway channel size: XL 500+ changed lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants