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.
Files changed (45) hide show
  1. package/README.md +60 -0
  2. package/docs/commands.md +100 -0
  3. package/docs/quickstart.md +74 -1
  4. package/package.json +2 -1
  5. package/src/board/assets/app.js +589 -0
  6. package/src/board/assets/components/ClampedText.js +31 -0
  7. package/src/board/assets/components/Component.js +271 -0
  8. package/src/board/assets/components/ConfirmDialog.js +81 -0
  9. package/src/board/assets/components/EpicRow.js +64 -0
  10. package/src/board/assets/components/EpicsOverview.js +80 -0
  11. package/src/board/assets/components/Inspector.js +335 -0
  12. package/src/board/assets/components/Notice.js +80 -0
  13. package/src/board/assets/components/SubtaskModal.js +100 -0
  14. package/src/board/assets/components/TaskCard.js +82 -0
  15. package/src/board/assets/components/TaskModal.js +99 -0
  16. package/src/board/assets/components/TopBar.js +167 -0
  17. package/src/board/assets/components/Workspace.js +308 -0
  18. package/src/board/assets/components/assetMap.js +80 -0
  19. package/src/board/assets/components/helpers.js +244 -0
  20. package/src/board/assets/fonts/inter-latin.woff2 +0 -0
  21. package/src/board/assets/fonts/material-symbols-rounded.woff2 +0 -0
  22. package/src/board/assets/index.html +39 -0
  23. package/src/board/assets/main.js +11 -0
  24. package/src/board/assets/manifest.json +12 -0
  25. package/src/board/assets/runtime/delegation.js +309 -0
  26. package/src/board/assets/state/actions.js +454 -0
  27. package/src/board/assets/state/api.js +281 -0
  28. package/src/board/assets/state/store.js +472 -0
  29. package/src/board/assets/state/url.js +184 -0
  30. package/src/board/assets/state/utils.js +222 -0
  31. package/src/board/assets/styles/board.css +1811 -0
  32. package/src/board/assets/styles/fonts.css +22 -0
  33. package/src/board/install.ts +196 -0
  34. package/src/board/open-browser.ts +131 -0
  35. package/src/board/routes.ts +308 -0
  36. package/src/board/server.ts +185 -0
  37. package/src/board/snapshot.ts +277 -0
  38. package/src/board/types.ts +43 -0
  39. package/src/commands/board.ts +158 -0
  40. package/src/commands/help.ts +21 -0
  41. package/src/commands/init.ts +29 -0
  42. package/src/domain/mutation-service.ts +40 -0
  43. package/src/domain/tracker-domain.ts +11 -3
  44. package/src/runtime/cli-shell.ts +5 -0
  45. 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.
@@ -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.7",
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"