| Age | Commit message (Collapse) | Author | Files | Lines |
|
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>
|
|
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>
|
|
A polybar backup script for OWM turned up, which beats the weather.com
scraper: it has a working condition mapping. Port the domain knowledge,
not the code.
Worth keeping: the OWM condition-id ranges, day/night selection against
sys.sunrise/sys.sunset, and the Beaufort wind thresholds. Becomes a
table in data.lua.
Not portable: polybar %{F}/%{T} format tokens, hardcoded hex (UDT roles
replace them), bc conversions (Lua arithmetic), one-line output (a
card). So the script shrinks to curl-and-cache and Lua does the rest.
The reference script hardcodes a live API key plus city and country. The
key and location move to ~/.config/udt/weather.env, outside the repo,
same reasoning as roles.conf. Nothing carries a key in-repo, and
weather.env is gitignored so a stray copy cannot be staged.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
Conky dashboard drawn with Cairo from Lua, on a Hyprland special
workspace. Replaces UDT's variables-based conky.conf.in.
Platform facts verified before fixing the design, since each one
invalidates a common approach:
- Cairo on Wayland needs conky_surface(). The usual
cairo_xlib_surface_create idiom gets a nil drawable and visual under
out_to_wayland, so every tutorial using it is wrong here.
- own_window_type='normal' makes Conky a real toplevel that a Hyprland
windowrule can place; 'desktop' is a layer-surface and cannot be
assigned to a workspace.
- Cairo output covers conky.text, so conky.text stays empty.
Layout is a table of grid cells at the top of dashboard.lua, so
reordering widgets is one edit and the same table works on both
monitors. The 2560x1600 mockup's vertical stack does not fit the
2560x1080 primary, which is what motivates cells over pixels.
hwmon glob-by-name is carried over from the old config deliberately:
fixed indices drift across kernel reorders and silently read the wrong
chip.
v1 is one clock card end to end. Widgets are additive after that.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|