aboutsummaryrefslogtreecommitdiffstats
path: root/docs/superpowers/specs/2026-09-17-weather-widget-design.md
AgeCommit message (Collapse)AuthorFilesLines
2026-09-17fix: correct the .cod rationale, and stop world-reading the cacheDanilo M.1-4/+7
The comment claimed a bad key returns HTTP 200 with an error body, so the status code alone proves nothing. Measured against the live API, that is wrong: a bad key returns 401 and an unknown city 404, and with curl -f both fail at curl without the .cod check ever running. The claim came from the polybar script, which ran curl WITHOUT -f and so genuinely did receive error bodies with a success exit. The check was ported but not the reason for it. It still earns its place behind -f, for a 200 whose body is not usable weather, and the comment now says that instead of something false. The spec carried the same wrong sentence and is corrected too. Separately, the cache landed at 644 in a directory where every other generated file is 600, and the response carries the configured city and its coordinates. A umask before the write puts it at 600 without a window where it is briefly readable. The .cod discrepancy was found by the Task 6 implementer, which noticed the bad-key test produced a different message than the plan predicted and said so rather than reporting the expected text as achieved. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17docs: add the weather widget designDanilo M.1-0/+239
One vertical card merging idea1.png's two: conditions on top, a sunrise-to-sunset arc at the bottom, with the times at the arc's ends behind sunrise/sunset glyphs. Decisions worth recording rather than rediscovering: - The fetch runs from `${execi}` in conky.text, not a systemd timer, so refresh is tied to the dashboard's lifetime. conky.text is empty in this config because Cairo covers it, so whether execi fires at all was probed rather than assumed: it does, even when the command prints nothing. - Inconsolata Nerd Font already carries the Weather Icons range and the two sunrise/sunset glyphs, so no new font. Confirmed by rendering the codepoints and looking at them; an fc-list query alone had wrongly reported them missing, and a missing glyph in conky is an invisible blank rather than an error. - The cache is written atomically, since the widget reads it on an unrelated 2s cadence and would otherwise parse a half-written file. - A bad key returns HTTP 200 with a JSON error body, so the fetch checks .cod before replacing the cache, and never overwrites good data with an error. - Missing and stale states draw the normal card chrome with a notice. An empty cell was rejected: it looks exactly like a crashed widget. Also ignores .superpowers/, the brainstorming session directory. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>