v29.7.3
Release Notes — v29.7.2 (Sovereign Gate / ΦNet PWA + Sigil Explorer Breath-Sync Hardening)
🔥 Highlights
- Breath-cadenced global sync (LAH-MAH-TOR): SigilExplorer now runs on a true inhale/exhale lifecycle with φ-pulse cadence (~5.236s) and Kai-time deterministic ordering (pulse/beat/step), not Chronos sorting.
- Sharing + routing made “real-world safe”: Legacy stream routes and short token routes normalize cleanly so links actually survive copy/paste + mobile share surfaces.
- PWA stability & speed upgrades: Service worker behavior, precache guarantees, and “first paint” performance have been tightened so the app feels instant and stays reliable offline.
✅ What’s New
1) SigilExplorer v3.10.7 — LAH-MAH-TOR Breath Sync (Mobile Scroll Stability Hardening)
-
On OPEN behavior is sealed:
- Inhale: push everything local → API
- Exhale: pull anything new ← API
-
Every φ-pulse (~5.236s):
- inhale (flush) + seal-check + exhale (pull-if-changed)
-
No double adds:
- URL-level registry is a Map
- UI dedupes by content identity
-
Remote echo-loop prevention:
- Remote imports do not re-inhale automatically (prevents feedback loops)
-
Deterministic ordering is Kai-only:
- Ordered by Kai pulse/beat/stepIndex
- No Chronos ordering used anywhere in the canonical flow
-
Stream view normalization baked in:
- Any
/stream/p/<token>(or/p~<token>) is displayed/opened as/stream#p=<token> - Copy/Open always uses the working normalized format
- Any
2) Router normalization — legacy hash → canonical stream open
-
Added/strengthened rewriting so older link forms don’t fragment the UX:
#/stream/p/<token>?add=...→ canonical#-based open flow- Short token route support aligned with your SMS-safe strategy (
/p~<token>)
-
Net result: links remain stable across browsers, mobile share sheets, and copy/paste contexts.
3) App shell performance hardening (instant first paint + heavy UI deferred)
From your App.tsx work today:
-
Instant first paint strategy:
- Heavy modules are code-split
- Suspense fallback stays null/blank spacer (no “fake loading splash”)
-
Homepage splash killer behavior preserved:
- Boot overlays don’t block
/
- Boot overlays don’t block
-
Warm timer fix:
warmTimer not defined→ resolved using a ref-based timer
-
SW warming is disciplined:
- runs idle-only
- re-warms on focus
- abort-safe
- respects Save-Data / 2G style constraints
4) Lazy route prefetching — real UX speed (without jank)
-
Prefetch targets were defined for the routes you’re actually using:
SigilFeedPageSigilPagePShortVerifyPageVerifierStamper
-
Result: navigation feels “already loaded” without forcing upfront bundle weight.
5) PWA build pipeline tightening — version + asset correctness
Based on the Vite/plugin work you showed today:
- Build version stamping uses package version + commit SHA (when present), producing a stable
VITE_APP_VERSIONstyle identity for deploys. - Static PWA assets explicitly tracked (ex:
offline.html,manifest.json,favicon.ico) to avoid “it works on desktop but not on mobile PWA” cache divergence. - Overall goal achieved: assets and SW stay in sync across releases, preventing “ghost lag” from stale worker/caches.
🛠 Fixes
-
Service Worker correctness preserved as a hard invariant:
/sw.jsand (if present)/service-worker.jsmust return JavaScript (not HTML via SPA fallback).
-
Mobile stability improvements:
- Reduced-motion compatibility + splash phase logic (show → fade → hidden) avoids iOS reflow/jank patterns.
-
Share-path survivability:
- The
/p~<token>direction aligns with your goal of not breaking in SMS/iMessage contexts and keeps sharing viable even when long payload URLs glitch.
- The
⚡ Performance & UX Impact
- Perceived speed: faster first meaningful paint + smoother route transitions via prefetch.
- Deterministic rendering: one canonical view per payload, even if multiple URL variants exist.
- Offline/PWA snappiness: reduced cache mismatch risk by making build output + worker identity consistent.
🔁 Upgrade / Compatibility Notes
-
Old links are still supported, but canonical output is normalized:
- Canonical open/display:
/stream#p=<token> - SMS-safe short form supported:
/p~<token>
- Canonical open/display:
-
If any external posts still point to
/stream/p/<token>, they will still resolve, but UI will “snap” to the canonical format for consistency.
✅ Verification Checklist (v29.7.2)
Run this exactly after deploy:
- Service worker endpoints
- Open:
/sw.js - Open:
/service-worker.js(if you expose it)
Confirm response is JS, not HTML.
- Fresh install
- Incognito → load app → confirm SW installs + claims clients.
- Offline truth
- Load once → toggle offline → navigate to core routes → confirm cached views load.
- Route normalization
-
Test these inputs:
/stream/p/<token>/p~<token>#/stream/p/<token>?add=...
-
Confirm they resolve and end up opening as:
/stream#p=<token>
- Breath cadence behavior
-
Open SigilExplorer and watch:
- immediate inhale → exhale
- repeating φ-pulse cycle (~5.236s)
- no duplication in UI when URL variants exist
What's Changed
- v29.6.2 by @Phinetwork in #54
- v29.6.3 by @Phinetwork in #55
- 29.6.4 by @kojibai in #56
- v29.6.7 by @Phinetwork in #57
- v29.6.8 by @Phinetwork in #58
- v29.7.2 by @Phinetwork in #59
- v29.7.3 by @Phinetwork in #60
New Contributors
Full Changelog: v29.6...v29.7.3