Cortex Timer
Měřič času, který se schová do menu baru a nezdržuje. Aby se dalo točit stopky rychleji, než si stihnu říct, že bych měl.
Toggl v prohlížeči dělá svou práci, ale pokaždé, když chci zapnout čas, musím přepnout záložku, najít projekt a vybrat ho znovu. Než to vše zvládnu, zapomenu, na čem jsem vlastně začal pracovat. Nakonec jsem netrackoval denně, ale tak dvakrát týdně. A pokaždé z hlavy.
Takže jsem postavil vlastní appku, která žije v menu baru. Jedno kliknutí (nebo klávesová zkratka), vyberu projekt, čas jede. Nevytrhne mě to ze stavu, ve kterém zrovna pracuju, a to je přesně ten bod, kde se většina trackerů rozjíždí.
Takhle vypadá, když běží. Amber tečka v menu baru, tabulární čísla, pod tím popover s project pickerem. Nic víc není potřeba.
Tři principy, kolem kterých je postavená
Menu bar, ne prohlížeč
Popover 380×520 přímo u systémových hodinek. Zero context switch. Zavřu ho kamkoli kliknu mimo.
Jeden akcent = jeden stav
Celá appka je záměrně černobílá. Amber akcent svítí jen když stopky běží. Nemusím číst. Vidím.
Rychlost jako první
Fulltextové hledání projektů, oblíbené a nedávné, autocomplete popisků z historie, klávesové zkratky všude.
Idle a sleep recovery
Když odejdu od klávesnice, timer ví, co s tím časem
Uvnitř appky běží malý Rust watchdog. Když zjistí, že jsem pár minut nic nedělal (nebo že Mac usnul s běžícím timerem), po návratu se zeptá. Čtyři tlačítka, každé pro jinou životní situaci. Data zůstanou poctivá.
Byl jsi pryč 18 minut
Co uděláme s tím časem?
Timer běží od 14:02
- Odečíst. Stopni v momentě, kdy jsem zmizel, a mezeru zahoď. Default pro pauzu na kávu, kterou si nikdy nezačnu účtovat.
- Rozdělit. Stopni a hned nastartuj nanovo na stejném projektu. Mezera mezi tím se neúčtuje. Pro delší absenci, kdy se pak vracím k tomu samému.
- Ponechat. Nech celou díru v timeru. Když jsem fakt přemýšlel u okna, bylo to součástí práce, ne jejím opakem.
- Přiřadit. Vyplň mezeru úplně jiným projektem. Oběd, meeting, commute — mám evidenci i o tom, co nebylo u klávesnice.
Co řeší navíc proti Togglu
Denní a týdenní cíle
Tenká progress bar nahoře ukazuje dnes 3h 12m / 6h. Vím, kolik ještě musím, a kolik jsem toho dal. Per-projekt stacked segmenty.
Pomodoro režim
Volitelný. 25/5 interval, systémová notifikace, jemný zvuk. Pro dny, kdy potřebuju rytmus, ne spontánnost.
„Continue last“
Včerejší záznam se rozjede jedním kliknutím z pravého menu v tray. Stejný projekt, stejný popisek. Další den je v pár vteřinách.
Sazby a billable flag
Default hodinovka v Settings, per-projekt efektivní sazba v read-only kartě. Každý záznam má billable toggle, který v Cortexu plní revenue sloupec.
Tray s tabular digits
Titulek v menu baru má tabulární číslice a −1pt baseline offset, aby neskákal. Pravé tlačítko otevře menu s „Continue last“.
Globální zkratky
Toggle popoveru a fulltext hledání projektů — rebindovatelné v Settings. Nemusím sahat na trackpad, abych stopky rozjel.
Design, který se drží jednoho pravidla
OKLCH token systém, dark mode jako domov, jediný amber akcent rezervovaný výhradně pro stav „běží“. Všechna čísla v menu baru jsou tabulární, aby minuta neskákala. System font stack (SF Pro Text), žádné Google Fonts. Tailwind v4, nulové hardcoded chrome barvy. Na interním dvacetibodovém auditu (accessibility, performance, theming, responsive, anti-patterns) sedí na 18/20.
Pod kapotou
Tauri 2 shell (Rust) + React 19 + TypeScript strict + Vite + Tailwind v4. State přes Zustand (auth, timer), lokální cache a background queue v SQLite přes tauri-plugin-sql. Plugins: autostart, global-shortcut, deep-link, opener, notification, stronghold, store, os, updater, process. Univerzální binárka pro Apple Silicon i Intel.
- Tauri 2 (Rust shell + WebView, macOSPrivateApi pro transparentní popover)
- React 19 + TypeScript strict + Vite
- Tailwind v4, zero hardcoded chrome colors
- Zustand (auth, timer)
- SQLite přes tauri-plugin-sql (offline-first + push worker)
- Universal binary: Apple Silicon + Intel
Kam to jde dál
Nic z dalších bodů neblokuje denní použití — MVP už mi Toggl nahradilo. Pořadí podle dopadu, ne podle velikosti.
- v0.2Teď · Funguje lokálně u mě
- Tracker, idle/sleep recovery, goals, pomodoro
- Sazby, billable, sync s Cortexem
- Spuštěné přes pnpm tauri dev, release pipeline 90 %
- P0Další · Dokončit distribuci
- Migrovat Tauri signing key na base64-přes-secrets
- První úspěšný v0.2.0 release end-to-end
- Ověřit auto-updater na testu v0.2.1
- P2Potom · Desktop UX
- Drag-to-move / resize záznamů v Týden view
- Quick-add modal s AI parsováním
- Pomodoro phase transition notifikace
- Keyboard navigace v project pickeru
- Long-running timer warning (>8 h)
- P3Až později · Cross-platform
- Windows — jiný popover pattern, floating okno u tray
- Linux — AppIndicator / StatusNotifierItem
- Mobilní companion jako PWA z Cortexu (spíš out-of-scope)
- P4–5Sen · Data a integrace
- Calendar overlay — Google events jako ghost entries
- Todoist link — aktivní @ofbd úkoly v trackeru
- Slack status „In focus“ podle běžícího projektu
- Reports s totals, billable split, revenue, streak
Cortex Timer je zatím jen pro Offbrand tým. Páruje se s naším Cortexem a nikam jinam ho zatím vypustit nechci. Až bude ready pro víc lidí, přistane to sem.