Blazing fast. 100% Private. Offline-First.
A minimal, single-page tracker for both daily habits and one-off tasks.
- Recurring Tasks: Added in the Recurring tab. These form your daily "pool" and reset every morning (un-done and un-struck) so you can do them again.
- One-off Tasks: Added in the For Today tab. These are temporary items that stay in your list until they are marked Done.
- Midnight Reset: Every day at midnight, completed one-off tasks are deleted, while recurring tasks are automatically restored to the "For Today" list.
- πΏ Radical Minimalism: No bloat, no complex menus. Single-file architecture for maximum clarity.
- π Blazing Speed: Instant interactions and a load time of 0.01ms.
- π Data Ownership: No cloud servers. Your tasks stay on your drive via the File System Access API.
- π Offline-First: Designed to work 100% offline with zero external requests.
- β¨ Premium UX: Professional glassmorphic design with heart-melting micro-animations.
- π§ Intentional Flow: Intelligently handles the difference between habits (recurring) and goals (one-off).
- π§ Focus Hierarchy: Organize tasks into collapsible groups to clear mental clutter.
- β¨ Premium Design: Modern, clean, glassmorphic UI with smooth micro-animations.
- π Pro File Handling: Overwrites existing files using the File System Access API (no duplicate downloads!).
- β¨οΈ Power User Shortcuts: Press
Ctrl + Sto save instantly, andEscto close settings or inputs. - πΎ Persistence: Active file handle is saved in IndexedDB; it remembers your file even after a refresh.
- π Smart Reset: Automatically distinguishes between daily habits and one-off tasks. Now operates in real-time (no refresh needed at midnight) and intelligently refreshes imported legacy data.
- π Interactive Toggle: Click the
β»icon on any task to switch between Recurring and One-off. - β° Reset Countdown: Live "Next Reset" timer in the header shows exactly when the pool will refresh.
- π§ Zen Breath: A beautiful, rhythmic water ripple background effect that pulses from the center, making the entire app feel alive and calm.
- π Dark Mode: Sleek dark theme that persists across sessions.
- π Dynamic Theme: Automatically switches between light and dark mode based on the time of day (Default).
- βοΈ Settings Modal: Redesigned premium glassmorphic panel with sticky navigation and enhanced aesthetics for effortless control.
- βοΈ Inline Editing: Double-click any task, subtask, or group to rename it in-place.
- βοΈ Smart Cloud Sync: Dedicated
ββ(Push) andββ(Fetch) buttons in the header for total control. Performs an intelligent conflict check before every sync to prevent data loss. - π Blazing Fast: Single-page architecture with zero external dependencies.
- π± Hyper-Compact UI: Utilities (Save/Load) and the Reset Timer are integrated into the search and group bars. Features an adaptive mobile layout that intelligently prioritizes space for controls on small screens.
βοΈ Master Toggle: Expand or collapse all groups in a tab with a single click.- π§ Group Hierarchy: Distinct, tinted group headers with clear visual separation for better structure.
- π The Heartbeat: A silent 1-minute engine that powers all real-time logic (Reset, Auto-Save, Zen Breath, and Focus Pings).
- β¨ Interactive Onboarding: New users are guided by a premium, glassmorphic tour that highlights core features and helps create the first task.
- π± Touch Gestures: Full mobile support for renaming via Double-Tap or Long-Press on any task or group.
- π Single-File Notifications: Seamless browser notifications on Desktop and Phone using the Standard Notification API. (Note: Mobile notifications require HTTPS. To support background notifications on Chrome for Android, you must use the optional sw.js file provided in this repository and enable the registration code in the script section).
| Tab | Purpose |
|---|---|
| For Today | Combined list of your Recurring pool + One-off tasks |
| In Progress | Tasks you're actively working on |
| Done | Completed tasks |
| Recurring | Master list of all daily tasks, add/edit/delete recurring tasks |
| State | Location | Visual |
|---|---|---|
| Fresh | For Today | Normal text |
| Recurring | Any | Green β» icon (Active) |
| One-off | Any | Grey β» icon (Inactive) |
| Clicked once | For Today | |
| Clicked again | For Today | Back to Normal + removed from In Progress |
| Clicked in In Progress | Done | |
| Subtasks all done | Done | |
| Deleted | Gone | - |
Key rule: Strikethrough in For Today = will return tomorrow (un-strikethrough at midnight). Task in In Progress = no strikethrough (already in progress, showing in its own tab).
- Shows: all tasks (both
source === 'daily'andsource === 'oneoff') that are not_done. _struck === truetasks remain VISIBLE with strikethrough (not hidden)._done === truetasks are HIDDEN.
- Shows:
_struck === true && _done === false - Title: NO strikethrough
- Click task title β markDone β moves to Done
- Shows:
_done === true - All subtasks auto-struck
- Undo button always visible (per task)
- NO add-task input
- Shows: all
source === 'daily'tasks (master list) - Add task β creates
source === 'daily'task - Click task β no-op (read-only)
- Clear all β deletes all daily tasks
- Can add subtasks and set priority
Each column has a filter bar above the task list:
- Priority filter: All / red / yellow / blue / none
- Status filter: All / In Progress (struck) / Not Started (not struck)
- Sort: toggle priority sort (red β yellow β blue β none)
- Priority filter: All / red / yellow / blue / none
- Zen Breath: Interface elements subtly breathe to feel alive.
- Cloud Backup & Sync: Free, user-controlled cloud backup via GitHub Gists.
- Radical Portability: Export/Import your entire state as a single JSON file.
Caution
Your GitHub Token is NEVER saved in your backup files. For security, Daystack automatically strips your Personal Access Token from all JSON exports and GitHub Gists. This prevents GitHub from automatically revoking your token and keeps your credentials private. Never share your active token with anyone.
Daystack offers a free, user-controlled cloud backup using GitHub Gists.
Your GitHub Token is stored only in your browser's IndexedDB/Local Storage and is protected by the Same-Origin Policy.
- Automatic Stripping: To prevent accidental leaks and auto-revocation by GitHub, Daystack automatically removes your token from all Gist uploads and JSON file exports.
- Fine-grained Access: We strongly recommend using a Fine-grained Personal Access Token limited ONLY to "Gists" (read/write). This ensures that even if the token were compromised, an attacker would have NO access to your repositories or account.
To enable cross-device sync, follow these steps:
- Go to your GitHub Personal Access Tokens (Fine-grained).
- Click Generate new token.
- Name:
Daystack Sync. - Expiration: Choose "No expiration" (or your preference).
- Permissions:
- Click Account permissions.
- Find Gists and select Access: Read and write.
- Click Generate token and copy the code starting with
github_pat_.
- Open Daystack Settings (β icon).
- Enable Cloud Backup & Sync.
- Paste your GitHub Token.
- Gist ID: Leave this blank. Daystack will automatically discover your existing backup or create a new one for you.
- Note: You only need to paste a Gist ID manually if you want to connect to a specific, non-Daystack Gist.
- Click Close & Apply.
Daystack uses a silent "Heartbeat" (a 1-minute periodic check) to power its most intelligent features:
- Real-time Reset: Detects midnight transitions instantly.
- Zen Breath: Synchronizes the meditative UI pulse and the ambient "Water Ripple" background.
- Auto-Save: Manages background disk syncing. Now supports Instant Save (frequency 0) for truly real-time disk persistence.
- Focus Pings: Triggers periodic visual nudges and cross-platform browser notifications.
- Cloud Sync: Checks for remote updates every minute and intelligently syncs local changes (skips if no data has changed). Now features Smart Sync with dedicated header buttons (
ββandββ) and a Conflict Dialog to prevent accidental overwrites. - Intelligent Conflict Resolution: Follows industry best practices by silently auto-pulling background updates when the cloud is newer and you have no unsaved local changes. If you do have local changes, it safely pauses sync and warns of the conflict, offering you the choice to either Restore (Fetch) or Overwrite (Push).
Accessed via the βοΈ icon. Controls:
- Zen Breath: Toggle rhythmic UI breathing.
- Night Shift: Dims inactive tasks late at night (10 PM - 5 AM).
- Auto-Save: Periodically syncs to your disk file (0 = Instant real-time saving).
- Focus Pings: Periodic glow on active tasks, browser notifications, and Haptic Feedback (Vibration) for mobile users.
- Reset Time: Customizable daily refresh time (e.g., 04:00 AM).
- Cloud Sync Frequency: Control how often background syncs occur (0 = Instant).
- Reset Gist: Manually clear Gist history and start a fresh cloud backup.
- Save Optimizations: Settings are now saved only when modified, preventing unnecessary sync cycles.
- Native File Sync: Use the File System Access API to save directly to your computer.
- Cloud Backup: Integrated GitHub Gist sync.
- JSON Export: One-click backup of your entire focus state.
Ctrl + S: Save instantly to disk.Alt + 1-4: Switch tabs (Today, Progress, Done, Recurring).Enter: Confirm task/subtask.Esc: Cancel/Close inputs, or close Settings modal.
- Double-tap or Long-press to rename tasks and groups.
- Haptic feedback on touch interaction.
- Responsive layout optimized for one-handed use.
- Responsive layout optimized for one-handed use with full support for browser notifications and haptic feedback.
For information on the Data Model, Internal Logic, and Reset Rules, please see DEVELOPMENT.md.
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.