Skip to content

Review Surface: add first-class session diff/review UI backed by official OpenCode data #29

@insign

Description

@insign

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions