Public Safari and Chrome browser code used by ActualFocus on macOS.
If you are here to inspect the browser behavior before installing the app, start here:
- Website: actualfocus.com
- Browser transparency page: actualfocus.com/browser-transparency
- Chrome Web Store: ActualFocus Chrome Extension
- Support: support@ardsaor.com
docs/BROWSER_BEHAVIOR.md- literal Safari and Chrome behavior, data flow, and runtime notes
docs/SECURITY_NOTES.md- current bridge protections, known limits, and scope boundaries
docs/INSPECT_AND_BUILD.md- practical inspection path for Safari, Chrome, and the bridge reference files
- Safari support ships inside the ActualFocus macOS app.
- Chrome support is distributed through the public Chrome Web Store listing.
- This repository is maintained as the public browser-code mirror for inspection and review.
- The shipping macOS app still builds from the main
ActualFocusrepository.
That last point matters, but it should be read literally: this repo exists to improve inspectability and public review, not to pretend the browser code already has a totally separate production pipeline.
SafariExtension/- the embedded Safari Web Extension resources and native handler used by the macOS app
ChromeExtension/- the Chrome extension code used for the Chrome Web Store path
BridgeReference/- the shared event contract and local bridge reference files that show how browser events reach the Mac app
docs/- literal behavior, security, inspection, and publication notes
At a high level, the Safari and Chrome paths exist so ActualFocus can label which website was actually in front during an active session.
flowchart LR
Safari["Safari extension"] -->|"native messaging"| App["ActualFocus macOS app"]
Chrome["Chrome extension"] -->|"local bridge"| App
App -->|"local session record"| Timeline["Session timeline"]
Current behavior, in plain language:
- the browser path reads the active page URL and title from the visible Safari or Chrome tab
- browser events are delivered locally to the Mac app
- full URLs are used transiently for local delivery and are not stored or sent off-device by default
- the app persists browser name, domain, URL scheme, and page title while a session is running
- browser signals only affect live session state when the corresponding browser app is actually frontmost
For the exact per-browser behavior, start with docs/BROWSER_BEHAVIOR.md.
- not a full copy of the ActualFocus app repository
- not a promise that Safari and Chrome are built directly from this repo today
- not a claim that the browser path is a standalone security boundary
- not a replacement for the app-side trust surfaces such as release history, privacy, and support
The most important caveat is simple:
- the Chrome loopback bridge is a constrained local transport, not a cryptographically strong boundary against hostile same-machine code
- the shipping app narrows the effect of browser signals by requiring the matching browser to be frontmost and by using local receipt time for freshness checks
- those checks reduce bad or stale local signals, but they do not turn the Chrome path into a hardened local API
See docs/SECURITY_NOTES.md for the precise details.
This repo only has trust value if it stays aligned with the real shipped behavior.
Use:
./scripts/verify-source-sync.sh- checks whether the extracted browser paths still match the main app repository
./scripts/update-from-source.sh- refreshes the extracted browser files and bridge references from the main app repository
Both scripts expect the main ActualFocus repo to live beside this repo, or for ACTUALFOCUS_SOURCE_REPO to be set.
When this mirror is intentionally pinned to a specific app line, tags use:
browser-v<marketing-version>-build-<build-number>
That keeps browser-mirror tags readable without pretending this repository is a standalone binary release feed.
This repository uses the Apache License 2.0.
That gives technical users and future contributors a standard permissive license with an explicit patent grant while keeping trademarks separate from the code license. The code can be Apache 2.0 licensed without granting rights to the ActualFocus name, logos, or branding.
If the browser behavior in this repo and the public trust pages ever appear to disagree, treat that as worth reporting.
The current official support path for ActualFocus is support@ardsaor.com.