| Age | Commit message (Collapse) | Author |
|
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/<chartA>__<chartB>/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 <noreply@anthropic.com>
|
|
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 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
- Inline DeriveTime from func/deriveTimeString.sh; delete func/
- Add set -euo pipefail, quoting, and stderr for error messages
- Archive PDFs to /var/lib/synoptic/archive/raw/ after conversion
- Publish PNG to /srv/www/synopticLatest.png
- Add systemd units: synoptic.{service,timer}, synoptic-retry.{service,timer}
- Timer fires at 02:10, 08:10, 14:10, 20:10 UTC (2h after BOM publish slots)
- Add nginx site config for pestrel.com
- Add setup.sh (run once on VPS as root) and deploy.sh (run from cr4y)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|