Skip to content

Build stage 1: fallback header suffix Home (xterm) #124

Description

@jonocodes

Part of #116 — build ticket from the spec in #123.

Question

Implement the stage-1 fallback header suffix per the spec resolved in #123.

Build checklist

  1. Protocol — add is_default: bool to LayoutMessage in daemon/deckd/protocol.py; mirror in client/src/protocol.ts.
  2. Daemon — set the flag in daemon/deckd/server.py (push_current/_on_focus): is_default: true only on a genuine focus-driven fallback to store.default(). Force false whenever serving a pinned layout/view (demo ?layout= pin or select_view chrome pin), even if that pinned layout is itself the default.
  3. Client — render the suffix in client/src/App.tsx (~line 403). When is_default is true and focused_app is present, append (<id>) where <id> = focused_app.wm_class || focused_app.app_id. Raw string, no prettifying. Otherwise render the name as today (display_name || app).
  4. Verify the auto-ignore hold: confirm _on_focus returns early for the deckd window so no push carries deckd's own identity — the suffix must freeze on the last real app, never show Home (deckd).

Tests

  • Fake-backend focus of an unmatched app → push has is_default: true, focused_app.wm_class set; header shows Home (xterm).
  • Focus of an identity-matched app → is_default: false, no suffix.
  • Pinned view active → is_default: false regardless of underlying resolution.
  • Null wm_class (X11 path) falls back to app_id.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions