| 1 | |
| 2 | > reasonix-desktop-frontend@0.0.0 test:remote <repo>/desktop/frontend |
| 3 | > tsx src/__tests__/remote-workspace-launch.test.ts && tsx src/__tests__/remote-store.test.ts && tsx src/__tests__/remote-error-ux.test.tsx && tsx src/__tests__/remote-hosts-page.test.tsx && node --import ./scripts/css-stub-register.mjs --import tsx src/__tests__/remote-connect-wizard.test.tsx && tsx src/__tests__/add-project-entries.test.ts && tsx src/__tests__/remote-secret-dialog.test.tsx && node --import ./scripts/svg-stub-register.mjs --import tsx src/__tests__/remote-server-panel.test.tsx && node --import ./scripts/svg-stub-register.mjs --import tsx src/__tests__/remote-session-surface.test.tsx && tsx src/__tests__/remote-running-reconcile.test.ts && tsx src/__tests__/remote-project-tree.test.tsx && tsx src/__tests__/remote-session-cache.test.ts && tsx src/__tests__/remote-tab-opened.test.tsx && tsx src/__tests__/statusbar-workspace.test.tsx |
| 4 | |
| 5 | |
| 6 | Remote workspace launch generations |
| 7 | PASS opening host B does not cancel host A |
| 8 | PASS host B keeps its own current request |
| 9 | PASS a newer request supersedes the same host |
| 10 | PASS the latest same-host request stays current |
| 11 | PASS superseding host A does not cancel host B |
| 12 | |
| 13 | 5 passed, 0 failed, 5 total |
| 14 | PASS configured hosts hydrate persistent UI state |
| 15 | PASS pending_hostkey sets fingerprint |
| 16 | PASS stale dialog cannot clear newer fingerprint |
| 17 | PASS resolution clears fingerprint |
| 18 | PASS status recorded |
| 19 | PASS pending_secret opens the one-shot credential dialog |
| 20 | PASS status contains no credential plaintext |
| 21 | PASS stale credential dialog cannot clear a newer prompt |
| 22 | PASS one key prompt cannot clear the next key prompt |
| 23 | PASS opaque prompt ID protects sequential prompts with identical metadata |
| 24 | PASS credential resolution clears the prompt |
| 25 | PASS setStatuses hydrates |
| 26 | PASS attempt preserved |
| 27 | PASS hydration preserves newer live status |
| 28 | PASS hydration fills missing status |
| 29 | PASS connection failures can request the anchored status popover |
| 30 | PASS repeated failures create a fresh popover request |
| 31 | PASS stale popover completion cannot clear a newer request |
| 32 | PASS matching popover request is consumed |
| 33 | PASS structured mismatch is recognized without parsing raw error text |
| 34 | PASS mismatch uses the localized safe summary |
| 35 | PASS legacy degraded status falls back to the warning summary |
| 36 | PASS connection waiter resolves on live connected status |
| 37 | PASS connection waiter rejects the host error without waiting for timeout |
| 38 | PASS connection waiter exposes a typed timeout for recovery UI |
| 39 | PASS connection timeout does not forge a backend terminal state |
| 40 | PASS mock fan-out delivers status |
| 41 | PASS unsubscribe stops delivery |
| 42 | PASS first workspace keeps its entry |
| 43 | PASS second workspace gets its own entry |
| 44 | PASS updating one workspace leaves the other untouched |
| 45 | PASS updated workspace reflects the new state |
| 46 | |
| 47 | 32 passed, 0 failed |
| 48 | PASS terminal connection failure opens the anchored Remote SSH popover |
| 49 | PASS popover uses a localized security summary |
| 50 | PASS primary error card hides machine-local diagnostics |
| 51 | PASS key-details action opens the security dialog |
| 52 | PASS security dialog shows the presented fingerprint |
| 53 | PASS security dialog shows the conflicting known_hosts record |
| 54 | PASS degraded connection uses a warning card |
| 55 | PASS degraded warning explains that SSH remains connected |
| 56 | PASS degraded warning does not claim the connection failed |
| 57 | |
| 58 | 9 passed, 0 failed |
| 59 | |
| 60 | Remote SSH host settings |
| 61 | PASS remove opens the in-app confirmation dialog |
| 62 | PASS confirmation identifies the host being removed |
| 63 | PASS host is not removed before confirmation |
| 64 | PASS Cancel keeps the host and closes the dialog |
| 65 | PASS edit form exposes password and private-key passphrase fields |
| 66 | PASS saved credentials are represented without returning plaintext to the UI |
| 67 | PASS explicit clear action is staged until Save |
| 68 | PASS edit form offers the credential-mode select |
| 69 | PASS save carries the chosen credential mode (got ["local-proxy"]) |
| 70 | PASS confirmed removal invokes the backend exactly once |
| 71 | PASS host list refreshes after removal |
| 72 | PASS legacy data card is hidden when no legacy files exist |
| 73 | PASS legacy data card appears when legacy files are detected |
| 74 | PASS legacy card shows the mirror file count |
| 75 | PASS legacy card names the trust file |
| 76 | PASS confirmed mirror cleanup calls the backend once |
| 77 | PASS card hides after both artifacts are cleaned |
| 78 | PASS cancelled cleanup does not call the backend |
| 79 | |
| 80 | 18 passed, 0 failed |
| 81 | |
| 82 | Remote connect wizard (three steps) |
| 83 | PASS stepper rail lists all three steps |
| 84 | PASS step 1 is current on open |
| 85 | PASS no step is done on open |
| 86 | PASS auth, download, and credential mode use segmented sliders |
| 87 | PASS config step shows the host input |
| 88 | PASS host input uses an exact explicit label |
| 89 | PASS opening the dialog focuses the first field |
| 90 | PASS Shift+Tab from the first field wraps to the last action |
| 91 | PASS Tab from the last action wraps to the first field |
| 92 | PASS empty form reports host, username, and password |
| 93 | PASS footer alert uses the warning mark |
| 94 | PASS host field exposes the saved-connections arrow |
| 95 | PASS saved-connections arrow stays outside the host label |
| 96 | PASS arrow advertises its saved-host menu |
| 97 | PASS arrow starts collapsed |
| 98 | PASS focusing the host input alone no longer opens the list |
| 99 | PASS clicking the arrow lists saved SSH connections |
| 100 | PASS arrow reflects the expanded state |
| 101 | PASS dropdown leads with the saved-connections caption |
| 102 | PASS saved hosts use menu semantics |
| 103 | PASS every saved host is exposed as a menu item |
| 104 | PASS opening the menu moves focus to the first saved host |
| 105 | PASS ArrowDown moves focus to the next saved host |
| 106 | PASS Escape closes the keyboard-opened menu |
| 107 | PASS Escape restores focus to the saved-host arrow |
| 108 | PASS picking a suggestion prefills the host |
| 109 | PASS picking a suggestion closes the list |
| 110 | PASS picking a suggestion restores focus to the host input |
| 111 | PASS saved key auth switches the form to key mode with the identity file |
| 112 | PASS identity-file action uses the native desktop picker |
| 113 | PASS native picker returns the absolute identity-file path |
| 114 | PASS saved password host keeps a keep-existing placeholder |
| 115 | PASS typing in the host field does not filter the dropdown |
| 116 | PASS a pointer press on the host field keeps the list open |
| 117 | PASS a pointer press outside the field closes the list |
| 118 | PASS Escape closes the open list |
| 119 | PASS Escape with the list open keeps the wizard open |
| 120 | PASS Escape from a saved host restores focus to the arrow |
| 121 | PASS clicking the open arrow toggles the list shut |
| 122 | PASS no saved hosts hides the arrow entirely |
| 123 | PASS the arrow returns once hosts exist again |
| 124 | PASS picking gpu-box from the reopened list restores its host |
| 125 | PASS next on a picked host updates it instead of adding a duplicate |
| 126 | PASS no AddRemoteHost for a saved host |
| 127 | PASS connecting step streams the deployment log |
| 128 | PASS failed connect surfaces the kernel error |
| 129 | PASS retry action is offered after a failed connect |
| 130 | PASS Tab after a step transition returns focus to the dialog |
| 131 | PASS retry keeps the wizard busy while the connection is pending |
| 132 | PASS a connected host runs the platform check before the workspace step |
| 133 | PASS an unsupported OS keeps the wizard on the connecting step |
| 134 | PASS the platform failure surfaces the kernel error |
| 135 | PASS directory browsing never starts for an unsupported host |
| 136 | PASS retry stays available after a platform rejection |
| 137 | PASS step 1 turns done (green check) after advancing |
| 138 | PASS step 3 is current after connecting |
| 139 | PASS workspace picker starts at RemoteLastWorkspace path |
| 140 | PASS directory entries render |
| 141 | PASS files render in the tree next to folders |
| 142 | PASS clicking a file highlights the row |
| 143 | PASS clicking a file selects its parent directory as the workspace |
| 144 | PASS drilling into a directory lists its children |
| 145 | PASS workspace step has no create-folder controls |
| 146 | PASS newer directory response renders first |
| 147 | PASS stale directory response cannot overwrite the latest path |
| 148 | PASS finish opens the selected workspace in a new remote session tab |
| 149 | PASS finish registers navigation before opening the remote tab |
| 150 | PASS finish pins the selected remote workspace |
| 151 | PASS the workspace is pinned before its session tab opens |
| 152 | PASS the project tree refreshes after the session tab opens |
| 153 | PASS wizard closes after a successful finish |
| 154 | PASS a merged finish opens the canonical workspace through the navigation owner |
| 155 | PASS wizard host form offers the credential-mode segmented control |
| 156 | PASS local-proxy segment highlights when selected |
| 157 | PASS a new host is added (label defaults to the host) |
| 158 | PASS AddRemoteHost carries the chosen credential mode (got local-proxy) |
| 159 | PASS rollback only removes a pin the wizard actually added (a merge owns none) |
| 160 | PASS a merged finish notifies through onMerged |
| 161 | |
| 162 | 78 passed, 0 failed |
| 163 | |
| 164 | Add-project entry matrix |
| 165 | PASS workbench + menu offers the remote connection item wired to the wizard flow |
| 166 | PASS workbench + menu keeps blank project and existing folder before remote connection |
| 167 | PASS classic/creation + button opens a menu instead of the direct picker |
| 168 | PASS classic/creation + menu is the two-item local/remote list |
| 169 | PASS empty state pairs the local action with a remote connection action |
| 170 | PASS remote wizard loads lazily through useProjectCreation |
| 171 | PASS removed sidebar quick button leaves no JSX behind |
| 172 | PASS no creation.sidebar.remote usage in App.tsx |
| 173 | PASS creation.sidebar.remote removed from locale #1 |
| 174 | PASS projectTree.remoteConnection present in locale #1 |
| 175 | PASS creation.sidebar.remote removed from locale #2 |
| 176 | PASS projectTree.remoteConnection present in locale #2 |
| 177 | PASS creation.sidebar.remote removed from locale #3 |
| 178 | PASS projectTree.remoteConnection present in locale #3 |
| 179 | |
| 180 | 14 passed, 0 failed |
| 181 | |
| 182 | Remote SSH one-shot credential prompt |
| 183 | PASS password request opens a masked input dialog |
| 184 | PASS dialog identifies the SSH target |
| 185 | PASS submit sends the prompt ID and secret once to the native bridge |
| 186 | PASS resolved prompt is removed from shared UI state |
| 187 | PASS secret plaintext is never rendered into the page |
| 188 | |
| 189 | 5 passed, 0 failed |
| 190 | |
| 191 | Remote SSH Server tab (Open Remote Web) |
| 192 | PASS server tab shows the unified Open Remote Web entry |
| 193 | PASS server tab states that providers, API keys, and sessions are managed by the remote Reasonix configuration |
| 194 | PASS Serve progress renders while starting |
| 195 | PASS Open Remote Web is disabled while Serve is starting |
| 196 | PASS Serve ready state renders |
| 197 | PASS Open Remote Web is enabled once Serve is ready |
| 198 | PASS Open Remote Web calls OpenRemoteWorkspace with the last workspace (got [{"hostId":"box","workspace":"/srv/app"}]) |
| 199 | PASS Open Remote Web registers navigation before launch |
| 200 | PASS fresh host defaults its workspace to the SSH login home |
| 201 | PASS Open Remote Web is enabled for a fresh host |
| 202 | PASS fresh host opens the SSH login home (got [{"hostId":"box","workspace":"/srv/app"},{"hostId":"bare","workspace":"~"}]) |
| 203 | PASS status is fetched per workspace (the input's workspace) |
| 204 | PASS stop targets the managed workspace (got [{"hostId":"box","workspace":"/srv/app"}]) |
| 205 | PASS switching the workspace keeps the other ready serve manageable |
| 206 | PASS stop follows the workspace switch (got [{"hostId":"box","workspace":"/srv/app"},{"hostId":"box","workspace":"/srv/web"}]) |
| 207 | PASS both workspaces keep independent entries in the store |
| 208 | |
| 209 | 16 passed, 0 failed, 16 total |
| 210 | |
| 211 | Remote session surface + hook |
| 212 | An empty string ("") was passed to the src attribute. This may cause the browser to download the whole page again over the network. To fix this, either do not render the element at all or pass null to src instead of an empty string. |
| 213 | PASS no bespoke log rows — the shared Transcript owns rendering |
| 214 | PASS the surface renders no composer of its own |
| 215 | PASS serve text frames render through the local transcript pipeline |
| 216 | PASS reasoning renders through the local pipeline |
| 217 | PASS a ready transition re-syncs the snapshot (session reset / reconnect path) |
| 218 | PASS the re-synced snapshot replaces the old session content |
| 219 | PASS turn_done refreshes remote goal/runtime status |
| 220 | An empty string ("") was passed to the src attribute. This may cause the browser to download the whole page again over the network. To fix this, either do not render the element at all or pass null to src instead of an empty string. |
| 221 | PASS approval card renders |
| 222 | PASS approval subject renders |
| 223 | PASS remote approval exposes session and persistent scopes |
| 224 | PASS session grant forwards its approval scope |
| 225 | PASS approval card clears after deciding |
| 226 | PASS remote plan revision uses the specialized decision endpoint and preserves feedback |
| 227 | PASS remote plan decisions never collapse into generic approval booleans |
| 228 | PASS a failed approval command preserves the decision card |
| 229 | PASS a failed approval command surfaces an actionable error |
| 230 | PASS ask card renders |
| 231 | PASS ask prompt renders |
| 232 | PASS selecting an option keeps the ask open until explicit submit |
| 233 | PASS a failed remote Ask answer preserves the card, surfaces the error, and re-enables retry |
| 234 | PASS a successful remote Ask retry resubmits the complete answer and clears the card |
| 235 | PASS custom AskCard text serializes as the remote question selection |
| 236 | PASS remote extension form renders on the shared surface |
| 237 | PASS remote extension form submits through the Serve proxy |
| 238 | PASS remote extension form clears after an accepted submission |
| 239 | PASS disconnect fixture has visible transcript content before connection loss |
| 240 | PASS serve_down renders the warning state |
| 241 | PASS recovery controls are outside the collapsible transcript main |
| 242 | PASS disconnect retains the already loaded transcript |
| 243 | PASS serve error detail renders |
| 244 | PASS serve_down retry preserves the backend's parked session target |
| 245 | PASS serve_down retry registers navigation before reopening the remote tab |
| 246 | PASS serve_down retry failures render on the surface |
| 247 | PASS live disconnected events do not render the placeholder |
| 248 | PASS live disconnected events show connecting instead |
| 249 | PASS live disconnected events trigger backend revival |
| 250 | PASS restored shells recover through the authoritative snapshot when the ready event is missed |
| 251 | PASS restored disconnected shells trigger backend revival |
| 252 | PASS a successful fenced snapshot recovers a ready event missed before listener mount |
| 253 | PASS snapshot status hydrates the authoritative remote composer profile |
| 254 | PASS snapshot status hydrates effort and rewind checkpoints |
| 255 | PASS remote hydration exposes the Serve command catalog instead of local commands |
| 256 | PASS snapshot status hydrates remote context, usage, balance, cost, and jobs |
| 257 | PASS goal-setting commands remain conversational turns |
| 258 | PASS goal status and lifecycle actions remain synchronous management commands |
| 259 | PASS session-changing management commands request authoritative rehydration |
| 260 | PASS pending status recovers an SSE-dropped prompt through Serve |
| 261 | PASS remote live-store notifications drive the shared composer ticker |
| 262 | PASS turn_done refreshes goal status without replacing the transcript surface |
| 263 | PASS turn_done reconciles durable history after dropped Serve frames |
| 264 | PASS an answered approval cannot clear the next prompt |
| 265 | PASS an answered ask cannot clear the next prompt |
| 266 | PASS submit adds the optimistic user bubble through the shared reducer |
| 267 | PASS management commands dispatch without conversational admission and refresh status |
| 268 | PASS management commands do not add an optimistic user turn |
| 269 | PASS remote compact waits for the dedicated endpoint and rehydrates history |
| 270 | PASS session-changing management commands replace history from an authoritative snapshot |
| 271 | PASS session-changing management commands still avoid an optimistic user turn |
| 272 | PASS metadata-only remote commands preserve the transcript generation and viewport |
| 273 | PASS status-only refresh updates goal status and quality floor |
| 274 | PASS model switching refreshes the authoritative remote profile before the next turn |
| 275 | PASS command forwarded: submit:tab-remote-2:run tests |
| 276 | PASS command forwarded: cancel:tab-remote-2 |
| 277 | PASS command forwarded: approve:tab-remote-2:call-1:allow |
| 278 | PASS command forwarded: answer:tab-remote-2:ask-1:[{"QuestionID":"q1","Selected":["yes"]}] |
| 279 | PASS command forwarded: rewind:tab-remote-2:3:code |
| 280 | PASS command forwarded: fork:tab-remote-2:3: |
| 281 | PASS command forwarded: summarize:tab-remote-2:3:from |
| 282 | PASS command forwarded: summarize:tab-remote-2:3:upto |
| 283 | PASS command forwarded: model:tab-remote-2:remote/new-model |
| 284 | PASS command forwarded: effort:tab-remote-2:high |
| 285 | PASS command forwarded: quality-floor:tab-remote-2:delivery |
| 286 | PASS command forwarded: pause-goal:tab-remote-2 |
| 287 | PASS command forwarded: resume-goal:tab-remote-2 |
| 288 | PASS command forwarded: steer:tab-remote-2:narrow the change |
| 289 | PASS command forwarded: cancel-jobs:tab-remote-2:job-remote |
| 290 | PASS switching remote tabs clears the previous model label before hydration |
| 291 | PASS missing aggregate status is fetched before the remote composer becomes ready |
| 292 | PASS remote history retains expandable tool args and output without a local rehydrate endpoint |
| 293 | PASS exhausted ready-session hydration exposes a retryable error |
| 294 | PASS explicit hydration retry recovers the surface |
| 295 | PASS hydration replays concurrently delivered remote events |
| 296 | PASS a ready generation re-hydrates after discarding the stale in-flight snapshot |
| 297 | PASS ready-to-ready rotation hydrates the adopted session while old reconciliation is pending |
| 298 | PASS session generation fence rejects stale history and hands reconciliation to the new generation |
| 299 | PASS snapshot replays a prompt emitted while the remote tab was inactive |
| 300 | PASS snapshot replays an extension form emitted while the remote tab was inactive |
| 301 | PASS a remote mode transaction preserves approvals it did not drain |
| 302 | PASS a remote mode transaction clears the exact approval it auto-allowed |
| 303 | PASS unknown runtime does not settle a stream |
| 304 | PASS finishing does not settle the transcript before completion |
| 305 | PASS idle evidence for a previous turn cannot settle the current turn |
| 306 | PASS another selected session cannot settle the current transcript |
| 307 | PASS lost-completion fixture includes an active retry |
| 308 | PASS trusted idle settles transcript, live stream, and turn activity together |
| 309 | PASS lost completion restores durable content and removes the actual active DOM state |
| 310 | PASS ordinary idle revisions do not repeatedly reload history |
| 311 | PASS a newer idle revision of the old turn cannot settle an optimistic submission |
| 312 | PASS old idle remains fenced after the next turn_started |
| 313 | PASS history reconciliation cannot replace a newer streaming turn |
| 314 | PASS late telemetry from the settled turn does not discard durable history |
| 315 | |
| 316 | 101 passed, 0 failed |
| 317 | PASS optimistic submit sets running |
| 318 | PASS send_failed clears running |
| 319 | PASS send_failed clears turnActive |
| 320 | PASS send_failed marks the bubble failed |
| 321 | PASS send_failed adds a notice |
| 322 | PASS stale send_failed leaves a live turn running |
| 323 | PASS turn_started sets running |
| 324 | PASS turn_interrupted clears running |
| 325 | PASS turn_interrupted clears turnActive |
| 326 | PASS turn_interrupted clears cancellable |
| 327 | PASS turn_interrupted adds a notice |
| 328 | PASS turn_interrupted is a no-op when idle |
| 329 | PASS provider_unreachable adds exactly one notice |
| 330 | PASS repeat provider_unreachable replaces the notice |
| 331 | PASS next turn clears the channel notice |
| 332 | PASS idle /status snapshot clears running |
| 333 | PASS idle /status snapshot clears turnActive |
| 334 | PASS running /status snapshot restores running |
| 335 | |
| 336 | 18 passed, 0 failed |
| 337 | |
| 338 | Remote project tree wiring |
| 339 | PASS active remote group expansion uses host-qualified identity instead of local workspace fallback |
| 340 | PASS session rows open the matching in-app remote session |
| 341 | PASS remote group children render with the active workspace and session identity |
| 342 | PASS sessions are fetched through the bridge |
| 343 | PASS session fetch waits for a connected host |
| 344 | PASS the remote menu exposes new-session, browser, stop, and unpin actions |
| 345 | PASS remote groups swap out the local project menu |
| 346 | PASS separate remote window registers its intent before switching the external surface |
| 347 | PASS unpin removes the registration and refreshes the tree |
| 348 | PASS the group row badge reflects the workspace-specific serve state |
| 349 | PASS session fetches fence stale results, retain rows on passive failures, and clear recovered group errors |
| 350 | PASS an explicit session refresh preserves the last successful rows and cache when Serve fails |
| 351 | PASS remote command palettes hide local-only terminal and runtime reload actions |
| 352 | PASS synthetic blank remote sessions still invoke rename, pin, and delete mutations |
| 353 | PASS remote tab metadata updates refresh the affected session group |
| 354 | PASS remote exports use the visible remote transcript |
| 355 | PASS remote todo shelf projects the visible transcript without calling the local dismissal backend |
| 356 | PASS the bridge exposes the explicit-intent ensure listing |
| 357 | PASS a group click cold-starts the serve through the deduped, generation-fenced ensure listing |
| 358 | PASS an explicit expand refreshes remote rows even when an optimistic cache exists |
| 359 | PASS active remote ancestors come from the merged tree and host-qualified group identity |
| 360 | PASS active synthesized remote rows are marked read when the merged session tree arrives |
| 361 | PASS remote groups render retryable connect/error rows instead of going silent |
| 362 | PASS session switches resume in the background behind a generation guard |
| 363 | PASS remote groups never reach ListProjectTopics with their virtual root |
| 364 | |
| 365 | 25 passed, 0 failed |
| 366 | PASS restores a current versioned snapshot |
| 367 | PASS does not persist a transient blank session with a generated path |
| 368 | PASS expires stale snapshots |
| 369 | PASS removes an expired snapshot from storage |
| 370 | PASS invalidates the legacy unversioned array schema |
| 371 | PASS removes an invalid legacy snapshot |
| 372 | PASS rejects malformed optional row fields |
| 373 | PASS removes a malformed versioned snapshot |
| 374 | PASS normalizes Go-omitted zero-value title and turns |
| 375 | PASS explicit removal clears an unpinned project cache |
| 376 | |
| 377 | 10 remote session cache assertions passed. |
| 378 | |
| 379 | Remote tab opened/updated routing |
| 380 | PASS opened events seed the new remote tab metadata |
| 381 | PASS opened notifications cannot acquire navigation ownership |
| 382 | PASS metadata updates patch the remote tab |
| 383 | PASS metadata updates never steal focus |
| 384 | PASS remote activation waits for navigation registration before backend focus |
| 385 | PASS remote activation updates the selected tab |
| 386 | PASS remote activation still binds backend focus |
| 387 | PASS remote activation bypasses local history hydration |
| 388 | PASS restored shell observes terminal state republished during activation |
| 389 | |
| 390 | 9 passed, 0 failed |
| 391 | |
| 392 | status bar workspace |
| 393 | PASS model-only migration keeps one workspace item |
| 394 | PASS removed model with unknown entries remains compact |
| 395 | PASS migration preserves valid order and merges branch duplicates |
| 396 | PASS missing or invalid configuration retains defaults |
| 397 | PASS missing or invalid configuration retains defaults |
| 398 | PASS missing or invalid configuration retains defaults |
| 399 | PASS migration stays compact after save and reload |
| 400 | PASS workspace is a default configurable status item |
| 401 | PASS branch is merged into the workspace setting |
| 402 | PASS legacy workspace items merge at their first configured position |
| 403 | PASS context status preserves a just-over-limit percentage |
| 404 | PASS context status does not clamp an over-limit percentage to 100 percent |
| 405 | PASS disconnected SSH entry keeps its full accessible status |
| 406 | PASS disconnected SSH entry uses the compact idle treatment |
| 407 | PASS disconnected SSH entry renders only the compact SSH label |
| 408 | PASS window-level SSH entry leads the status bar |
| 409 | PASS SSH entry includes host and connected state text |
| 410 | PASS connected SSH entry renders a state dot |
| 411 | PASS connected SSH entry renders the host without redundant state text |
| 412 | PASS SSH entry keeps a recoverable failure summary visible |
| 413 | PASS failed SSH entry keeps the failure visible in the status bar |
| 414 | PASS status entry keeps raw connection diagnostics out of primary chrome |
| 415 | PASS degraded SSH remains connected with a warning state |
| 416 | PASS degraded SSH is not mislabeled as a failed connection |
| 417 | PASS workspace path stays out of the visible branch label |
| 418 | PASS workspace chip does not display sandbox path |
| 419 | PASS git branch remains visible |
| 420 | PASS workspace can be hidden by status item config |
| 421 | PASS git branch can be hidden by status item config |
| 422 | PASS combined chip shows only the current branch |
| 423 | PASS legacy items render one combined chip |
| 424 | PASS workspace path is not a separate visible label when a branch is available |
| 425 | PASS legacy model setting cannot restore the removed model entry |
| 426 | PASS status bar renders only configured status items, not mode indicators |
| 427 | PASS status bar hides the operational jobs entry while idle |
| 428 | PASS running background jobs remain visible outside configurable metrics |
| 429 | PASS background jobs entry exposes the running count |
| 430 | PASS a running detached task remains visible without child jobs |
| 431 | PASS a jobless active runtime contributes to the recovery count |
| 432 | PASS autoresearch is not a configurable status bar UI item |
| 433 | PASS estimated token and cost metrics use an approximation marker |
| 434 | PASS empty estimated metrics remain a plain dash |
| 435 | PASS completed TPS uses provider-output time |
| 436 | PASS fallback TPS is visibly marked as estimated |
| 437 | PASS per-request TPS wins over the completed turn value |
| 438 | PASS sub-one request TPS replaces the stale turn fallback |
| 439 | PASS unmeasured latest requests clear the stale turn fallback |
| 440 | PASS background jobs popover routes Stop to the selected job |
| 441 | PASS global jobs route Stop to the owning detached task |
| 442 | PASS global jobs can reopen the exact detached task |
| 443 | PASS pending-prompt runtime explains why it remains active |
| 444 | PASS a pending-prompt runtime can be reopened without child jobs |
| 445 | PASS local jobs show in the status bar total |
| 446 | PASS local background jobs remain visible |
| 447 | |
| 448 | 54 passed, 0 failed, 54 total |
| 449 |