You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(profiles): finish the fourth review round (SPEC-50)
Completes the CodeRabbit/Macroscope round begun in 288b7b2.
- desktop_controller: serialize start/stop/restart. They share the daemon's PID
file and control socket (and restart is a stop+start), so overlapping requests
could drop a fresh PID, launch a second daemon, or stop one another action had
just started. Each action now chains after the previous, with a regression test
asserting they never overlap.
- profile_lifecycle: keep the pid-file read synchronous. Making it async added
real filesystem microtasks that a widget test's pumpAndSettle can never settle,
which hung the delete tests. Only `processAlive` (polled ~100x per stop) needed
to be async, and it stays async.
- test doubles: override `withLock` in the two "writes nothing" FileSystemAdapter
fakes. They inherited the real implementation, which created `<path>.lock` on
the real disk under a non-existent /Users/test — the actual cause of the hang.
- profiles_section_test: replace `await Future.delayed(...)` with
`tester.pump(...)`; inside testWidgets the clock only advances when pumping, so
the bare delay deadlocked.
- profile_registry: keep the already-persisted profile's port when reconciling a
post-merge collision (its daemon may be running on it) and reassign the
newcomer instead; test asserts which side moves.
- profile_runtime_test: assert dispose() disposes profilesController.
- server_devices_section_test: reuse `_pump` via an optional NavigatorObserver.
- docs/mockup: record the 64-code-point cap on the pair-URL `n` param, fix the
delta cross-references (18→19, 17→18), use `pnpm typecheck` as the documented
server check, and correct two stale "explicitly not changed" claims.
0 commit comments