Skip to content

ArdSaor/actualfocus-extension

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ActualFocus Extension

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:

Start Here If You Are Inspecting

Current Shipping Status

  • 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 ActualFocus repository.

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.

What This Repo Covers

  • 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

What The Browser Code Does

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"]
Loading

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.

What This Repo Is Not

  • 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

Security Boundary Notes

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.

Keeping This Repo Honest

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.

Version Tags

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.

License

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.

Support

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.

Packages

 
 
 

Contributors