You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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_shellscreen_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.
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, intoAppShellLayout::sidebar_content_bounds.quadraui's
AppShell::renderalready paints the generic sidebar chrome(activity bar + header) before
render_contentruns — this issue is onlythe app-specific panel body content, mirrored from
panels.rs::render_sidebar's dispatch.Scope / known gap
panels.rs::render_sidebarand several of its panel sub-renderers (e.g.the explorer's background-fill loop) do raw
frame.buffer_mut()writeswith no
Backend::draw_*trait equivalent — the same class of gap#601 hit for editor-window separators (
render_contentcannot reach a rawFrame/Buffer; only&mut dyn quadraui::Backendtrait calls work there,see #601's
shell_app.rsmodule doc for why). Each panel needs auditing:engine.explorer_tree.borrow().render(backend, rect), settings viaBackend::draw_form) should port directly — generalize their helpersignatures from concrete
&mut TuiBackendto&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.primitive that can stand in (check
Backend::draw_status_barwith ablank solid segment —
AppShell::render's own divider already uses thistrick) or an explicitly documented, deferred gap. Do not guess a new
quadraui primitive without checking first.
Acceptance
driver_with_shellscreen_containsassertion proving at least onesidebar panel's content renders via the
ShellApppath (explorer is thedefault active panel — start there).
cargo test --no-default-featuresgreen.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.