Skip to content

Commit bf97134

Browse files
authored
Merge branch 'main' into hotfix/fix-terminal-commit-click-upstream
2 parents 7bd0a92 + bb38146 commit bf97134

496 files changed

Lines changed: 44535 additions & 9204 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/skills/add-icon/SKILL.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,17 @@ pnpm run icons:svgo # Optimize SVGs
4343
pnpm run build:icons # Generate font (runs svgo + fantasticon + apply + export)
4444
```
4545

46-
### 4. Update Font References
46+
### 4. Verify Font Cache-Busting
4747

48-
Copy the new `glicons.woff2?{hash}` URL from `src/webviews/apps/shared/glicons.scss` and search-replace the old URL across the codebase.
48+
`pnpm run build:icons` (via `scripts/applyIconsContribution.mjs`) now automatically propagates the new `glicons.woff2?{hash}` cache-bust hash into **both** `src/webviews/apps/shared/glicons.scss` **and** every per-app webview `*.html` file (each declares its own `@font-face`). No manual search-replace needed.
49+
50+
Verify they're all unified (every reference must be the same hash):
51+
52+
```bash
53+
grep -rho "glicons.woff2?[a-f0-9]*" src/ dist/ | sort | uniq -c
54+
```
55+
56+
If any HTML file lags behind, re-run `pnpm run build:icons` — a stale hash leaves that webview pointing at a cached font without the new glyph.
4957

5058
### 5. Use the Icon
5159

.claude/skills/live-inspect/SKILL.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ The server is auto-discovered via `.mcp.json` when Claude Code starts in this re
3434
| `resize_window` | Resize VS Code window content area — only for explicit responsive-breakpoint testing |
3535
| `rebuild_and_reload` | Build extension + restart extension host |
3636

37+
### Reading host logs (gotchas)
38+
39+
- **`read_logs` uses `pattern`, NOT `filter`.** A wrong/unknown arg is silently ignored and it falls back to `pattern: "GitLens"` — so you only ever see the activation banner and wrongly conclude "no logs". Always: `read_logs({ pattern: "<tag>", last_n })`.
40+
- `read_logs` DOES capture extension-**host** `console.log/warn/error` and GitLens `Logger.warn`/`info`/`error` (info+). It reads the GitLens **LogOutputChannel**, also on disk at `.vscode-test/user-data/logs/<TS>/window1/exthost/eamodio.gitlens/GitLens.log`. `read_console` is webview-only (does not see host logs).
41+
- **`@debug`/`@trace` decorator logs are filtered out.** The channel defaults to `info`; GitLens' rich tracing is `debug`/`trace`. Console-mirroring (`Logger.isDebugging`) is gated on `ExtensionMode.Development`, but the inspector runs in **Test** mode → off. `gitlens.enableDebugLogging` (which runs `workbench.action.output.activeOutputLogLevel.debug`) does NOT take headless. So for ad-hoc host tracing, **instrument with `Logger.warn('[tag] …')`** (info+, always written) and read via `read_logs({ pattern: "[tag]" })`. `gitlens.outputLevel` is deprecated — don't rely on it.
42+
3743
### Typical Workflow
3844

3945
1. Call `launch` (once per session — takes ~10s)

.claude/skills/worktree/SKILL.md

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,14 @@ description: Use when starting feature work that needs isolation from current wo
55

66
# GitLens Worktree Creation
77

8-
This project uses a custom worktree convention. The `WorktreeCreate` and `WorktreeRemove` hooks in `.claude/settings.json` handle automatic worktree creation. This skill documents the conventions for manual worktree operations.
8+
This project uses a custom worktree convention: worktrees live in a sibling `<repo-name>.worktrees/` directory (the layout the `worktree.mts` hook in `.claude/settings.json` is built around), **not** in the `EnterWorktree` default location.
9+
10+
Because of that, the flow has two steps:
11+
12+
1. **Create** the worktree with `git worktree add` following the convention below (so it lands in the sibling `.worktrees/` dir with the right name).
13+
2. **Switch into it** by calling the built-in `EnterWorktree` primitive with `path`. This moves the session's working directory into the worktree — a plain `cd` in Bash does not.
14+
15+
> **Do not** call `EnterWorktree` with `name` to create the worktree. Inside a git repo it ignores the hook and places the worktree in `.claude/worktrees/` (which is not gitignored) on a branch off `origin/main`, breaking this project's convention. Always create first, then enter by `path`.
916
1017
## Directory Convention
1118

@@ -40,30 +47,46 @@ Follow the conventions in AGENTS.md:
4047
| Tech debt | `debt/` | `debt/library` |
4148
| With issue | include `#N` | `feature/#1234-search-natural-language` |
4249

43-
## Manual Worktree Creation
44-
45-
When creating a worktree manually (not via the hook):
50+
## Creating and Entering a Worktree
4651

4752
```bash
4853
# 1. Find the worktrees root
4954
REPO_ROOT=$(git rev-parse --path-format=absolute --git-common-dir | sed 's|/.git$||')
5055
REPO_NAME=$(basename "$REPO_ROOT")
5156
WORKTREES_ROOT="$REPO_ROOT/../$REPO_NAME.worktrees"
5257

53-
# 2. Create the worktree
58+
# 2. Create the worktree (branch path segments map to directory nesting)
5459
git worktree add "$WORKTREES_ROOT/<type>/<name>" -b "<type>/<name>"
5560

56-
# 3. Install dependencies (automatic when using the hook)
57-
cd "$WORKTREES_ROOT/<type>/<name>"
58-
pnpm install
61+
# 3. Install dependencies
62+
pnpm install --dir "$WORKTREES_ROOT/<type>/<name>"
63+
```
64+
65+
Then switch the session into it with the **`EnterWorktree`** primitive, passing the path you just created:
66+
67+
```
68+
EnterWorktree({ path: "<absolute path to $WORKTREES_ROOT/<type>/<name>>" })
5969
```
6070

61-
## Setup After Creation
71+
`EnterWorktree` requires an absolute path that already appears in `git worktree list` — which is why creation comes first. After this, all subsequent tool calls run inside the worktree.
72+
73+
## Leaving a Worktree
74+
75+
When the work is done (or you need to return to the original repo), call **`ExitWorktree`**:
76+
77+
```
78+
ExitWorktree({ action: "keep" })
79+
```
80+
81+
Use `action: "keep"``ExitWorktree` will **not** remove a worktree that was entered by `path` (only ones it created via `name`), so `keep` is the correct, non-destructive choice here. The worktree and its branch stay on disk; remove them later with `git worktree remove` if needed.
82+
83+
## Setup Notes
6284

63-
The `WorktreeCreate` hook automatically runs `pnpm install` in the new worktree. No manual setup is needed. Skip test baseline verification — builds are expensive in this project; verify after implementation instead.
85+
- Skip test baseline verification — builds are expensive in this project; verify after implementation instead.
6486

6587
## Key Differences from Default Superpowers Skill
6688

6789
- Worktrees are **outside** the repo (sibling `.worktrees/` directory), not inside
6890
- No `.gitignore` verification needed — the directory is outside the repo
91+
- Create with `git worktree add` first, then enter via `EnterWorktree({ path })` — never create with `EnterWorktree({ name })` (it bypasses the convention)
6992
- Skip test baseline (build is too slow for setup)

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
.agents
2+
.claude/plans/**
13
!.claude/settings.json
24
.claude/settings.local.json
35
.claude/scheduled_tasks.lock
@@ -25,3 +27,6 @@ tsconfig*.tsbuildinfo
2527
*.code-workspace
2628
localdev*.instructions.md
2729
*.log
30+
31+
# Build codegen skip-cache (input fingerprints for Docs/contributions/CEM generators)
32+
.codegen-cache/

0 commit comments

Comments
 (0)