Skip to main content

Changelog

Even death stars have an exhaust vent.

Stabilize Facebook and Instagram sync under memory pressure

Fixes

  • Google Drive sync now uploads local changes from Freed Desktop and the PWA instead of only downloading remote data
  • The PWA waits for its Automerge document to initialize before Google Drive sync, manual sync, OAuth callback sync, or relay resume can merge remote data
  • Freed Desktop avoids a fatal Automerge worker timeout when adding RSS feed metadata to a large library
  • Facebook and Instagram sync now fail loudly when a provider returns an empty extraction instead of recording a false success
  • Instagram sync records feed readiness, scroll targets, rejection counts, extraction passes, and store-write details so failed syncs are diagnosable from the field
  • Freed Desktop now gates social sync on effective memory pressure instead of raw WebKit RSS, with detailed app RSS and WebKit RSS shown in provider errors
  • Background semantic classification no longer blocks social sync, and social scraper listener cleanup avoids a Tauri event teardown crash

Follow-ups

  • Public changelog and updater metadata will be refreshed after the production build publishes

Manual cloud troubleshooting joins the June 2 production rollup

Fixes

  • Facebook, Instagram, and LinkedIn sync now share lower-profile feed scrolling behavior
  • 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 extraction restores DOM-based feed parsing and reports why extracted posts normalize to zero usable items
  • Facebook sync now reports unauthenticated or stalled feed pages as real sync failures instead of a successful zero-post pull
  • Zero usable Facebook scrape results still surface as sync issues instead of healthy success
  • Social source status now requires live auth state before showing a connected badge, so old items do not mask a lost provider session
  • Provider login prompts stay visible for disconnected Facebook, Instagram, and LinkedIn accounts instead of being hidden by stale state
  • Social sync defers while the Mac is locked, and Freed Desktop startup waits until the session can safely initialize
  • RSS scheduled polling backs off after runtime deferrals instead of retrying every 15 seconds
  • RSS content backfill defers under WebKit pressure
  • Idle Automerge workers stop reliably after queued work drains
  • Google Drive sync now retries token-refresh download failures and exposes clearer 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
  • Freed Desktop and app.freed.wtf now show a Sync now button for connected Google Drive accounts.
  • Google Drive sync records visible activity events for queued, started, deferred, completed, waiting, and failed work.
  • Sync diagnostics now explain why Last upload can be blank, including when there is no remote file yet or no local change has been uploaded.
  • Desktop and PWA Google Drive token refresh failures now surface as recoverable sync diagnostics instead of falling through silently.
  • The shared sync debug store now records richer transfer state so the same problem can be diagnosed from either connected device.

Follow-ups

  • Facebook group leave now hands off to the provider safely without folding group refresh into normal feed sync
  • Hidden atmosphere layers release memory and skip hidden startup work
  • Provider validation now has a fast lane so future social sync fixes can be proven without running every heavy validation tier
  • Desktop startup diagnostics now capture occluded-window cases that can look like a frozen launch
  • macOS Intel release builds now run on Intel GitHub runners so x64 DMG bundling avoids Apple Silicon cross packaging
  • Release validation now avoids transient restored-sidebar geometry samples after the stable width assertion passes
  • Phase 4, Phase 5, Phase 6, and the public roadmap now describe the manual sync and diagnostics behavior as shipped.

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.

Dense surfaces and mobile validation repairs plus feed pressure relief

Features

  • Mobile PWA polish balances the toolbar, tightens the menu and settings surfaces, moves support into a dedicated modal, and fixes reader spacing and fixed action menus
  • Friends and Map views scale better with dense data through lighter graph avatars, stable marker data while moving, faster map count preparation, and new performance budgets
  • Google Drive sync is more resilient with safer cloud clients, upload retries, and better progress handling for larger local documents

Fixes

  • Dense Map views now skip avatar image layers for large marker sets and hide grid and edge overlays while the map is moving, adding headroom for 1,600-author views
  • Freed Desktop rebuilds compacted feed documents to cut WebKit memory pressure
  • Release validation now keeps Friends graph resize, compact-card, pinch, and position checks stable across CI timing differences
  • Freed Desktop trims Friends graph allocations and keeps dense Map rendering fast
  • Freed Desktop trims oversized WebKit caches before social scrapes
  • Sync and update reliability fixes
  • Reader, feed, and header polish
  • Test coverage and performance hardening
  • Release build and type-safety cleanup

Follow-ups

  • Freed Desktop keeps Friends release validation stable across virtualized sidebar remounts
  • Freed Desktop keeps reader transitions cheaper and Friends performance gates focused on visible rendering work
  • More accurate memory pressure and smoother large views
  • Freed Desktop keeps large social views responsive
  • Freed Desktop keeps WebKit memory maintenance ahead of scrapes
  • Freed Desktop improves dense Map rendering and keeps Google sync on native requests
  • Freed Desktop keeps display preference changes on the fast path and stabilizes Friends graph release checks
  • Reader, sidebar, and settings UX work
  • Release workflow and build-system work
  • Testing, diagnostics, and developer tooling
  • Sync, cloud, and pairing infrastructure
  • Capture, login, and scraping platform work
  • Content and documentation work

Freed Desktop reliability fixes

Fixes

  • Native macOS window dragging now works from the FREED wordmark, nearby titlebar gap, passive toolbar title areas, and fullscreen reader titlebar.
  • Toolbar controls stay clickable because buttons remain explicit no-drag targets while passive titlebar surfaces handle native dragging.
  • Fix stale renderer recovery restarts.
  • Recover stale renderers without blocking the macOS main thread while the old main window unregisters.
  • Let the startup recovery screen scroll in shorter windows so recovery actions stay reachable.
  • Pause heavy background work before high renderer memory can force repeated recovery.
  • Retry deferred startup RSS polls instead of waiting for the next normal polling interval.
  • Batch visible archive actions more aggressively.
  • Restore Linux release compilation for renderer memory diagnostics.