Changelog
Even death stars have an exhaust vent.
Facebook sync now requires real feed evidence before treating a page as scrapeable, so tall logged-out Facebook shells fail fast instead of looking like empty feeds.
Fixes
- Facebook page checks now require a live cookie, the Feed posts heading, or rendered feed units before marking a page feed-like
- Logged-out Facebook pages with generic main content and tall layout now fail closed instead of wasting scrape passes
- Facebook extraction diagnostics now include feed unit and login chrome evidence for faster follow-up debugging
- Facebook sync now reports unauthenticated or stalled feed pages as real sync failures instead of a successful zero-post pull
- Social source status now requires live auth state before showing a connected badge, so old items do not mask a lost provider session
- Google Drive sync now retries token-refresh download failures and exposes clearer sync diagnostics before falling back to an empty cursor
- Google Contacts token refresh failures now stay recoverable in Settings instead of opening the fatal recovery screen
This dev build adds Facebook zero-post diagnostics and keeps RSS retry pacing and installed dev-channel validation ready for the next soak
Fixes
- Capture and scraper reliability fixes
- Release build and type-safety cleanup
- Reader, feed, and header polish
- Align social memory preflight test
- Recover social sync after memory deferrals
- Recycles idle Automerge sync workers after queued document work finishes
- Raises adaptive memory guardrails on high-memory systems so long-running provider sync has more headroom
- Keeps the Phase 7 docs and public roadmap aligned with the new social scrape memory behavior
Follow-ups
- Backflow v26.5.3113 main into dev
- Adapt social scrape load to memory headroom
- Reduce desktop sync memory pressure
- Keeps Facebook group refresh explicit, repairs dev release validation, and carries forward the latest social sync recovery fixes
- Facebook sync now reports unusable scrape results as sync issues and adds diagnostics for the next dev soak
- Use this build for the next Facebook sync soak and inspect the new diagnostics if the provider still returns zero usable posts
- Install this build and verify RSS failures stop piling up in sync health
This production build focuses on capture reliability, sync recovery, and interface stability.
Features
- Story Wall can publish curated collections from the shared reader library.
- PWA social setup now mirrors Freed Desktop provider consent and status flows.
- Friend and Map surfaces scale better for dense libraries with lighter graph and marker rendering.
Fixes
- Facebook feed sync now treats zero usable posts as a warning, records extraction diagnostics, and preserves more post IDs.
- Social scrapes adapt pass counts to available memory and record plan details before opening provider WebViews.
- Normal Facebook feed sync no longer visits the joined-groups page unless manual group refresh is explicitly confirmed.
- Google OAuth relays dev and preview callbacks through the production callback without losing PKCE state.
- RSS polling is bounded and refresh planning avoids duplicate startup work.
- Google Drive and Google Contacts share native sync state with clearer error reporting.
- Automerge sync workers recycle after queued document work finishes to reduce idle memory pressure.
- Renderer recovery, hidden-window memory sampling, and release channel checks have stronger diagnostics.
- Reader rail collapse, compact sidebar transitions, persisted map filters, and fast reader opening have tighter regression coverage.
- Settings, Friends, and Map performance budgets cover dense lists, graph movement, and marker rendering.
- Release tooling now allows the production promotion website build config while keeping promotion branch guards strict.
- Historical release-note artifacts were cleaned up so production validation can audit the full promoted history.
- Installed dev release channel labels now survive production builds that share the same base version.
Follow-ups
- Use provider diagnostics from this build when investigating any remaining Facebook zero-post reports.
- Keep monitoring installed memory pressure during long social sync so scrape budgets can be tuned from real data.
Builds:v26.5.3113
PRs:#379#405#560#563#564#565#566#567#568#569#570#571#573#574#575#576#577#578#579#580#581#582#583#584#585#586#587#588#589#591#592#595#596#597#598#599#601#602#603#604#605#606#607#608#609#610#611#612#613#614#615#616#617#618#619#620#621#622#623#624#625#626#627#628#629#630#631#632#633#634#635#636#637#638#640#641#644#645#646#647#648#649#654#655#656#657#658#659#661#665#666#668#670#671#672
Google sync recovery and lower Settings pressure
Features
- Safe sample data cleanup
- Guard nightly runner branch context
- Guard provider-visible peer work
Fixes
- Keep hidden renderer throttling from pausing sync
- Provider sync is now more stable under memory pressure
- Reader, feed, and header polish
- Mark Dropbox sync as coming soon
- Capture and scraper reliability fixes
- Prevent dev release note rollup repeats
- Loaded libraries no longer rebuild Automerge history just to check for possible savings when no synced text changed, avoiding another startup allocation spike
- Clean startup loads now hydrate the first UI state without reserializing or rewriting an unchanged Automerge document
- Google Contacts now recovers from stale in-progress sync state after a successful People API fetch
- Manual Google Contacts reconnect and Sync Now actions force a fresh sync instead of being skipped by the automatic sync cooldown
Follow-ups
- Nightly preflight actions
- Gate nightly performance targets on soak quality
- Nightly soak pointer repair
- Nightly runner readable soak fallback
- Changelog preview to update settings
- Skip unchanged Automerge history probes
- Project desktop feed items without full clone
- Cap background article fetch size
- Safer overnight article backfill
- Keeps explicit reader loads available while the lower-priority background path stays under a native response-size budget
- Lower startup memory pressure
- Shared content-signal backfill now scans feed items in one pass instead of building stale item arrays for every batch
Safer startup refreshes and nightly runner guardrails
Features
- Nightly runner duplicate detection
- Nightly runner outcome closeout
- Nightly runner risk snapshot
Fixes
- Removed a stale desktop refresh import that blocked the replacement dev build
- Route desktop Google OAuth through proxy
- Lighten focus mode emphasis
- The dev release workflow now forces the Google proxy path and includes a guard that prevents direct Google token exchange from shipping again
- Friends graph pinning stays intentional: dense friends graph interactions no longer create accidental pinned states when the graph is already heavily populated
Follow-ups
- RSS polling now stays RSS-only, so routine background feed checks no longer wake authenticated social scraping paths
- Lazy load friends graph
- Defer sidebar feed search
- Defer settings list filtering
- Nightly runner execution plan
- Avoid redundant reader hydration
- Verify scraper WebKit recycling
- Google sign-in and interaction polish
- Faster dense views with safer nightly tuning