Skip to content

chore: promote staging to staging-promote/2476672a-25049608611 (2026-04-28 11:59 UTC) - #3021

Merged
henrypark133 merged 1 commit into
mainfrom
staging-promote/7194808f-25051499413
Apr 29, 2026
Merged

henrypark133 merged 1 commit into
mainfrom
staging-promote/7194808f-25051499413

Conversation

@ironclaw-ci

@ironclaw-ci ironclaw-ci Bot commented Apr 28, 2026 •

Copy link
Copy Markdown
Contributor

Auto-promotion from staging CI

Batch range: 7fb41555a9e55677d1aaea29ca567a5b369c2b05..7194808f11eec986991edea6ecedaa5b8f8004dc
Promotion branch: staging-promote/7194808f-25051499413
Base: staging-promote/2476672a-25049608611
Triggered by: Staging CI batch at 2026-04-28 11:59 UTC

Commits in this batch (105):

Current commits in this promotion (1)

Current base: staging-promote/2476672a-25049608611
Current head: staging-promote/7194808f-25051499413
Current range: origin/staging-promote/2476672a-25049608611..origin/staging-promote/7194808f-25051499413

Auto-updated by staging promotion metadata workflow

Waiting for gates:

  • Tests: pending
  • E2E: pending
  • Claude Code review: pending (will post comments on this PR)

Auto-created by staging-ci workflow

* fix(web): keep Routines tab after engine v1 → v2 upgrade (#2982)

Users upgrading from a v1 install (e.g. 0.24.0 → 0.26.0) lost the UI
affordance to view or manage existing routines: `applyEngineModeToTabs()`
and `applyEngineModeUi()` unconditionally hid the v1-only Routines tab
whenever ENGINE_V2 was enabled, even though the routines were still in
the database and the API still served them.

The fix adds a `userHasLegacyRoutines` flag, populated from
`/api/routines/summary` on first gateway-status poll. The Routines tab
stays visible (and `#/routines/<id>` still resolves to the legacy
detail view) when the user has any v1 routines.

Also fixes a wire-contract drift in `gateway-tee.js`: it read
`data.engine_v2` for the activity store and `data.engine_v2_enabled`
for the global, with `applyEngineModeUi()` running before the global
was set. Per `.claude/rules/types.md` ("Wire-contract field naming"),
the duplicate `engine_v2` field is removed from
`GatewayStatusResponse`; the JS now reads the single canonical name
once and sets the global before any UI helper consults it.

* fix(web): address PR #2992 review notes — race guard, dedup, post-delete refresh

Three review-driven hardening tweaks plus expanded Playwright coverage,
all on the same #2982 fix:

- gateway-tee.js: flip `engineModeApplied = true` synchronously so a
  second status poll firing while the first refresh is still in flight
  cannot kick off a duplicate `/api/routines/summary` request. The
  trailing `.then()` still runs on fetch failure (the `.catch()` chain
  resolves to undefined), so the UI still settles.
- projects.js: route the routines-tab visibility branch through
  `shouldHideRoutinesTab()` instead of duplicating the predicate
  inline. Single source of truth for the rule.
- routines.js: refresh `userHasLegacyRoutines` after a successful
  `deleteRoutine` so the v2 user who just removed their last legacy
  routine sees the tab fall back to hidden without a page reload.

Playwright coverage grew from 5 to 11 cases: route-mocked summary,
zero-total clears the flag, fetch failure preserves the prior value,
post-delete refresh hides the tab, dual back-to-back first polls fan
out only one summary fetch, and `restoreFromHash` routes correctly when
legacy data exists.
@github-actions github-actions Bot added scope: channel/web Web gateway channel size: M 50-199 changed lines risk: medium Business logic, config, or moderate-risk modules contributor: core 20+ merged PRs labels Apr 28, 2026
@claude

claude Bot commented Apr 28, 2026

Copy link
Copy Markdown

No issues found.

Base automatically changed from staging-promote/2476672a-25049608611 to main April 29, 2026 04:09
@henrypark133
henrypark133 merged commit 7194808 into main Apr 29, 2026
514 of 631 checks passed
@henrypark133
henrypark133 deleted the staging-promote/7194808f-25051499413 branch April 29, 2026 04:09

This branch had an error being deployed

1 failed and 5 inactive deployments
ironclaw-nearai / production — 7194808f Deployed Apr 28, 2026 by railway-app[bot]
venice-ironclaw / production — 7194808f Deployed Apr 28, 2026 by railway-app[bot]
cosmose-ironclaw / production — 7194808f Deployed Apr 28, 2026 by railway-app[bot]
Ironclaw-QA / production — 7194808f Deployed Apr 28, 2026 by railway-app[bot]
humble-cat / staging-cameron — 7194808f Deployed Apr 28, 2026 by railway-app[bot]
Near Foundation Ironclaw / production — 7194808f Deployed Apr 28, 2026 by railway-app[bot]
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: M 50-199 changed lines staging-promotion

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants