feat: activity timeline from git history#9
Draft
gustavoguichard wants to merge 1 commit into
Draft
Conversation
Adds a per-commit activity feed for .vertical files. The CLI exposes
`itsvertical activity <file>` with --json, --author, --since, --until,
and --limit. The browser UI gains an Activity view (toggleable from the
navbar) that fetches GET /api/activity. When the file isn't in a git
repo, the API returns { available: false, reason }, the CLI exits 1
with a clear error, and the navbar button is hidden.
The diff engine in cli/activity.ts walks git log --follow and diffs
adjacent commits semantically (project, slices, layers, tasks),
ignoring sorting-only and notesHtml-only changes. Event kinds cover
project/slice/layer/task lifecycle.
- cli/activity.ts: diff engine (+ 12 unit tests)
- cli/show-activity.ts: colorized terminal renderer with title banner,
per-event blocks, completion log table, contributor summary, and
total active window footer
- /api/activity endpoint added to cli/server.ts
- app/components/activity-view.tsx: web feed with author filter,
loading/error/unavailable states, sticky day headers
- app/components/activity-availability.tsx: probes the API on mount so
the navbar can hide the Activity button when unavailable
- Docs: README, CLAUDE.md, and the vertical skill
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
itsvertical activity <file>CLI command and a matching web view that reconstruct a per-author event feed for.verticalfiles from git history. Output is filtered to the events users care about (task completed, layer closed, slice named, etc.) — sorting-only andnotesHtml-only changes are intentionally not emitted.cli/activity.tswalksgit log --follow, parses the before/after JSON at each commit, and diffs entities by id.GET /api/activityreturns{ available: false, reason }when the file isn't in a git repo, the CLI exits 1 with the same reason, and the navbar Activity button is hidden in the browser.What's in here
activitycommand with--json,--author,--since,--until,--limit. Pretty TTY output: title banner, per-event blocks (HH:MM ▸ Author+ bulleted emoji changes),✅ Task Completion Logtable,👥 Contributor Summarytable, andTotal active windowfooter. RespectsNO_COLOR.GET /api/activityendpoint on the local CLI server.verticalagent skill.cli/activity.test.ts.Trying it out
CLI:
Web:
Unhappy path:
Decisions worth a second look
app/file/activity-types.ts. I treatedtask-added with done:trueastask-completed(with an "added as already done" suffix) instead of emitting both anaddedandcompletedevent. Worth confirming.notesHtmlproduces zero events. That collapses yourTotal active windowfrom 17:04→22:05 to 17:04→19:09. If you want those commits to show up, that's a tiny change indiffStates.activityoverchangelogper the earlier discussion (activity matches the Google-Docs reference and avoids the "release notes" connotation). Aliases would be cheap to add.Test plan
pnpm run test— 158 tests pass (12 new incli/activity.test.ts)pnpm run tsccleanpnpm run lintcleanpnpm run buildsucceedsitsvertical activity roadmap.verticalrenders the timeline + tables--json,--author,--since,--until,--limitflags behave as documented🤖 Generated with Claude Code