trekoon 0.2.7 → 0.2.9
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.
- package/README.md +60 -0
- package/docs/commands.md +100 -0
- package/docs/quickstart.md +74 -1
- package/package.json +2 -1
- package/src/board/assets/app.js +589 -0
- package/src/board/assets/components/ClampedText.js +31 -0
- package/src/board/assets/components/Component.js +271 -0
- package/src/board/assets/components/ConfirmDialog.js +81 -0
- package/src/board/assets/components/EpicRow.js +64 -0
- package/src/board/assets/components/EpicsOverview.js +80 -0
- package/src/board/assets/components/Inspector.js +335 -0
- package/src/board/assets/components/Notice.js +80 -0
- package/src/board/assets/components/SubtaskModal.js +100 -0
- package/src/board/assets/components/TaskCard.js +82 -0
- package/src/board/assets/components/TaskModal.js +99 -0
- package/src/board/assets/components/TopBar.js +167 -0
- package/src/board/assets/components/Workspace.js +308 -0
- package/src/board/assets/components/assetMap.js +80 -0
- package/src/board/assets/components/helpers.js +244 -0
- package/src/board/assets/fonts/inter-latin.woff2 +0 -0
- package/src/board/assets/fonts/material-symbols-rounded.woff2 +0 -0
- package/src/board/assets/index.html +39 -0
- package/src/board/assets/main.js +11 -0
- package/src/board/assets/manifest.json +12 -0
- package/src/board/assets/runtime/delegation.js +309 -0
- package/src/board/assets/state/actions.js +454 -0
- package/src/board/assets/state/api.js +281 -0
- package/src/board/assets/state/store.js +472 -0
- package/src/board/assets/state/url.js +184 -0
- package/src/board/assets/state/utils.js +222 -0
- package/src/board/assets/styles/board.css +1811 -0
- package/src/board/assets/styles/fonts.css +22 -0
- package/src/board/install.ts +196 -0
- package/src/board/open-browser.ts +131 -0
- package/src/board/routes.ts +308 -0
- package/src/board/server.ts +185 -0
- package/src/board/snapshot.ts +277 -0
- package/src/board/types.ts +43 -0
- package/src/commands/board.ts +158 -0
- package/src/commands/help.ts +21 -0
- package/src/commands/init.ts +29 -0
- package/src/domain/mutation-service.ts +40 -0
- package/src/domain/tracker-domain.ts +11 -3
- package/src/runtime/cli-shell.ts +5 -0
- package/src/storage/path.ts +36 -0
package/README.md
CHANGED
|
@@ -48,6 +48,7 @@ These are the commands most people need to recognize quickly:
|
|
|
48
48
|
| Goal | Commands |
|
|
49
49
|
| --- | --- |
|
|
50
50
|
| Initialize a repo | `trekoon init` |
|
|
51
|
+
| Install/open/update the local board | `trekoon board open`, `trekoon board update` |
|
|
51
52
|
| Learn the CLI | `trekoon help [command]`, `trekoon quickstart` |
|
|
52
53
|
| Plan work | `trekoon epic ...`, `trekoon task ...`, `trekoon subtask ...`, `trekoon dep ...` |
|
|
53
54
|
| Start an execution session | `trekoon session` |
|
|
@@ -65,6 +66,65 @@ Machine output modes:
|
|
|
65
66
|
For the full command surface, flags, filters, and bulk update rules, read the
|
|
66
67
|
[command reference](docs/commands.md).
|
|
67
68
|
|
|
69
|
+
## Local board workflow
|
|
70
|
+
|
|
71
|
+
Trekoon ships a no-extra-install local board for browsing and updating work in a
|
|
72
|
+
browser.
|
|
73
|
+
|
|
74
|
+
- `trekoon init` creates the shared `.trekoon` storage, database, and board
|
|
75
|
+
runtime under `.trekoon/board`
|
|
76
|
+
- `trekoon board open` ensures those bundled board assets are installed, starts a
|
|
77
|
+
token-gated loopback server on `127.0.0.1`, and launches the browser
|
|
78
|
+
- `trekoon board update` refreshes the board runtime assets only; it does not
|
|
79
|
+
start the server or open a browser
|
|
80
|
+
|
|
81
|
+
Keep the operator path simple:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
trekoon board open
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Use `trekoon board update` only when you want to refresh the copied runtime
|
|
88
|
+
assets without opening a session.
|
|
89
|
+
|
|
90
|
+
The browser flow is local-only by design:
|
|
91
|
+
|
|
92
|
+
- Trekoon copies the board shell and app files into repo-shared storage, so the
|
|
93
|
+
board still starts with one CLI command and no separate frontend build step
|
|
94
|
+
- the board server binds only to `127.0.0.1`
|
|
95
|
+
- every `board open` session uses a per-session token in the URL/API requests
|
|
96
|
+
- command output always includes a manual fallback URL if the browser launch
|
|
97
|
+
fails
|
|
98
|
+
|
|
99
|
+
Current runtime expectations:
|
|
100
|
+
|
|
101
|
+
- the local runtime is served from `.trekoon/board`
|
|
102
|
+
- the shell currently loads Vue from `unpkg.com`, Tailwind from
|
|
103
|
+
`cdn.tailwindcss.com`, and Google-hosted fonts/icons when the page renders
|
|
104
|
+
- if your environment blocks those hosts, `trekoon board open` still starts the
|
|
105
|
+
local server, but the browser UI may render without the enhanced shell until
|
|
106
|
+
network access is restored
|
|
107
|
+
|
|
108
|
+
Current board behavior to expect:
|
|
109
|
+
|
|
110
|
+
- the topbar is a compact single-row navbar showing the workspace name, active
|
|
111
|
+
epic context, Epics and Board navigation, search, theme toggle, and a
|
|
112
|
+
workspace info popover
|
|
113
|
+
- wide screens show the epic switcher sidebar, task workspace, and task
|
|
114
|
+
inspector together; narrower screens collapse these into stacked panels or
|
|
115
|
+
drawer-style views
|
|
116
|
+
- the page scrolls naturally as a single SPA surface; modal overlays (task
|
|
117
|
+
detail, subtask editor) lock body scroll while open
|
|
118
|
+
- overview cards are the primary entry point into an epic; clicking a card opens
|
|
119
|
+
that epic's board workspace
|
|
120
|
+
- task cards show truncated descriptions; clicking anywhere on a card opens the
|
|
121
|
+
task detail modal with the full description
|
|
122
|
+
- search is debounced and filters client-side across titles, descriptions,
|
|
123
|
+
statuses, and subtask content
|
|
124
|
+
|
|
125
|
+
For the full lifecycle and examples, read [Quickstart](docs/quickstart.md) and
|
|
126
|
+
[Command reference](docs/commands.md).
|
|
127
|
+
|
|
68
128
|
## AI skill
|
|
69
129
|
|
|
70
130
|
Trekoon ships with a bundled `trekoon` skill for AI agents. It teaches the
|
package/docs/commands.md
CHANGED
|
@@ -6,6 +6,7 @@ surface, defaults, and flag rules.
|
|
|
6
6
|
## Command surface
|
|
7
7
|
|
|
8
8
|
- `trekoon init`
|
|
9
|
+
- `trekoon board <open|update>`
|
|
9
10
|
- `trekoon help [command]`
|
|
10
11
|
- `trekoon quickstart`
|
|
11
12
|
- `trekoon epic <create|expand|list|show|search|replace|update|delete>`
|
|
@@ -40,6 +41,105 @@ trekoon quickstart --json
|
|
|
40
41
|
Trekoon uses long-form options for command and subcommand flags. Root help and
|
|
41
42
|
version aliases `-h` and `-v` are also supported.
|
|
42
43
|
|
|
44
|
+
## Board lifecycle commands
|
|
45
|
+
|
|
46
|
+
Board terminology in docs matches `trekoon help board`:
|
|
47
|
+
|
|
48
|
+
- `trekoon board open`
|
|
49
|
+
- ensures board assets are installed in the repo-shared runtime directory
|
|
50
|
+
- starts a local board server on `127.0.0.1`
|
|
51
|
+
- launches the browser and returns the board URL, fallback URL, and launch
|
|
52
|
+
metadata in machine output
|
|
53
|
+
- `trekoon board update`
|
|
54
|
+
- refreshes board runtime assets only
|
|
55
|
+
- does not start the server or open a browser
|
|
56
|
+
|
|
57
|
+
Operator guidance:
|
|
58
|
+
|
|
59
|
+
- use `trekoon board open` as the normal one-command startup path
|
|
60
|
+
- use `trekoon board update` when you specifically need to refresh copied assets
|
|
61
|
+
before the next launch
|
|
62
|
+
|
|
63
|
+
Board commands do not accept command-specific options yet. For tests and local
|
|
64
|
+
development only, `TREKOON_BOARD_ASSET_ROOT` can override the bundled asset
|
|
65
|
+
source used by `init`, `board open`, and `board update`.
|
|
66
|
+
|
|
67
|
+
Runtime layout and security model:
|
|
68
|
+
|
|
69
|
+
- `trekoon init` installs or refreshes the board runtime under `.trekoon/board`
|
|
70
|
+
- `board open` serves those bundled files over a loopback-only server instead of
|
|
71
|
+
opening a raw file directly
|
|
72
|
+
- the server binds to `127.0.0.1` on a random port
|
|
73
|
+
- every session gets a per-session token; browser/API requests must present that
|
|
74
|
+
token
|
|
75
|
+
- static responses use `cache-control: no-store`, and CLI output always includes
|
|
76
|
+
a manual fallback URL
|
|
77
|
+
|
|
78
|
+
Current shell/runtime notes:
|
|
79
|
+
|
|
80
|
+
- the runtime copied into `.trekoon/board` includes the HTML shell, local app
|
|
81
|
+
modules, and shared styles
|
|
82
|
+
- the current shell also requests Vue from `unpkg.com`, Tailwind from
|
|
83
|
+
`cdn.tailwindcss.com`, and Google-hosted fonts/icons in the browser
|
|
84
|
+
- if those remote dependencies are blocked, the local server still starts and
|
|
85
|
+
the fallback URL remains valid, but the browser UI may not fully load until
|
|
86
|
+
network access is restored
|
|
87
|
+
|
|
88
|
+
Board UI architecture:
|
|
89
|
+
|
|
90
|
+
- the board is a single-page application served from `.trekoon/board` with Vue 3
|
|
91
|
+
(shell) and vanilla JS (board app) loaded from CDN dependencies
|
|
92
|
+
- the backend is a Bun HTTP server exposing a REST API at `/api/*` with
|
|
93
|
+
token-based authentication; every mutation response includes an updated
|
|
94
|
+
snapshot so the client always has fresh state
|
|
95
|
+
- the frontend uses optimistic updates: the UI changes immediately on user
|
|
96
|
+
action, then rolls back if the server rejects the mutation
|
|
97
|
+
|
|
98
|
+
Board layout behavior:
|
|
99
|
+
|
|
100
|
+
- the topbar is a compact flex-row navbar with workspace identity, Epics and
|
|
101
|
+
Board navigation pills, a debounced search input, theme toggle, and a
|
|
102
|
+
workspace info popover
|
|
103
|
+
- extra-wide layouts show the epic switcher sidebar, task workspace, and task
|
|
104
|
+
inspector or detail modal together
|
|
105
|
+
- narrower layouts progressively collapse support surfaces into stacked panels
|
|
106
|
+
or drawer-style views
|
|
107
|
+
- task cards show truncated descriptions; clicking anywhere on a card opens the
|
|
108
|
+
task detail modal
|
|
109
|
+
|
|
110
|
+
Scroll and overlay behavior:
|
|
111
|
+
|
|
112
|
+
- the page scrolls naturally as a single document; there are no internal scroll
|
|
113
|
+
containers trapping wheel events in the main content area
|
|
114
|
+
- when a modal overlay opens (task detail, subtask editor), body scroll is
|
|
115
|
+
locked and the modal surface becomes the scroll container
|
|
116
|
+
- close overlays from the top down: subtask modal → task detail → broader board
|
|
117
|
+
context; each close unlocks body scroll and returns to the previous context
|
|
118
|
+
|
|
119
|
+
Board API endpoints (all require token authentication):
|
|
120
|
+
|
|
121
|
+
- `GET /api/snapshot` — full board state (epics, tasks, subtasks, dependencies,
|
|
122
|
+
counts)
|
|
123
|
+
- `PATCH /api/epics/{id}` — update epic title, description, or status
|
|
124
|
+
- `PATCH /api/tasks/{id}` — update task title, description, or status
|
|
125
|
+
- `PATCH /api/subtasks/{id}` — update subtask title, description, or status
|
|
126
|
+
- `POST /api/subtasks` — create subtask (requires taskId, title)
|
|
127
|
+
- `DELETE /api/subtasks/{id}` — delete subtask
|
|
128
|
+
- `POST /api/dependencies` — add dependency edge (sourceId, dependsOnId)
|
|
129
|
+
- `DELETE /api/dependencies?sourceId=...&dependsOnId=...` — remove dependency
|
|
130
|
+
|
|
131
|
+
Token is sent as `Authorization: Bearer {token}` header or `x-trekoon-token`
|
|
132
|
+
header or `?token={token}` query parameter. Invalid tokens return `401`.
|
|
133
|
+
|
|
134
|
+
Examples:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
trekoon init
|
|
138
|
+
trekoon board open
|
|
139
|
+
trekoon --json board open
|
|
140
|
+
trekoon board update
|
|
141
|
+
```
|
|
142
|
+
|
|
43
143
|
## Human views
|
|
44
144
|
|
|
45
145
|
- List and show commands default to table output in human mode.
|
package/docs/quickstart.md
CHANGED
|
@@ -34,11 +34,84 @@ trekoon --toon sync status
|
|
|
34
34
|
Bootstrap rules:
|
|
35
35
|
|
|
36
36
|
- Run `trekoon --toon init` once per repository to create or re-bootstrap the
|
|
37
|
-
shared storage root
|
|
37
|
+
shared storage root and install the bundled board runtime under
|
|
38
|
+
`.trekoon/board`.
|
|
38
39
|
- Run `trekoon --toon sync status` before agent work to inspect diagnostics.
|
|
39
40
|
- If diagnostics report `recoveryRequired`, a tracked or ignored mismatch, or an
|
|
40
41
|
ambiguous recovery path, stop and repair setup before continuing.
|
|
41
42
|
|
|
43
|
+
## Open the local board
|
|
44
|
+
|
|
45
|
+
After `trekoon init`, you can browse and update the same repo-shared Trekoon
|
|
46
|
+
state in the browser:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
trekoon board open
|
|
50
|
+
trekoon board update
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
For day-to-day use, treat `trekoon board open` as the one-command entry point.
|
|
54
|
+
It both verifies the runtime files and launches the board. Reach for
|
|
55
|
+
`trekoon board update` only when you need to refresh the copied runtime without
|
|
56
|
+
opening the browser.
|
|
57
|
+
|
|
58
|
+
What these commands do:
|
|
59
|
+
|
|
60
|
+
- `trekoon board open` ensures bundled board assets are installed, starts a
|
|
61
|
+
loopback-only server on `127.0.0.1`, opens the browser, and prints a fallback
|
|
62
|
+
URL you can paste manually if launch fails
|
|
63
|
+
- `trekoon board update` refreshes the runtime assets in `.trekoon/board`
|
|
64
|
+
without opening a browser or starting the server
|
|
65
|
+
|
|
66
|
+
Why the board uses a local server instead of a bare HTML file:
|
|
67
|
+
|
|
68
|
+
- the UI needs live reads and writes against Trekoon data, not a static export
|
|
69
|
+
- the server binds only to `127.0.0.1`
|
|
70
|
+
- each `board open` call generates a per-session token used by the browser/API
|
|
71
|
+
- bundled assets are copied from the CLI package into `.trekoon/board`, so the
|
|
72
|
+
board works without a separate frontend install or local build step
|
|
73
|
+
|
|
74
|
+
Current runtime expectations for operators:
|
|
75
|
+
|
|
76
|
+
- the served HTML, styles, and board app files come from the local
|
|
77
|
+
`.trekoon/board` runtime directory
|
|
78
|
+
- the current shell also pulls Vue from `unpkg.com`, Tailwind from
|
|
79
|
+
`cdn.tailwindcss.com`, and Google-hosted fonts/icons at page load time
|
|
80
|
+
- if those hosts are unavailable, the command still starts the loopback server
|
|
81
|
+
and prints the fallback URL, but the shell may not fully hydrate in the
|
|
82
|
+
browser until network access is available again
|
|
83
|
+
|
|
84
|
+
Current layout behavior:
|
|
85
|
+
|
|
86
|
+
- the topbar is a compact navbar with workspace identity, Epics and Board
|
|
87
|
+
navigation, debounced search, theme toggle, and workspace info
|
|
88
|
+
- on wide displays, expect a three-surface workspace: epic switcher sidebar,
|
|
89
|
+
task workspace, and task inspector
|
|
90
|
+
- on medium and small displays, secondary surfaces collapse into stacked panels
|
|
91
|
+
or drawer-style views so the board remains navigable on narrower widths
|
|
92
|
+
- the page scrolls naturally as one document; modal overlays lock body scroll
|
|
93
|
+
while open
|
|
94
|
+
- task cards show truncated descriptions; clicking a card opens the task detail
|
|
95
|
+
modal with the full description and edit controls
|
|
96
|
+
- search filters client-side across titles, descriptions, statuses, and subtask
|
|
97
|
+
content with a 180ms debounce
|
|
98
|
+
|
|
99
|
+
Verification checklist for operators:
|
|
100
|
+
|
|
101
|
+
1. Open the board with `trekoon board open` and confirm the first view is the
|
|
102
|
+
epic overview with all epics listed and scrollable.
|
|
103
|
+
2. Click an epic card and confirm you enter the board workspace with the topbar
|
|
104
|
+
showing the active epic context.
|
|
105
|
+
3. Type in search and verify results filter as you type; confirm focus stays in
|
|
106
|
+
the search input while typing.
|
|
107
|
+
4. Click a task card and confirm the task detail modal opens with the full
|
|
108
|
+
description, edit form, and subtask list.
|
|
109
|
+
5. On desktop width, confirm the epic switcher sidebar, workspace, and detail
|
|
110
|
+
panel can all be visible simultaneously.
|
|
111
|
+
6. Resize to a narrow viewport and confirm the layout stacks cleanly without
|
|
112
|
+
horizontal overflow.
|
|
113
|
+
7. Close modals and confirm you return to the previous board context.
|
|
114
|
+
|
|
42
115
|
## Create an epic, task, and subtask
|
|
43
116
|
|
|
44
117
|
```bash
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trekoon",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.9",
|
|
4
4
|
"description": "AI-first local issue tracker CLI.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"bin",
|
|
12
12
|
"docs",
|
|
13
13
|
"src",
|
|
14
|
+
"src/board/assets",
|
|
14
15
|
".agents/skills/trekoon/SKILL.md",
|
|
15
16
|
"README.md",
|
|
16
17
|
"LICENSE"
|