Telegram UI batch, 2026-06-10¶
Justin asked for app-style productivity UI inside Telegram (Todoist/TickTick/Notion affordances without opening the app), approved the full menu, and wants to try everything then give feedback.
Shipped (commits 14b4d64, cfe19b1, a08f145, 8795a19 + housekeeping)¶
| Feature | Surface | Files |
|---|---|---|
| Checklist forms (toggle + Submit + table links) | /todos [brand], /tasks, brain tool tasks_form |
scripts/forge_telegram_checklist.py (engine, chk prefix) |
Quantity-aware habit counters (➕ per tap, ✓ all, progress 3→5/15) |
/habits, brain tool habits_form |
same engine; goals from Habit Definitions Goal qty/Unit |
| Unified Today (calendar block + mixed due-tasks + habits form) | /today, brain tool today_form |
push_today_form(); per-item kind override |
| Inline date picker (month grid, quick picks) setting Notion Due | 📅 button on task rows | scripts/forge_telegram_datepick.py (cal prefix, action registry) |
| Focus timer (detached self-editing countdown) | /timer [min] [label] |
scripts/forge_telegram_timer.py |
| Quick-bar reply keyboard | /keyboard on\|off |
coordinator fast-path |
| Slash-command menu registration | BotFather-free, re-runnable | scripts/forge_telegram_set_commands.py |
Tap-lag fixes: keep-alive session in shared tg(), answer-first, keyboard-only edits, batch coalescing |
fleet-wide | forge_telegram_format.py, coordinator |
Latency measured: single toggle 1.0s to 0.5s; 5-tap burst ~5s to 1.4s. Form/pick state JSON under data/telegram_checklists/ + data/telegram_datepicks/ (gitignored, auto-pruned at 7d). Full mechanics: memory topic reference_telegram_checklist_forms.md (Claude project level).
Probed and closed¶
- Native
sendChecklist(Bot API 9.1): returnsPREMIUM_ACCOUNT_REQUIREDon this bot. Inline-keyboard forms stay canonical.
Blocked on Justin¶
- Inline mode (search Notion from any chat via
@forge_lifeos_coordinator_bot query): owner must run BotFather/setinlineon the coordinator bot. Handler not yet built; build after he enables it.
Staged next round (waiting on his feedback from this batch)¶
- Wellness polls: native Telegram poll (energy 1-5) feeding the wellness log; needs
poll_answerhandling in the poller. - Undo buttons on destructive actions (60s reverse window).
- Status-cycling task buttons (Backlog → Doing → Done) as a new checklist
kind. - List templates:
/list grocerystyle throwaway checklists, no Notion backing. - Habit streak charts as images (data already in
forge_habits_streaks.py). - Eisenhower triage cards for the capture inbox.
- Mini App:
web_appkeyboard button opening tasks.justinsforge.com inside Telegram; the long-term play for kanban/charts. - Tool catalog prune +
tg()-consolidation follow-ons from the 2026-06-09 fleet audit remain open.
Gotchas for the next session¶
- One long-poller per token; never test by starting a second poller.
- Coordinator must be restarted after editing any module it imports (checklist, datepick, format); capture/notify/general/bridge only consume
forge_telegram_format, restart them on shared-module changes. chk/calprefixes register at import time in the coordinator; the toggle batcher in the coordinator loop matcheschk:t:/chk:f:literally.- Counter Submit writes Quantity ABSOLUTE (base + staged); never convert to delta.
[Claude Code, telegram UI batch session, 2026-06-10]