claude-plugin-viban 1.0.35 → 1.0.36

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.0.35",
3
+ "version": "1.0.36",
4
4
  "description": "Terminal Kanban TUI for AI-human collaborative issue tracking",
5
5
  "author": {
6
6
  "name": "happy-nut"
package/README.md CHANGED
@@ -50,6 +50,7 @@ This separation keeps your workflow clean and prevents context switching.
50
50
  ## Requirements
51
51
 
52
52
  - zsh
53
+ - python3 (macOS/Linux built-in)
53
54
  - [gum](https://github.com/charmbracelet/gum)
54
55
  - [jq](https://jqlang.github.io/jq/)
55
56
 
@@ -289,7 +290,8 @@ claude-plugin-viban/
289
290
  ├── docs/
290
291
  │ └── CLAUDE.md # Claude Code integration guide
291
292
  ├── scripts/
292
- └── check-deps.sh # Dependency checker
293
+ ├── check-deps.sh # Dependency checker
294
+ │ └── tui_coprocess.py # Persistent Python coprocess for TUI rendering
293
295
  ├── skills/
294
296
  │ ├── assign/SKILL.md # /viban:assign skill
295
297
  │ ├── setup/SKILL.md # /viban:setup skill
package/commands/setup.md CHANGED
@@ -35,9 +35,10 @@ Check which dependencies are already installed:
35
35
 
36
36
  ```bash
37
37
  command -v zsh &> /dev/null && echo "✓ zsh" || echo "✗ zsh"
38
+ command -v python3 &> /dev/null && echo "✓ python3" || echo "✗ python3"
38
39
  command -v gum &> /dev/null && echo "✓ gum" || echo "✗ gum"
39
40
  command -v jq &> /dev/null && echo "✓ jq" || echo "✗ jq"
40
- command -v viban &> /dev/null && echo "✓ viban" || echo "✗ viban"
41
+ command -v viban &> /dev/null && echo "✓ viban ($(viban --version 2>/dev/null || echo 'not installed'))" || echo "✗ viban"
41
42
  ```
42
43
 
43
44
  ### Step 3: Install Missing Dependencies
@@ -92,12 +93,14 @@ sudo dnf install -y gum
92
93
  sudo pacman -S --noconfirm zsh jq gum
93
94
  ```
94
95
 
95
- ### Step 4: Install viban CLI
96
+ ### Step 4: Install or Update viban CLI
96
97
 
97
98
  ```bash
98
- npm install -g claude-plugin-viban
99
+ npm install -g claude-plugin-viban@latest
99
100
  ```
100
101
 
102
+ This installs viban if not present, or updates to the latest version if already installed.
103
+
101
104
  ### Step 5: Verify Installation
102
105
 
103
106
  ```bash
@@ -113,6 +116,7 @@ If successful, show:
113
116
 
114
117
  All dependencies installed:
115
118
  ✓ zsh
119
+ ✓ python3
116
120
  ✓ gum
117
121
  ✓ jq
118
122
  ✓ viban
@@ -121,8 +125,8 @@ You can now use:
121
125
  viban Open TUI board
122
126
  viban add "task" Add a task
123
127
  viban list List all tasks
124
- /assign Auto-resolve next issue
125
- /task Create structured issue
128
+ /viban:assign Auto-resolve next issue
129
+ /viban:add Create structured issue
126
130
  ```
127
131
 
128
132
  ### Step 6: Workflow Setup Introduction
package/docs/CLAUDE.md CHANGED
@@ -29,6 +29,16 @@ EOF
29
29
  - 스피너 있을 때/없을 때 둘 다 확인
30
30
  - 한글 포함 제목 truncation
31
31
 
32
+ ## Dependency Management
33
+
34
+ **새 런타임 의존성 추가 시 4곳 모두 업데이트 필수:**
35
+ - `README.md` (Requirements 섹션)
36
+ - `scripts/check-deps.sh` (check_dep 호출)
37
+ - `install.sh` (install_pkg 호출)
38
+ - `skills/setup/SKILL.md` (체크 목록 + 완료 메시지)
39
+
40
+ 릴리스 전 누락 여부 확인할 것.
41
+
32
42
  ## Release Rules
33
43
 
34
44
  **릴리즈는 사용자가 명시적으로 요청할 때만 수행한다.**
@@ -106,6 +116,64 @@ local title=$(printf '%s' "$issue" | jq -r '.title')
106
116
 
107
117
  Violating this rule causes jq parse errors on issues with newlines/tabs in description.
108
118
 
119
+ ### Coprocess Pattern (FIFO-based)
120
+
121
+ **zsh `coproc` 사용 금지** - `read -sk1` 키 입력과 충돌. 대신 FIFO + fd 사용.
122
+
123
+ ```bash
124
+ # BAD: coproc interferes with read -sk1
125
+ coproc python3 script.py
126
+ echo "cmd" >&p
127
+ read -r result <&p
128
+
129
+ # GOOD: explicit FIFOs with file descriptors
130
+ mkfifo "$_in_fifo" "$_out_fifo"
131
+ python3 script.py < "$_in_fifo" > "$_out_fifo" &
132
+ exec 7>"$_in_fifo" 8<"$_out_fifo"
133
+ echo "cmd" >&7
134
+ read -r result <&8
135
+ ```
136
+
137
+ ### Variable Declaration in Loops
138
+
139
+ **`local` 을 루프 안에서 재선언하면 현재 값이 stdout으로 출력됨**
140
+
141
+ ```bash
142
+ # BAD: 2회차부터 _bc의 값이 stdout에 찍힘
143
+ while ...; do
144
+ local _cc=${#_title} _bc
145
+ done
146
+
147
+ # GOOD: 루프 밖에서 선언, 안에서 할당만
148
+ local _cc _bc
149
+ while ...; do
150
+ _cc=${#_title}
151
+ done
152
+ ```
153
+
154
+ ### EXIT Trap in Subshells
155
+
156
+ **`$(...)` 서브셸에서 EXIT trap 이 발동됨** - cleanup 함수에 가드 필요
157
+
158
+ ```bash
159
+ cleanup() {
160
+ [[ ${ZSH_SUBSHELL:-0} -gt 0 ]] && return
161
+ # ... actual cleanup
162
+ }
163
+ ```
164
+
165
+ ### Parameter Flag Syntax
166
+
167
+ **`${(@f)var}` 에서 `$` 접두사 불필요**
168
+
169
+ ```bash
170
+ # BAD: bad substitution error
171
+ ${(@f)$_COPROC_RESULT}
172
+
173
+ # GOOD
174
+ ${(@f)_COPROC_RESULT}
175
+ ```
176
+
109
177
  ### Locale Handling (zsh-specific)
110
178
 
111
179
  **`LC_ALL=C var=val` persists in zsh (unlike bash)**
package/install.sh CHANGED
@@ -124,6 +124,9 @@ echo ""
124
124
  # Install zsh (required for viban script)
125
125
  install_pkg "zsh"
126
126
 
127
+ # Install python3 (required for TUI coprocess)
128
+ install_pkg "python3"
129
+
127
130
  # Install jq
128
131
  install_pkg "jq"
129
132
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-plugin-viban",
3
- "version": "1.0.35",
3
+ "version": "1.0.36",
4
4
  "description": "Terminal Kanban TUI for AI-human collaborative issue tracking",
5
5
  "main": "bin/viban",
6
6
  "bin": {
@@ -33,6 +33,7 @@ check_dep() {
33
33
  fi
34
34
  }
35
35
 
36
+ check_dep "python3" "brew install python3" "apt install python3"
36
37
  check_dep "gum" "brew install gum" "See https://github.com/charmbracelet/gum#installation"
37
38
  check_dep "jq" "brew install jq" "apt install jq"
38
39
 
@@ -36,9 +36,10 @@ Check which dependencies are already installed:
36
36
 
37
37
  ```bash
38
38
  command -v zsh &> /dev/null && echo "✓ zsh" || echo "✗ zsh"
39
+ command -v python3 &> /dev/null && echo "✓ python3" || echo "✗ python3"
39
40
  command -v gum &> /dev/null && echo "✓ gum" || echo "✗ gum"
40
41
  command -v jq &> /dev/null && echo "✓ jq" || echo "✗ jq"
41
- command -v viban &> /dev/null && echo "✓ viban" || echo "✗ viban"
42
+ command -v viban &> /dev/null && echo "✓ viban ($(viban --version 2>/dev/null || echo 'not installed'))" || echo "✗ viban"
42
43
  ```
43
44
 
44
45
  ### Step 3: Install Missing Dependencies
@@ -93,12 +94,14 @@ sudo dnf install -y gum
93
94
  sudo pacman -S --noconfirm zsh jq gum
94
95
  ```
95
96
 
96
- ### Step 4: Install viban CLI
97
+ ### Step 4: Install or Update viban CLI
97
98
 
98
99
  ```bash
99
- npm install -g claude-plugin-viban
100
+ npm install -g claude-plugin-viban@latest
100
101
  ```
101
102
 
103
+ This installs viban if not present, or updates to the latest version if already installed.
104
+
102
105
  ### Step 5: Verify Installation
103
106
 
104
107
  ```bash
@@ -114,6 +117,7 @@ If successful, show:
114
117
 
115
118
  All dependencies installed:
116
119
  ✓ zsh
120
+ ✓ python3
117
121
  ✓ gum
118
122
  ✓ jq
119
123
  ✓ viban
@@ -122,8 +126,8 @@ You can now use:
122
126
  viban Open TUI board
123
127
  viban add "task" Add a task
124
128
  viban list List all tasks
125
- /assign Auto-resolve next issue
126
- /task Create structured issue
129
+ /viban:assign Auto-resolve next issue
130
+ /viban:add Create structured issue
127
131
  ```
128
132
 
129
133
  ### Step 6: Workflow Setup Introduction
@@ -1,100 +0,0 @@
1
- ---
2
- name: release
3
- description: "Bump version, commit, tag, and push to trigger npm publish"
4
- ---
5
-
6
- # /release - Release a new version
7
-
8
- Bump the package version, commit, tag, and push to trigger the automated npm publish workflow.
9
-
10
- ## Execution Steps
11
-
12
- ### Step 1: Pre-flight checks
13
-
14
- ```bash
15
- # Ensure on main branch
16
- git branch --show-current # must be "main"
17
-
18
- # Ensure working tree is clean (no uncommitted changes)
19
- git status --porcelain
20
-
21
- # Ensure up to date with remote
22
- git fetch origin main
23
- git diff origin/main --stat
24
- ```
25
-
26
- If not on main, working tree is dirty, or behind remote: **stop and inform user**.
27
-
28
- ### Step 2: Determine version bump
29
-
30
- Read current version from `package.json`:
31
-
32
- ```bash
33
- grep '"version"' package.json
34
- ```
35
-
36
- Ask user with AskUserQuestion:
37
- - header: "Version"
38
- - question: "Current version is {current}. What kind of bump?"
39
- - options:
40
- - "patch" (x.y.Z) - bug fixes, small changes
41
- - "minor" (x.Y.0) - new features, backward compatible
42
- - "major" (X.0.0) - breaking changes
43
- - multiSelect: false
44
-
45
- Calculate the new version based on selection.
46
-
47
- ### Step 3: Show changelog preview
48
-
49
- Show commits since last tag:
50
-
51
- ```bash
52
- git log $(git describe --tags --abbrev=0)..HEAD --oneline
53
- ```
54
-
55
- Display to user for confirmation before proceeding.
56
-
57
- ### Step 4: Run tests
58
-
59
- ```bash
60
- zsh tests/run_all.zsh
61
- ```
62
-
63
- If tests fail: **stop and inform user**. Do not release with failing tests.
64
-
65
- ### Step 5: Bump version and release
66
-
67
- ```bash
68
- # Update package.json version
69
- # (use jq or sed to update the version field)
70
-
71
- # Commit
72
- git add package.json
73
- git commit -m "{new_version}"
74
-
75
- # Tag
76
- git tag v{new_version}
77
-
78
- # Push with tags
79
- git push origin main --tags
80
- ```
81
-
82
- ### Step 6: Confirm
83
-
84
- ```
85
- ╭──────────────────────────────────────╮
86
- │ Released v{new_version}! │
87
- ╰──────────────────────────────────────╯
88
-
89
- - npm publish: triggered via GitHub Actions
90
- - GitHub Release: auto-generated with release notes
91
-
92
- Check: https://github.com/happy-nut/claude-plugin-viban/actions
93
- ```
94
-
95
- ## Error Handling
96
-
97
- - **Not on main**: "Switch to main branch first"
98
- - **Dirty working tree**: "Commit or stash changes first"
99
- - **Tests failing**: "Fix failing tests before release"
100
- - **Push failed**: "Check remote access and try again"
File without changes