claude-plugin-viban 1.3.4 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "viban",
3
- "version": "1.3.4",
3
+ "version": "1.3.5",
4
4
  "description": "Terminal Kanban TUI for AI-human collaborative issue tracking",
5
5
  "author": {
6
6
  "name": "happy-nut"
package/bin/viban CHANGED
@@ -1526,13 +1526,17 @@ cmd_review() {
1526
1526
 
1527
1527
  cmd_done() {
1528
1528
  init_json
1529
- [[ -z "$1" ]] && { echo "Usage: viban done <id>"; exit 1; }
1529
+ [[ -z "$1" ]] && { echo "Usage: viban done <id> [--remove]"; exit 1; }
1530
+ local id="$1"
1531
+ local remove=false
1532
+ [[ "$2" == "--remove" ]] && remove=true
1533
+
1530
1534
  # Cleanup worktree if exists
1531
1535
  local repo_root=$(git rev-parse --show-toplevel 2>/dev/null)
1532
- local wt_dir="$VIBAN_DATA_DIR/worktrees/$1"
1536
+ local wt_dir="$VIBAN_DATA_DIR/worktrees/$id"
1533
1537
 
1534
- local branch="issue-$1"
1535
- local _ext_id=$(get_ext_id "$1")
1538
+ local branch="issue-$id"
1539
+ local _ext_id=$(get_ext_id "$id")
1536
1540
  if [[ -n "$_ext_id" && "$_ext_id" != "null" ]]; then
1537
1541
  local _issue_num="${_ext_id##*:}"
1538
1542
  if git -C "$repo_root" rev-parse --verify "issue-${_issue_num}" &>/dev/null 2>&1; then
@@ -1545,14 +1549,22 @@ cmd_done() {
1545
1549
  git -C "$repo_root" branch -D "$branch" 2>/dev/null
1546
1550
  echo "✓ worktree removed"
1547
1551
  fi
1548
- # Remove task (handle both string and number ID)
1549
- jq --argjson id "$1" 'del(.issues[]|select((.id|tonumber)==$id))' "$VIBAN_JSON" > "$VIBAN_JSON.tmp" && \
1550
- mv "$VIBAN_JSON.tmp" "$VIBAN_JSON"
1551
1552
 
1552
- # Clear iTerm2 session name
1553
- printf '\033]1;\007'
1554
-
1555
- echo "$(display_id "$1" "$(get_ext_id "$1")") completed & removed"
1553
+ if $remove; then
1554
+ # Delete card (old behavior)
1555
+ jq --argjson id "$id" 'del(.issues[]|select((.id|tonumber)==$id))' \
1556
+ "$VIBAN_JSON" > "$VIBAN_JSON.tmp" && mv "$VIBAN_JSON.tmp" "$VIBAN_JSON"
1557
+ printf '\033]1;\007'
1558
+ echo "✓ $(display_id "$id" "$(get_ext_id "$id")") completed & removed"
1559
+ else
1560
+ # Move to done status (non-destructive default)
1561
+ local now=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
1562
+ jq --argjson id "$id" --arg now "$now" \
1563
+ '(.issues[]|select((.id|tonumber)==$id)) |= . + {status:"done",assigned_to:null,updated_at:$now}' \
1564
+ "$VIBAN_JSON" > "$VIBAN_JSON.tmp" && mv "$VIBAN_JSON.tmp" "$VIBAN_JSON"
1565
+ printf '\033]1;\007'
1566
+ echo "✓ $(display_id "$id" "$(get_ext_id "$id")") → done"
1567
+ fi
1556
1568
  }
1557
1569
 
1558
1570
  cmd_get() { init_json; jq --argjson id "$1" '.issues[]|select((.id|tonumber)==$id)' "$VIBAN_JSON"; }
@@ -1673,7 +1685,7 @@ main() {
1673
1685
  attach) shift; cmd_attach "$@";;
1674
1686
  assign) cmd_assign "$2";;
1675
1687
  review) cmd_review "$2";;
1676
- done) cmd_done "$2";;
1688
+ done) cmd_done "$2" "$3";;
1677
1689
  get) cmd_get "$2";;
1678
1690
  edit) [[ -z "$2" ]] && { echo "Usage: viban edit <id>"; exit 1; }; edit_issue "$2";;
1679
1691
  priority) cmd_priority "$2" "$3";;
@@ -1706,7 +1718,7 @@ main() {
1706
1718
  echo " viban priority <id> <P0-P3> Set priority"
1707
1719
  echo " viban assign Assign first backlog (by priority)"
1708
1720
  echo " viban review → Human Review"
1709
- echo " viban done <id> Complete & remove"
1721
+ echo " viban done <id> [--remove] Complete (--remove to delete)"
1710
1722
  echo " viban edit <id> Edit task in editor"
1711
1723
  echo " viban get <id> Get task details (JSON)"
1712
1724
  echo " viban migrate Migrate: extract type from title"
package/docs/CLAUDE.md CHANGED
@@ -278,7 +278,8 @@ viban list # Display kanban board
278
278
  viban add "Title" "Desc" P2 feat # Create issue
279
279
  viban assign [session] # Assign top backlog issue
280
280
  viban review [id] # Move issue to review
281
- viban done <id> # Mark issue as done
281
+ viban done <id> # Mark issue as done (card stays on board)
282
+ viban done <id> --remove # Delete card permanently
282
283
  viban get <id> # Get issue details (JSON)
283
284
  viban help # Show help
284
285
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-plugin-viban",
3
- "version": "1.3.4",
3
+ "version": "1.3.5",
4
4
  "description": "Terminal Kanban TUI for AI-human collaborative issue tracking",
5
5
  "main": "bin/viban",
6
6
  "bin": {
@@ -101,9 +101,7 @@ Clarification added to issue description.
101
101
 
102
102
  ## CRITICAL
103
103
 
104
- > - **NEVER read or write `viban.json` directly** — always use `viban` CLI commands (`viban assign`, `viban get`, `viban list`, etc.)
105
- > - **FORBIDDEN: `viban done`** — this DELETES the card permanently. NEVER run it.
106
- > - **FORBIDDEN: `viban review`** — the issue stays in `in_progress` for the next work session.
104
+ > - **NEVER read or write `viban.json` directly** — always use `viban` CLI commands (`viban assign`, `viban get`, `viban list`, `viban done`, etc.)
107
105
  > - This command **assigns only**. Do NOT create branches, write code, or start implementation.
108
106
  > - If the issue is clear, just report and finish immediately.
109
107
 
@@ -113,3 +111,6 @@ Clarification added to issue description.
113
111
  |---------|-------------|
114
112
  | `viban assign [session]` | Assign issue |
115
113
  | `viban get <id>` | View issue |
114
+ | `viban done <id>` | Mark as done (non-destructive) |
115
+ | `viban done <id> --remove` | Delete card permanently |
116
+ | `viban review [id]` | Move to review |
@@ -211,15 +211,15 @@ Ask only what the agent **cannot infer on its own**. One AskUserQuestion call, 3
211
211
  - "Stop before commit — I'll review the code first (review in terminal/IDE)"
212
212
  - multiSelect: false
213
213
 
214
- **Q2. Issue Numbering**
215
- - header: "Issue ID"
216
- - question: "How should issues be numbered when using `/viban:add`?"
214
+ **Q2. Issue Tracker Sync**
215
+ - header: "Sync"
216
+ - question: "Sync issues with an external tracker (GitHub Issues, Jira, Linear, etc.)?"
217
217
  - options:
218
- - "Autoviban auto-assigns #1, #2, #3..."
219
- - "Sync with provider use `/viban:sync` to import from GitHub, Jira, Linear, etc."
220
- - "Manualask for an external ID each time (e.g. PROJ-42, JIRA-123)"
218
+ - "Yesset up two-way sync (issues imported from provider)"
219
+ - "Noauto-number locally (#1, #2, #3...)"
220
+ - "Nobut use manual external IDs (e.g. PROJ-42)"
221
221
  - multiSelect: false
222
- - If user selects "Sync with provider", run `/viban:sync` to initialize sync after workflow setup completes.
222
+ - If user selects "Yes", run `viban sync` to initialize sync after workflow setup completes.
223
223
 
224
224
  **Q3. Extra Rules**
225
225
 
@@ -302,12 +302,12 @@ Combine **auto-detected values** (Step 7) with **interview answers** (Step 8) to
302
302
  | Value | Source | Example |
303
303
  |-------|--------|---------|
304
304
  | Pipeline | Q1 | "Full auto" or "Stop before PR" |
305
- | Issue numbering | Q2 | "Auto" or "Manual" |
305
+ | Issue tracker sync | Q2 | "Yes (sync)" or "No (auto)" or "No (manual IDs)" |
306
306
  | Extra rules | Q3 | User-typed rules or "None" |
307
307
 
308
308
  **Workflow generation principles:**
309
309
  - **Q1 (Pipeline) determines the entire automation structure** — which phases run automatically, where to stop, and whether to create PRs. "Full auto" = no stops + auto PR. "Stop before PR" = auto commit + user creates PR. "Stop before commit" = implement only + user reviews.
310
- - **Q2 (Issue numbering) determines how `/viban:add` handles IDs.** "Auto" = viban auto-assigns `#1`, `#2`. "Sync with provider" = use `/viban:sync` to import/sync issues from GitHub, Jira, Linear, etc. "Manual" = agent asks for an external ID each time and passes `--ext-id` to `viban add`. When manual, commits/PRs reference the external ID instead of `#N`.
310
+ - **Q2 (Issue tracker sync) determines how issues are managed.** "Yes" = run `viban sync` after setup to import/sync issues from external tracker (GitHub, Jira, Linear, etc.), IDs come from provider. "No — auto-number" = viban auto-assigns `#1`, `#2`. "No — manual IDs" = agent asks for an external ID each time and passes `--ext-id` to `viban add`. When manual, commits/PRs reference the external ID instead of `#N`.
311
311
  - **Q3 (Extra rules) is appended verbatim to the Additional Rules section.** If user mentions conventions, evidence, CHANGELOG, language, etc., incorporate into the relevant phase.
312
312
  - **Commit/PR conventions are auto-detected from git history** (Step 7.2). If the user overrides via Q3, use the user's preference instead.
313
313
  - **Everything else uses smart defaults.** Analysis depth, implementation approach, quality gates, verification methods, issue numbering, post-merge — all auto-determined by the agent or set to sensible defaults.
@@ -413,7 +413,7 @@ If build/test fails: fix errors, return to Phase 3.
413
413
 
414
414
  ## Issue Management
415
415
 
416
- - Issue numbering: {FROM Q2: "Auto" = auto-increment (viban default), "Sync with provider" = use `/viban:sync` for external tracker integration, "Manual" = ask for external ID via `--ext-id` flag}
416
+ - Issue tracking: {FROM Q2: "Yes" = synced with external tracker via `viban sync`, "No auto-number" = auto-increment (viban default), "No manual IDs" = ask for external ID via `--ext-id` flag}
417
417
  - Test evidence: include test output in PR body
418
418
  - Post-merge: auto-close issue (`viban done {id}`), delete branch
419
419