Merged
Conversation
# Release Notes — 40.2.0 ## ✅ Highlights * **Removed interval-based polling from Sigil Explorer sync**, cutting unnecessary network traffic and background activity. Sync now runs **only on meaningful app events** (open / visibility / focus / online) instead of continuous timed loops. **Files:** * `src/components/SigilExplorer/SigilExplorer.tsx` * `src/components/SigilExplorer/SigilHoneycombExplorer.tsx` * **Latest commit stats:** `git show --stat -1` *(Included as the canonical source for the exact touched files/line counts for this release.)* --- ## 🔧 Behavioral Changes ### Push/Pull cadence removed * The prior inhale/exhale timers that ran every few seconds are **fully removed**. * The app **no longer hits the API on a constant interval**. **Sources:** * `src/components/SigilExplorer/SigilExplorer.tsx` * `src/components/SigilExplorer/SigilHoneycombExplorer.tsx` ### Sync occurs only when it matters Sync is now triggered exclusively by user/app lifecycle events: * Opening the explorer * Visibility changes * Window focus * Network reconnect (online event) **Sources:** * `src/components/SigilExplorer/SigilExplorer.tsx` * `src/components/SigilExplorer/SigilHoneycombExplorer.tsx` --- ## ✅ Network Efficiency Gains * **Significant reduction in API requests** by removing scheduled background polling. * **Correctness retained:** * Sync still executes on **open / visible / focus / online** events * Local registry behavior remains intact, including **enqueueing inhales on new data** **Sources:** * `src/components/SigilExplorer/SigilExplorer.tsx` * `src/components/SigilExplorer/inhaleQueue.ts` * `src/components/SigilExplorer/registryStore.ts` --- ## 🧪 Testing * **No automated tests were run for this release.** **Source:** `git show --stat -1` --- ## 🔮 Future Plans — Remove External API & Replace with Internal Functions This is the forward path for eliminating external API dependency while preserving the same sync guarantees and behavior. It’s grounded in the current code layout and the existing touchpoints. --- ### 1) Replace API Inhale/Exhale with Internal State Sync **Today** * Push (inhale) calls `apiFetchWithFailover` via `API_INHALE_PATH` * `src/components/SigilExplorer/inhaleQueue.ts` * Pull (exhale) uses `API_SEAL_PATH` + `API_URLS_PATH` * `src/components/SigilExplorer/SigilExplorer.tsx` * `src/components/SigilExplorer/remotePull.ts` **Future direction** * Implement an **internal sync layer** that persists locally and synchronizes through in-app state mechanisms (ex: `BroadcastChannel` + storage mirroring). * Replace: * `apiFetchWithFailover` * API path constants (currently centralized in `src/components/SigilExplorer/apiClient.ts`) * With internal service functions that read/write to: * local registry storage (`registryStore.ts`) * in-memory registry (`memoryRegistry`) * optional local persistent store (IndexedDB/local storage abstraction) **Sources:** * `src/components/SigilExplorer/inhaleQueue.ts` * `src/components/SigilExplorer/remotePull.ts` * `src/components/SigilExplorer/apiClient.ts` * `src/components/SigilExplorer/registryStore.ts` --- ### 2) Replace “Remote Seal” with Internal Seals **Today** * The API “seal” is used to detect remote changes (`API_SEAL_PATH`), then pull executes when: * seal changes, or * pulses are newer **Future direction** * Maintain a **local/global seal** derived from registry mutations, such as: * a deterministic hash of known registry URLs, or * a seal derived from the latest pulse/state frontier * Broadcast seal changes across tabs/devices using existing registry broadcast utilities. Result: **remote seal dependency disappears** entirely. **Sources:** * `src/components/SigilExplorer/SigilExplorer.tsx` * `src/utils/sigilRegistry.ts` * `src/components/SigilExplorer/registryStore.ts` --- ### 3) Consolidate Sync into a Single Internal Event Bus **Today** * Sync is already wired to lifecycle events (visibility/focus/online). **Future direction** * Expand the internal event system to become the **sole driver** of synchronization: * when `registerSigilUrl` fires * when registry storage changes * when broadcast events announce updates * Use `BroadcastChannel` + storage events to ensure all local instances remain consistent **without any server**. **Sources:** * `src/utils/sigilRegistry.ts` * `src/components/SigilExplorer/registryStore.ts` --- ### 4) Optional: Device-to-Device Sync (Replacing Server) Once the external API is fully removed, the next frontier is optional device-to-device alignment: Potential approaches: * WebRTC peer sync * Local LAN discovery * User export/import flows (global “memory crystal” exchange) This is **product direction** (not implemented yet), but it cleanly extends the same internal-event architecture. --- ## What This Means Practically * **Short term (40.2.0):** Massive API noise reduction by removing constant polling. * **Mid term:** External API can be replaced entirely with an **internal registry + event-driven sync**, keeping the same guarantees. * **Long term:** Cross-device sync becomes an optional transport layer (peer-to-peer or user-mediated), eliminating dependency on remote infrastructure while preserving global alignment semantics. ---
…registry-updates Restore periodic Sigil Explorer sync (phase‑locked breath timer)
…i-logic Reduce Sigil Explorer sync polling
|
@kojibai is attempting to deploy a commit to the realbrianklockgmailcom's projects Team on Vercel. A member of the Team first needs to authorize it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.