Post-it por sessão do Claude Code: um painel dockado que mostra a nota da aba de sessão em destaque. Troca de aba → troca a nota. Temporária e descartável (some quando a aba fecha).
Nome do repositório no GitHub:
notes-session-vscode(histórico) → renomeado pralapso. Nome do produto/extensão: Lapso.
Como funciona
- Extensão contribui um ícone na Activity Bar (
Lapso) com umWebviewView, tema Dracula Soft estilo mini-terminal. - Uma nota por sessão do Claude Code, em
.lapso/<sessionId>.md(pasta.lapso/no.gitignore— temporária, não versiona). - Segue a aba em destaque: quando você foca uma aba de sessão do Claude Code, o painel resolve qual sessão é (casa o título da aba com o
sessionIdlendo os transcripts.jsonldo Claude Code) e mostra a nota daquela sessão. Troca de aba → troca a nota. - Casamento preciso por ID: o Claude escreve o status em
.lapso/<seu-sessionId>.md(ele conhece o próprio sessionId); a extensão resolve aba→sessionId pelo título. Convergem no mesmo arquivo, sem chute. - Descartável: ao fechar a aba de uma sessão, a extensão apaga a nota
.lapso/<sessionId>.mddela. - O painel tem duas zonas no mesmo arquivo, por marcador HTML:
- Status (topo, read-only) — território do Claude Code, efeito de máquina de escrever. Entre
<!-- lapso:status -->e<!-- /lapso:status -->. - Suas notas (baixo, editável) — só você mexe. Entre
<!-- lapso:notes -->e<!-- /lapso:notes -->.
- Status (topo, read-only) — território do Claude Code, efeito de máquina de escrever. Entre
- Não-sobrescrever, por design: cada zona salva relendo a outra do disco e recombinando → o Claude nunca apaga suas notas e você nunca apaga o status dele.
- Scroll contido no campo, barra estilizada.
- Requer
CLAUDE_CONFIG_DIR(ou~/.claude) acessível — é de lá que a extensão lê os transcripts pra casar aba→sessão.
Instalar
Do Marketplace (recomendado)
Publicada como lucasftas.lapso — instala num comando e o Settings Sync replica em toda máquina logada na mesma conta do VSCode:
code --install-extension lucasftas.lapso
Do VSIX do release (sem buildar)
- Baixe o arquivo
lapso-<versão>.vsixanexado no último release. - Instale com um comando (precisa do VSCode com o
codeno PATH):
code --install-extension lapso-0.3.0.vsix
Developer: Reload Window(ou reabra o VSCode). O ícone do Lapso aparece na Activity Bar.
Buildar do código (dev)
git clone https://github.com/lucasftas/lapso.git
cd lapso
npm install
npm run compile
npx @vscode/vsce package --allow-missing-repository --no-yarn
code --install-extension lapso-0.3.0.vsix
Reinstalando por cima de uma versão já rodando? O VSCode não recarrega a extensão sozinho — o host em memória continua com o código antigo até você dar
Developer: Reload Window. Se reempacotar mantendo o mesmo número de versão, o VSCode nem sinaliza a atualização. Por isso cada build novo sobe a versão (semver) — garante que o reload pega o código novo.
Requisito: Node.js +
codeCLI no PATH (VSCode → Command Palette → "Shell Command: Install 'code' command in PATH").
Pra deixar na lateral direita (secondary side bar): arraste o ícone do Lapso da Activity Bar pra área da secondary side bar (Ctrl+Alt+B abre/fecha) uma vez — o VSCode lembra o posicionamento depois disso.
Convenção pro Claude Code
O Claude escreve em .lapso/<sessionId>.md (o próprio sessionId dele) na pasta .lapso/ do workspace — gitignored, temporário. A extensão resolve a aba de sessão em destaque → sessionId (casando o título da aba com os transcripts .jsonl) e mostra a nota daquele arquivo. Não há mais LAPSO.md versionado na raiz.
Dev
npm install
npm run watch
Depois F5 no VSCode (ou code --extensionDevelopmentPath=. numa pasta de teste) abre um Extension Development Host com a extensão carregada.
Testes
npm test
80 asserts, sem framework e sem VSCode aberto: o harness dirige o out/extension.js real com vscode e node:fs mockados sobre um filesystem em memória, e um sandbox executa o script do webview num DOM mínimo. Cobre troca de aba, fechamento, escrita concorrente, painel descartado e recriado, sessão ainda sem título e diretório de transcripts ausente.
Estrutura
src/extension.ts — toda a lógica (provider, índice de sessões, parse de zonas, webview)
tests/harness.js — mocks de vscode + node:fs e helpers de driver
tests/webview-sandbox.js — executa o script do webview num DOM mínimo
tests/concurrency.test.js — regressão dos fixes críticos da v0.2.2
tests/resilience.test.js — suíte de resiliência e persistência (v0.3.0)
resources/icon.svg — ícone da Activity Bar
docs/specs/ — PRD.md (decisões) + Spec.md (milestones)