drogna

A demonstration harness. Every number in it is invented.

ADR-0033: two presentations of one shell

Status: Accepted Date: 29 August 2026 Feature: 112 (the shell on a phone) Amends: ADR-0028, which stated that dockview owns the shell's layout, without qualifying the width at which that holds.

Context

The shell is a dockable multi-panel layout: dockview owns the arrangement, panels are registered from configuration, and every view is addressable (ADR-0028, SRD-v2 FR-14 and FR-15). At a desktop width that is exactly right. At 390px it is not a layout at all.

dockview is a docking manager, and docking is the thing a phone cannot do. Its tab bar does not scroll, so seven tabs at 390px either compress past reading or overflow invisibly. Its drag handles are its reason to exist and are useless on a surface where a drag means a scroll. Two docked panels at 390px are two panels of about 195px each. None of this is a defect in dockview; it is a library being asked for something outside its subject.

The tree also showed that nothing else in the app had ever reasoned about width. Before this feature there was not one media query, container query or width measurement in app/src outside feature 111's Background panel, which had to think about it and did (layout.tsx, Rail.tsx). Everything else assumed a window.

Decision

dockview hosts the shell at and above a declared width threshold. Below it, the same views are presented as a stack: one view at a time, behind the same tabs.

Consequences

Alternatives rejected