<feed xmlns='http://www.w3.org/2005/Atom'>
<title>prognosis.git/internal/openmeteo, branch main</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=main</id>
<link rel='self' href='https://git.labunix.xyz/prognosis.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/prognosis.git/'/>
<updated>2026-08-25T13:58:38Z</updated>
<entry>
<title>privacy: use Krakow in examples, tests and fixtures</title>
<updated>2026-08-25T13:58:38Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-25T13:58:38Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/prognosis.git/commit/?id=a7941bb92df67686b018fbb601cbf413ea909d14'/>
<id>urn:sha1:a7941bb92df67686b018fbb601cbf413ea909d14</id>
<content type='text'>
A recorded GUGiK fixture was a reverse address lookup for the author's home:
it carried a house number, a postal code and coordinates to about a metre, and
it was published. The place name in the README was the lesser half of the
problem.

Fixtures are re-recorded against Rynek Glowny in Krakow, a public square, and
the tests, spec example and README follow. The README example is regenerated
from the binary.

warnings.json is left as recorded: it is a verbatim national bulletin whose
teryt array lists roughly two hundred powiats, so no single entry says anything
about anyone.

NOTE: this removes the address from the tip, not from history. Commit e14a7db
and its successors still contain it, and remain reachable on any clone or
mirror.
</content>
</entry>
<entry>
<title>Stand alone, document, and let the config show anything</title>
<updated>2026-08-25T13:42:55Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-25T13:42:55Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/prognosis.git/commit/?id=92e1106b91f836339a957312a1ea4449c55114c7'/>
<id>urn:sha1:92e1106b91f836339a957312a1ea4449c55114c7</id>
<content type='text'>
prognosis no longer reads ~/.wegorc. Falling back to another program's
configuration made it useless without wego installed, and hid the fact that
it has no way to know where you are: location= is now required in its own
config, and the error says so and shows how to set it.

Custom columns. Any field the two Open-Meteo APIs expose can be displayed by
declaring it -- column.birch = air:birch_pollen -- and then naming it in
columns=. The source is explicit because forecast and air-quality are separate
services with separate fields; an air column costs one extra request, made only
when one is declared. Air values merge onto forecast hours by timestamp rather
than array index, since nothing guarantees the two endpoints start at the same
hour and merging by position would shift a column by an hour unnoticed. A value
the API withholds renders blank, not zero: for an allergen those are different
claims.

Pollen selection no longer privileges grass. A species named in pollen= is
shown even at zero, because you named it for a reason; pollen=all shows only
what is present, or the line is six zeroes. Grass had been special-cased, which
forced it on someone allergic to birch while hiding theirs.

Temperature colours are compared in Celsius whatever the display units. In
imperial, 85F -- a mild 29C -- was rendering in the red that means IMGW would
issue a heat warning.

A man page, checked by make lint and installed by make install. The Makefile
gains PREFIX/DESTDIR for packaging, a version stamped into the binary, a
release target that refuses to tag a dirty tree or a version with no changelog
entry, cross-compilation for six platforms, and a pre-push hook.

Also: humidity in the default columns, -weather for output meant for someone
else, -ascii so an SMS stays in GSM-7 rather than dropping to 70-character
UCS-2 segments, and -pollen and -version.
</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>
