Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
1b24c14
docs: add design spec for Windows Terminal profile import (#6)
AThraen May 8, 2026
ddd46e4
docs: add implementation plan for WT profile import (#6)
AThraen May 8, 2026
27d4b50
feat: add ShellSession profile override fields and ImportWindowsTermi…
AThraen May 8, 2026
3a4def3
feat: add CommandLineSplitter with quote-aware exe/args parsing
AThraen May 8, 2026
f10fd47
feat: add PaddingParser for Windows Terminal padding shorthand
AThraen May 8, 2026
4ba4faf
feat: add CursorShapeMapper for WT → xterm cursor shape translation
AThraen May 8, 2026
0906731
feat: add SchemeMapper for WT scheme -> xterm theme translation
AThraen May 8, 2026
7048870
feat: add BuiltInTerminalSchemes with WT-shipped color schemes
AThraen May 8, 2026
bb4c156
feat: add WindowsTerminalProfile model
AThraen May 8, 2026
bafc537
feat: add WindowsTerminalProfileService with fixture-based tests
AThraen May 8, 2026
ff67b1f
feat: add Profile combobox to NewSessionDialog with override stashing
AThraen May 8, 2026
cc6b6f5
feat: add Show Windows Terminal profiles checkbox to settings
AThraen May 8, 2026
815fd23
feat: pass WT profiles into NewSessionDialog and copy overrides to se…
AThraen May 8, 2026
75280b1
feat: extract terminal-init.js, add transparent variant, extend setOp…
AThraen May 8, 2026
33644df
feat: add TerminalBridge.ApplyProfileOverrides
AThraen May 8, 2026
77dff11
feat: route transparent sessions to terminal-transparent.html and app…
AThraen May 8, 2026
ec544b0
test: verify Profile combobox visibility tracks setting
AThraen May 8, 2026
7b56956
docs: document Windows Terminal profile import in CLAUDE.md
AThraen May 8, 2026
d47c744
fix: allow terminal-transparent.html in nav guard and dispose JsonDoc…
AThraen May 8, 2026
7fac09a
fix: persist ImportWindowsTerminalProfiles from edited settings to li…
AThraen May 8, 2026
ab32014
fix: keep dormant sessions at bottom of sidebar after restart
AThraen May 10, 2026
8e80893
fix: expand environment variables in Windows Terminal profile command…
AThraen May 10, 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
21 changes: 21 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,27 @@ Remote sessions use the system `ssh` client as the PTY command — no extra libr
- `SessionViewModel.RefreshGitInfoAsync()` early-returns for remote sessions (no local working folder)
- SSH fields serialize to `state.json` automatically — sessions restore and relaunch on next startup

## Windows Terminal Profile Import (opt-in)

When `AppSettings.ImportWindowsTerminalProfiles` is on, the New Session dialog reads the user's Windows Terminal `settings.json` and offers each profile in a "Profile (optional)" combobox.

**Service:** `WindowsTerminalProfileService.GetProfiles()` probes Stable / Preview / Unpackaged install paths, parses each `settings.json`, flattens `profiles.defaults`, filters hidden profiles, and emits `WindowsTerminalProfile` POCOs with appearance fields already mapped to xterm equivalents.

**Per-session overrides** (all on `ShellSession`, all nullable, all persisted to `state.json`):

- `ProfileFontFamily`, `ProfileFontSize`, `ProfileFontWeight`, `ProfileFontLigatures`
- `ProfileCursorShape` (`"block" | "underline" | "bar"`), `ProfileCursorBlink`
- `ProfilePadding` (CSS shorthand)
- `ProfileBackgroundOpacity` (0.0–1.0; 1.0 = opaque)
- `ProfileRetroEffect` (CSS scanlines overlay only — not a real CRT shader)
- `ProfileColorSchemeJson` (pre-baked xterm theme)

When any override is set, `LaunchSessionAsync` calls `bridge.ApplyProfileOverrides(session)` after `ApplyFontSettings`, posting a `setOptions` message that wins over the global font.

**Transparency:** xterm.js requires `allowTransparency` in the constructor, so transparent sessions navigate to `Assets/terminal-transparent.html` instead of `terminal.html`. Both files share `Assets/terminal-init.js`. (Acrylic blur is not reachable from WebView2 — we get flat alpha over the WPF chrome instead.)

**Once stamped, profile overrides are independent.** A session keeps its appearance even if the user later edits or deletes the source profile in Windows Terminal.

## Sleep / Wake (Dormant Sessions)

Sessions can be put to sleep instead of closed — the PTY is torn down but the `ShellSession` is kept in `state.json` (`IsDormant = true`) so it can be relaunched from the sidebar later. Useful when you have many long-running projects but only need a few live at once.
Expand Down
Loading
Loading