Skip to content

feat: rehydrate hidden Claude history and export the native session (#31) - #52

Merged
lippdev merged 2 commits into
mainfrom
claude/quirky-lovelace-pybgg3
Sep 28, 2026
Merged

lippdev merged 2 commits into
mainfrom
claude/quirky-lovelace-pybgg3

Conversation

@lippdev

@lippdev lippdev commented Sep 28, 2026

Copy link
Copy Markdown
Owner

Resumo

Refs #31, parte de código. O ensaio real fica no item 54 do roteiro e depende também da #25.

  • Transcrição: vem do campo transcript_path dos hooks oficiais do Claude. Só é aceito um arquivo comum <id-da-sessão>.jsonl, sem symlink. O estado continua guardando só IDs.
  • Reidratação: na retomada (--resume), ao receber SessionStart, o leitor Claude existente relê o ramo único da transcrição. A Bee mostra até 200 linhas marcadas com ↺: mensagens, nomes de ações e resumos de compactação. Também informa omissões, leitura parcial ou ramos múltiplos. Nada é reenviado ao Claude nem inventado.
  • Exportação (Ctrl+E): prévia de um pacote v1 somente contexto, com referência Git do projeto. A prévia mostra o destino novo em <estado>/exports/ (0700), os registros com a linha da transcrição, avisos, omissões e possíveis segredos. O texto dessas linhas fica oculto.
    • Exclusões por linha (Enter aplica) e rolagem (↑↓/PgUp/PgDn).
    • Ctrl+S grava os mesmos bytes da prévia e roda verify. A gravação é recusada enquanto houver possível segredo.
  • Saída: a CLI imprime memory-bee export <transcrição> --preview, para exportar depois de o Claude encerrar.

Validação

  • cargo fmt --all -- --check, cargo clippy --locked --all-targets -- -D warnings, cargo test --locked e cargo build --locked passaram localmente em Linux.
  • Os quatro scripts PTY e o check_bundle.py também passaram localmente em Linux.
  • Testes de biblioteca em tests/workspace.rs cobrem:
    • validação do caminho, incluindo ID errado, caminho relativo e symlink;
    • histórico básico, limite com contagem de omitidos, transcrição truncada e ramos múltiplos;
    • pacote que passa no verify, destino não reutilizado e exclusão de linha.
  • Teste unitário da TUI: um token sintético no formato sk- bloqueia a gravação até a linha ser excluída e nunca aparece na prévia. O teste pegou um vazamento na primeira versão da lista de registros, já corrigido.
  • check_claude_hidden_pty.py ganhou uma CLI falsa que informa transcript_path. O cenário cobre Ctrl+E/Ctrl+S, o memory-bee verify do pacote e a retomada com histórico. Também confirma que o Claude falso recebeu apenas /exit, sem texto reenviado.
  • As telas de histórico e de prévia foram conferidas num emulador de terminal (pyte).

Limitações

  • Este ambiente não tem um Claude autenticado, então não houve ensaio com transcrição real (item 54).
  • Depois que o Claude encerra, a exportação é feita pela CLI export, não pela TUI.
  • Código selecionado (pacote v2) não é oferecido na TUI.
  • Houve apenas autorrevisão.

Documentos atualizados: docs/specs/workspace.md, docs/MANUAL_TESTS.md (item 54), docs/EXECUTION.md e ROADMAP.md.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MUyLMVv9GbqWRByEZ7LgEb


Generated by Claude Code

)

The hidden workspace takes the transcript path from Claude's own hooks
(validated as a regular <session-id>.jsonl) and never stores it. On
resume, the selected branch is read back with the existing reader and
shown as history without resending anything. Ctrl+E prepares a
context-only bundle with a preview of transcript lines, warnings,
omissions and possible secrets (text hidden), line exclusions and
scrolling; Ctrl+S writes it under <state>/exports and runs verify.

Refs #31

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MUyLMVv9GbqWRByEZ7LgEb

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ Um ponto de privacidade na prévia; a gravação continua bloqueada enquanto houver achados.

Reviewed changes O diff foi revisado quanto à reidratação de histórico Claude, exportação nativa pela TUI, cobertura sintética e documentação.

  • Reidratação: obtém transcript_path do hook, relê o ramo selecionado ao retomar e informa histórico omitido ou parcial, sem reenviar mensagens.
  • Exportação: prepara um pacote v1 somente contexto, apresenta registros/avisos/omissões, permite exclusões e bloqueia a gravação quando há possíveis segredos.
  • Validação e status: adiciona testes de biblioteca, TUI e PTY; registra ensaio com Claude real como pendente.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using GPT Luna | 𝕏

Comment thread src/tui/claude_native.rs
A possible secret outside the records (such as a branch ID) was flagged
without a line, so no record was hidden and the warnings showed the raw
value in the preview. Such findings now withhold the warnings and name
only the affected field; writing stays blocked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MUyLMVv9GbqWRByEZ7LgEb

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Nenhum novo problema encontrado.

Reviewed changes Revisei o ajuste incremental de privacidade na prévia da exportação, incluindo seu teste de regressão.

  • Ocultou avisos não localizados: quando há um achado sem linha de transcrição, a prévia deixa de renderizar os avisos brutos e exibe somente o campo afetado; o teste verifica que um UUID de ramo em formato de token não vaza.

Pullfrog  | View workflow run | Using GPT Luna | 𝕏

@lippdev
lippdev merged commit 1871931 into main Sep 28, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants