verstak-docs/docs/superpowers/plans/2026-06-29-activity-worklog...

5.9 KiB

Activity Worklog Suggestions Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: Add a minimal Activity reconstruction layer that renders and exposes worklog suggestions from recorded activity events.

Architecture: Keep reconstruction inside verstak.activity. Generate suggestions from normalized stored events, render them in the Activity view, and expose them through a command-backed runtime contract for the future Journal plugin.

Tech Stack: Official plugin browserless JavaScript bundle, Node smoke tests, JSON plugin manifest, Markdown docs.

Global Constraints

  • Do not move activity or journal logic into desktop core.
  • Do not build the Journal plugin in this slice.
  • Suggestions are derived from existing Activity events and are informational.
  • Use TDD: update the activity smoke test first, run it red, then implement.
  • Commit and push each affected repository after meaningful changes.

Task 1: Document The Slice

Files:

  • Create: /home/mirivlad/git/verstak2/verstak-docs/docs/superpowers/specs/2026-06-29-activity-worklog-suggestions-design.md
  • Create: /home/mirivlad/git/verstak2/verstak-docs/docs/superpowers/plans/2026-06-29-activity-worklog-suggestions.md

Interfaces:

  • Produces: written contract for verstak.activity.suggestWorklog.

  • Step 1: Write spec and plan

Write the design and this implementation plan.

  • Step 2: Verify docs

Run:

cd /home/mirivlad/git/verstak2/verstak-docs
git diff --check

Expected: exits 0.

  • Step 3: Commit and push docs

Run:

cd /home/mirivlad/git/verstak2/verstak-docs
git add docs/superpowers/specs/2026-06-29-activity-worklog-suggestions-design.md docs/superpowers/plans/2026-06-29-activity-worklog-suggestions.md
git commit -m "docs: plan activity worklog suggestions"
git push

Expected: docs main is clean and pushed.

Task 2: Activity Suggestions Runtime

Files:

  • Modify: /home/mirivlad/git/verstak2/verstak-official-plugins/plugins/activity/plugin.json
  • Modify: /home/mirivlad/git/verstak2/verstak-official-plugins/plugins/activity/frontend/src/index.js
  • Modify: /home/mirivlad/git/verstak2/verstak-official-plugins/scripts/smoke-activity-plugin.js

Interfaces:

  • Produces command: verstak.activity.suggestWorklog(args?: { workspaceRootPath?: string }): Promise<{ suggestions: WorklogSuggestion[] }>

  • Produces DOM: data-activity-section="worklog-suggestions" and data-worklog-suggestion="<suggestionId>"

  • Step 1: Write the failing smoke assertions

Extend scripts/smoke-activity-plugin.js to read the Activity manifest, mock api.commands.register, and assert that:

  • commands.register permission exists;

  • command contribution verstak.activity.suggestWorklog exists;

  • the command is registered after mount;

  • Project events render a suggestion;

  • executing the command returns a suggestion with minutes, summary, and source eventIds;

  • global Activity renders separate Project and ClientA suggestions;

  • clear removes the rendered suggestion.

  • Step 2: Run RED

Run:

cd /home/mirivlad/git/verstak2/verstak-official-plugins
node scripts/smoke-activity-plugin.js

Expected: fails because verstak.activity.suggestWorklog is not registered.

  • Step 3: Update manifest

Add commands.register to permissions and add:

{
  "id": "verstak.activity.suggestWorklog",
  "title": "Suggest Worklog From Activity",
  "handler": "verstak.activity.suggestWorklog"
}

under contributes.commands.

  • Step 4: Implement suggestions

In plugins/activity/frontend/src/index.js:

  • define WORKLOG_COMMAND_ID = 'verstak.activity.suggestWorklog';

  • add suggestions state;

  • derive suggestions from normalized events grouped by workspace/day;

  • render a suggestions band above the activity list;

  • register the command with api.commands.register;

  • recompute suggestions after load, event refresh, and clear.

  • Step 5: Run GREEN

Run:

cd /home/mirivlad/git/verstak2/verstak-official-plugins
node scripts/smoke-activity-plugin.js
./scripts/check.sh

Expected: both commands exit 0.

  • Step 6: Commit and push official plugin

Run:

cd /home/mirivlad/git/verstak2/verstak-official-plugins
git add plugins/activity/plugin.json plugins/activity/frontend/src/index.js scripts/smoke-activity-plugin.js
git commit -m "feat: suggest worklogs from activity"
git push

Expected: official plugins main is clean and pushed.

Task 3: Mark Roadmap Progress

Files:

  • Modify: /home/mirivlad/git/verstak2/verstak-docs/05_Official_Plugins.md
  • Modify: /home/mirivlad/git/verstak2/verstak-docs/07_Full_Implementation_Roadmap.md

Interfaces:

  • Consumes verified official plugin commit.

  • Produces docs matching implemented behavior.

  • Step 1: Update Activity status

Replace the sentence saying reconstruction/worklog suggestions are future work with a sentence describing the implemented suggestion band and command.

  • Step 2: Update roadmap

Change:

- implement activity reconstruction and worklog suggestions;

to:

- [x] implement activity reconstruction and worklog suggestions;
  • Step 3: Verify docs

Run:

cd /home/mirivlad/git/verstak2/verstak-docs
git diff --check
rg -n "Reconstruction and worklog suggestions are still future work|implement activity reconstruction and worklog suggestions" 05_Official_Plugins.md 07_Full_Implementation_Roadmap.md

Expected: git diff --check exits 0. rg shows only the checked roadmap line.

  • Step 4: Commit and push docs

Run:

cd /home/mirivlad/git/verstak2/verstak-docs
git add 05_Official_Plugins.md 07_Full_Implementation_Roadmap.md
git commit -m "docs: mark activity worklog suggestions complete"
git push

Expected: docs main is clean and pushed.