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
73 lines
2.6 KiB
Markdown
73 lines
2.6 KiB
Markdown
# 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.
|
|
|
|
```mermaid
|
|
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`, then `JetBrains Mono`, then `monospace`
|
|
|
|
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:
|
|
|
|
1. Load `JetBrainsMonoNerdFont-Light.ttf` from fontconfig/system font paths.
|
|
2. Preserve casing and punctuation.
|
|
3. Shape/rasterize UTF-8 text, including Nerd Font glyphs.
|
|
4. Support alpha text over the existing WGPU surface.
|
|
5. 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.
|