A personal macOS menu-bar activity tracker built with Tauri 2, React and TypeScript: an ActivityWatch alternative. See SPEC.md for what v1 does.
macOS ties privacy permissions to the app's signature. Signing every build with the same self-signed certificate keeps Screen Recording permission from resetting after each rebuild.
-
Create the certificate once (macOS may ask for your keychain password):
./scripts/create-signing-cert.sh
-
Build the signed app:
pnpm build:app
-
Move
src-tauri/target/release/bundle/macos/Lock In.appto/Applicationsand open it. On first run it turns on launch at login and asks for Screen Recording permission, which it needs to read window titles. If you dismissed the prompt, enable Lock In in System Settings → Privacy & Security → Screen & System Audio Recording.
pnpm install
pnpm tauri devDev builds open the dashboard on launch. pnpm dev alone serves the dashboard in a normal browser
with sample data, which is handy for UI work.
Rust tests (the probe smoke test is ignored by default because it reads the live machine):
cd src-tauri && cargo test- Data:
~/Library/Application Support/com.arj.lockin/lock-in.sqlite3 - Tracker logic:
src-tauri/src/tracker.rs; macOS probes:src-tauri/src/probe.rs - Dashboard:
src/

