Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
f5e59d2
Rebrand homepage and metadata to Dormouse
nedtwigg May 15, 2026
5b299e2
Rename Tether page/route → Pocket
nedtwigg May 15, 2026
ecd59a1
Rebrand VS Code extension to Dormouse
nedtwigg May 15, 2026
7bed9ee
Rebrand standalone (Tauri) app to Dormouse
nedtwigg May 16, 2026
335165f
Update release pipeline for Dormouse artifact filenames
nedtwigg May 16, 2026
66d9740
Rewrite README.md and vscode-ext/README.md for Dormouse
nedtwigg May 16, 2026
b67707a
Rename brand in internal docs, storybook, and remaining identifiers
nedtwigg May 16, 2026
a2865e1
Update root package.json pnpm filters for renamed vscode-ext
nedtwigg May 16, 2026
585f75f
Rename pnpm workspace packages: mouseterm-* → dormouse-*
nedtwigg May 16, 2026
35b57d7
Change the share image.
nedtwigg May 18, 2026
e4df710
Rename repo to diffplug/dormouse
nedtwigg May 18, 2026
26f7542
Remaining find-replace of `mouseterm` -> `dormouse` (except changelog)
nedtwigg May 18, 2026
e27db94
`MouseTerm` -> `Dormouse`
nedtwigg May 18, 2026
e50765a
Re-time the hero: 3-line hook with revealed dormouse line, restore or…
nedtwigg May 18, 2026
d85d48e
Fix mobile spacing in the hero hook
nedtwigg May 18, 2026
3276a44
Hold the dormouse line on stage after lines 1+2 fade
nedtwigg May 18, 2026
9c4f079
Snap fractional hero opacity to crisp 0/1 endpoints
nedtwigg May 18, 2026
be01194
Enable kitty keyboard protocol so Shift+Enter is distinguishable
nedtwigg May 18, 2026
6265d0e
Sync Cargo.lock with renamed `dormouse` crate
nedtwigg May 18, 2026
a286679
Rework homepage marketing: reorder sections, crossfade dormouse line
nedtwigg May 18, 2026
3a98651
Fix the /pocket playground.
nedtwigg May 18, 2026
47ce12a
Update marketing copy.
nedtwigg May 18, 2026
3f934f7
Home.md no longer needed.
nedtwigg May 18, 2026
c2ff8ed
Tune homepage hook crossfade timing
nedtwigg May 18, 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
10 changes: 5 additions & 5 deletions .claude/commands/release-notes.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
name: release-notes
description: Draft release notes, recommend and apply a version bump, and update CHANGELOG.md for the next mouseterm release by analyzing all merge commits and squash-merged PRs since the last release tag. Used as step 2 of the release checklist in docs/specs/deploy.md.
description: Draft release notes, recommend and apply a version bump, and update CHANGELOG.md for the next dormouse release by analyzing all merge commits and squash-merged PRs since the last release tag. Used as step 2 of the release checklist in docs/specs/deploy.md.
user-invocable: true
---

You are drafting release notes, recommending and applying a version bump, and updating CHANGELOG.md for the next mouseterm release.
You are drafting release notes, recommending and applying a version bump, and updating CHANGELOG.md for the next dormouse release.

## 1. Gather context

Expand All @@ -26,7 +26,7 @@ Also read the current version from `standalone/src-tauri/tauri.conf.json` so you

## 2. Decide the version bump

mouseterm uses **breaking.added.bugfix** semantics (semver-shaped, but named for what each segment means here):
dormouse uses **breaking.added.bugfix** semantics (semver-shaped, but named for what each segment means here):

- **breaking** (major) — bump if any change breaks behavior users rely on, removes a feature, or changes a VSCode extension contribution point in an incompatible way
- **added** (minor) — bump if any change adds a new user-facing feature, with no breaking changes
Expand All @@ -50,7 +50,7 @@ _Recommended bump: **<breaking|added|bugfix>** — <one-sentence justification n
### Added
- Summary that affects both artifacts (no leading emoji) ...
- 🔌 VS Code-only summary ...
- 🖥️ Standalone-only user-facing summary ([#123](https://github.com/diffplug/mouseterm/pull/123)).
- 🖥️ Standalone-only user-facing summary ([#123](https://github.com/diffplug/dormouse/pull/123)).

### Changed
- ...
Expand All @@ -63,7 +63,7 @@ Rules for the entries:
- One line per PR, written in user-facing terms (not "refactored X" — say what the user sees)
- Lead each entry with the artifact emoji from the header at the top of `CHANGELOG.md`: 🖥️ for standalone-only, 🔌 for VS Code plugin-only, no emoji for changes that ship in both. Decide based on whether the user-visible behavior actually surfaces in each artifact — a PR that touches `lib/` is *both* only if both artifacts consume that code path; otherwise it's whichever one ships it.
- Within each of Added / Changed / Fixed, sort entries by artifact: items that affect both (no emoji) first, then VS Code-only (🔌), then standalone-only (🖥️).
- Link the PR using `https://github.com/diffplug/mouseterm/pull/<N>`. For direct-push commits with no PR, link the commit instead: `https://github.com/diffplug/mouseterm/commit/<sha>`
- Link the PR using `https://github.com/diffplug/dormouse/pull/<N>`. For direct-push commits with no PR, link the commit instead: `https://github.com/diffplug/dormouse/commit/<sha>`
- Omit any of Added / Changed / Fixed if it would be empty
- Use today's date (`YYYY-MM-DD`) and the recommended `X.Y.Z`

Expand Down
4 changes: 2 additions & 2 deletions .claude/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"Bash(npx tsc:*)",
"Bash(magick identify:*)",
"Bash(pnpm test:*)",
"Bash(pnpm --filter mouseterm-lib test:*)",
"Bash(pnpm --filter mouseterm-standalone test:*)",
"Bash(pnpm --filter dormouse-lib test:*)",
"Bash(pnpm --filter dormouse-standalone test:*)",
"mcp__Claude_Preview__preview_screenshot"
]
}
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ jobs:
with:
name: ${{ matrix.artifact-name }}
path: |
standalone/src-tauri/target/${{ matrix.target }}/release/mouseterm.exe
standalone/src-tauri/target/${{ matrix.target }}/release/dormouse.exe
standalone/src-tauri/target/${{ matrix.target }}/release/bundle/**/*.exe
standalone/src-tauri/target/${{ matrix.target }}/release/bundle/**/*.msi
standalone/src-tauri/target/${{ matrix.target }}/release/bundle/**/*.dmg
Expand Down Expand Up @@ -109,13 +109,13 @@ jobs:
run: pnpm install --frozen-lockfile

- name: Test lib
run: pnpm --filter mouseterm-lib test
run: pnpm --filter dormouse-lib test

- name: Build frontend for VSCode
run: pnpm --filter mouseterm build:frontend
run: pnpm --filter dormouse build:frontend

- name: Build extension
run: pnpm --filter mouseterm build
run: pnpm --filter dormouse build

- name: Package extension
run: cd vscode-ext && npx vsce package --no-dependencies
Expand Down
4 changes: 2 additions & 2 deletions .impeccable/design.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schemaVersion": 2,
"generatedAt": "2026-05-11T00:00:00Z",
"title": "Design System: MouseTerm",
"title": "Design System: Dormouse",
"extensions": {
"colorMeta": {
"app-bg": {
Expand Down Expand Up @@ -236,7 +236,7 @@
],
"narrative": {
"northStar": "The Native Tenant",
"overview": "MouseTerm is a tenant in someone else's house. The house is VSCode. The user picked the furniture (their theme), the lighting (their mode), the typography (their editor font). MouseTerm moves in, multiplies what the user can do with their terminals, and leaves the decor alone. The system is intentionally minimal and bg-only. Chrome recedes; terminals are the content. Hierarchy is conveyed through background shifts between header-active-bg and header-inactive-bg, not through borders, shadows, or accent stripes. Status is conveyed through shape and position and through the active terminal palette's own ANSI red/green/yellow, not through a separate design-system palette.",
"overview": "Dormouse is a tenant in someone else's house. The house is VSCode. The user picked the furniture (their theme), the lighting (their mode), the typography (their editor font). Dormouse moves in, multiplies what the user can do with their terminals, and leaves the decor alone. The system is intentionally minimal and bg-only. Chrome recedes; terminals are the content. Hierarchy is conveyed through background shifts between header-active-bg and header-inactive-bg, not through borders, shadows, or accent stripes. Status is conveyed through shape and position and through the active terminal palette's own ANSI red/green/yellow, not through a separate design-system palette.",
"keyCharacteristics": [
"Host-theme-driven palette: every color is a var(--vscode-*) passthrough.",
"Bg-only chrome: no decorative borders, no resting shadows, no accent stripes.",
Expand Down
4 changes: 2 additions & 2 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
"version": "0.2.0",
"configurations": [
{
"name": "MouseTerm Extension",
"name": "Dormouse Extension",
"type": "extensionHost",
"request": "launch",
"args": ["--extensionDevelopmentPath=${workspaceFolder}/vscode-ext"],
"outFiles": ["${workspaceFolder}/vscode-ext/dist/**/*.js"],
"preLaunchTask": "build-mouseterm-vscode"
"preLaunchTask": "build-dormouse-vscode"
}
]
}
2 changes: 1 addition & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"version": "2.0.0",
"tasks": [
{
"label": "build-mouseterm-vscode",
"label": "build-dormouse-vscode",
"type": "shell",
"command": "pnpm build:vscode",
"group": "build",
Expand Down
6 changes: 3 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# MouseTerm
# Dormouse

A mouse-friendly multitasking terminal built with pnpm, react, typescript, vite, tailwind, storybook, and xterm.js.

Expand Down Expand Up @@ -35,9 +35,9 @@ The primary job of a spec is to be an accurate reference for the current state o
- **`docs/specs/alert.md`** — Activity monitoring state machine, alert trigger/clearing rules, attention model, TODO lifecycle, bell button visual states and interaction, door alert indicators, hardening (a11y, motion, i18n, overflow), notification protocols (`OSC 9` / `OSC 9;4` / `OSC 99` / `OSC 777` / `BEL`), the `ActivityNotification` model, notification text handling and security, and the notification preview/detail UI. Read this when touching: `activity-monitor.ts`, `alert-manager.ts`, `AlertManager` notification/progress paths, the alert bell or TODO pill in `Wall.tsx` (TerminalPaneHeader), alert indicators in `Door.tsx`, the `a`/`t` keyboard shortcuts, or TODO notification preview UI. Layout.md defers to this spec for all alert/TODO behavior.
- **`docs/specs/terminal-state.md`** — Terminal semantic state for CWD, shell prompt/editing/running/finished lifecycle, command runs, terminal title fallback, normalized semantic OSC events (`OSC 7`, `OSC 9;9`, `OSC 133`, `OSC 633`, `OSC 1337`, `OSC 0/2`), title-candidate diagnostics, header derivation, and grouping keys. Read this when touching `terminal-state.ts`, `terminal-state-store.ts`, semantic event parsing in `terminal-protocol.ts`, adapter semantic event forwarding, or derived pane/door labels.
- **`docs/specs/OSC.md`** — Registry of every supported OSC sequence with pointers to the spec defining its behavior (alert.md or terminal-state.md), the canonical parsing-location and `pty:data` strip semantics, iTerm2 self-identification (env vars, `CSI > q` response, fail-inertly rule), and known-unimplemented iTerm2 and clipboard-capable sequences. Read this when touching: OSC parsing at the PTY data boundary, the iTerm2 identity env vars (`TERM_PROGRAM`, `LC_TERMINAL`), or adding support for a new OSC sequence.
- **`docs/specs/transport.md`** — Adapter-agnostic protocol shared across VS Code, standalone, and fake adapters: PTY lifecycle (decoupled from webview), `replayChunks`/`scrollbackChunks` buffering, reconnection sequence (`mouseterm:init` → `pty:list` + `pty:replay`), the full webview ↔ host message protocol, persisted-session types, and universal invariants (shell login args, scrollback trailing newline, replay drop-replies-only). Read this when touching: `pty-manager.ts`, `pty-host.js`, `pty-core.js`, `message-router.ts`, `message-types.ts`, `vscode-adapter.ts`, `fake-adapter.ts`, `reconnect.ts`, `session-save.ts`, `session-restore.ts`, `session-types.ts`, or any code crossing the webview/host boundary.
- **`docs/specs/transport.md`** — Adapter-agnostic protocol shared across VS Code, standalone, and fake adapters: PTY lifecycle (decoupled from webview), `replayChunks`/`scrollbackChunks` buffering, reconnection sequence (`dormouse:init` → `pty:list` + `pty:replay`), the full webview ↔ host message protocol, persisted-session types, and universal invariants (shell login args, scrollback trailing newline, replay drop-replies-only). Read this when touching: `pty-manager.ts`, `pty-host.js`, `pty-core.js`, `message-router.ts`, `message-types.ts`, `vscode-adapter.ts`, `fake-adapter.ts`, `reconnect.ts`, `session-save.ts`, `session-restore.ts`, `session-types.ts`, or any code crossing the webview/host boundary.
- **`docs/specs/vscode.md`** — VS Code-specific layer: hosting modes (WebviewView + WebviewPanel), extension manifest, VS Code persistence flow (`workspaceState`, `vscode.setState`, `WebviewPanelSerializer`, deactivate ordering, `mergeAlertStates` rule, `retainContextWhenHidden`), theme integration (`--vscode-*` → `--color-*` with the runtime resolver), CSP, build pipeline, and dream-architecture commands. The transport protocol it speaks (PTY lifecycle, message protocol, persisted-session types) lives in `transport.md`. Read this when touching: `extension.ts`, `webview-view-provider.ts`, `session-state.ts`, `webview-html.ts`, the theme resolver/observer in `terminal-theme.ts`, or VS Code commands and context keys.
- **`docs/specs/tutorial.md`** — Playground tutorial on the website: 3-pane layout, interactive `tut` TUI runner with three sections (keyboard navigation, alerts/TODOs, copy/paste), per-item detection wired to `WallEvent` / activity store / mouse-selection store, single-key `mouseterm-tut-v3` localStorage scheme, theme picker, and FakePtyAdapter extensions (`sendOutput`, `pumpActivity`, `setInputHandler`). Read this when touching: `website/src/pages/Playground.tsx`, `website/src/lib/tut-runner.ts`, `website/src/lib/tut-detector.ts`, `website/src/lib/tutorial-state.ts`, `website/src/lib/tut-items.ts`, `website/src/lib/tutorial-shell.ts`, `lib/src/components/ThemePicker.tsx`, `lib/src/lib/themes/`, `lib/src/lib/platform/fake-scenarios.ts` (tutorial scenarios), the `WallEvent` union, or the `onApiReady`/`onEvent`/`initialPaneIds` props on Wall.
- **`docs/specs/tutorial.md`** — Playground tutorial on the website: 3-pane layout, interactive `tut` TUI runner with three sections (keyboard navigation, alerts/TODOs, copy/paste), per-item detection wired to `WallEvent` / activity store / mouse-selection store, single-key `dormouse-tut-v3` localStorage scheme, theme picker, and FakePtyAdapter extensions (`sendOutput`, `pumpActivity`, `setInputHandler`). Read this when touching: `website/src/pages/Playground.tsx`, `website/src/lib/tut-runner.ts`, `website/src/lib/tut-detector.ts`, `website/src/lib/tutorial-state.ts`, `website/src/lib/tut-items.ts`, `website/src/lib/tutorial-shell.ts`, `lib/src/components/ThemePicker.tsx`, `lib/src/lib/themes/`, `lib/src/lib/platform/fake-scenarios.ts` (tutorial scenarios), the `WallEvent` union, or the `onApiReady`/`onEvent`/`initialPaneIds` props on Wall.
- **`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).
- **`docs/specs/mouse-and-clipboard.md`** — Terminal-owned text selection, copy (Raw / Rewrapped), bracketed paste, smart URL/path extension, mouse-reporting override UI (icon + banner), and the state matrix for which layer owns mouse events. Read this when touching: `lib/src/lib/mouse-selection.ts`, `lib/src/lib/mouse-mode-observer.ts`, `lib/src/lib/clipboard.ts`, `lib/src/lib/rewrap.ts`, `lib/src/lib/selection-text.ts`, `lib/src/lib/smart-token.ts`, `lib/src/components/SelectionOverlay.tsx`, `lib/src/components/SelectionPopup.tsx`, the mouse icon / override banner / Cmd+C-V handling in `lib/src/components/Wall.tsx`, or the parser hooks + mouse listeners in `lib/src/lib/terminal-registry.ts`.

Expand Down
20 changes: 10 additions & 10 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/). Release

## [0.9.1] - 2026-05-01
### Changed
- 🖥️ Drop-to-paste from the OS file explorer is temporarily inert on standalone while we wait on upstream Tauri ([tauri#14373](https://github.com/tauri-apps/tauri/issues/14373)) to allow native drag-drop without blocking HTML5 drag events ([#39](https://github.com/diffplug/mouseterm/pull/39)).
- 🖥️ Drop-to-paste from the OS file explorer is temporarily inert on standalone while we wait on upstream Tauri ([tauri#14373](https://github.com/tauri-apps/tauri/issues/14373)) to allow native drag-drop without blocking HTML5 drag events ([#39](https://github.com/diffplug/dormouse/pull/39)).

### Fixed
- The mouse-override banner now renders inline in the terminal pane body and no longer stacks with the action-button tooltip ([#43](https://github.com/diffplug/mouseterm/pull/43)).
- Themes with translucent selection backgrounds (e.g. Selenized Dark) no longer bleed through MouseTerm's solid AppBar and tab fills ([#37](https://github.com/diffplug/mouseterm/pull/37)).
- 🖥️ Force-closing the standalone host now reliably kills the Node sidecar tree via a Windows Job Object / Unix process group, so subsequent builds no longer hit orphan `node.exe` processes locking files ([#41](https://github.com/diffplug/mouseterm/pull/41)).
- 🖥️ Standalone macOS terminals run zsh as a login shell when no args are provided, so `~/.zprofile` runs and Homebrew/asdf land on `PATH` ([#40](https://github.com/diffplug/mouseterm/pull/40)).
- 🖥️ Pane drag-and-drop reordering works again on standalone ([#39](https://github.com/diffplug/mouseterm/pull/39)).
- The mouse-override banner now renders inline in the terminal pane body and no longer stacks with the action-button tooltip ([#43](https://github.com/diffplug/dormouse/pull/43)).
- Themes with translucent selection backgrounds (e.g. Selenized Dark) no longer bleed through MouseTerm's solid AppBar and tab fills ([#37](https://github.com/diffplug/dormouse/pull/37)).
- 🖥️ Force-closing the standalone host now reliably kills the Node sidecar tree via a Windows Job Object / Unix process group, so subsequent builds no longer hit orphan `node.exe` processes locking files ([#41](https://github.com/diffplug/dormouse/pull/41)).
- 🖥️ Standalone macOS terminals run zsh as a login shell when no args are provided, so `~/.zprofile` runs and Homebrew/asdf land on `PATH` ([#40](https://github.com/diffplug/dormouse/pull/40)).
- 🖥️ Pane drag-and-drop reordering works again on standalone ([#39](https://github.com/diffplug/dormouse/pull/39)).

## [0.9.0] - 2026-04-30

### Added
- 🖥️ Debug dialog for failed auto-updates — surfaces the error and copies a pre-filled bug report (version, platform, last ~10 KB of `mouseterm.log`) ([#35](https://github.com/diffplug/mouseterm/pull/35)).
- 🖥️ Debug dialog for failed auto-updates — surfaces the error and copies a pre-filled bug report (version, platform, last ~10 KB of `mouseterm.log`) ([#35](https://github.com/diffplug/dormouse/pull/35)).

### Fixed
- Terminals auto-spawned from a blank workspace now respect the selected shell ([#33](https://github.com/diffplug/mouseterm/pull/33)).
- 🖥️ Polish app bar header to align with pane chrome and shared design tokens ([#34](https://github.com/diffplug/mouseterm/pull/34)).
- 🖥️ macOS auto-update — strip AppleDouble (`._*`) sidecars from the signed tarball that were breaking every v0.7.x → v0.8.0 install ([#35](https://github.com/diffplug/mouseterm/pull/35)).
- Terminals auto-spawned from a blank workspace now respect the selected shell ([#33](https://github.com/diffplug/dormouse/pull/33)).
- 🖥️ Polish app bar header to align with pane chrome and shared design tokens ([#34](https://github.com/diffplug/dormouse/pull/34)).
- 🖥️ macOS auto-update — strip AppleDouble (`._*`) sidecars from the signed tarball that were breaking every v0.7.x → v0.8.0 install ([#35](https://github.com/diffplug/dormouse/pull/35)).

## [0.8.0] - 2026-04-29
- Add intuitive shortcuts alongside the tmux shortcuts.
Expand Down
Loading
Loading