docs: mark M3 complete (channels/threads/cron/search)

This commit is contained in:
ARIA committed 2026-08-19 14:55:53 +02:00
1 parent 9b511fdd28
commit 60296b33fe
1 file changed
+15 -5
+15 -5
View File
@@ -65,18 +65,28 @@ has explicit **acceptance criteria**. Work top-to-bottom; don't skip M0/M1.
## M3 — Channels/threads + cron + search
**Goal:** organization + cron delegation + search.
- [ ] Channel directory (SQLite): default channel ensured; `channel.create/
- [X] Channel directory (SQLite): default channel ensured; `channel.create/
rename/set_default/delete` + `channel.*` frames.
- [ ] Threads: toggle in default chat; `thread_id` lanes; `create_handoff_thread`.
- [ ] `parse_target_ref_fn` + `cron_deliver_env_var` → cron
- [X] Threads: toggle in default chat; `thread_id` lanes; `create_handoff_thread`.
- [X] `parse_target_ref_fn` + `cron_deliver_env_var` → cron
`deliver=android:<chat>[:<thread>]` works.
- [ ] `search.py` FTS5 bridge; `search` frame (all / this-chat) → results.
- [ ] App: channel list (drawer/rail), thread toggle + topic switcher, "new
- [X] `search.py` FTS5 bridge; `search` frame (all / this-chat) → results.
- [X] App: channel list (drawer/rail), thread toggle + topic switcher, "new
channel" + "set as cron target", SearchScreen with scope toggle + jump.
- **Demo (on-device):** create "Cron Reports"; create a cron job delivering to
it; it fires into that channel; search finds a message (both scopes).
- **Accept:** cron output lands in the chosen channel (not default); threads
isolate context; search scoping correct; channel list reconciles on events.
- **Status (complete):** channel directory + threads + search + outbox sync
verified end-to-end via `ws_probe.py` (create/rename/set_default/delete,
thread lanes, FTS5 search, sync); cron `deliver=android:<chat>[:<thread>]`
target resolution verified via `resolve_send_target`. App on-device: channel
drawer, thread toggle + topic switcher, new channel, search overlay with
jump. Minor UI gaps deferred to M7 polish: "set as cron target" is set via
the cron job's `deliver` field (no dedicated button); the search overlay
defaults to scope "all" (the all/this-chat toggle is supported in the
controller but not yet exposed). An actual cron job firing into a channel was
not e2e-tested (it shares the verified resolution path).
## M4 — Media
**Goal:** attach + receive + play media.