2026-10-05 · Personal Social Desk, CPH Engagement Watcher for Chrome
Repairs the follower collector’s hidden-tab loading limit while keeping the separate profile-link filters and saved evidence.
What changed
- Uses a dedicated collection window whose sole tab can remain visible to Facebook while the window stays unfocused. The collector verifies the owner and exact Followers route and never adopts an existing browser tab.
- Keeps bounded batches, durable receipt checks, pacing, finite capture and resume budgets, safety pauses and partial-roster semantics. Captures cannot create absence-based unfollows or authorize follower removal.
- Records finite viewport and scroll observations and actual step errors. Hidden or minimized collection, changed ownership and uncertain window creation pause for review. Durable opening intent prevents repeat windows after an interrupted ownership checkpoint. Browser-session ownership proof and a persistent reset gate prevent reuse of retained tab or window IDs after restart or reload, including a failed checkpoint write; saved capture evidence remains available.
- Retains the dedicated profile-link review area under People and Stats: social services, business or commerce destinations, other websites, malformed URLs, recorded verified access issues and unknown or unchecked links.
- Preserves existing extension settings, greeting history and original future schedules during the reviewed rollout. Reload requires checking and reconciling Chrome’s recreated alarms without forcing missed greetings.
- Uses the new calendar version and fresh PWA asset/cache identifiers; previous artifacts and permanent public pages remain available.
Verification
- Reproduced the prior collection limit in an inactive native tab: initial rows were captured but the follower grid did not grow. A separate visible native probe continued to load more rows across guarded advances.
- Verified the dedicated unfocused-window approach in the authenticated browser: its sole tab remained visible and selected, the previously focused window stayed unchanged, and the follower grid continued growing through guarded advances. This establishes the loading fix for that layout, not full-roster completion.
- Passed the full macOS regression suite: 913 checks passed, with one Linux-only process-identity check deferred to Linux. All 914 Linux application checks passed, plus 20 scanner-support checks and seven activity-policy checks. All nine views and existing routes remain in the feature contract. Fifty-five collector tests and seven integration tests cover unfocused-window loading, stale navigation, storage/lookup failures, cancellation, ownership proof, failed startup reset across worker recreation, replay and alarm/history boundaries.
- Installed the same reviewed archive on the live service with code-only rollback backup and verified served files. Activated the existing Chrome installation in place and independently confirmed its matching numeric and display versions. Chrome recreated alarms during reload; readback confirmed saved greeting history and enabled settings unchanged, the original future birthday time restored, and the engagement schedule on its original future cadence. No missed greeting was forced.
- Verified multiple new partial follower batches beyond the previous stall, durable receipt and positive per-person timestamps, preserved prior captured identities, increasing visible-list geometry and the unchanged Chromium process. No new complete-roster comparisons, negative follower events or removal-state changes were produced.
- Verified all nine rendered PWA views after reload, refreshed calendar asset identifiers, and live social, business/shop, other-website, malformed, recorded-access and unknown-link filters. Filtered rows remain attached to their source profiles; no browser console errors were observed.
Rollout
Installed and verified on the live PWA and existing Chrome Watcher installation. The bounded read-only follower collector is enabled and continued saving new partial batches after activation. This verifies resumed collection and data persistence; it does not claim full-roster completion or fresh enrichment of every profile. Earlier releases and public version pages remain available.
Updating
- Update the PWA and reload its cached assets. Reload the existing unpacked extension in place so its saved history and settings remain associated with the same installation. Chrome Developer mode must be enabled for the existing sideloaded build; no new extension permissions are required.
- Before reloading, preserve and inspect current settings, birthday history and alarm timing. After reload, verify them and reconcile any recreated schedule to its original future timing or next future cadence; do not immediately run missed birthday messages.
- Follower collection starts disabled on a new installation. Start, pause and resume it from the extension popup. Pause and settle the collector before reloading its extension. An active collector whose session ownership proof is lost pauses for explicit review; saved observations and anchors remain intact. A safety pause requires checking Facebook before explicitly resuming. Four non-advancing passes close the owned tab and defer another partial refresh for six hours.
- The exact-count observer remains a separate read-only process. A saved partial list or rounded profile label cannot replace its native exact-count evidence.
Scope and limitations
- This release does not claim a completed full-roster capture or fresh enrichment of every profile. Facebook layout changes, unavailable dashboards, memory limits and missing profile URLs can leave coverage partial.
- The exact native count remains at its last verified observation when Facebook's audience dashboard is unavailable. No rounded value is promoted to an exact count.
- Collection takes no Facebook relationship action. Follow notifications, profile enrichment, birthday delivery and follower removal have separate execution and verification boundaries.
- The bounded collector can still stop when the native list no longer advances or when its dedicated tab is hidden or its window is minimized. Long lists remain subject to Facebook loading, memory, access and bounded resume limits. A stalled partial capture is not full-roster completion.
- Profile link filters classify recorded destinations and existing access evidence. This release does not perform new website health checks; unchecked links remain unknown.