Problem
Research has strong report streaming/export foundations, but the list does not consistently render its loading state, an empty list can appear blank, and Research lacks a complete archive/delete lifecycle. Follow-up is largely a floating action, while completed reasoning/context becomes hard to revisit.
This is separate from creation readiness in #230 and command-palette routing in #229.
Relevant code
apps/desktop/src/ui/ResearchView.tsxapps/desktop/src/ui/research/**- Research store/actions and persistence
Implementation outline
- Render list skeletons using the existing loading state.
- Add an intentional empty state with examples and New Research action.
- Add archive and delete with confirmation, undo where recoverable, and clear persistence semantics.
- Add inline follow-up beneath the completed report.
- Retain completed reasoning collapsed and make sources easy to inspect.
- Show list/load/action errors with Retry.
- Preserve selection sensibly after archive/delete.
- Add palette/menu-bar actions only when the feature is available.
Acceptance criteria
- Loading never appears as an unexplained blank rail.
- Empty Research explains the product and offers a direct start.
- Archive/delete behavior is predictable and recoverable where possible.
- Follow-up is available in the report reading flow.
- Completed reasoning and sources remain inspectable.
- Failures are visible and retryable.
- Selection/navigation remains valid after lifecycle changes.
Required tests
- Loading, empty, populated, and error states.
- Archive/delete/cancel/undo.
- Selection after removing the current item.
- Completed reasoning/source disclosure.
- Inline follow-up success/failure.