stickyinc 0.5.2
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/LICENSE +21 -0
- package/README.md +377 -0
- package/dist/bundle/stickyinc-mcp.mjs +22072 -0
- package/dist/bundle/stickyinc-watch.mjs +1013 -0
- package/package.json +53 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 StickyInc contributors
|
|
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.
|
package/README.md
ADDED
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
```
|
|
2
|
+
███████╗████████╗██╗ ██████╗██╗ ██╗██╗ ██╗ ██╗███╗ ██╗ ██████╗
|
|
3
|
+
██╔════╝╚══██╔══╝██║██╔════╝██║ ██╔╝╚██╗ ██╔╝ ██║████╗ ██║██╔════╝
|
|
4
|
+
███████╗ ██║ ██║██║ █████╔╝ ╚████╔╝ ██║██╔██╗ ██║██║
|
|
5
|
+
╚════██║ ██║ ██║██║ ██╔═██╗ ╚██╔╝ ██║██║╚██╗██║██║
|
|
6
|
+
███████║ ██║ ██║╚██████╗██║ ██╗ ██║ ██║██║ ╚████║╚██████╗
|
|
7
|
+
╚══════╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝
|
|
8
|
+
|
|
9
|
+
┌─────────────────────────────────────────────────────────┐
|
|
10
|
+
│ v0.5.2 · the subscription-mode release │
|
|
11
|
+
│ │
|
|
12
|
+
│ ▸ zero-key auto-detect for claude / codex / gemini │
|
|
13
|
+
│ ▸ Ollama + LM Studio localhost fallback, free │
|
|
14
|
+
│ ▸ sidebar hidden until setup is done — subtle bulges │
|
|
15
|
+
│ from the edge on new task / due / setup events │
|
|
16
|
+
└─────────────────────────────────────────────────────────┘
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
┌──────────────────────────┐ ┌──────────────────────────┐
|
|
20
|
+
│ user ▸ call the dentist │ MCP │ ☐ call the dentist │
|
|
21
|
+
│ friday afternoon │ ─────▶ │ ☐ email Sarah │
|
|
22
|
+
│ claude ▸ noted, adding. │ tool │ ☑ ship v0.5 │
|
|
23
|
+
└──────────────────────────┘ │ ☐ make it stick │
|
|
24
|
+
│ └──────────────────────────┘
|
|
25
|
+
the chat the pane
|
|
26
|
+
evaporates at close lives in ~/.stickyinc forever
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
<p align="center">
|
|
30
|
+
<strong>v0.5.2</strong> · MIT · MCP-first · no backend, ever<br />
|
|
31
|
+
<em>Bring your own LLM key — or piggyback on Claude Code, ChatGPT, Gemini, or local Ollama. Zero config either way.</em>
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
<p align="center">
|
|
35
|
+
<a href="https://astralchemist.github.io/stickyinc/">Landing page</a> ·
|
|
36
|
+
<a href="https://github.com/Astralchemist/stickyinc/releases/latest">Download</a> ·
|
|
37
|
+
<a href="#the-idea">The idea</a> ·
|
|
38
|
+
<a href="#architecture">Architecture</a> ·
|
|
39
|
+
<a href="#quickstart">Quickstart</a>
|
|
40
|
+
</p>
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## The idea
|
|
45
|
+
|
|
46
|
+
Every LLM overlay on the market follows the same shape: **summon → ask → dismiss.** You pop a window, ask a thing, close it, and within an hour the answer has evaporated from your brain and the tab. The model is a disposable oracle; you are the durable storage.
|
|
47
|
+
|
|
48
|
+
StickyInc inverts that. Chats are cheap and ephemeral; the *commitment graph* you build from them over months — the promises, deadlines, quiet todos you let slip into conversation — is the part that actually compounds. Nobody was storing it.
|
|
49
|
+
|
|
50
|
+
So StickyInc does two things, and refuses to do anything else:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
1 ▸ catches the commitments
|
|
54
|
+
───────────────────────
|
|
55
|
+
when you tell an LLM "call the dentist friday", an MCP tool
|
|
56
|
+
call fires and a checkbox appears on your screen. no
|
|
57
|
+
copy-paste, no "remind me later", no second tab.
|
|
58
|
+
|
|
59
|
+
2 ▸ keeps them in front of you
|
|
60
|
+
──────────────────────────
|
|
61
|
+
an 8-pixel strip lives on the right edge of your screen.
|
|
62
|
+
hover to expand, click to tick off. the file behind it is
|
|
63
|
+
a local SQLite database you own outright — swap LLMs, swap
|
|
64
|
+
laptops, the graph comes with you.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Everything else — chat UI, OAuth flows, cloud sync, a mobile app — is *intentionally* out of scope. StickyInc is a reification layer. The LLM is the CPU; the pane is the canvas.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Architecture
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
┌──────────────────┐ MCP stdio ┌──────────────────┐
|
|
75
|
+
│ Claude Desktop │ ───tool call──▶ │ StickyInc MCP │
|
|
76
|
+
│ Claude Code │ │ (Node, stdio) │
|
|
77
|
+
│ any MCP host │ └────────┬─────────┘
|
|
78
|
+
└──────────────────┘ │ SQL
|
|
79
|
+
▼
|
|
80
|
+
┌─────────────────────────┐
|
|
81
|
+
│ ~/.stickyinc/tasks.db │
|
|
82
|
+
│ (SQLite, yours) │
|
|
83
|
+
└─────────────┬───────────┘
|
|
84
|
+
│ notify-rs watcher
|
|
85
|
+
▼
|
|
86
|
+
┌────────────────────┐
|
|
87
|
+
│ Pane (Tauri) │
|
|
88
|
+
│ edge-strip, always │
|
|
89
|
+
│ on top, translucent│
|
|
90
|
+
└────────────────────┘
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Claude never talks to the pane directly. They share state through SQLite — one source of truth, nothing to sync, no IPC to break.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Install
|
|
98
|
+
|
|
99
|
+
Pre-built binaries ship from every tagged release. Signed and notarized builds arrive in v0.6 (see [SIGNING.md](./SIGNING.md) for the plan).
|
|
100
|
+
|
|
101
|
+
| Platform | File | Notes |
|
|
102
|
+
|---|---|---|
|
|
103
|
+
| macOS (Apple Silicon) | `StickyInc_0.5.1_aarch64.dmg` | ad-hoc signed; Gatekeeper will warn |
|
|
104
|
+
| Windows (x64) — installer | `StickyInc_0.5.1_x64-setup.exe` | NSIS, unsigned — SmartScreen will warn |
|
|
105
|
+
| Windows (x64) — MSI | `StickyInc_0.5.1_x64_en-US.msi` | for group-policy deployment |
|
|
106
|
+
| Linux (Debian/Ubuntu) | `StickyInc_0.5.1_amd64.deb` | `sudo dpkg -i` |
|
|
107
|
+
| Linux (RPM/Fedora) | `StickyInc-0.5.1-1.x86_64.rpm` | `sudo rpm -i` |
|
|
108
|
+
| Linux (portable) | `StickyInc_0.5.1_amd64.AppImage` | `chmod +x` and run |
|
|
109
|
+
|
|
110
|
+
> **[Grab the latest release →](https://github.com/Astralchemist/stickyinc/releases/latest)**
|
|
111
|
+
|
|
112
|
+
First launch pops a one-minute setup wizard: pick an LLM provider, paste a key, confirm the MCP registration. No terminal commands. The MCP server runs on your own Node, so you need [Node.js 22.13+](https://nodejs.org) installed.
|
|
113
|
+
|
|
114
|
+
### MCP server only (npx)
|
|
115
|
+
|
|
116
|
+
Just want the tools in Claude, no pane? With [Node.js 22.13+](https://nodejs.org):
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
claude mcp add stickyinc -- npx -y stickyinc
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
For Claude Desktop, add this to `claude_desktop_config.json`:
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"mcpServers": {
|
|
127
|
+
"stickyinc": { "command": "npx", "args": ["-y", "stickyinc"] }
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Tasks go to `~/.stickyinc/tasks.db`, the same file the pane reads, so you can add the pane later and they'll be there. Set `STICKYINC_DB` to keep them somewhere else (the pane won't see them): `claude mcp add stickyinc -e STICKYINC_DB=~/work-tasks.db -- npx -y stickyinc`.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Quickstart
|
|
137
|
+
|
|
138
|
+
Already have an installer running? Open any Claude Desktop or Claude Code session and say:
|
|
139
|
+
|
|
140
|
+
> *I need to call the dentist Friday afternoon.*
|
|
141
|
+
|
|
142
|
+
The task appears in your pane before Claude finishes its reply.
|
|
143
|
+
|
|
144
|
+
### Quick-add without a chat
|
|
145
|
+
|
|
146
|
+
While the pane is running, press **⌘⇧N** (macOS) or **Ctrl+Shift+N** (Windows/Linux). A centered input appears — type, hit Enter, done. Inline dates work, in your local time: `buy bread due:2026-04-25` (9 am) or `call mum due:2026-04-25T15:30`.
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## MCP tools
|
|
151
|
+
|
|
152
|
+
| Tool | What it does |
|
|
153
|
+
|---|---|
|
|
154
|
+
| `add_task` | Add a todo. Optional `due_at` (ISO date). |
|
|
155
|
+
| `add_task_natural` | Parse free text ("*call dentist Friday 3pm*") via the configured LLM. |
|
|
156
|
+
| `list_tasks` | Return open tasks; silently appends `Done today (N)` so Claude has state continuity. |
|
|
157
|
+
| `list_done` | Return recently completed tasks, optional archive. |
|
|
158
|
+
| `complete_task` | Mark a task done. |
|
|
159
|
+
| `schedule_event` | Create a dated local task. Calendar sync is deferred to Claude's own connector (see below). |
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## LLM providers
|
|
164
|
+
|
|
165
|
+
`add_task_natural` and the passive extraction daemon work with any of:
|
|
166
|
+
|
|
167
|
+
| Provider | How it authenticates | Detected via | Default model |
|
|
168
|
+
|---|---|---|---|
|
|
169
|
+
| **Claude Code** — your Claude Max / Pro subscription, *no API key* | local `claude` CLI OAuth | `claude` on `$PATH` | `haiku` |
|
|
170
|
+
| **Codex (ChatGPT)** — your ChatGPT Plus / Pro / Team subscription, *no API key* | local `codex` CLI OAuth | `codex` on `$PATH` | whatever `codex` defaults to |
|
|
171
|
+
| **Gemini** — your Google account (Gemini Advanced quota or free tier), *no API key* | local `gemini` CLI OAuth | `gemini` on `$PATH` | whatever `gemini` defaults to |
|
|
172
|
+
| **Local (Ollama / LM Studio)** — fully offline, free, no cloud call at all | — | `:11434` or `:1234` responding | first installed model |
|
|
173
|
+
| **OpenRouter** — one key, ~200 models, cheapest per token | API key | `OPENROUTER_API_KEY` | `anthropic/claude-haiku-4.5` |
|
|
174
|
+
| **Anthropic** (direct) | API key ([console.anthropic.com](https://console.anthropic.com/)) | `ANTHROPIC_API_KEY` | `claude-haiku-4-5-20251001` |
|
|
175
|
+
| **OpenAI** (direct) | API key ([platform.openai.com](https://platform.openai.com/api-keys)) | `OPENAI_API_KEY` | `gpt-4o-mini` |
|
|
176
|
+
| **OpenAI-compatible** (Groq, Together, Fireworks, vLLM…) | API key | config file | — |
|
|
177
|
+
|
|
178
|
+
### Zero-config path
|
|
179
|
+
|
|
180
|
+
Whatever you already pay for, StickyInc will use it. If any of these are set up on your machine, no key or config is needed:
|
|
181
|
+
|
|
182
|
+
- **Claude Code** (`claude` CLI) — bills to your Claude Max / Pro subscription
|
|
183
|
+
- **OpenAI Codex CLI** (`codex`) — bills to your ChatGPT Plus / Pro / Team subscription
|
|
184
|
+
- **Gemini CLI** (`gemini`) — uses your Google account (Gemini Advanced if you have it)
|
|
185
|
+
- **Ollama** or **LM Studio** running locally — fully free, no cloud round-trip
|
|
186
|
+
|
|
187
|
+
Each subscription CLI call shells out to the tool's print mode (`claude -p` / `codex exec` / `gemini -p`); expect ~1s of subprocess startup per parse. Local-server calls are direct HTTP and cost nothing. Prefer an API key anyway? `export OPENROUTER_API_KEY=sk-or-...` and it wins over auto-detect.
|
|
188
|
+
|
|
189
|
+
### Resolution priority
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
1 · ~/.stickyinc/llm.json (explicit provider wins)
|
|
193
|
+
2 · OPENROUTER_API_KEY
|
|
194
|
+
3 · ANTHROPIC_API_KEY
|
|
195
|
+
4 · OPENAI_API_KEY
|
|
196
|
+
5 · claude CLI on PATH → Claude Code subscription
|
|
197
|
+
6 · codex CLI on PATH → ChatGPT subscription (via Codex)
|
|
198
|
+
7 · gemini CLI on PATH → Google / Gemini Advanced
|
|
199
|
+
8 · localhost :11434/:1234 → Ollama / LM Studio
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Config file examples — `~/.stickyinc/llm.json`
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
{ "provider": "claude-code" }
|
|
206
|
+
```
|
|
207
|
+
```json
|
|
208
|
+
{ "provider": "claude-code", "model": "sonnet" }
|
|
209
|
+
```
|
|
210
|
+
```json
|
|
211
|
+
{ "provider": "codex" }
|
|
212
|
+
```
|
|
213
|
+
```json
|
|
214
|
+
{ "provider": "gemini", "model": "gemini-2.5-flash" }
|
|
215
|
+
```
|
|
216
|
+
```json
|
|
217
|
+
{ "provider": "local" }
|
|
218
|
+
```
|
|
219
|
+
```json
|
|
220
|
+
{ "provider": "openrouter", "model": "openai/gpt-4.1-mini" }
|
|
221
|
+
```
|
|
222
|
+
```json
|
|
223
|
+
{ "provider": "anthropic", "model": "claude-sonnet-4-6" }
|
|
224
|
+
```
|
|
225
|
+
```json
|
|
226
|
+
{ "provider": "compat", "base_url": "http://localhost:11434/v1", "model": "llama3.2", "api_key": "ollama" }
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Override the model on any env-var or auto-detect path with `STICKYINC_MODEL=…`. Each LLM call gives up after 90 seconds; raise that with `STICKYINC_LLM_TIMEOUT_MS=…` if you run a slow local model.
|
|
230
|
+
|
|
231
|
+
### A note on subscription-mode tradeoffs
|
|
232
|
+
|
|
233
|
+
Both `claude-code` and `codex` providers run a subprocess per call (~500ms–1s of overhead) and share the user's subscription rate limits. For interactive quick-add and the once-per-turn passive daemon this is imperceptible; if you end up in a tight extraction loop, configure a direct API provider instead. Subscription routes also mean StickyInc never touches your auth tokens — they stay in whatever state directory the CLI manages (`~/.claude/`, `~/.codex/`).
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Passive extraction (opt-in)
|
|
238
|
+
|
|
239
|
+
A daemon that tails your Claude Code transcripts and auto-surfaces commitments you mention in passing.
|
|
240
|
+
|
|
241
|
+
Turn it on in the setup wizard's last step (re-open setup any time from the pane's **setup** link). The pane then runs it in the background with your configured LLM, stops it when you quit, and writes its output to `~/.stickyinc/watcher.log`. You can also run it by hand:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
npx -y -p stickyinc stickyinc-watch # or, from a clone: pnpm watch
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
- Watches `~/.claude/projects/**/*.jsonl` (Claude Code session files).
|
|
248
|
+
- For each new **user** turn (add `--assistant` to include Claude's turns), calls the configured LLM to extract commitments.
|
|
249
|
+
- De-dupes via content fingerprint — "*call the dentist*" won't insert twice if still open.
|
|
250
|
+
- Ignores hypotheticals and past tense. Empty extractions are free (no DB write).
|
|
251
|
+
|
|
252
|
+
**Privacy:** every watched turn is sent to your configured LLM provider. Off by default; you decide when to turn it on.
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Calendar — by design, we defer to Claude
|
|
257
|
+
|
|
258
|
+
StickyInc intentionally doesn't ship its own Google OAuth flow. It's the single hardest setup step in the entire product surface, and Claude Desktop already has a battle-tested Google Calendar connector built in.
|
|
259
|
+
|
|
260
|
+
When you want a real calendar event, ask Claude in the same turn. `schedule_event` stores the dated task in StickyInc; Claude creates the calendar entry via its own connector. One less thing for you to set up, one less place your tokens live.
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## Design axioms
|
|
265
|
+
|
|
266
|
+
```
|
|
267
|
+
┌─ BYO LLM key / subscription ───────────────────────────────┐
|
|
268
|
+
│ no backend, no token costs on our side, no rate-limit │
|
|
269
|
+
│ theatre. whatever key you already have, we use. │
|
|
270
|
+
└────────────────────────────────────────────────────────────┘
|
|
271
|
+
┌─ client-side only ─────────────────────────────────────────┐
|
|
272
|
+
│ conversations never leave your device except to the │
|
|
273
|
+
│ provider you chose. everything else is local. │
|
|
274
|
+
└────────────────────────────────────────────────────────────┘
|
|
275
|
+
┌─ local SQLite ─────────────────────────────────────────────┐
|
|
276
|
+
│ ~/.stickyinc/tasks.db. sync via iCloud / Dropbox / │
|
|
277
|
+
│ Syncthing if you want. or don't. the file is yours. │
|
|
278
|
+
└────────────────────────────────────────────────────────────┘
|
|
279
|
+
┌─ MCP-first ────────────────────────────────────────────────┐
|
|
280
|
+
│ StickyInc doesn't build a chat UI. it's the canvas │
|
|
281
|
+
│ Claude writes to. │
|
|
282
|
+
└────────────────────────────────────────────────────────────┘
|
|
283
|
+
┌─ one source of truth ──────────────────────────────────────┐
|
|
284
|
+
│ the DB. pane and MCP both read/write it; no IPC │
|
|
285
|
+
│ between them; nothing to keep in sync. │
|
|
286
|
+
└────────────────────────────────────────────────────────────┘
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Dev (running from source)
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
git clone https://github.com/Astralchemist/stickyinc
|
|
295
|
+
cd stickyinc
|
|
296
|
+
pnpm install
|
|
297
|
+
pnpm dev # MCP server (stdio)
|
|
298
|
+
|
|
299
|
+
# in another terminal
|
|
300
|
+
cd pane
|
|
301
|
+
pnpm install
|
|
302
|
+
pnpm tauri:dev # pane (edge-strip, always on top)
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**Linux dev deps** (Ubuntu 22.04+):
|
|
306
|
+
```bash
|
|
307
|
+
sudo apt-get install -y \
|
|
308
|
+
libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev \
|
|
309
|
+
librsvg2-dev libxdo-dev libssl-dev build-essential curl wget file
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
macOS and Windows need only Rust + Node 22.13+. Release builds run through GitHub Actions — see `.github/workflows/build.yml`.
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## How the pane actually works
|
|
317
|
+
|
|
318
|
+
- Always-on-top, transparent, frameless, `skipTaskbar`. 8px strip glued to the right edge by default.
|
|
319
|
+
- Hover → window resizes to 320px, pane slides in. Click-through everywhere else.
|
|
320
|
+
- Checkbox click → Rust `complete_task` command → SQLite UPDATE → `notify-rs` watcher emits `tasks-changed` → UI re-fetches.
|
|
321
|
+
- Red dot on the strip when any open task is past its `due_at`.
|
|
322
|
+
- Reads/writes the same `~/.stickyinc/tasks.db` as the MCP server. One source of truth.
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## Roadmap
|
|
327
|
+
|
|
328
|
+
```
|
|
329
|
+
[x] v0.1 MCP server, SQLite, four tools.
|
|
330
|
+
[x] v0.2 Tauri edge-strip pane.
|
|
331
|
+
[x] v0.3 Recently-done + Archive drawer, list_done, CI,
|
|
332
|
+
LLMProvider (Anthropic + OpenRouter + OpenAI-compat),
|
|
333
|
+
add_task_natural.
|
|
334
|
+
[x] v0.4 Passive extraction daemon, fingerprint dedup,
|
|
335
|
+
done-today feedback in list_tasks.
|
|
336
|
+
[x] v0.5 Global ⌘⇧N quick-add window, full icon set,
|
|
337
|
+
one-click setup wizard, tagged release builds
|
|
338
|
+
for macOS / Windows / Linux.
|
|
339
|
+
[x] v0.5.1 Subscription-mode providers (Claude Code, Codex,
|
|
340
|
+
Gemini, Ollama/LM Studio) with zero-key auto-detect.
|
|
341
|
+
Sidebar hidden until setup is done — subtle bulge
|
|
342
|
+
notifications for new tasks, due crossings, and
|
|
343
|
+
incomplete setup.
|
|
344
|
+
|
|
345
|
+
[ ] v0.6 ▸ in-app auto-updater (check + download + install
|
|
346
|
+
signed bundles on launch; users never miss a fix)
|
|
347
|
+
▸ wizard reworked to detect claude / codex / gemini
|
|
348
|
+
CLIs and offer zero-key "use my subscription" as
|
|
349
|
+
the default; API key becomes the fallback, not
|
|
350
|
+
the front door
|
|
351
|
+
▸ signed + notarized macOS installer, signed MSI on
|
|
352
|
+
Windows (see SIGNING.md)
|
|
353
|
+
▸ UUID task IDs + append-only event log — unlocks
|
|
354
|
+
multi-device sync, undo, and audit history. Done
|
|
355
|
+
on desktop regardless of mobile, because the
|
|
356
|
+
migration is scary later and free now.
|
|
357
|
+
|
|
358
|
+
[ ] v0.7 ▸ phone access without an app: desktop pane serves
|
|
359
|
+
a read-only LAN web view over HTTPS — bookmark
|
|
360
|
+
it on your phone, no store review, no sync engine
|
|
361
|
+
▸ per-project tasks (separate DBs per Claude Code
|
|
362
|
+
workspace), weekly digest, menu-bar quick-add
|
|
363
|
+
|
|
364
|
+
[ ] v0.8+ ▸ native mobile (Tauri 2 iOS + Android) — viewer,
|
|
365
|
+
quickadd, share-sheet, voice capture via Siri /
|
|
366
|
+
Assistant Shortcuts
|
|
367
|
+
▸ LAN sync over mDNS + self-signed TLS + QR
|
|
368
|
+
pairing (LocalSend-style). No relay, no backend.
|
|
369
|
+
Filesystem sync (iCloud / Dropbox / Syncthing)
|
|
370
|
+
remains the documented "away from home" path.
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
## License
|
|
376
|
+
|
|
377
|
+
MIT. Do what you want.
|