Seeker is a desktop productivity app built with Tauri, React, TypeScript, and Vite.
- Tauri v2
- React 18
- TypeScript
- Vite
- Tailwind CSS v4
Install dependencies:
npm installRun web development server:
npm run devRun as a Tauri desktop app:
npm run tauri devnpm run tauri buildBuild desktop app directly with Cargo (alternative):
cargo tauri buildBuild artifacts are generated in:
src-tauri/target/release/bundle/
On macOS, Cmd (⌘) is accepted alongside Ctrl for the shortcuts below that use a modifier.
Ctrl + Esc: open task list pageCtrl + S: open settings page
Enter: continue from splash / confirm selected modeTab: switch mode option (during mode selection)
Ctrl + N: create a new taskj/k: move task selectionEnter: arm selected task, then confirm to open itEsc: unselect armed task / close delete prompte: edit armed taskDelete: open delete confirmation for armed taskShift + Delete: delete armed task immediately1/2/3/4: set urgency (none/low/medium/high)
Enter: arm draft, then submit when armedEsc: close form (or cancel armed draft)Tab/Shift + Tab: move focus between title and detail fieldsShift + Enter: insert newline in detail field
Ctrl + N: create one sub taskCtrl + M: create multiple sub tasks (line-based input)Ctrl + C: show/hide completed sub tasksCtrl + I: toggle task info panelj/k: move sub task selectionAlt + j/Alt + k: jump selection by 5 rowsSpaceorx: toggle selected sub task done/todoEnter: toggle selected sub task todoe: edit selected sub taskDelete: open delete confirmationShift + Delete: delete selected sub task immediatelyEsc: close info / cancel current prompt
- Setup step 1:
Enterto continue - Setup step 2:
Enterto confirm target,Escto go back - Setup step 3:
Enterto start,Escto cancel - Active session input:
Enterarms then submits log,Esccancels armed submit
- App settings are stored in local app data as
settings.json. - App task data is stored in local app data as
seeker.json. - Mode selection from welcome is applied through React state immediately after saving settings (no full
window.location.reload()).