Skip to content

Commit e5e703e

Browse files
dpwanjalaclaude
andcommitted
chore: production readiness — license, branding audit, cleanup
- Add MIT license (Syncropic) - Add license/repository/homepage to Cargo.toml - Fix all remaining 'work' → 'cmt' CLI references in source, tests, and docs - Fix error messages to reference 'cmt init' not 'work init' - Add .cmt/.index.db to .gitignore - Make repo public with branch protection Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent c9fd060 commit e5e703e

16 files changed

Lines changed: 194 additions & 167 deletions

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,6 @@ Thumbs.db
1818
# Node
1919
node_modules/
2020
web/dist/
21+
22+
# CatchMyTask runtime
23+
.cmt/.index.db

Cargo.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ name = "catchmytask"
33
version = "0.1.1"
44
edition = "2021"
55
description = "A work management system for humans and agents — CatchMyTask"
6+
license = "MIT"
7+
repository = "https://github.com/syncropic/catchmytask"
8+
homepage = "https://catchmytask.com"
69

710
[[bin]]
811
name = "cmt"
@@ -24,7 +27,7 @@ owo-colors = "4"
2427
is-terminal = "0.4"
2528
tempfile = "3"
2629

27-
# Web server (work serve)
30+
# Web server (cmt serve)
2831
tokio = { version = "1", features = ["full"] }
2932
axum = { version = "0.8", features = ["ws"] }
3033
tower = "0.5"

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Syncropic
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

docs/design/agent-discoverability.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ grep for it.
259259
### 4.3 Auto-Generated Discovery Files
260260

261261
```
262-
work init / work config set
262+
cmt init / cmt config set
263263
|
264264
v
265265
Config::load()
@@ -341,7 +341,7 @@ Rate the implementation against these criteria:
341341
| Tier 0 token budget | < 300 tokens (~1200 bytes) | `cmt help-agent --json \| wc -c` | 759 bytes |
342342
| Tier 1 token budget | < 400 tokens (~1500 bytes) | `cmt help-agent add --json \| wc -c` | 1353 bytes |
343343
| Zero-maintenance flags | New flags auto-appear | Add a flag, run help-agent, verify | PASS |
344-
| Works without .cmt/ | help-agent succeeds in empty dir | `cd /tmp && work help-agent --json` | PASS |
344+
| Works without .cmt/ | help-agent succeeds in empty dir | `cd /tmp && cmt help-agent --json` | PASS |
345345
| Discovery file freshness | Config changes propagate | `cmt config set ...` then `cat CONVENTIONS.md` | PASS |
346346
| JSON compactness | Single-line output | `cmt help-agent --json \| wc -l` == 1 | PASS |
347347
| Alias resolution | `ls` resolves to `list` | `cmt help-agent ls --json` | PASS |

docs/design/multi-project.md

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ everything?" or "what's blocked anywhere?"
1818

1919
### Scenarios That Must Work
2020

21-
1. **Single project**`cd ~/repos/app-a && work list` — works today, must not regress
21+
1. **Single project**`cd ~/repos/app-a && cmt list` — works today, must not regress
2222
2. **Personal work**`cmt add "Read DDIA chapter 5"` from `~` — needs `~/.cmt/`
2323
3. **Cross-project overview** — "show all my active items everywhere"
2424
4. **Monorepo** — one `.cmt/` at root covers all packages (no nesting)
@@ -89,9 +89,9 @@ other project.
8989

9090
```bash
9191
cd ~
92-
work init --prefix ME
93-
work add "Read DDIA chapter 5" --tag reading
94-
work add "Update resume" --tag career -p high
92+
cmt init --prefix ME
93+
cmt add "Read DDIA chapter 5" --tag reading
94+
cmt add "Update resume" --tag career -p high
9595
```
9696

9797
---
@@ -104,7 +104,7 @@ work add "Update resume" --tag career -p high
104104

105105
```bash
106106
cd ~/repos/new-service
107-
work init --prefix SVC
107+
cmt init --prefix SVC
108108
# Creates .cmt/ in current directory
109109
# Appends to ~/.config/cmt/projects.yml automatically
110110
```
@@ -120,14 +120,14 @@ in project registry").
120120
New flag: `--all` (or `-a`). Queries every project in the registry.
121121

122122
```bash
123-
$ work list --all -s active
123+
$ cmt list --all -s active
124124
PROJECT ID TITLE STATUS PRI ASSIGNEE
125125
app-a API-0012 Fix auth middleware active ●H alice
126126
app-b WEB-0045 Update dashboard active ●M alice
127127
infra INFRA-003 Rotate certificates active ●H 🤖agent
128128
personal ME-0007 Read DDIA chapter 5 active ●L —
129129
130-
$ work list --all -s blocked --json
130+
$ cmt list --all -s blocked --json
131131
[
132132
{"project": "app-a", "id": "API-0015", "title": "...", ...},
133133
{"project": "infra", "id": "INFRA-007", "title": "...", ...}
@@ -143,11 +143,11 @@ The `--dir` flag and `CMT_DIR` env already handle explicit project targeting:
143143

144144
```bash
145145
# From anywhere, operate on a specific project
146-
work list --dir ~/repos/infra/.work -s blocked
146+
cmt list --dir ~/repos/infra/.work -s blocked
147147
148148
# Or set for a session
149149
export CMT_DIR=~/repos/infra/.work
150-
work list -s blocked
150+
cmt list -s blocked
151151
```
152152

153153
No new mechanism needed. The existing `--dir` flag is the escape hatch.
@@ -156,20 +156,20 @@ No new mechanism needed. The existing `--dir` flag is the escape hatch.
156156

157157
```bash
158158
# List registered projects
159-
work projects
159+
cmt projects
160160
app-a API ~/repos/app-a/.work (24 items, 8 active)
161161
app-b WEB ~/repos/app-b/.work (12 items, 3 active)
162162
infra INFRA ~/repos/infra/.work (9 items, 2 active)
163163
personal ME ~/.work (15 items, 5 active)
164164
165165
# Register an existing project (if auto-registration missed it)
166-
work projects add ~/repos/legacy-app/.work
166+
cmt projects add ~/repos/legacy-app/.work
167167
168168
# Remove a project from registry (does NOT delete .cmt/)
169-
work projects remove legacy-app
169+
cmt projects remove legacy-app
170170
171171
# Show current project
172-
work projects current
172+
cmt projects current
173173
app-a (API) — ~/repos/app-a/.work
174174
```
175175

@@ -179,16 +179,16 @@ One `.cmt/` at the repo root. Use **tags** for package scoping:
179179

180180
```bash
181181
cd ~/repos/monorepo
182-
work init --prefix MONO
182+
cmt init --prefix MONO
183183
184184
# Scope with tags
185-
work add "Fix auth bug" --tag package:auth
186-
work add "Update dashboard" --tag package:web
187-
work add "Shared types" --tag package:core
185+
cmt add "Fix auth bug" --tag package:auth
186+
cmt add "Update dashboard" --tag package:web
187+
cmt add "Shared types" --tag package:core
188188
189189
# Filter by package
190-
work list --tag package:auth
191-
work list --tag package:web
190+
cmt list --tag package:auth
191+
cmt list --tag package:web
192192
```
193193

194194
The tag namespace `package:` is conventional, not enforced. The web UI sidebar
@@ -257,7 +257,7 @@ The Dashboard view in `--all` mode shows per-project breakdowns:
257257
258258
```
259259
┌──────────────────────┐
260-
work serve --all │
260+
cmt serve --all │
261261
│ (single process) │
262262
└───────┬──────────────┘
263263
│ reads
@@ -339,7 +339,7 @@ Just a list of paths and independent projects that can be queried together.
339339
340340
**Q: What if I move a project directory?**
341341
A: The registry path becomes stale. `cmt projects` detects this and shows
342-
"(not found)". Fix with `cmt projects remove old-name && work projects add /new/path`.
342+
"(not found)". Fix with `cmt projects remove old-name && cmt projects add /new/path`.
343343
Auto-cleanup: `cmt projects --prune` removes stale entries.
344344
345345
**Q: What about teams? Does the registry sync via git?**

docs/design/web-ui-research.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
The CLI is the primary interface for agents and power users. But work management is
66
inherently collaborative and visual. A web UI serves actors that the CLI cannot:
77

8-
- **Non-technical stakeholders** who need visibility into work status
8+
- **Non-technical stakeholders** who need visibility into cmt status
99
- **Managers/leads** who need dashboards and cross-cutting views
1010
- **Teams** who need shared boards, filters, and real-time updates
1111
- **Mobile users** who need quick status checks and triage on the go
@@ -302,7 +302,7 @@ operating conditions, not crashes. The UI shows clear diagnostics and recovery a
302302

303303
```
304304
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
305-
│ Browser │────▶│ work serve │────▶│ .cmt/ │
305+
│ Browser │────▶│ cmt serve │────▶│ .cmt/ │
306306
│ (React SPA) │◀────│ (Rust HTTP) │◀────│ files + db │
307307
└──────────────┘ └──────────────┘ └──────────────┘
308308
Static SPA localhost:4200 Source of truth
@@ -321,19 +321,19 @@ operating conditions, not crashes. The UI shows clear diagnostics and recovery a
321321
The API mirrors the CLI exactly:
322322

323323
```
324-
GET /api/items → work list --json
325-
GET /api/items/:id → work show :id --json
326-
POST /api/items → work add --json (body = fields)
327-
PUT /api/items/:id → work edit :id --json (body = changes)
328-
PUT /api/items/:id/status/:state → work status :id :state --json
329-
PUT /api/items/:id/done → work done :id --json
330-
DEL /api/items/:id → work delete :id --json
331-
POST /api/items/:id/archive → work archive :id --json
332-
GET /api/search?q=... → work search "..." --json
333-
GET /api/config → work config --json
334-
GET /api/events/:id → work log :id --json
335-
POST /api/check → work check --json
336-
POST /api/reindex → work reindex --json
324+
GET /api/items → cmt list --json
325+
GET /api/items/:id → cmt show :id --json
326+
POST /api/items → cmt add --json (body = fields)
327+
PUT /api/items/:id → cmt edit :id --json (body = changes)
328+
PUT /api/items/:id/status/:state → cmt status :id :state --json
329+
PUT /api/items/:id/done → cmt done :id --json
330+
DEL /api/items/:id → cmt delete :id --json
331+
POST /api/items/:id/archive → cmt archive :id --json
332+
GET /api/search?q=... → cmt search "..." --json
333+
GET /api/config → cmt config --json
334+
GET /api/events/:id → cmt log :id --json
335+
POST /api/check → cmt check --json
336+
POST /api/reindex → cmt reindex --json
337337
```
338338

339339
WebSocket endpoint for live updates:

docs/design/web-ui-screens.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ Normal: Hover: Selected: Agent-active:
193193
│ │ [+ Create your first item] │ │
194194
│ │ │ │
195195
│ │ or from the CLI: │ │
196-
│ │ $ work add "Fix the bug" -p h │ │
196+
│ │ $ cmt add "Fix the bug" -p h │ │
197197
│ │ │ │
198198
│ └──────────────────────────────────┘ │
199199
│ │
@@ -696,8 +696,8 @@ Three modes: default (search everything), `>` prefix (commands only),
696696
│ ▸ Create new item C │
697697
│ ▸ Switch to Board ⌘1 │
698698
│ ▸ Switch to List ⌘2 │
699-
│ ▸ Validate project (work check) │
700-
│ ▸ Rebuild index (work reindex) │
699+
│ ▸ Validate project (cmt check) │
700+
│ ▸ Rebuild index (cmt reindex) │
701701
│ │
702702
│ ── Saved Views ──────────────────────────────────────────── │
703703
│ ▸ My items │
@@ -822,17 +822,17 @@ Changes propagate to UI via WebSocket file watcher.
822822
│ │
823823
│ CatchMyTask Terminal [Clear] [↗ Pop] │
824824
│ │
825-
│ $ work list -s active --json │
825+
│ $ cmt list -s active --json │
826826
│ [ │
827827
│ {"id": "CMT-0045", "title": "Refactor storage layer", ...}, │
828828
│ {"id": "CMT-0046", "title": "Index performance", ...}, │
829829
│ ... │
830830
│ ] │
831831
│ │
832-
│ $ work status CMT-0045 blocked --actor alice │
832+
│ $ cmt status CMT-0045 blocked --actor alice │
833833
│ Status changed: active → blocked │
834834
│ │
835-
│ $ work add "Review agent output for CMT-0041" -p high --tag review │
835+
│ $ cmt add "Review agent output for CMT-0041" -p high --tag review │
836836
│ Created CMT-0055: Review agent output for CMT-0041 │
837837
│ │
838838
│ $ █ │
@@ -861,7 +861,7 @@ like VS Code's Problems panel. Can coexist with main content.
861861
│ ❌ CMT-0047 blocked_reason is required when status is "blocked" [▸] │
862862
│ ⚠ CMT-0052 No assignee (recommended before leaving inbox) [▸] │
863863
│ │
864-
│ Run: work check --fix to auto-fix where possible │
864+
│ Run: cmt check --fix to auto-fix where possible │
865865
└────────────────────────────────────────────────────────────────────────────┘
866866
```
867867

0 commit comments

Comments
 (0)