Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
4eaac5d
Add theme spec for real VSCode theme support.
nedtwigg Apr 13, 2026
b419ee1
Collapse --mt-* layer into @theme --color-* tokens.
nedtwigg Apr 13, 2026
8b67009
Import real VSCode themes from OpenVSX.
nedtwigg Apr 13, 2026
e5b477b
Merge branch 'main' into feat/theme-embed
nedtwigg Apr 14, 2026
cffc4ed
Fix playground theme picking.
nedtwigg Apr 14, 2026
1412447
Update all icons, use a white background every except macOS.
nedtwigg Apr 14, 2026
60af7de
Theme picker working okay on the playground.
nedtwigg Apr 14, 2026
ea15146
Theme picker is now a dropdown, styling includes site header.
nedtwigg Apr 15, 2026
4c45ccc
Fix desktop bug.
nedtwigg Apr 15, 2026
c782a24
Fix homepage scroll.
nedtwigg Apr 15, 2026
0dc5a58
Theme picker for the standalone app.
nedtwigg Apr 15, 2026
9f25b56
Centralize the theme picker.
nedtwigg Apr 15, 2026
303b4ed
Claude Code review R1: fix stale references in specs and AGENTS.md
Apr 15, 2026
2575032
Merge branch 'main' into feat/theme-embed
nedtwigg Apr 16, 2026
b4ac144
Fix Tauri warning by `com.mouseterm.app` -> `com.mouseterm.standalone`
nedtwigg Apr 16, 2026
6ba459f
Set version we've been missing.
nedtwigg Apr 16, 2026
338ade0
Fixup dogfooding on mac.
nedtwigg Apr 16, 2026
cd248fa
Only ship OpenVSX themes.
nedtwigg Apr 16, 2026
a0b5bf0
No reason to exclude jsdom from the minimumReleaseAge.
nedtwigg Apr 16, 2026
2693926
Add solarized/selenized
nedtwigg Apr 16, 2026
85cf56b
Bundle gruvbox and iceberg.
nedtwigg Apr 16, 2026
c2266ff
Add the bundled themes into our dependencies.json
nedtwigg Apr 16, 2026
041e778
Remove unnecessary TODO.md
nedtwigg Apr 16, 2026
ca78cf9
No missing licenses.
nedtwigg Apr 16, 2026
ea95844
Make sure none of the authors are null.
nedtwigg Apr 16, 2026
156c3e2
Exclude the classic GitHub themes.
nedtwigg Apr 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ The primary job of a spec is to be an accurate reference for the current state o
- **`docs/specs/layout.md`** — Tiling layout, pane/door containers, dockview configuration, modes (passthrough/command), keyboard shortcuts, selection overlay, spatial navigation, detach/reattach, inline rename, session lifecycle, session persistence, and theming. Read this when touching: `Pond.tsx`, `Baseboard.tsx`, `Door.tsx`, `TerminalPane.tsx`, `spatial-nav.ts`, `layout-snapshot.ts`, `terminal-registry.ts`, `session-save.ts`, `session-restore.ts`, `reconnect.ts`, `index.css`, `theme.css`, or any keyboard/navigation/mode behavior.
- **`docs/specs/alarm.md`** — Activity monitoring state machine, alarm trigger/clearing rules, attention model, TODO lifecycle (soft/hard), bell button visual states and interaction, door alarm indicators, and hardening (a11y, motion, i18n, overflow). Read this when touching: `activity-monitor.ts`, `alarm-manager.ts`, the alarm bell or TODO pill in `Pond.tsx` (TerminalPaneHeader), alarm indicators in `Door.tsx`, or the `a`/`t` keyboard shortcuts. Layout.md defers to this spec for all alarm/TODO behavior.
- **`docs/specs/vscode.md`** — VS Code extension architecture: hosting modes (WebviewView + WebviewPanel), PTY lifecycle and buffering, message protocol between webview and extension host, session persistence flow, reconnection protocol, theme integration, CSP, build pipeline, and invariants (save-before-kill ordering, PTY ownership, alarm state merging). Read this when touching: `extension.ts`, `webview-view-provider.ts`, `message-router.ts`, `message-types.ts`, `pty-manager.ts`, `pty-host.js`, `session-state.ts`, `webview-html.ts`, `vscode-adapter.ts`, or `pty-core.js`.
- **`docs/specs/tutorial.md`** — Playground tutorial on the website: 3-pane initial layout, `tut` command and TutorialShell, 6-step progressive tutorial with detection logic, theme picker, FakePtyAdapter extensions, and Pond event hooks. Read this when touching: `website/src/pages/Playground.tsx`, `website/src/lib/tutorial-shell.ts`, `website/src/lib/tutorial-detection.ts`, `website/src/components/ThemePicker.tsx`, `website/src/lib/playground-themes.ts`, `lib/src/lib/platform/fake-scenarios.ts` (tutorial scenarios), or the `onApiReady`/`onEvent`/`initialPaneIds` props on Pond.
- **`docs/specs/tutorial.md`** — Playground tutorial on the website: 3-pane initial layout, `tut` command and TutorialShell, 6-step progressive tutorial with detection logic, theme picker, FakePtyAdapter extensions, and Pond event hooks. Read this when touching: `website/src/pages/Playground.tsx`, `website/src/lib/tutorial-shell.ts`, `website/src/lib/tutorial-detection.ts`, `lib/src/components/ThemePicker.tsx`, `lib/src/lib/themes/`, `lib/src/lib/platform/fake-scenarios.ts` (tutorial scenarios), or the `onApiReady`/`onEvent`/`initialPaneIds` props on Pond.
- **`docs/specs/theme.md`** — Theme system: two-layer CSS variable strategy, theme data model, conversion pipeline, bundled themes, localStorage store, shared ThemePicker component, standalone AppBar picker, runtime OpenVSX installer. Read this when touching: `lib/src/lib/themes/`, `lib/src/components/ThemePicker.tsx`, `lib/src/theme.css`, `lib/scripts/bundle-themes.mjs`, `standalone/src/AppBar.tsx` (theme picker), `standalone/src/main.tsx` (theme restore), or `website/src/components/SiteHeader.tsx` (themeAware mode).

When updating code covered by a spec, update the spec to match. When the two specs overlap (e.g. pane header elements appear in both), layout.md documents placement and sizing while alarm.md documents behavior and visual states.

Expand Down
5 changes: 0 additions & 5 deletions docs/specs/TODO.md

This file was deleted.

1 change: 1 addition & 0 deletions docs/specs/deploy.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Human-driven steps, in order:
1. **Update dependencies page** — run `node website/scripts/generate-deps.js` and review the diff in `website/src/data/dependencies.json`. Commit if changed.
2. **Finalize changelog** — promote the `[Unreleased]` section in `CHANGELOG.md` to `[X.Y.Z]` with today's date. Write release notes covering both standalone and VSCode changes.
3. **Bump versions** — update `version` in all three places:
- [standalone/src-tauri/Cargo.toml](../../standalone/src-tauri/Cargo.toml)
- [standalone/src-tauri/tauri.conf.json](../../standalone/src-tauri/tauri.conf.json)
- [vscode-ext/package.json](../../vscode-ext/package.json)
- [lib/package.json](../../lib/package.json)
Expand Down
8 changes: 4 additions & 4 deletions docs/specs/layout.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ The content area is a tiling layout of panes, powered by dockview. Each pane occ

### Pane header

Each pane has a 30px header that doubles as a drag handle. The header uses `cursor-grab` / `active:cursor-grabbing` and `select-none`. Background uses `--mt-tab-*` theme tokens (adapts to VSCode host theme). Dockview's default close button and right-actions container are hidden via CSS.
Each pane has a 30px header that doubles as a drag handle. The header uses `cursor-grab` / `active:cursor-grabbing` and `select-none`. Background uses `--color-tab-*` theme tokens (adapts to VSCode host theme). Dockview's default close button and right-actions container are hidden via CSS.

Elements from left to right:

Expand Down Expand Up @@ -279,9 +279,9 @@ Custom `mousetermTheme` extends dockview's `themeAbyss`:
- Pane header height: `--dv-tabs-and-actions-container-height: 30px`
- 6px padding around the dockview area (`p-1.5` on wrapper, `inset-1.5` on container)

Colors use a two-layer CSS variable strategy: `--mt-*` semantic tokens → `var(--vscode-*, <fallback>)`. In VSCode, host theme variables take precedence. In standalone mode, fallback values apply (Dark+ defaults with `prefers-color-scheme: light` overrides). Tailwind v4 `@theme` block registers `--mt-*` tokens as Tailwind colors (e.g., `bg-surface`, `text-foreground`, `border-border`). See `theme.css` for the full token map.
Colors use a two-layer CSS variable strategy: `@theme --color-*` tokens → `var(--vscode-*, <fallback>)`. In VSCode, host theme variables take precedence. In standalone mode, fallback values apply with `prefers-color-scheme: light` overrides. Tailwind v4 `@theme` block registers `--color-*` tokens as Tailwind colors (e.g., `bg-surface`, `text-foreground`, `border-border`). See `theme.css` for the full token map.

Dockview's separator borders, sash handles, and groupview borders are all set to transparent/none — the 6px gap is the only visual separator between panes. All dockview container backgrounds are flattened to `var(--mt-surface)`.
Dockview's separator borders, sash handles, and groupview borders are all set to transparent/none — the 6px gap is the only visual separator between panes. All dockview container backgrounds are flattened to `var(--color-surface)`.

## Corner cases

Expand Down Expand Up @@ -315,4 +315,4 @@ Dockview's separator borders, sash handles, and groupview borders are all set to
| `lib/src/lib/reconnect.ts` | Priority-based recovery: live PTYs first, then saved session, then empty |
| `lib/src/lib/resume-patterns.ts` | Detects resumable commands (`claude --resume`, etc.) in scrollback |
| `lib/src/index.css` | Dockview theme overrides — separator/sash/border removal, background flattening |
| `lib/src/theme.css` | Two-layer VSCode theme token system (`--mt-*` → `--vscode-*`) and Tailwind v4 `@theme` integration |
| `lib/src/theme.css` | Two-layer VSCode theme token system (`@theme --color-*` → `--vscode-*`) and Tailwind v4 `@theme` integration |
Loading
Loading