Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion PRODUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Dormouse should feel like focused efficiency that cares about beginners and onbo

### Aesthetic Direction

**Primary constraint: Feel native inside VSCode.** The current Catppuccin Mocha design is throwaway — built to get things running. The first design priority is making Dormouse feel completely native within VSCode, respecting whatever theme the user has chosen. This means:
**Primary constraint: Feel native inside VSCode.** The first design priority is making Dormouse feel completely native within VSCode, respecting whatever theme the user has chosen. This means:
- Use VSCode's CSS variables and theme tokens, not hardcoded colors
- Match VSCode's spacing, typography, and interaction patterns
- Light mode and dark mode support from the start (inherited from user's VSCode theme)
Expand Down
11 changes: 6 additions & 5 deletions dor/bin/dor
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
#!/bin/sh
if [ -n "${DORMOUSE_NODE:-}" ] && [ -n "${DORMOUSE_CLI_JS:-}" ]; then
# DORMOUSE_NODE is the editor's Electron binary, which only behaves as Node
# when ELECTRON_RUN_AS_NODE is set. Set it here rather than relying on the
# ambient env to carry it: terminals routinely strip it (so Electron apps
# launched from a shell don't misbehave), and without it Electron launches its
# GUI, ignores the script, and exits 0 — so `dor` would silently do nothing.
# Under VS Code, DORMOUSE_NODE is the editor's Electron binary, which only
# behaves as Node when ELECTRON_RUN_AS_NODE is set; plain Node ignores it.
# Set it here rather than relying on the ambient env to carry it: terminals
# routinely strip it (so Electron apps launched from a shell don't
# misbehave), and without it Electron launches its GUI, ignores the script,
# and exits 0 — so `dor` would silently do nothing.
ELECTRON_RUN_AS_NODE=1
export ELECTRON_RUN_AS_NODE
exec "$DORMOUSE_NODE" "$DORMOUSE_CLI_JS" "$@"
Expand Down
9 changes: 5 additions & 4 deletions dor/bin/dor.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@
setlocal
if "%DORMOUSE_NODE%"=="" goto fallback
if "%DORMOUSE_CLI_JS%"=="" goto fallback
rem DORMOUSE_NODE is the editor's Electron binary; it only behaves as Node when
rem ELECTRON_RUN_AS_NODE is set. Set it here rather than relying on the ambient
rem env to carry it: without it Electron launches its GUI, ignores the script,
rem and exits 0 — so `dor` would silently do nothing.
rem Under VS Code, DORMOUSE_NODE is the editor's Electron binary; it only
rem behaves as Node when ELECTRON_RUN_AS_NODE is set, which plain Node
rem ignores. Set it here rather than relying on the ambient env to carry it:
rem without it Electron launches its GUI, ignores the script, and exits 0 —
rem so `dor` would silently do nothing.
set "ELECTRON_RUN_AS_NODE=1"
"%DORMOUSE_NODE%" "%DORMOUSE_CLI_JS%" %*
rem Never move this into a ( ) block: cmd expands %ERRORLEVEL% when it parses
Expand Down
2 changes: 1 addition & 1 deletion lib/src/components/Door.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ export function Door({
{title}
</span>
{/* `spoken` is unbounded (it lasts until the ring clears), so it joins
the badge cluster instead of replacing it — see docs/specs/layout.md. */}
the badge cluster instead of replacing it — see docs/specs/alert.md → Door. */}
{speaking ? (
<span className={clsx('flex shrink-0 items-center gap-1 text-xs font-bold', ALERT_SPEECH_TRACKING_CLASS)}>
<SpeakerHighIcon size={13} weight="fill" />
Expand Down
5 changes: 3 additions & 2 deletions lib/src/components/focus-step.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
* Move DOM focus within an ordered candidate list: step from the currently
* focused entry by `delta`, wrapping at both ends. When focus is outside the
* list, seed at the first entry for a forward step and the last for a backward
* one. Shared by the popover/modal focus traps (Tab cycling) and the pane
* header context menu (arrow roving) so the wrap arithmetic exists once.
* one. Shared by the popover/modal focus traps and the terminal context detail
* (Tab cycling) and the Workspace tab menu (arrow roving) so the wrap
* arithmetic exists once.
*/
export function stepFocus(items: HTMLElement[], delta: number): void {
if (items.length === 0) return;
Expand Down
4 changes: 3 additions & 1 deletion lib/src/components/wall/tool-run-end.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,9 @@ describe('Run end', () => {
act(() => { terminalRegistry.setTerminalUserTitle(ID, 'notes'); });
await run(COMMAND);
await finish();
expect(await leaf()).toMatchObject({ component: 'terminal', title: 'notes' });
const after = await leaf();
expect(after).toMatchObject({ component: 'terminal', title: 'notes' });
expect(after.params).toBeUndefined();
});

it('ends nothing before the first designated run: a takeover still at the dor line', async () => {
Expand Down
4 changes: 2 additions & 2 deletions lib/src/remote/burrow/peer-surfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,8 @@ function holdOf(value: unknown): SurfaceHold | null {
*
* `resolve` is the read-only ownership probe that lets a multi-window Burrow pick
* one duplicate claimant before mutating it. `attach` and `resize` are the same
* operation — attach-is-the-resize
* (docs/specs/remote-api.md) — and both go through the live xterm rather than
* operation (docs/specs/remote-api.md → "Size authority: last-attach-wins")
* — and both go through the live xterm rather than
* the PTY directly, so the owning pane's own view stays consistent with the
* size the phone asked for; each records its hold first, with that size, so the
* pane stops fitting itself before the size moves. `release` clears the hold it
Expand Down
2 changes: 1 addition & 1 deletion website/src/lib/playground-fs/viewers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export interface ViewerRequest {
method: string;
/** The path after `/playground-fs/<token>/`, percent-decoded. */
route: string;
/** `URLSearchParams` of the request URL. */
/** The request URL's query string (`url.search`), `?` included. */
search: string;
body: string;
}
Expand Down
Loading