Repository navigation
Conversation
roborev: Combined Review (
|
ce8bebc to
5d00bcb
Compare
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
d4efb4b to
be1889b
Compare
roborev: Combined Review (
|
roborev: Combined Review (
|
f9400d9 to
41e245c
Compare
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
2317135 to
9a1b35d
Compare
roborev: Combined Review (
|
Visual indexing can finish without a daemon restart, so an unfinished generation must remain eligible for another readiness check. A deletion batch can finish between listing it and opening its panel. The later detail response should determine its status and whether the user can cancel it.
The source panels need the same schedule and sync diagnostics as the parent table. Keep the cron expression, full next-sync date, and raw unavailability reason available in tooltips. The parent supplies operation status through a shared controller. The contacts settings regression must receive that controller, and source coverage must follow the panel workflow while retaining the parent checks.
Duplicate assertions across workspace layers obscure which component owns a regression. Keep setup and connection selection checks with their owners, and limit browser coverage to the panel and list layout. Cancellation fixtures must reflect the daemon's completed response so the result cannot depend on asserting before a stale detail read finishes.
The daemon returns the same 503 while visual search initializes as it does when setup is missing. Caching that response hides Visual search for the rest of the page, even after initialization succeeds. The late deletion lookup regression must wait for response parsing before checking the selected batch. Removing the stale-response guard now makes that check fail.
A failed first list request leaves the staged batches unknown. Showing "Nothing staged" alongside Retry gives users conflicting information.
A failed inspection left the batch panel showing an unavailable account without explaining why its details were missing. Users need a visible error and a way to recover while keeping the batch open.
Opening a batch briefly claimed its account was unavailable while the request was still pending. Keep that state distinct from a loaded batch without an account and from a failed request.
Visual setup completed outside the app can outlast the automatic retry while Files stays open. Returning to the window should reveal search once the generation is ready. A source drawer can cover page-level status errors on a phone. Keep the failure and its recovery action accessible inside the open drawer.
Accepting Sync now leaves no trigger error, but later status requests can still fail. Keep the error and Refresh visible in the open source panel so users can recover without closing it.
Incremental Gmail sync requires history from an earlier full sync. Unscheduled sources need a command that can complete their first download. Microsoft mail uses the same sync command for initial and later downloads.
Repeated retry and error cases obscure which component owns a regression. Keep recovery checks with the user action that triggers them, and preserve workspace coverage of source states and file labels during consolidation.
On narrow screens, the source panel covers page notices. A queued source could keep showing its last status after automatic polling stopped, leaving users without a visible warning or a way to refresh it. Keep manual-sync examples within the combinations the server can emit.
Impossible server responses and missing readiness context let workspace checks exercise fallback behavior instead of the paths users reach. Repeated checks also obscured which test owns each regression.
Idle Contacts accounts showed "Not scheduled" in Sources even when the scheduler had a next sync. Both status endpoints need the same runtime schedule information so users can see when their contacts will sync. Keep visual readiness examples within states production can produce.
Directory kept its Filters button while Messages and Files moved to Filter. The shared command needs to reach each workspace's button so keyboard and command palette users can open Directory filters again.
An older list response could restore a cancelled batch to staged or deleting. If the next refresh failed, the table and sidebar kept that stale status. Keep the successful cancellation authoritative while that list finishes.
The Files changes carried older Settings code over the shared status and People profile refreshes. Restore the parent layer's reload behavior so saved profiles, Contacts status, and failed index refreshes remain accurate. People writes keep the revision returned with the profile they display. Generated with Codex (gpt-6.1-sol)
Returning to Sources can leave an older connections snapshot in flight while Sync now finishes. That snapshot restored stale failure details and last-good timestamps after the idle controller had stopped polling. Cancel the competing list refresh through its existing request controller so the completed sync remains visible in both the row and account panel.
A connections refresh can start while contacts sync is still waiting and return an old failure after sync completes. Terminal syncs stop polling, so that response can leave the row and account panel stale indefinitely. Cancel the competing request when sync finishes so refreshes started during the sync also preserve its reconciled result.
…redesign-5-files # Conflicts: # web/src/lib/components/settings/SettingsWorkspace.svelte # web/src/lib/components/settings/SettingsWorkspace.test.ts
Renaming a saved view or saving its description could leave the editor busy after the save succeeded. A slow staged-deletion request held up the shared refresh even though saved views had already loaded. Saved-view edits need to wait only for their own refreshed list.
The Files branch lost Past runs coverage while archive navigation behavior stayed the same. Restore those checks so history regressions remain visible. Duplicate cases and unrealistic fetch behavior obscured what the remaining tests protected. Keep each scenario focused on distinct, reachable behavior.
Most source-label rows supply only the type and display name. Mark the mailbox arguments optional so the shared callback accepts both fixture shapes during TypeScript validation. Generated with Codex
f11dcee to
ba82c51
Compare
roborev: Combined Review (
|
Batches from different mailboxes can share a date and message count. Show their accounts in the list so users can distinguish them without opening each panel or fetching details for every row.
Repeated list scenarios increased maintenance without protecting another behavior. Realistic API fixtures and independent consent and row-count checks make failures point to reachable regressions.
roborev: Combined Review (
|
Files now uses the Messages toolbar, one Filter menu, and a viewer with Add to task. Sources keeps mail and Contacts sync independent, shows schedules and runs, and opens repair Settings on the selected account. This slice extends the toolbar from #1579. Before, Files split its filters, Contacts lived in Settings, and staged deletions showed manifest IDs.
Staged deletions lists each batch by date, message count, and account. The Messages selection bar opens a review dialog before staging;
msgvault delete-stagedruns deletion. The sidebar shows Staged deletions while a batch is pending, running, or failed.The deletion list API now returns each batch's account. Screenshots use synthetic data in dark mode at 1280×720. The People list and page build on this in #1611.
Refs #1552, slice 5 (Files, Sources, and Staged deletions)
Stacks on #1579