Updates
Even death stars have an exhaust vent.
Stability-instrumentation build: structured window-kill records, sync and worker loop counters, and daily runtime-health rotation to baseline the stability program's first overnight soak
Features
- Structured window_destroyed kill records: every watchdog window teardown now logs a structured runtime-health record with the destruction reason (stability P0-02)
- Loop counters for cloud uploads (including uploads with unchanged heads), relay broadcasts, Automerge worker INITs, and scrape outcomes (stability P0-03)
- Daily runtime-health rotation replacing the 5 MiB halving cap, so long soaks keep a full evidence window (stability P0-04)
Fixes
- Runtime-health rotation now compiles on Linux (libc scoped to all unix targets)
- The CI perf regression gate now fails on real regressions instead of always passing
- Runtime-health is mirrored into the active soak directory so rotation cannot shrink soak evidence
- Bounded social loop diagnostics parsing
- Map time presets refined; content details save in the background
Follow-ups
- Soak collector and soak-assert scripts with a machine-readable verdict
- scripts/doctor.mjs machine preflight for loops and worktree helpers
- Automation loop state moved out of /tmp into ~/.freed/automation, with merge outcomes auto-recorded
- Single-source provider-visible path list with publish-time enforcement (W1-06)
- worktree-publish --ready closeout flag so finished PRs leave draft
Social scraping now has stronger memory recovery diagnostics, local loop locking, and zero-post failure reporting, with graph pin release validation stabilized
Features
- Map time range slider
Fixes
- Social scrape memory preflight now records recovery state and avoids treating stale local memory deferrals as durable provider failures
- Facebook, Instagram, LinkedIn, and X scrape diagnostics now rank safe local next actions without increasing provider-visible traffic
- Instagram zero-post failures now surface in the local optimization loop even when runtime diagnostics are sparse
- Graph pin release validation now waits for Automerge persistence before reloading
- Worktree creation now sources the shared Node tooling helpers before running its preflight
- Release validation now removes a stale Azure CLI apt source before installing Playwright browser dependencies on GitHub-hosted Ubuntu runners
Social sync memory cleanup now runs after failed provider scrapes
Fixes
- Run post-sync memory cleanup after Instagram placeholder-feed failures
- Recover reclaimable WebKit memory tails after social scrapes before later providers stall
- Report LinkedIn zero-event scrapes as IPC timeouts instead of successful empty feeds
Freed Desktop keeps locked installed sync soaks quiet and avoids waking WebKit while waiting for the workstation to unlock.
Fixes
- Destroy and rebuild the main WebView when idle WebKit memory is reclaimable but still resident.
- Recover visible main-renderer WebKit resident tails once they cross the high-memory threshold.
- Ignore stale age-matched WebKit process telemetry after a rebuild, which prevents repeated recovery loops and unnecessary background safe mode.
- Record post-recovery memory verification so failed WebKit reclaim can be diagnosed from the health log.
- Restart Freed Desktop when a renderer rebuild leaves the same main WebKit process above the high-memory line.
- Keep post-scrape reclaimable WebKit resident-tail cleanup below the high-memory threshold from rebuilding the main renderer, so Instagram and LinkedIn retries do not trip recovery backoff while memory is still under budget.
- Prevent the installed sync trigger helper from requeueing Instagram or LinkedIn during provider-safe cooldown windows.
- Stop the native trigger watcher from replaying a request when the renderer rebuild happens after the provider run already finished.
- Fail LinkedIn zero-post runs with local DOM diagnostics for candidate counts, activity URNs, login chrome, feed containers, and URL instead of treating them as successful empty syncs.
- Slow locked-machine terminal sync trigger retries to 10 minutes, with an explicit long-soak timeout override for unattended testing.
- Short-circuit locked-machine terminal sync triggers in native code before waking the main renderer, so locked soak retries do not inflate WebKit memory.
Improves social sync reliability after renderer recovery
Fixes
- Prevents dev sync trigger recovery from launching a duplicate Facebook, Instagram, or LinkedIn sync while the original provider job is still finishing.
- Recovers hidden main renderers when WebKit resident memory grows past the idle cap, so stale WebKit memory does not block social sync preflight.
- Recovers dev sync triggers that were left waiting after Freed Desktop rebuilt the renderer at the end of a social sync.
- Reduces desktop sync renderer pressure after long social sync runs.