Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions cmd/specsync/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ var knownSubcommands = map[string]bool{
"sync": true, "audit": true, "audit-tasks": true, "validate": true,
"spinoff": true, "pr-body": true, "verify": true,
"agent-help": true, "doctor": true, "idea": true, "ideas": true, "archive": true,
"epic": true, "adopt": true,
"epic": true, "adopt": true, "topology": true,
}

// knownConfusions maps a word someone might reach for by habit (e.g. git's
Expand Down Expand Up @@ -94,7 +94,7 @@ func deprecatedSlugFlag(args []string) error {
func main() {
cmd, rest, err := resolveSubcommand(os.Args[1:])
if err != nil {
fmt.Fprintf(os.Stderr, "specsync: %v\n\nRun with no subcommand (optionally with flags) to sync, or use one of: pull, adopt, link, scan, trace, release-plan, changelog, install-skill, changes, set-stage, set-priority, note, audit, audit-tasks, validate, spinoff, pr-body, verify, idea, ideas, archive, epic\n", err)
fmt.Fprintf(os.Stderr, "specsync: %v\n\nRun with no subcommand (optionally with flags) to sync, or use one of: pull, adopt, link, scan, trace, release-plan, changelog, install-skill, changes, set-stage, set-priority, note, audit, audit-tasks, validate, spinoff, pr-body, verify, idea, ideas, archive, epic, topology\n", err)
os.Exit(2)
}

Expand Down Expand Up @@ -151,6 +151,8 @@ func main() {
runArchive(rest)
case "epic":
runEpic(rest)
case "topology":
runTopology(rest)
default:
runSync(rest)
}
Expand Down
26 changes: 26 additions & 0 deletions openspec/changes/restore-topology-dispatch/proposal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Restore the topology command and fix stale "soon" badges on the site

## Why
PR #174 (store support) was rebased from a branch that predated two pieces of
already-shipped work: the `topology` subcommand's dispatch wiring in
`cmd/specsync/main.go`, and the "See who's already working what" feature card
on specsync.se. The flat-diff reapplication silently dropped the `topology`
case from `knownSubcommands` and the `main()` switch, so `specsync topology`
now fails with "unknown subcommand" even though `runTopology` and all its
tests are still present and working.

Separately, while reviewing the site after that merge: three feature cards
(design notes overflow #139, topology #168, adopt #160) still carry a "soon"
badge even though all three shipped weeks ago.

## What Changes
- Restore `"topology": true` in `knownSubcommands`, the `case "topology":
runTopology(rest)` dispatch arm, and `topology` in the subcommand list
printed on an unknown-subcommand error.
- Drop the stale `"status": "soon"` / `"issue"` fields from the three
already-shipped feature cards in `site/features.json`.

## Impact
- Affected code: `cmd/specsync/main.go`, `site/features.json`
- No spec delta: restores previously-specified, previously-tested behavior
that regressed in a merge; doesn't change any contract.
2 changes: 2 additions & 0 deletions openspec/changes/restore-topology-dispatch/tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- [x] Restore topology to knownSubcommands and the dispatch switch
- [x] Drop stale soon/issue fields from the three shipped feature cards
12 changes: 3 additions & 9 deletions site/features.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@
"group": "plan",
"icon": "flow",
"title": "Design notes survive the worktree",
"body": "A <code>design.md</code> renders as <code>## Design notes</code> in the synced issue, so decisions made while planning aren't lost if the local worktree is force-removed. Oversized notes overflow to a linked issue comment instead of getting truncated.",
"status": "soon",
"issue": 139
"body": "A <code>design.md</code> renders as <code>## Design notes</code> in the synced issue, so decisions made while planning aren't lost if the local worktree is force-removed. Oversized notes overflow to a linked issue comment instead of getting truncated."
},
{
"group": "plan",
Expand All @@ -23,9 +21,7 @@
"group": "plan",
"icon": "flow",
"title": "See who's already working what",
"body": "<code>specsync topology</code> joins every change with its tracker issue, git branch, and worktree across coordinated stores — a read-only check before an agent starts, so it doesn't duplicate work already in flight.",
"status": "soon",
"issue": 168
"body": "<code>specsync topology</code> joins every change with its tracker issue, git branch, and worktree across coordinated stores — a read-only check before an agent starts, so it doesn't duplicate work already in flight."
},
{
"group": "plan",
Expand All @@ -49,9 +45,7 @@
"group": "collaborate",
"icon": "idempotent",
"title": "Adopt an existing issue",
"body": "<code>specsync adopt -issue 3691 -change my-change</code> binds a change and an issue that already exist independently, writing the ref cache before touching the issue body so the link holds immediately instead of racing search indexing.",
"status": "soon",
"issue": 160
"body": "<code>specsync adopt -issue 3691 -change my-change</code> binds a change and an issue that already exist independently, writing the ref cache before touching the issue body so the link holds immediately instead of racing search indexing."
},
{
"group": "collaborate",
Expand Down
Loading