# dots-cli — v1 design **Date:** 2026-07-29 **Status:** Approved pending user review **Repos touched:** this repo (new, Go CLI) + `humdrum-tiv/dots` (small server PR) ## Purpose A local command-line client for Dots (dots.humdrum.one) optimized for reflex-speed logging from the terminal: paint a block, add a day note, glance at today — faster than reaching for the phone. Third client after web and iOS; rides the same API surface. Explicitly **not** an offline client: no local store, no sync engine, no outbox. Every command is one or two HTTP calls against the production API. If the network is down the command fails fast and says so. ## Command surface (v1) ``` dots auth Link CLI to account (one-time token paste) dots log [time|range] [activity] Paint logged block(s) dots clear Clear logged block(s) dots note "text" [--date D] Append a day note dots today [--date D] [--json] Day grid readout dots types List active activity types ``` Global flags: `--date YYYY-MM-DD` where noted (defaults to today, device timezone), `--yes`/`-y` to skip confirmation prompts, `DOTS_URL` env var to override the server (dev/testing; defaults to `https://dots.humdrum.one`). ### Time syntax Dots blocks are `blockSize`-minute slots, where `blockSize` is a per-day setting of 15, 30, or 60 (`blockIndex = minutesSinceMidnight / blockSize`). The CLI reads `day.blockSize` from the day payload and does all slot math against it. Accepted forms (examples at blockSize 30): - *(omitted)* — the slot containing the current device time - `14:30` (also `9:00`, `09:00`) — the single slot containing that time; times snap down to the slot boundary (`14:47` → `14:30`) - `13:00-15:00` — range, end-exclusive: slots 13:00, 13:30, 14:00, 14:30. Ranges do not cross midnight. Argument parsing: the first positional arg is treated as a time/range only when it matches the time syntax (`H:MM`, `HH:MM`, or a `-`-joined pair); otherwise it is the activity. So `dots log archer` = current slot + archer, `dots log 14:30` = that slot + plan-fill. ### Logging semantics - `dots log