Skip to content

#595 Stage 2a — render_content: paint sidebar panel content #607

Description

@JDonaghy

Part of epic #595, milestone #9 TUI ShellApp Migration. Follow-on to
#601 (Stage 2), scoped out during its planning (see coord context vimcode 601 / the #601 discussion). Depends on #601.

Goal

Paint the active sidebar panel's content (explorer tree, git/source
control, search, debug, settings, extensions, AI panels) from
TuiShellApp::render_content, into AppShellLayout::sidebar_content_bounds.
quadraui's AppShell::render already paints the generic sidebar chrome
(activity bar + header) before render_content runs — this issue is only
the app-specific panel body content, mirrored from
panels.rs::render_sidebar's dispatch.

Scope / known gap

panels.rs::render_sidebar and several of its panel sub-renderers (e.g.
the explorer's background-fill loop) do raw frame.buffer_mut() writes
with no Backend::draw_* trait equivalent — the same class of gap
#601 hit for editor-window separators (render_content cannot reach a raw
Frame/Buffer; only &mut dyn quadraui::Backend trait calls work there,
see #601's shell_app.rs module doc for why). Each panel needs auditing:

  • Panels that are already trait-pure (explorer's
    engine.explorer_tree.borrow().render(backend, rect), settings via
    Backend::draw_form) should port directly — generalize their helper
    signatures from concrete &mut TuiBackend to &mut dyn quadraui::Backend,
    same technique #595 Stage 2 — TuiShellApp::render_content paints for real through &mut dyn Backend #601 used for render_tab_bar/draw_breadcrumb_bar/
    render_window_status_line.
  • Panels doing raw background fills need either an existing quadraui
    primitive that can stand in (check Backend::draw_status_bar with a
    blank solid segment — AppShell::render's own divider already uses this
    trick) or an explicitly documented, deferred gap. Do not guess a new
    quadraui primitive without checking first.

Acceptance

  • driver_with_shell screen_contains assertion proving at least one
    sidebar panel's content renders via the ShellApp path (explorer is the
    default active panel — start there).
  • cargo test --no-default-features green.
  • Any panel left unported must be called out explicitly in
    shell_app.rs's module doc, not silently skipped.

Dependencies

Depends on #601. Blocks #605 (Stage 6 cutover) — cutover cannot ship with
sidebar content unpainted; the epic's own "no change to what gets
rendered" non-goal would be violated.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    coordTracked by coord-tui pipelineenhancementNew feature or requestinfrastructureBuild, CI, distributionstatus:queuedstatus:readyRefined and ready to enter the work pipelinetest-mode:autocoord: per-issue test-mode policy

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions