<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bomSynoptic.git, branch master</title>
<subtitle>Display the latest Synoptic (isobaric) weather chart from the Australian Bureau of Meteorology
</subtitle>
<id>https://f3rr3t.com/bomSynoptic.git/atom?h=master</id>
<link rel='self' href='https://f3rr3t.com/bomSynoptic.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://f3rr3t.com/bomSynoptic.git/'/>
<updated>2026-06-10T10:26:30Z</updated>
<entry>
<title>Memoir: synoptic morph timelapse session</title>
<updated>2026-06-10T10:26:30Z</updated>
<author>
<name>St33v</name>
<email>github@f3rr3t.com</email>
</author>
<published>2026-06-10T10:26:30Z</published>
<link rel='alternate' type='text/html' href='https://f3rr3t.com/bomSynoptic.git/commit/?id=ac348c4279104aa15c9fbabf58ac423f218f7491'/>
<id>urn:sha1:ac348c4279104aa15c9fbabf58ac423f218f7491</id>
<content type='text'>
PoC arc (three iterations), the cremonde storage reckoning that
forced a workspace migration to /mnt/enclave, and the production
pipeline shape — content-addressed pair cache, rolling 30-day
window, OnSuccess= chain off synoptic.service.

Side-quest captured: a small "latest transition" mp4, deferred.

Co-Authored-By: Claude Opus 4.7 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add synoptic-morph: 30-day rolling morph timelapse</title>
<updated>2026-06-10T09:10:38Z</updated>
<author>
<name>St33v</name>
<email>github@f3rr3t.com</email>
</author>
<published>2026-06-10T09:10:38Z</published>
<link rel='alternate' type='text/html' href='https://f3rr3t.com/bomSynoptic.git/commit/?id=e433a99ceddf7168d23377ffc8d585fc80ba8fb2'/>
<id>urn:sha1:e433a99ceddf7168d23377ffc8d585fc80ba8fb2</id>
<content type='text'>
synopticMorph.sh: rolling-cache implementation. On each run:
1. Pick the last WINDOW_DAYS*4 charts from the archive.
2. For each adjacent pair, fill any missing pair-morph (cached at
   /mnt/enclave/synoptic/pairs/&lt;chartA&gt;__&lt;chartB&gt;/p_NNNN.png).
3. Evict pair dirs whose slug isn't in the current window.
4. Symlink frames into a temp seq dir with LINGER on each source
   chart and DWELL on the latest, fade-in 1s and fade-out 2s.
5. Encode to /srv/www/pestrel/morph.mp4 with ffmpeg/h264.

Bootstrap: ~50 min CPU on first run (119 pair morphs at ~25s each).
Steady state: ~1 min/cycle (1 new pair + concat + encode).

synoptic-morph.service: oneshot, TimeoutStartSec=2h to cover the
bootstrap, Nice=10 + IOSchedulingClass=idle so it doesn't fight
the system for CPU/disk.

synoptic.service gains OnSuccess=synoptic-morph.service so the
chain fires automatically after each successful chart fetch.

morph.html: points at /morph.mp4 now. index.html: "Three-day
history" button renamed to "Monthly history", URL /morph.html.

setup.sh: installs the new unit + script, provisions
/mnt/enclave/synoptic/{pairs,out} when the enclave mount is present.

.gitignore: drop .claude/ (transient harness state).

Co-Authored-By: Claude Opus 4.7 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Side-quest note: migrate radar fetch to stan</title>
<updated>2026-06-10T03:56:27Z</updated>
<author>
<name>St33v</name>
<email>github@f3rr3t.com</email>
</author>
<published>2026-06-10T03:56:27Z</published>
<link rel='alternate' type='text/html' href='https://f3rr3t.com/bomSynoptic.git/commit/?id=59e7c485be1e9be62f0b4cdb7d1130701c1e3c46'/>
<id>urn:sha1:59e7c485be1e9be62f0b4cdb7d1130701c1e3c46</id>
<content type='text'>
Captures the deferred plan to move BOM FTP fetching off the SG VPS
(cremonde) onto the AU pi (stan), with stan rsyncing finished APNGs
to cremonde over WireGuard. Trigger conditions, design, and open
questions documented for a future agent (or future st33v) to pick
up if/when warranted.

Co-Authored-By: Claude Opus 4.7 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Memoir: radar follow-up session</title>
<updated>2026-06-10T03:40:11Z</updated>
<author>
<name>St33v</name>
<email>github@f3rr3t.com</email>
</author>
<published>2026-06-10T03:40:11Z</published>
<link rel='alternate' type='text/html' href='https://f3rr3t.com/bomSynoptic.git/commit/?id=324091e0335cca833c4422f8aaf04a1e9f6f20de'/>
<id>urn:sha1:324091e0335cca833c4422f8aaf04a1e9f6f20de</id>
<content type='text'>
Captures the TLS-fallthrough fix, two more radars, cross-page nav,
mobile sizing, and the Radars button on synoptic — all on
2026-06-10, day after the initial rollout.

Co-Authored-By: Claude Opus 4.7 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add Canberra and Cairns radars; cross-page nav</title>
<updated>2026-06-10T03:30:38Z</updated>
<author>
<name>St33v</name>
<email>github@f3rr3t.com</email>
</author>
<published>2026-06-10T03:30:38Z</published>
<link rel='alternate' type='text/html' href='https://f3rr3t.com/bomSynoptic.git/commit/?id=ba84faaf144cd15af3aba2650c043467fe31ee06'/>
<id>urn:sha1:ba84faaf144cd15af3aba2650c043467fe31ee06</id>
<content type='text'>
Two new product codes: IDR403 (Canberra) and IDR193 (Cairns).
radar.service / radar-retry.service gain two more ExecStart= lines.

Per-radar pages: nav strip at top with all four radars + a Synoptic
button linking to pestrel.com; current page is highlighted. Layout
switched to column flex (nav on top, image fills below) and the
image now uses `width: 100%; max-width: 512px` so it fills phone
viewports without upscaling beyond the BOM-native 512px on desktop.

Synoptic page (index.html): "Radars" button fixed to the left edge
at top 16.6%, linking to https://radar.pestrel.com/.

Landing page (radar.pestrel.com/): rebalanced for four radars plus
a dashed-border Synoptic button.

nginx/radar.pestrel.com.conf: pulled in the certbot-managed TLS
block so a fresh setup matches production state.

Co-Authored-By: Claude Opus 4.7 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Memoir: BOM radar rollout session</title>
<updated>2026-06-09T07:19:24Z</updated>
<author>
<name>St33v</name>
<email>github@f3rr3t.com</email>
</author>
<published>2026-06-09T07:19:24Z</published>
<link rel='alternate' type='text/html' href='https://f3rr3t.com/bomSynoptic.git/commit/?id=5eff385770b3a7ddcfb9fcf4349be28013251a75'/>
<id>urn:sha1:5eff385770b3a7ddcfb9fcf4349be28013251a75</id>
<content type='text'>
Captures the spec → deployed-and-looping arc for IDR713 and IDR663,
the three real bugs encountered (silent IM single-frame PNG, ffmpeg
palette mismatch, git remote user mix-up), and a temp-file race
side-quest worth hardening later.

Co-Authored-By: Claude Opus 4.7 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add Brisbane radar (IDR663) alongside Sydney</title>
<updated>2026-06-09T07:11:47Z</updated>
<author>
<name>St33v</name>
<email>github@f3rr3t.com</email>
</author>
<published>2026-06-09T07:11:47Z</published>
<link rel='alternate' type='text/html' href='https://f3rr3t.com/bomSynoptic.git/commit/?id=258a3bec5192106e1e24e65763649b7f6943af9e'/>
<id>urn:sha1:258a3bec5192106e1e24e65763649b7f6943af9e</id>
<content type='text'>
radar.service / radar-retry.service now invoke radarFetch.sh once
per product code, prefixed with `-` so one radar's outage does not
skip the other.

Landing page at / links to /sydney and /brisbane; each per-radar
page is the familiar black-page full-image idiom with a small
corner link to its sibling.

setup.sh provisions the subdirs and installs all three pages.

Co-Authored-By: Claude Opus 4.7 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Force rgba in ffmpeg apng pipeline</title>
<updated>2026-06-09T04:05:18Z</updated>
<author>
<name>St33v</name>
<email>github@f3rr3t.com</email>
</author>
<published>2026-06-09T04:05:18Z</published>
<link rel='alternate' type='text/html' href='https://f3rr3t.com/bomSynoptic.git/commit/?id=71a0aecb76984347292199db328142bef4807088'/>
<id>urn:sha1:71a0aecb76984347292199db328142bef4807088</id>
<content type='text'>
Composited frames are palette-based PNGs with slightly different
palettes per frame; ffmpeg's apng encoder rejected this with
"Input contains more than one unique palette." Converting to rgba
in the filter chain gives all frames the same pixel format.

Co-Authored-By: Claude Opus 4.7 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Use ffmpeg apng muxer for radar loop</title>
<updated>2026-06-09T03:07:17Z</updated>
<author>
<name>St33v</name>
<email>github@f3rr3t.com</email>
</author>
<published>2026-06-09T03:07:17Z</published>
<link rel='alternate' type='text/html' href='https://f3rr3t.com/bomSynoptic.git/commit/?id=421b7cbb42341bf2ce6ce99afe782ac89738519d'/>
<id>urn:sha1:421b7cbb42341bf2ce6ce99afe782ac89738519d</id>
<content type='text'>
ImageMagick on Arch lacks the APNG png-writer; magick was silently
producing single-frame PNGs. Switch to ffmpeg's concat demuxer +
apng muxer, which gives proper animated APNG with per-frame
durations (last frame still gets END_PAUSE).

Add ffmpeg to the pacman install list in setup.sh.

Co-Authored-By: Claude Opus 4.7 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add IDR713 radar fetch and APNG loop</title>
<updated>2026-06-09T03:04:04Z</updated>
<author>
<name>St33v</name>
<email>github@f3rr3t.com</email>
</author>
<published>2026-06-09T03:04:04Z</published>
<link rel='alternate' type='text/html' href='https://f3rr3t.com/bomSynoptic.git/commit/?id=f058e83da43b0b661b45a7bd4c82b49c57e61d93'/>
<id>urn:sha1:f058e83da43b0b661b45a7bd4c82b49c57e61d93</id>
<content type='text'>
radarFetch.sh fetches BOM IDR713 transparencies (24h cache) and the
last six 6-minute echo frames, composites them via cached lower/upper
plates, and publishes an APNG loop to /srv/www/radar/.

systemd: radar.{service,timer} on a 6-min cadence, with retry units
mirroring the synoptic pattern.

nginx: new radar.pestrel.com vhost (still commented in setup.sh until
DNS propagation is confirmed).

setup.sh provisions radar dirs, installs radar units, enables timer.
deploy.sh accepts synoptic|radar arg.

Parameterised on product code; adding another radar is a one-line
config change.

Spec: doc/bom-radar-spec.md.

Co-Authored-By: Claude Opus 4.7 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
