<feed xmlns='http://www.w3.org/2005/Atom'>
<title>prognosis.git/internal/render/ascii.go, branch v0.1.4</title>
<subtitle>hour-by-hour terminal forecast in Go with official IMGW warnings for Polish locations, no API key, no dependencies</subtitle>
<id>https://git.labunix.xyz/prognosis.git/atom?h=v0.1.4</id>
<link rel='self' href='https://git.labunix.xyz/prognosis.git/atom?h=v0.1.4'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/prognosis.git/'/>
<updated>2026-08-27T06:49:38Z</updated>
<entry>
<title>Draw a meteogram, and let the output go somewhere</title>
<updated>2026-08-27T06:49:38Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-27T06:49:38Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/prognosis.git/commit/?id=83a2eaef9853194093a457b0ab65fc231acce23f'/>
<id>urn:sha1:83a2eaef9853194093a457b0ab65fc231acce23f</id>
<content type='text'>
-svg renders the forecast as a standalone SVG: temperature with the apparent
temperature dashed, precipitation as bars with the probability on its own
right-hand axis, and humidity, over shaded night bands with a rule at each
midnight. The rain panel carries two units, so the probability gets a second
axis; read against millimetres a 60% chance looks like 0.6 mm.

Written as markup rather than through gnuplot or a plotting library, so it
needs nothing installed and works wherever the binary does -- the phone
included. Axis ticks are snapped to round values and the number of gridlines
follows the step, since snapping only the ends still yields 12.5 and 27.5.
An hour label that would land under a bold date is dropped, or "23" and
"28.08" render on top of each other.

-o and -out choose the destination, for the table as much as the meteogram. A
directory gets a filename made from the place and the date, so a daily run does
not overwrite yesterday; a bare name gains the extension, so nothing lands as a
file no viewer will open. Colour is omitted when writing to a file. The place
is transliterated rather than stripped, so Zbylitowska Gora keeps its vowels.

Documented which viewers accept a pipe: feh - and chafa do, nsxiv does not and
answers with its usage, which hides the cause. The earlier claim that
ImageMagick renders these files wrong was too broad -- that is convert falling
back to its own renderer; display delegates to rsvg-convert and is fine.
</content>
</entry>
<entry>
<title>Initial commit: prognosis, the Go implementation</title>
<updated>2026-08-13T11:04:10Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-13T11:04:10Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/prognosis.git/commit/?id=e14a7db4ffe3c4e0f15f6b37a980501a8d74d26b'/>
<id>urn:sha1:e14a7db4ffe3c4e0f15f6b37a980501a8d74d26b</id>
<content type='text'>
An hour-by-hour forecast for the terminal, with official IMGW warnings for
Polish locations. Replaces the Python version, whose cache file format it
keeps so the two can coexist until this reaches parity.

Open-Meteo provides the forecast, geocoding and pollen; GUGiK turns
coordinates into a TERYT powiat code; IMGW supplies the warnings, filtered
to that powiat rather than the whole country. Only the two lookups that
never change are cached. Forecasts never are.

Silence is never allowed to read as all-clear: "no warnings in force" and
"the check failed" are reported as distinct states.

Place names are resolved without guessing. A name matching several places
is refused with a numbered list carrying each candidate's region and
coordinates, and -pick N chooses one and remembers it. A stray positional
beside -l is an error, so an unquoted "Wiry, PL" cannot silently resolve to
somewhere else.

The cache is written one entry per line with sorted keys, and treated as
disposable but not worthless: an entry that will not parse is skipped and
the rest kept, and a file that will not parse at all is moved to
cache.json.bad rather than overwritten.

No third-party dependencies. `make ci` is the gate: gofmt clean, vet, tests.
</content>
</entry>
</feed>
