Consolidate locally-defined constants into constants.py (single source
of truth for all uplink modulation and ranging parameters). Update
__init__.py with new imports across all three tiers. Add signal
architecture, block reference, and demo guide documentation for the
uplink and ranging subsystems.
The blanket max-age=3600 caused stale HTML pages after redeployment.
Now _astro/* gets immutable (content-addressed filenames) and HTML
pages get no-cache (always revalidate, 304 when unchanged).
Link Mike Stewart's GitHub (thewonderidiot), add the full Apollo
Comms YouTube playlist, and reference Ken Shirriff's PMP and FM
radio posts that directly relate to gr-apollo's block architecture.
FM mode now has the same three-layer architecture as PM mode:
- fm_mod/fm_demod for carrier-level FM modulation
- fm_signal_source/fm_downlink_receiver convenience wrappers
- fm_loopback_demo.py verifying round-trip SCO voltage recovery
Includes GRC YAML for all 4 blocks and doc updates across
blocks reference, SCO guide, and signal architecture pages.
Custom renderer with NASA-blue theme, Inter font, signal arc decoration.
Generates 1200x630 PNG per page at build time via astro-opengraph-images.
Head component injects og:image meta tag using getImagePath().