Případová studie · Vlastní macOS produkt

CopyForge — chytrá schránka pro Mac

Pokročilý správce schránky pro macOS, který žije ve vašem menu baru. Tichý clipboard monitor, fulltextové vyhledávání, snippety s dynamickými proměnnými, pracovní prostory a volitelné AES-256-GCM šifrování s integrací macOS Klíčenky. 100 % offline.

macOS 13+ SwiftUI AppKit Core Data AES-256-GCM macOS Keychain Žádné dependencies
CopyForge — ikona aplikace
Klient
Vlastní produkt Reactive Studia
Platforma
macOS 13 (Ventura) a novější
Architektura
MVVM — SwiftUI views + ObservableObject view models
Persistence
Core Data s automatickou migrací
Šifrování
AES-256-GCM (CryptoKit) + macOS Keychain
Externí dependencies
Žádné — pouze Apple frameworky

Pro koho CopyForge je

Vývojáři žonglující s úryvky kódu, tokeny a hesly. Copywriteři přesouvající bloky textu mezi dokumenty. Designéři kopírující barvy a hodnoty mezi nástroji. Kdokoli, kdo během dne kopíruje a vkládá natolik často, že stará verze ze schránky ztrácí cenu rychleji, než ji stihne použít.

CopyForge ukládá vše, co zkopírujete — text, obrázky, formátovaný text — a udržuje to organizované, prohledatelné a (volitelně) zašifrované. Jeden shortcut otevře plovoucí panel, kde najdete cokoliv, co jste kdy zkopírovali.

Klíčové funkce

Historie schránky

Tichý monitor v pozadí ukládá každou změnu. Procházejte historii v plovoucím panelu, fulltextově vyhledávejte, filtrujte podle typu (text / obrázek / odkaz / kód). Klikem na položku ji zkopírujete zpět. Důležité klipy lze připnout, aby zůstaly nahoře.

Chytré akce

Jedním klikem převedete text na velká/malá písmena, odstraníte diakritiku, ořežete mezery, vyčistíte formátování, naformátujete JSON, vytáhnete URL nebo e-maily z libovolného textu. Pravým klikem na klip se otevře nabídka akcí.

AES-256-GCM šifrování

Volitelné šifrování všech klipů s klíčem v macOS Klíčence — klíč nikdy neopustí Mac. Zapnutí/vypnutí šifrování spustí transparentní migraci existujících klipů bez ztráty dat. CryptoKit + Authenticated Encryption with Associated Data.

Snippety + pracovní prostory

Snippety s dynamickými proměnnými (datum, čas) pro často používané texty. Klipy organizovatelné do pracovních prostorů (Default / Work / Private) — každý prostor má vlastní nezávislou historii.

Architektura

CopyForge je MVVM aplikace bez externích dependencies. Jen Apple frameworky — SwiftUI, AppKit, Core Data, CryptoKit. Žádný SwiftPM, žádný CocoaPods. Důvod: pro security-aware aplikaci, která manipuluje s clipboardem a šifrovacími klíči, je každá třetí strana riziko a každý update potenciální problém. Audit bezpečnosti je triviální, když má kód jediný kořen.

Vrstvy

  • App — entry point, AppDelegate s NSStatusItem (menubar ikona) a NSPopover (plovoucí panel)
  • Models — Core Data model s codeGenerationType="class" (Xcode generuje NSManagedObject subclasses)
  • ViewModelsClipboardViewModel, SettingsViewModel, SnippetsViewModel jako ObservableObject
  • Views — SwiftUI views vázané přes @EnvironmentObject
  • ServicesClipboardMonitor, PrivacyGuard, HotkeyManager, Persistence, EncryptionService

Klíčové technické výzvy

1. Polling clipboardu bez deadlocku

macOS nemá callback API pro změnu clipboardu — musí se polovat. ClipboardMonitor čte NSPasteboard.general.changeCount každých 0,7 sekundy (kompromis mezi reaktivitou a CPU). Když se změní:

  1. Načte public.utf8-plain-text nebo obrázek z pasteboardu
  2. Projde PrivacyGuard regex filtry (např. nezachytávat hesla z 1Password)
  3. Deduplikuje proti poslední položce
  4. Uloží do Core Data a vynutí limit historie

Když CopyForge zkopíruje položku zpět do clipboardu (na klik nebo Enter), monitor se na 1 sekundu pauzuje, aby si nezachytil vlastní zápis. Bez toho by vznikl loop a duplicitní položky.

2. Privacy Guard — nezachytávat hesla

1Password, KeePassXC a další password managery při copy nastaví do pasteboardu speciální type indicator (org.nspasteboard.ConcealedType, com.agilebits.onepassword). PrivacyGuard tyto typy detekuje a clip ignoruje. Doplněno regex filtry pro zjevně senzitivní obsah (kreditní karty, JWT tokeny, AWS access keys).

3. Šifrovací migrace bez ztráty dat

Při zapnutí šifrování existují všechny klipy plain-text v Core Data. Migrace probíhá v background context: každý klip se zašifruje, uloží do nového sloupce, staré sloupce se vyčistí. Probíhá v transakci — při crashi v polovině je stav buď úplně plain, nebo úplně šifrovaný, nikdy mix. Klíč v Klíčence je generovaný SymmetricKey(size: .bits256) a uložen pod accessible WhenUnlockedThisDeviceOnly — nesynchronizuje se přes iCloud Keychain.

4. Clipboard image deduplikace

Obrázek 4 MB z prohlížeče zkopírovaný 3× za minutu by zaplnil databázi. Hash obrázku (SHA-256) v dedicated indexu zajišťuje, že identický obrázek se uloží jen jednou, pouze se updatuje timestamp. Pro pixel-podobné, ale ne identické obrázky (např. po recompresi) ponecháváme separátně — dedup by byl nákladný a chybový.

UX rozhodnutí

  • NSPopover, ne plné okno — panel se otevírá nad aktuální aplikací, vkládá rychle, mizí při Escape
  • Klávesová navigace standardní — Up/Down listem, Enter pro paste, Esc pro zavřít, Cmd+F pro fokus search
  • Globální hotkey přes NSEvent.addGlobalMonitorForEvents — výchozí Cmd+Shift+V, konfigurovatelné
  • Tmavý a světlý režim automaticky podle systému

Co si z projektu odnášíme

CopyForge byl rigorózní cvičení v nulové třetí straně. Bez CocoaPods, bez SwiftPM, bez Sentry, bez analytics. Audit kódu zabere odpoledne. Přesně tak, jak má aplikace, která vidí každé heslo a každý token, vypadat. Tento přístup přebíráme i do zákaznických projektů, kde má klient bezpečnostní požadavky — finance, zdravotnictví, vládní sektor. Kde to nedává smysl (běžné aplikace), zůstáváme u SwiftPM a normálních dependencies.

Stavíte aplikaci s vysokými nároky na bezpečnost?

Specializujeme se na nativní macOS aplikace s důrazem na bezpečnost — šifrování, sandbox, privacy-first design. Pomůžeme i s certifikací a audity.