Select
User selection
05Local-First Chrome Extension
A local-first Chrome extension that reformats selected text through an explicit, user-triggered workflow and a typed FastAPI backend.

Local-first extension workflow; external providers receive only explicitly submitted text when configured.
Uses a minimal-permission Manifest V3 extension, local settings, bounded backend contracts, and optional OpenAI or Groq providers to transform only text the user chooses to send.
Text copied from websites often carries formatting, spacing, or structure that does not fit the destination. A useful formatter should be fast and intentional without silently collecting browsing history, requesting broad permissions, or requiring a hosted account.
Designed and implemented the extension UI, local configuration flow, typed API boundary, provider adapters, deterministic development mode, validation, accessibility details, tests, release packaging, and public documentation.
Select
User selection
Action
Explicit action
UI
Local extension UI
Storage
Local settings
API
Typed API
Provider
Provider adapter
Result
Result
Release
Release pipeline
31
Automated tests (26 backend, 5 extension)
Latest successful main-branch CI run 31925733707 (2026-08-16): 26 backend tests plus 5 extension tests; rechecked 2026-08-18.
Point-in-time count, not a live counter.
77,949 B
v1.0.0 release archive size
Verified size of the published v1.0.0 release asset, dated 2026-08-16.
Release archive size, not the installed browser footprint.
2
Browser permissions requested (sidePanel, storage)
Counted from the manifest in the tagged v1.0.0 source, plus the documented local backend origins.
A compact, installable v1.0.0 extension with a deliberate privacy boundary, deterministic local testing, optional provider integrations, and automated package checks.
Data and privacy
FormatClip is designed around explicit user action and local snippets and settings. It needs no account or hosted service, and the verified release contains no analytics or telemetry. If a user configures an external model provider, the selected text is sent to that configured provider for processing — so this is not an “all data stays on device” product.