vibora 1.13.0 → 1.13.1

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.
Files changed (3) hide show
  1. package/README.md +87 -59
  2. package/bin/vibora.js +2 -1
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -2,14 +2,11 @@
2
2
 
3
3
  ![vibora](https://github.com/user-attachments/assets/fed72bab-0e66-42f3-91ac-8e024372685c)
4
4
 
5
-
6
5
  The Vibe Engineer's Cockpit. Vibora marries basic project management with actual software development by embedding terminals directly into the workflow.
7
6
 
8
- Available in English and Chinese. Works with [z.ai](https://z.ai) for Claude Code proxy integration.
9
-
10
7
  ## Philosophy
11
8
 
12
- - **Terminal-first AI agent orchestration** — Agents (Claude Code, Codex, etc.) run in terminals as-is. No abstraction layer, no wrapper APIs, no feature parity maintenance as agents evolve.
9
+ - **Claude Code first** — Built for developers who prefer working in the terminal with CLI agents. Vibora is designed with Claude Code in mind, though it works with other CLI agents (Codex, Gemini CLI, etc.). No abstraction layer, no wrapper APIs—agents run in terminals as-is.
13
10
  - **Opinionated with few opinions** — Provides structure without dictating workflow.
14
11
  - **Git worktree isolation** — Tasks create isolated git worktrees, with architecture supporting evolution toward more general task types.
15
12
 
@@ -21,113 +18,144 @@ Requires [Node.js](https://nodejs.org/). Run the latest vibora with a single com
21
18
  npx vibora@latest up
22
19
  ```
23
20
 
24
- This starts the vibora server as a daemon. Open http://localhost:3333 in your browser. The `up` command will help you install any missing dependencies.
21
+ This starts the Vibora server as a daemon. Open http://localhost:3333 in your browser. The `up` command will help you install any missing dependencies.
25
22
 
26
23
  ```bash
27
24
  npx vibora@latest down # Stop the server
28
25
  npx vibora@latest status # Check if running
29
26
  ```
30
27
 
31
- ## Tech Stack
32
-
33
- - **Frontend**: React 19, TanStack Router & Query, xterm.js, Tailwind CSS, shadcn/ui (v4 with baseui support)
34
- - **Backend**: Hono.js on Bun, SQLite with Drizzle ORM, WebSocket for terminal I/O
35
-
36
28
  ## Configuration
37
29
 
38
- Settings are stored in `.vibora/settings.json`.
30
+ Settings are stored in `.vibora/settings.json`. The vibora directory is resolved in this order:
31
+
32
+ 1. `VIBORA_DIR` environment variable (explicit override)
33
+ 2. `.vibora` in current working directory (per-worktree isolation)
34
+ 3. `~/.vibora` (default)
39
35
 
40
36
  | Setting | Env Var | Default |
41
37
  |---------|---------|---------|
42
- | (base directory) | `VIBORA_DIR` | .vibora in CWD or ~/.vibora |
43
38
  | port | `PORT` | 3333 |
44
39
  | defaultGitReposDir | `VIBORA_GIT_REPOS_DIR` | ~ |
45
40
  | taskCreationCommand | `VIBORA_TASK_CREATION_COMMAND` | `claude --dangerously-skip-permissions` |
46
41
  | hostname | `VIBORA_HOSTNAME` | (empty) |
47
42
  | sshPort | `VIBORA_SSH_PORT` | 22 |
43
+ | basicAuthUsername | `VIBORA_BASIC_AUTH_USERNAME` | null |
44
+ | basicAuthPassword | `VIBORA_BASIC_AUTH_PASSWORD` | null |
48
45
  | linearApiKey | `LINEAR_API_KEY` | null |
49
46
  | githubPat | `GITHUB_PAT` | null |
47
+ | language | — | null (auto-detect) |
50
48
 
51
- Notification settings (sound, Slack, Discord, Pushover) are configured via the Settings UI and stored in `settings.json`.
49
+ Notification settings (sound, Slack, Discord, Pushover) are configured via the Settings UI or CLI and stored in `settings.json`.
52
50
 
53
51
  Precedence: environment variable → settings.json → default
54
52
 
55
- ## Development
56
-
57
- ### Prerequisites
58
-
59
- - [mise](https://mise.jdx.dev/) for task running and tool management
60
- - [Bun](https://bun.sh/) (installed automatically via mise)
53
+ ### Linear Integration
61
54
 
62
- ### Development
55
+ Vibora can sync task status with Linear tickets. Configure `linearApiKey` in settings or set the `LINEAR_API_KEY` environment variable.
63
56
 
64
57
  ```bash
65
- # Install tools and dependencies
66
- mise install
67
-
68
- # Start both frontend and backend (recommended)
69
- mise run dev
70
-
71
- # Or run separately:
72
- mise run server # Backend (port 3333, with auto-reload)
73
- mise run client # Frontend (port 5173, proxies to backend)
58
+ # Link current task to a Linear ticket
59
+ vibora current-task linear https://linear.app/team/issue/TEAM-123
74
60
  ```
75
61
 
76
- ### Available Tasks
62
+ When a task status changes in Vibora, the linked Linear ticket status is updated automatically.
77
63
 
78
- ```bash
79
- mise run dev # Start frontend and backend dev servers
80
- mise run server # Start backend dev server with auto-reload
81
- mise run client # Start frontend dev server
82
- mise run build # Build for production
83
- mise run start # Run production server
84
- mise run lint # Run ESLint
85
- mise run preview # Preview production build
86
-
87
- # Database operations
88
- mise run db:push # Sync schema to database
89
- mise run db:studio # Open Drizzle Studio GUI
90
- mise run db:generate # Generate migrations
91
- mise run db:migrate # Apply migrations
92
- ```
64
+ ### Basic Auth
65
+
66
+ Set `basicAuthUsername` and `basicAuthPassword` (via settings or environment variables) to require authentication. Useful when exposing Vibora over a network.
93
67
 
94
68
  ## CLI
95
69
 
96
70
  The CLI lets AI agents (like Claude Code) working inside task worktrees query and update task status.
97
71
 
98
- ### Usage
72
+ ### Server Management
99
73
 
100
74
  ```bash
101
- # Get current task (auto-detected from worktree path)
102
- vibora current-task
75
+ vibora up # Start server daemon
76
+ vibora down # Stop server
77
+ vibora status # Check server status
78
+ vibora health # Check server health
79
+ ```
80
+
81
+ ### Current Task (auto-detected from worktree)
103
82
 
104
- # Update task status
83
+ ```bash
84
+ vibora current-task # Get current task info
105
85
  vibora current-task in-progress # Mark as IN_PROGRESS
106
86
  vibora current-task review # Mark as IN_REVIEW
107
87
  vibora current-task done # Mark as DONE
108
- vibora current-task cancel # Mark as CANCELLED
88
+ vibora current-task cancel # Mark as CANCELED
89
+ vibora current-task pr <url> # Associate a PR with current task
90
+ vibora current-task linear <url> # Link to a Linear ticket
91
+ ```
109
92
 
110
- # Server management
111
- vibora up # Start server daemon
112
- vibora down # Stop server
113
- vibora status # Check server status
93
+ ### Task Management
114
94
 
115
- # Task management
95
+ ```bash
116
96
  vibora tasks list # List all tasks
117
97
  vibora tasks get <id> # Get task by ID
98
+ vibora tasks create # Create a new task
99
+ vibora tasks update <id> # Update a task
100
+ vibora tasks move <id> # Move task to different status
101
+ vibora tasks delete <id> # Delete a task
102
+ ```
103
+
104
+ ### Git Operations
118
105
 
119
- # Git operations
106
+ ```bash
120
107
  vibora git status # Git status for current worktree
121
108
  vibora git diff # Git diff for current worktree
109
+ vibora git branches # List branches in a repo
110
+ ```
111
+
112
+ ### Worktrees
113
+
114
+ ```bash
115
+ vibora worktrees list # List all worktrees
116
+ vibora worktrees delete # Delete a worktree
117
+ ```
118
+
119
+ ### Configuration
120
+
121
+ ```bash
122
+ vibora config get <key> # Get a config value
123
+ vibora config set <key> <value> # Set a config value
122
124
  ```
123
125
 
124
- ### Options
126
+ ### Notifications
125
127
 
126
128
  ```bash
127
- --port=<port> # Server port (default: 3333)
128
- --pretty # Pretty-print JSON output
129
+ vibora notifications # Show notification settings
130
+ vibora notifications enable # Enable notifications
131
+ vibora notifications disable # Disable notifications
132
+ vibora notifications test <ch> # Test a channel (sound, slack, discord, pushover)
133
+ vibora notifications set <ch> <key> <value>
134
+ # Set a channel config
135
+
136
+ vibora notify <title> [message] # Send a notification to all enabled channels
129
137
  ```
130
138
 
139
+ ### Global Options
140
+
141
+ ```bash
142
+ --port=<port> # Server port (default: 3333)
143
+ --url=<url> # Override full server URL
144
+ --pretty # Pretty-print JSON output
145
+ ```
146
+
147
+ ## Internationalization
148
+
149
+ Available in English and Chinese. Set the `language` setting or let it auto-detect from your browser.
150
+
151
+ ## z.ai Integration
152
+
153
+ Works with [z.ai](https://z.ai) for Claude Code proxy integration. Configure via the Settings UI.
154
+
155
+ ## Development
156
+
157
+ See [DEVELOPMENT.md](DEVELOPMENT.md) for development setup, architecture, and contributing guidelines.
158
+
131
159
  ## License
132
160
 
133
161
  [PolyForm Shield 1.0.0](LICENSE)
package/bin/vibora.js CHANGED
@@ -279,6 +279,7 @@ function outputError(error) {
279
279
  // cli/src/commands/current-task.ts
280
280
  var STATUS_MAP = {
281
281
  review: "IN_REVIEW",
282
+ done: "DONE",
282
283
  cancel: "CANCELED",
283
284
  "in-progress": "IN_PROGRESS"
284
285
  };
@@ -332,7 +333,7 @@ async function handleCurrentTaskCommand(action, rest, flags) {
332
333
  }
333
334
  const newStatus = STATUS_MAP[action];
334
335
  if (!newStatus) {
335
- throw new CliError("INVALID_ACTION", `Unknown action: ${action}. Valid actions: review, cancel, in-progress, pr, linear`, ExitCodes.INVALID_ARGS);
336
+ throw new CliError("INVALID_ACTION", `Unknown action: ${action}. Valid actions: in-progress, review, done, cancel, pr, linear`, ExitCodes.INVALID_ARGS);
336
337
  }
337
338
  const task = await findCurrentTask(client, pathOverride);
338
339
  const updatedTask = await client.moveTask(task.id, newStatus);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibora",
3
- "version": "1.13.0",
3
+ "version": "1.13.1",
4
4
  "description": "The Vibe Engineer's Cockpit",
5
5
  "license": "PolyForm-Shield-1.0.0",
6
6
  "repository": {