Skip to content

Commit 29ffc62

Browse files
committed
fix(ultracode): pop floating windows on fresh devices loading mid-run (v1.1.6)
Re-run syncAllUltracodeFloatingWindows() after server settings load so a first-time device whose getLightState run snapshot arrives before the async settings fetch resolves still pops an already-active run's window immediately, instead of waiting for the next ~10s watcher tick. Also fixes a stale @fileoverview comment that named the wrong gating setting. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 4cb3a4a commit 29ffc62

6 files changed

Lines changed: 27 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# aicodeman
22

3+
## 1.1.6
4+
5+
### Patch Changes
6+
7+
- Fix: ultracode floating run windows now pop on a fresh device/browser that loads while a run is already active.
8+
9+
`ultracodeFloatingWindows` syncs from the server (it's a non-display setting), but on a first-time device the SSE `getLightState` run snapshot can seed the run list BEFORE the async settings load resolves — so the floating-window gate read `false` at that instant and skipped any already-active run, leaving the window un-popped until the next ~10s watcher tick. The app now re-runs `syncAllUltracodeFloatingWindows()` once server settings finish loading (in the `loadAppSettingsFromServer().then()` callback), so an in-flight run pops its window immediately. Idempotent: open windows are left as-is, and if the setting is off any premature windows are torn down. Verified end-to-end against a real in-flight run on an isolated instance — a pristine browser (empty localStorage) seeds the setting from the server and pops the active run's window ~0.4s after first paint.
10+
11+
Also corrected a stale `@fileoverview` comment in `ultracode-windows.js` that claimed the floating windows are gated on `showUltracodeAgents`; they are gated on the dedicated `ultracodeFloatingWindows` toggle (only the docked "Ultracode Agents" panel uses `showUltracodeAgents`).
12+
313
## 1.1.5
414

515
### Patch Changes

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ When user says "COM":
5656
5757
CI runs `npm run check:lockfile` on every push/PR, so lockfile drift fails the build even if the `version-packages` script is bypassed.
5858
59-
**Version**: 1.1.5 (must match `package.json`)
59+
**Version**: 1.1.6 (must match `package.json`)
6060
6161
## Project Overview
6262

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "aicodeman",
3-
"version": "1.1.5",
3+
"version": "1.1.6",
44
"description": "Mission control for AI coding agents - run 20 autonomous agents with real-time monitoring and session persistence",
55
"type": "module",
66
"main": "dist/index.js",

src/web/public/app.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,16 @@ class CodemanApp {
665665
this.applySkin();
666666
this.applyTabWrapSettings();
667667
this.applyMonitorVisibility();
668+
// ultracodeFloatingWindows syncs from the server (non-display key), but on a
669+
// FRESH device the getLightState run snapshot can seed workflowRuns BEFORE this
670+
// async settings load resolves — so the floating-window gate read false then and
671+
// skipped any already-active run. Re-sync now that the real setting is loaded so
672+
// an in-flight run pops its window immediately instead of waiting for the next
673+
// ~10s SSE tick. Idempotent: open windows are left as-is; if the setting is off
674+
// it tears any premature windows down.
675+
if (typeof this.syncAllUltracodeFloatingWindows === 'function') {
676+
this.syncAllUltracodeFloatingWindows();
677+
}
668678
});
669679
// Hide loading skeleton now that the app shell is ready
670680
document.body.classList.add('app-loaded');

src/web/public/ultracode-windows.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
*
55
* This is the "floating thing" companion to the docked master-detail panel in
66
* `ultracode-panel.js` (the dock panel stays — these windows are ADDITIONAL).
7-
* When the `showUltracodeAgents` setting is on, a small floating window pops up
7+
* When the `ultracodeFloatingWindows` setting is on (a DEDICATED toggle, separate
8+
* from the dock panel's `showUltracodeAgents` — see `_ultracodeFloatingEnabled`),
9+
* a small floating window pops up
810
* for each ACTIVE ultracode/Workflow run (status not completed/killed/failed),
911
* mirroring the live agent grid, and is connected by a glowing line to the
1012
* Codeman tab whose `claudeSessionId` matches the run's `sessionUuid` — the same

0 commit comments

Comments
 (0)