← zpátky na Cortex
Vlastní desktop appka · macOS · Tauri 2

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í.

FinderFileEditView
01:47:22
100%Thu 14:21
BĚŽÍ
01:47:22
Horizon Group
Landing refresh — hero sekce
Dnes3 h 12 m / 6 h
Billable
Hledat projekt…
OBLÍBENÉ
Nimbus Hotel
Rezervační tok — QA
Atlas Retail
Product feed import
NEDÁVNÉ
Lumen Studio
Verdant Clinic
Northstar Living

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á.

IDLE DETECTED

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.

  1. 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 %
  2. 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
  3. 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)
  4. 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)
  5. 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.

— Evžen+420 734 385 505evzen@leonenko.cz