Skip to content

0002 — Adopt a true three-lane sidebar model

Status

Accepted

Context

Tauren originally treated the sidebar session list and session tree as variations of the same shared pane.

This worked initially, but became increasingly fragile as:

  • session tree navigation evolved
  • direct transitions between list/tree were added
  • animations became spatially inconsistent
  • runtime/plugin surfaces expanded
  • the settings surface was introduced

The UI concept had already evolved mentally into:

text
| Session List | Chat | Session Tree |

But the implementation still used:

  • one shared .sessions pane
  • conditional rendering swaps
  • lane state emulation

This caused:

  • incorrect slide directions
  • content swaps in place
  • animation inconsistencies
  • increasingly confusing state logic

Decision

Tauren now models the sidebar as a true three-lane system:

text
| Session List | Chat | Session Tree |

Each lane has its own independent surface and transition behavior.

Lanes

  • Session List Lane

    • left side
    • session file navigation
    • session management actions
  • Chat Lane

    • center
    • transcript
    • composer
    • plugin/custom UI runtime surfaces
    • settings back-face
  • Session Tree Lane

    • right side
    • Pi runtime tree navigation within a session

Consequences

Positive

  • Correct spatial navigation semantics
  • Consistent animations
  • Cleaner lane ownership
  • Reduced conditional rendering complexity
  • Better future support for runtime/plugin surfaces
  • Cleaner mental model

Negative

  • More DOM/layout surfaces
  • More CSS/state coordination
  • Additional navigation state complexity

Notes

The three-lane model intentionally mirrors Tauren's workflow philosophy:

  • left = session/file-level navigation
  • center = active runtime/work surface
  • right = runtime history/tree navigation

The Chat Lane may itself contain multiple "faces":

  • main transcript face
  • settings face
  • future runtime/configuration surfaces

This distinction is intentional:

  • lanes represent spatial navigation
  • faces represent alternate views of the same working surface