Summary
Turn CodeWalk's existing session diff data into a first-class review surface for both mobile and desktop. The data/domain layer already contains evidence of support for session diffs; the missing piece is a coherent, visible, user-facing review workflow.
This issue should not invent a new server contract. It must use official OpenCode-backed diff data and preserve current chat/scroll semantics.
Why this exists
The repository already contains signs that diff information exists and is being consumed internally:
lib/domain/usecases/get_session_diff.dart
lib/presentation/utils/diff_parser.dart
lib/presentation/pages/chat_page/chat_page_file_runtime.dart
chatProvider.currentSessionDiff
However, CodeWalk still lacks a truly first-class review surface where a user can confidently inspect changes produced by the assistant. This is one of the highest-value UX gaps versus richer OpenCode-based clients.
Required references
Current repo evidence to inspect
lib/domain/usecases/get_session_diff.dart
lib/presentation/utils/diff_parser.dart
lib/presentation/pages/chat_page/chat_page_file_runtime.dart
lib/presentation/pages/chat_page/chat_page_file_viewer.dart
lib/presentation/pages/chat_page/chat_page_workspace_controller.dart
lib/presentation/pages/chat_page/chat_page_timeline_builder.dart
lib/presentation/widgets/chat_message/chat_message_tool_part.dart
lib/presentation/providers/chat_provider.dart
Scope
Build a review surface with two entry modes:
1. Dedicated review surface
A visible Changes / Review surface tied to the current session that shows diff-backed files in a structured way.
2. Inline drill-down
For relevant tool/file-write events in the message timeline, allow the user to expand or drill into the diff for that message/session context without overwhelming the chat surface.
UX requirements
- Mobile: readable, contained, not dependent on giant desktop panes
- Desktop: efficient review workflow with enough space for file list + diff content
- Lazy loading where possible so the timeline does not become heavy
- Clear navigation from diff entry to file viewer / exact file context if supported
- Must not create scroll thrash or break ADR-backed scroll ownership behavior
Deliverables
- A dedicated session diff/review UI
- Inline diff affordance from the timeline where appropriate
- Diff-to-file navigation where feasible
- Clean empty/loading/error states
Acceptance criteria
- Users can discover current session diffs without hidden debug knowledge.
- There is a clear path from assistant-generated file changes to human review.
- The implementation works on compact and expanded layouts.
- Timeline behavior remains stable while opening/closing diff UI.
- The review surface is backed by official session diff data, not locally fabricated diffs.
Non-goals
- No git staging/commit sidebar in this issue.
- No server-side diff generation changes.
- No community-only VCS workflow.
Testing / validation
- Add widget tests for the new review surface states.
- Add integration coverage for fetching and rendering session diffs.
- Run
make check.
- Manually verify mobile + desktop review workflows.
Dependencies
Notes for the implementer
This issue is about reviewability, not about adding more raw data. Prefer a small number of obvious, high-confidence user entry points.
Summary
Turn CodeWalk's existing session diff data into a first-class review surface for both mobile and desktop. The data/domain layer already contains evidence of support for session diffs; the missing piece is a coherent, visible, user-facing review workflow.
This issue should not invent a new server contract. It must use official OpenCode-backed diff data and preserve current chat/scroll semantics.
Why this exists
The repository already contains signs that diff information exists and is being consumed internally:
lib/domain/usecases/get_session_diff.dartlib/presentation/utils/diff_parser.dartlib/presentation/pages/chat_page/chat_page_file_runtime.dartchatProvider.currentSessionDiffHowever, CodeWalk still lacks a truly first-class review surface where a user can confidently inspect changes produced by the assistant. This is one of the highest-value UX gaps versus richer OpenCode-based clients.
Required references
Current repo evidence to inspect
lib/domain/usecases/get_session_diff.dartlib/presentation/utils/diff_parser.dartlib/presentation/pages/chat_page/chat_page_file_runtime.dartlib/presentation/pages/chat_page/chat_page_file_viewer.dartlib/presentation/pages/chat_page/chat_page_workspace_controller.dartlib/presentation/pages/chat_page/chat_page_timeline_builder.dartlib/presentation/widgets/chat_message/chat_message_tool_part.dartlib/presentation/providers/chat_provider.dartScope
Build a review surface with two entry modes:
1. Dedicated review surface
A visible
Changes/Reviewsurface tied to the current session that shows diff-backed files in a structured way.2. Inline drill-down
For relevant tool/file-write events in the message timeline, allow the user to expand or drill into the diff for that message/session context without overwhelming the chat surface.
UX requirements
Deliverables
Acceptance criteria
Non-goals
Testing / validation
make check.Dependencies
Notes for the implementer
This issue is about reviewability, not about adding more raw data. Prefer a small number of obvious, high-confidence user entry points.