a789495a98
FreeBSD Smoke / FreeBSD Smoke (x86_64) (push) Has been cancelled
CI / Quality Guardrails (push) Has been cancelled
CI / Build & Test (macos-latest) (push) Has been cancelled
CI / Build & Test (ubuntu-latest) (push) Has been cancelled
CI / Build & Test (windows-latest) (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / PowerShell Syntax (push) Has been cancelled
CI / Windows Cross-Target Check (Linux) (push) Has been cancelled
2.6 KiB
2.6 KiB
Desktop Single Session Design
This document describes the visual target for the default jcode-desktop single-session mode.
Layering
The single-session view is the primitive desktop surface. The Niri/workspace mode should later compose multiple single-session views rather than redefining what a session looks like.
flowchart TD
SingleSession[SingleSessionView\nspawn/connect/render one Jcode session]
Workspace[Niri Workspace Wrapper\narrange many sessions]
SessionA[SingleSessionView]
SessionB[SingleSessionView]
SessionC[SingleSessionView]
Workspace --> SessionA
Workspace --> SessionB
Workspace --> SessionC
Typography
Primary font target:
- Family:
JetBrainsMono Nerd Font - Weight:
Light - Preferred fontconfig match:
JetBrainsMonoNerdFont-Light.ttf - Fallback family:
JetBrainsMono Nerd Font Mono, thenJetBrains Mono, thenmonospace
Rationale:
- Mono fits code, transcripts, tool output, and terminals.
- Light weight makes a dense agent session feel less heavy than the current blocky bitmap prototype.
- Nerd Font coverage gives us room for subtle icons/status glyphs later without switching fonts.
Type scale
Initial target scale for a single session window:
| Role | Size | Weight | Notes |
|---|---|---|---|
| Session title | 18 px | Light | Top left, preserves original case |
| Message body | 15 px | Light | Main transcript and assistant text |
| Metadata/status | 12 px | Light | Muted status, model, cwd, token/debug hints |
| Inline code/tool output | 14 px | Light | Same family, tighter line-height |
Line-height targets:
- Body: 1.45
- Code/tool output: 1.35
- Metadata: 1.25
Rendering note
The current prototype uses a custom 5x7 bitmap text path in render_helpers.rs. That path is acceptable for layout exploration only. The next rendering pass should replace single-session text with a real font renderer that can:
- Load
JetBrainsMonoNerdFont-Light.ttffrom fontconfig/system font paths. - Preserve casing and punctuation.
- Shape/rasterize UTF-8 text, including Nerd Font glyphs.
- Support alpha text over the existing WGPU surface.
- Allow the workspace wrapper to reuse the same text renderer for each composed session.
First visual goal
The default single-session window should read as one calm, focused coding conversation:
- No workspace lane/status strip.
- One content column.
- Large breathing room around the transcript.
- JetBrains Mono Light Nerd for every text element.
- Muted graphite text over the existing soft pastel background until a more final theme is chosen.