Skip to content

Desktop app

The desktop app is a small Electron shell around the web app: the same pages you already use, plus two shortcuts that work from anywhere on your computer.

  • Main window — your Day Planner server in a desktop window. Closing it hides it to the system tray instead of quitting, so the shortcuts keep working.
  • Ctrl+E — quick-add. A small box opens over whatever you’re doing. Type the task and press Enter; it saves and the box vanishes. It understands the same / commands as the web quick-add: /due friday, /est 45, /priority high, /space Work, /project Japan trip. Type a command and press Enter to set it as a chip, then the title, then Enter again to save.
  • Ctrl+J — command palette. A search box over everything: create a task, run the planner, jump to Today / Tasks / Week / Projects / Documents / Settings, or find an open task by name and complete it with Enter.
  • Tray icon — Open, Run planner, Settings, Quit.

Windows only for now.

  1. Download the installer from the project’s GitHub releases page and run it.
  2. On first launch the settings window opens. Enter:
    • Server URL — where your Day Planner runs, such as https://tasks.example.com (or http://localhost:3000 for local dev).
    • API key — create one under Settings → API keys in the web app. It is stored encrypted in your OS keychain, never in a text file.
  3. Press Test connection to confirm, then Save.

The shortcuts are listed in the same window. Turn either off, or rebind it to different keys — if another app already owns a key, saving tells you instead of failing silently.

The shell lives in desktop/ in the repository and needs Node.js:

Terminal window
cd desktop
npm install
npm start # opens against http://localhost:3000 — run the web app too
npm test # main-process unit tests
npm run dist # builds the Windows installer into desktop/release/

Icons live in desktop/assets/ and are generated, not hand-drawn: node desktop/scripts/make-icons.js rebuilds icon.ico (installer, 16–256px) and tray.png from public/icon-512.png. Re-run it if the logo ever changes.

The app updates itself — no reinstalls, no manual downloads:

  • Automatic: it checks on launch and every 6 hours, downloads in the background, and asks “Restart now / Later” when ready. Restarting installs the update.
  • One click: tray icon → Check for updates… checks immediately and tells you whether you’re up to date.

The feed lives on your own server at https://tasks.deejpotter.com/desktop/ (a generic electron-updater feed — no tokens involved, which matters because this repository is private). Publishing a build writes latest.yml next to the installer in desktop/release/; hosting latest.yml, the .exe and the .blockmap at that URL is what makes updates live:

Terminal window
# from the repo root, after npm run dist in desktop/
scp desktop/release/latest.yml desktop/release/Day\ Planner\ Setup*.exe \
desktop/release/*.blockmap deej@deej-nuc:/path/to/tasks.deejpotter.com/desktop/

Until those files are hosted, update checks stay silent (or report the failure only when triggered from the tray). Differential downloads use the blockmap, so repeat updates fetch megabytes, not the full 100+ MB.