返回 DeepSeek-Reasonix
remote.log
根目录 / docs / evidence / chat-refactor / remote.log
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
449 lines Plain Text