Skip to content

Implement issues #33, #50, #54, #59, #61#64

Merged
greynewell merged 1 commit intomainfrom
feat/implement-issues-33-50-54-59-61
Apr 8, 2026
Merged

Implement issues #33, #50, #54, #59, #61#64
greynewell merged 1 commit intomainfrom
feat/implement-issues-33-50-54-59-61

Conversation

@greynewell
Copy link
Copy Markdown
Contributor

Summary

Rebased cleanly on top of #63 (the double-API-call fix); conflict in daemon.go was a trivial idempotency key format difference.

Test plan

  • go build ./... — clean
  • go test ./... — all pass (auth failures are pre-existing, unrelated to this PR)
  • supermodel watch → edit a file → incremental fires, domains preserved
  • supermodel analyze twice → second run hits cache with no upload
  • supermodel dead-code twice → second run hits cache
  • git commit while supermodel watch --fs-watch running → watcher emits committed files
  • supermodel setup → absolute path written to .claude/settings.json; Cursor note shown if installed

Closes #33, #50, #54, #59, #61

🤖 Generated with Claude Code

## #50 — Incremental updates (P0 + polish)
- daemon: swap AnalyzeIncremental → AnalyzeSidecars (broken changedFiles field
  was causing UUID churn on every single-file update)
- daemon: preserve domains on incremental merge (only full generate refreshes
  domains); add comment explaining why
- api/client: delete dead AnalyzeIncremental + postIncrementalZip methods
- analyze: use AnalyzeSidecars + GraphFromSidecarIR; write sidecar cache so
  files.Generate() reuses the result without a second upload
- setup/wizard: hook command uses os.Executable() for absolute binary path
- daemon: clean sidecar files on Ctrl+C shutdown
- files/zip: eliminate global map mutation — per-call zipExclusions struct
  removes concurrent-write race on package-level maps
- files/hook: warn to stderr when daemon is not running
- daemon: assign new files to existing domains by directory-prefix matching

## #33 — Caching
- cache/fingerprint: AnalysisKey now takes a version param — cache
  invalidates automatically on CLI upgrade
- cache: add PutJSON/GetJSON for generic result types
- deadcode: check cache before upload; store result after API call
- blastradius: same; skip cache when --diff is supplied

## #59 — Language bar chart before upload
- files/zip: add LanguageStats() + PrintLanguageBarChart()
- daemon.fullGenerate + files.Generate: print bar chart before API upload

## #54 — Document .graph files for other agents
- setup/wizard: rename step "Claude Code hook" → "Agent hook"; mention
  Cursor/Copilot/Windsurf/Aider; add detectCursor() helper that prints a
  note when Cursor is installed

## #61 — Watch for new commits
- files/watcher: track lastCommitSHA; on HEAD change emit diff files as
  WatchEvents (handles git commit, pull, checkout, merge, stash pop)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.

feat: local graph caching and pregeneration

1 participant