Skip to content

Roadmap

This page tracks where DailyDriver has been and where it might go. The Shipped section is drawn from real release history (CHANGELOG.md and the version tags); nothing here is invented. The Planned section collects ideas that are not yet built.

Release tags are created manually; the package version is defined in dailydriver.__version__ and exposed through pyproject.toml package metadata. Release notes are kept in CHANGELOG.md alongside the version history.

  • Fuzzy value completion: category paths, target and qada names, flags, and search words match fuzzily and are ordered best-first in the REPL, bash, and fish (alemor finds relatives/alex_morgan).
  • fzf-tab support in zsh: when the fzf-tab plugin is active, the zsh script asks a new main.py --complete-unfiltered hook for every candidate at the cursor and lets fzf do the matching. Plain zsh keeps prefix completion.
  • Completion cleanup: bare st / et are no longer offered, stN appears for free slots and etN / lnN for active ones, and the free-form text after et1 is never completed.
  • Numbered category states: st1–st9 start independent category-injecting intervals; et... ends one or more slots with the first slot anchoring an optional final log.
  • Numbered chaining: ln4 <text> chains from last_action to now and ends state 4, with extra digits closing extra slots; active states render on compact per-state header lines.
  • Full-line tab completion: context-aware REPL engine (subcommands, flags, live target/qada/category values) plus bash/zsh/fish scripts for the da CLI via a fast main.py --complete hook.
  • cal argument fix: month/year arguments are honored, English month names accepted, and invalid months reported instead of silently showing the current month.
  • Prayer windows & fiqh deadlines: three-band state machine (fadilat, normal, late) with city-specific offline solar calculations and fiqh deadlines (sunrise, sunset, midnight).
  • Two-row prayer nudges: open window nudges render across two rows with explicit band names (fadilat, normal, late), fitting narrow 48-column mobile screens without clipping.
  • Prayer window persistence & export: prayer_logs records window_band via an automatic schema migration with historical backfill; timeline exports and day view display specific bands (✅ Fadilat, 🟡 Normal, 🔴 Late, 🕯️ Qada).
  • Multi-city support: registry (Tehran, Karaj, Qom, Mashhad), schedule editor, override mode, and per-city weather and prayer times.
  • Target chaining control: -n and --no-last flags to log target progress without touching the last_action chaining timestamp.
  • Activity timestamp fixes: starting running events (se) and great events (sge) updates last_action; manager definition writes in qada, hygiene, and birthdays no longer touch last_action.
  • Quality-of-life additions: weather condition translations, flag day Jalali event, and browse-screen time display unification.
  • Iranian-first offline Hijri calendar: month-start data is bundled locally with calculated fallback coverage, month-specific manual corrections, and the existing global correction command retained for compatibility.
  • Offline Tehran prayer calculation: prayer times use a deterministic coordinate-based solar calculation without a runtime network request.
  • Minute-resolution prayer nudges: upcoming prayers count down by minute and show due now during the final minute.
  • Documentation and maintenance cleanup: built-in stemming, refreshed stopwords, the Astro Starlight docs site, shared prayer/duration helpers, typed prayer arguments, and qada import compatibility.
  • Unified day timeline: day shows everything logged that day in chronological order — journal entries, prayers, sleep, naps, qada, and targets — sharing one timeline builder with export; items are placed by start time. Each item renders as time, then label/categories, then the description.
  • Day-boundary modes: m inside the day view toggles midnight (default) vs the configured day-start hour; the choice persists in the meta table.
  • Search rewritten as a token filter: no relevance scoring; whole-word stem matching over descriptions and category paths, results grouped by how many query words matched (styled group headers, ignored-word reporting). The FTS/fuzzy scoring modules were removed.
  • Time ranges everywhere: view and search show export’s HH:MM → HH:MM (dur) format and sort/jump by start time.
  • Export polish: day headers gain an abbreviated weekday (Mon, 02 Shahrivar 1405); the export_items hook accepts an optional inclusive end bound for future range export.
  • Category editor (tools/category_editor.py, port 8768): list, rename, merge, and safe-delete categories, with a similar-pairs Suggestions tab.
  • Fixed an ANSI-slicing bug in pline_wrap truncation; first test suites for search, day view, and the entry browser (500 tests).
  • Category ranking reworked: whole-segment path matching (no more art→start false positives) and a gentle, coverage-proportional exact-match boost where a full path match outranks a deeper partial one.
  • prompt_toolkit input backend: command autocompletion, persistent history, and an autocompleting category picker (5 numbered suggestions, a 20-deep ranked live dropdown that removes already-chosen entries, Enter = suggestion #1) — with automatic fallback to plain input when non-interactive.
  • -h/--help on every command from a single help registry; the ? summary is generated from the same source.
  • Birthday creation (bd) is now fully interactive; inline date parsing removed.
  • Fixed the header event lines (great/running event) and the ege/ee cancelled-log behavior.
  • Breaking: bd no longer accepts inline name date arguments.
  • Documentation rebuilt into docs/; COMMANDS.md removed in favor of the new per-feature command pages.
  • Multiple sleep sessions per day; header shows total plus individual ranges.
  • tools/sleep_avg.py sleep/nap analysis.
  • Feature-package architecture overhaul: capability-based contracts (NAME, VERSION, register_commands, header_sections, migrations), monolithic _logic.py/_header.py/_manager.py files removed.
  • Test suite rebuilt around package boundaries (395 passing tests).
  • Breaking: qada became a full feature (manager + qada log, qada fasting) instead of an alias for p q.
  • Targets feature (nazr, habit, targets) with intervals, counters, and a manager.
  • Travel mode; configurable day-start hour; void scratchpad; u/update; Termux dialog integration; hygiene manager overhaul.
  • Feature-package architecture introduced: 8 domains extracted into dailydriver/features/ with standard hooks.
  • Dispatcher unified on raw command-line strings; test suite overhaul (163 tests).
  • Reminder overhaul: permanent event IDs, reminder levels, configurable schedules, visual reminder editor, tomorrow preview.
  • Interactive birthday manager; test isolation via DAILYDRIVER_DB.
  • Unified time-expression language across journal, sleep, nap, and prayer.
  • Header redesign; recent command; 120+ new tests (148 total).
  • State files moved into the database (meta table); commander split into command modules; built-in aliases; global Hijri offset with interactive hijri; terminal UI polish.
  • Weather integration (IRIMO, Tehran); day/today navigation; per-calendar icons; multi-page navigation in view/search.
  • Full-text search (FTS5) with fuzzy boosts; nap logging; keyword editor; stemming and a morphological tokenizer; TF-IDF + exact-path category boost.
  • First modular release: prayers, sleep, hygiene, birthdays, intentions, journal with keyword learning, events/chaining, stats, calendars, export, and the three-calendar event system.

Ideas gathered from the former TODO.md and the code review notes. These are candidates, not commitments, roughly grouped by priority.

  • Export a date range — export YYYY-MM-DD YYYY-MM-DD in addition to the current last-X-days form. The export_items(conn, start, end=None) hook already supports an upper bound; only the export command’s argument parsing needs to change.
  • Read-only entry view from view/search (a separate e/edit key to enter the editor).
  • Quick-add templates — one-word shortcuts expanding to a preset category and duration (e.g. bath).
  • Enhanced statistics — words per entry, entries-per-day chart, chronotype histogram, sleep regularity, prayer-time distribution, category trends, year progress.
  • Recall command — surface a random past entry (excluding e.g. hygiene/*).
  • Mood tracking with occasional prompts.
  • Quick notes — a scratchpad draft, saveable later.
  • Interactive in-app viewing of past data (export-like but browsable).
  • now command — one-shot status (next prayer, entry count, active great event), ideal for da now.
  • Reminders overhaul — less noisy, importance-based schedules for birthdays and events.
  • Random fun stats — an occasional record/highlight.
  • Daily quote / hadith; prayer times and weather for other cities; extra weather fields; keyword editor showing the original unstemmed word.
  • Undo, CSV export, and a backup command (from the review notes).

Performance and cleanup ideas live in reference/optimizations.md.