Skip to main content

Changelog

Even death stars have an exhaust vent.

Mobile sidebar layering, background activity monitor, and saved content sorting

Features

  • Background activity monitor
  • Facebook group leave handoff
  • Saved content sorting

Fixes

  • Mobile sidebar stays above the page on small screens
  • Mobile sidebar spacing now matches the settings sidebar
  • Reader, feed, and header polish
  • Dev release validation is more stable
  • Capture and scraper reliability fixes

Follow-ups

  • Reduce desktop sync stutter
  • Reverse integrate v26.6.303
  • Reduce settings scroll frame work
  • Reduce sync frame pressure
  • Merge main back into dev after v26.6.204
  • Stop idle automerge workers reliably
  • Trim validation runner checks
  • Skip hidden atmosphere startup
  • Release hidden atmosphere layers
  • Reduce renderer atmosphere memory
  • Defer RSS content backfill under WebKit pressure
Dev

Background activity monitor, Facebook group leave handoff, and saved content sorting

Features

  • Background activity monitor
  • Facebook group leave handoff
  • Saved content sorting

Fixes

  • Reader, feed, and header polish
  • Dev release validation is more stable
  • Capture and scraper reliability fixes

Follow-ups

  • Reduce desktop sync stutter
  • Reverse integrate v26.6.303
  • Reduce settings scroll frame work
  • Reduce sync frame pressure
  • Merge main back into dev after v26.6.204
  • Stop idle automerge workers reliably
  • Trim validation runner checks
  • Skip hidden atmosphere startup
  • Release hidden atmosphere layers
  • Reduce renderer atmosphere memory
  • Defer RSS content backfill under WebKit pressure

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.
Dev

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