Orientation interface
Add one shell-owned orientation value, public set and toggle operations, geometry reads, and the compositor binding.
Preserve existing IPC JSON fields.
Compact formatting
Centralize the abbreviation rule and expose its pure self-test.
Exit when all required cases pass.
Bar layout
Thread orientation through the bar, switch anchors and flow, derive vertical thickness from content, compact vertical workspace labels, and render the stacked clock without overlap.
Exit when registered geometry proves both layouts.
Popout geometry
Thread orientation and bar thickness through placement and outside-dismiss handling.
Exit when both orientations open, clamp, and dismiss correctly.
Review
Verify live toggling, clean logs, geometry reads, horizontal regression behavior, and visual legibility.
---
id: NL-PLAN-0D15DD3E
type: plan
title: Nuguland orientation rollout
spec: NL-SPEC-0B9CBD34
status: approved
---
# Nuguland orientation rollout
1. **Orientation interface**
Add one shell-owned orientation value, public set and toggle operations, geometry reads, and the compositor binding.
Preserve existing IPC JSON fields.
2. **Compact formatting**
Centralize the abbreviation rule and expose its pure self-test.
Exit when all required cases pass.
3. **Bar layout**
Thread orientation through the bar, switch anchors and flow, derive vertical thickness from content, compact vertical workspace labels, and render the stacked clock without overlap.
Exit when registered geometry proves both layouts.
4. **Popout geometry**
Thread orientation and bar thickness through placement and outside-dismiss handling.
Exit when both orientations open, clamp, and dismiss correctly.
5. **Review**
Verify live toggling, clean logs, geometry reads, horizontal regression behavior, and visual legibility.