Skip to content

Releases: manucompiles/Tasklog

v3.1.0 - Journal QoL: drill-down feelings wheel

Choose a tag to compare

@manucompiles manucompiles released this 08 Jul 17:05

Changed

  • The feelings wheel now drills down (#85) - instead of all 130 feelings at once (unreadable slivers on a phone), one level fills the whole circle at a time: the seven cores first, then a tapped feeling's finer shades, with a zoom in/out animation. Picking a word logs it and resets the wheel to the cores, ready for the next feeling; deepest slices pick on tap, the center picks the word you're standing on. Back and "all" navigate without picking.
  • Every feeling explains itself - all 130 wheel entries carry a short differentiating gloss ("infuriated: boiled over, seeing red" vs "annoyed: small irritation, still in control"), shown under slice names and in the wheel's center to ease finding the right word.
  • Map of Consciousness reference ladder - an info button beside the derived score opens a full-spectrum, log-scaled ladder (major Hawkins anchors labeled, courage line marked, your current picks-average positioned). Captioned honestly: "a lens, not a measurement".
  • Plan tasks open their sheet in the journal - tap a task title in Today's Plan or the Unplanned bucket to open the full task detail (subtasks, comments, pickers) and edit sheet without leaving the page.
  • The check-in modal is bigger on desktop (640px).

Notes

  • Wheel dataset (feelingsWheel.ts) gains a hint field on every core, secondary, and tertiary, pinned by a dataset test. New MocLadder component; the rail gained no widget - the ladder lives inside the check-in popup where tagging happens. 7 new component tests cover the drill-down interaction.

v3.0.0 - Journaling

Choose a tag to compare

@manucompiles manucompiles released this 04 Jul 01:36

Added

  • Journal (#79) - a new top-level section (/journal): one structured note per day, with a calendar (entry dots) to browse any date.
    • Three templates: Daily (check-ins, What's going on, Mind dump, Projects today, Today's plan, Front/Back of mind, Daily review, Evening review, Journal), Gratitude, and Affirmations (revisited at the evening close to celebrate wins). Empty sections stay quietly collapsed; the optional Journal section is "earned depth only".
    • Mood check-ins - timestamped, several per day, logged through a feelings wheel (7 cores / 41 secondaries / 82 tertiaries, multi-select, own words welcome). The Map of Consciousness score is derived from your picks, never self-tagged; the rail shows the day as a mood arc colored red-to-green by level with a courage-200 reference line. Emotion shift and energy-at-EOD derive from your first and last check-ins.
    • Task-linked plan - three buckets (Non-negotiable / If energy allows / Easy wins); the combobox finds open tasks or creates one via an explicit "+ Create task" row (due today, Inbox). "Unplanned, got done" fills itself from tasks completed that day that were never planned.
    • Front/Back of mind - transient rail lists designed to be cleared by close of day; uncleared items resurface tomorrow as "rolled over - keep?" candidates.
    • Today so far widget (plan progress, time logged, habits, check-ins) + a jump-to-evening shortcut; after 6pm the page opens on the evening cluster.
    • Edit / Preview toggle and export - preview and download show the same backend-rendered, Obsidian-compatible markdown; export one day as .md or everything as a zip.
    • The journal carries its own scoped look (fog paper / plum / serif prose, soft dark mode) via new --color-j-* tokens; the rest of the app is untouched.

Notes

  • New tables: JournalTemplates (code-defined, upserted by key at startup), JournalEntries (one per template per date, unique-indexed, content as JSON TEXT), MoodCheckins (first table with no Task FK). New completedOn= filter on GET /api/tasks. Markdown is generated by a pure Services/JournalMarkdown helper - stored data is structured JSON, markdown is only ever a render.
  • New frontend dependency: react-markdown (preview display only). Feelings-wheel dataset + Hawkins scale mapping sourced in docs/research/feelings-wheel-moc.md.
  • Journal endpoints are LAN-only and NOT exposed over the MCP connector yet - deliberately deferred until minimal auth (planned v3.1).

v2.20.0 - Subtasks

Choose a tag to compare

@manucompiles manucompiles released this 02 Jul 11:59

v2.20.0 - Subtasks

July 2026

Added

  • Subtasks (#78) - break a task into a checklist of one-line items, each with a done state, a manual order, and an optional deadline.
    • Subtasks show inline, clubbed under their parent on every surface - the desktop table (a full-width sub-row beneath the task), the mobile card, and the board card - as tickable circles with a "2/5" progress badge. Tap a circle to tick a step without opening anything. A subtask with a deadline shows that date inline next to it.
    • The task detail (modal + /tasks/:id page) has a full subtask editor: add inline, tick, set/clear a per-subtask deadline, delete, and drag-reorder.
    • Completing a parent that still has open subtasks asks what to do: complete them all, or move them out as their own standalone tasks (kept in the parent's project, with a back-reference). Recurring tasks get the same prompt, then the next occurrence spawns with a fresh, all-unchecked copy of the checklist.
  • MCP: 7 new tools bringing total to 36: 6 subtask tools (add_subtask, list_subtasks, set_subtask_completion, update_subtask, delete_subtask, reorder_subtasks) plus find - one by-name search over both tasks and subtasks that tags each hit task or subtask (subtasks carry their parent), so "I finished wire up the waitlist form" resolves in a single call without knowing which task it's under.

Notes

  • New Subtasks table (Tasks 1-to-many, cascade delete) mirroring the TaskComment/CheckIn pattern. Tasks gain response-only subtaskCount / completedSubtaskCount (always present) and a subtasks[] array (loaded on the detail, and on the list only when the web passes ?includeSubtasks=true for the inline checklist; MCP's list_tasks stays lean with counts only).
  • New frontend components: SubtaskChecklist (the inline clubbed list, shared by card + table + board), SubtaskSection (full editor with @dnd-kit drag-reorder), CompleteWithSubtasksDialog (the complete-all vs pull-out prompt). First drag-and-drop dependency: @dnd-kit.

v2.19.0 - Time tracking + project colors

Choose a tag to compare

@manucompiles manucompiles released this 12 Jun 03:20

v2.19.0 - Time tracking + project colors

June 2026

Added

  • Time tracking (#77) - track how long you spend on tasks, Toggl-style.
    • A persistent tracking bar sits at the bottom-left on desktop, full-width on mobile. Type a task name and hit Start to quick-create an Inbox task and begin tracking immediately - or start a timer on any existing task from its row in the task list. The bar shows the running task title and a live H:MM:SS clock; one tap stops it.
    • A Toggl-style timeline at /time renders a vertical hour grid with day columns (day or week view). Each tracked interval is a project-colored block - click an empty slot to log an entry, click a block to edit or delete it. Running entries grow live off the 1 s tick.
    • Snap-to-5-min / exact granularity setting on the timeline page.
    • Inbox color picker on the timeline page - Inbox tasks have no project color, so you can assign one that persists in localStorage.
    • At most one timer runs at a time (server-enforced). Starting a new one auto-stops the previous.
  • Project colors - each project can have a hex color set when creating or editing it. The color appears as a left border on timeline blocks and as a swatch in the sidebar/modal.
  • MCP: 9 new tools bringing total to 29:
    • Time tracking (7): start_timer, stop_timer, get_active_timer, log_time, edit_time_entry, delete_time_entry, get_time_summary
    • Habits (2): get_habits (full dashboard - streak, done-today, weekly progress), undo_habit_checkin, get_habit_checkins
    • Comments (2): list_task_comments, delete_task_comment
    • Projects: create_project and rename_project now accept an optional color hex param

Notes

  • New TimeEntries table (Tasks 1-to-many). Projects table gains a nullable Color column.
  • ColorPickerButton component replaces the legacy inline ColorPicker.tsx - a swatch button that opens a floating popover; used in the sidebar, edit modal, and timeline settings. LabelColorButton is the label-specific equivalent.
  • TimeTrackingContext (React context) owns the single running entry and a 1 s tick that only fires while a timer is active, so live elapsed seconds render across the bar, the task row timer control, and the timeline without a separate polling loop.

v2.18.1 - Fix: frequency habit check-in progress

Choose a tag to compare

@manucompiles manucompiles released this 07 Jun 16:41

Fixed

  • Checking in an "x times a week" habit now updates its "n/x this week" count and the current-week strip cell immediately. Previously the streak flame moved but the weekly progress stayed stale (and the week cell stayed grey) until the next background refresh - and a second check-in in the same week could briefly show the wrong streak. The optimistic update is now frequency-aware (#76).

v2.18.0 - Habits v2 Step 2 (frequency + deadline-free schedules)

Choose a tag to compare

@manucompiles manucompiles released this 31 May 10:50

Added

  • "X times a week" habits (#75) - a habit's schedule can now be a weekly frequency ("go to the gym 3x a week") instead of fixed days. Pick the mode in the habit's Schedule chip: Specific days (the existing "every Tue & Thu") or x times a week (a 1-7 stepper). A frequency habit is checkable any day; its card shows "n/x this week", a week-based streak, and a strip of recent weeks coloured green (target met), yellow (showed up but under target), or grey (missed). The streak counts consecutive weeks you showed up at least once - hitting the full target turns the week green, but a yellow week still keeps the streak alive; only a fully missed week breaks it.
  • Claude can set the frequency over the connector: create_task / update_task accept a weeklyTarget (1-7).

Changed

  • Habits no longer need a deadline to have a schedule (#75). A habit's recurrence is its check-in pattern, not a due date, so the Due chip is hidden for habits and you can set a schedule with no deadline. (Ordinary recurring tasks still need a deadline - it's the anchor they advance from on completion.)

Notes

  • Small database migration: one nullable WeeklyTarget column; existing habits are untouched and stay on the specific-days/daily model. A habit is one mode or the other (specific-days OR a weekly target), never both. Deferred to a later pass: a combined "x times among chosen days" mode, an "x times a month" period, and the calendar heatmap.

v2.17.0 - UI uplift (tokens + chip sheet + board) + Habits v2

Choose a tag to compare

@manucompiles manucompiles released this 30 May 00:01

Added

  • Design-token foundation - all colors now come from semantic CSS variables (surface, text, border, accent, success/warning/danger), so the look is consistent and a dark theme later is a drop-in. Focus rings are unified to one accent color (an accessibility improvement).
  • Chip-driven task sheet - adding and editing a task now happens in one sheet (a centered dialog on desktop, a keyboard-aware bottom-sheet on mobile). The title is a quick-add field (type friday #Work @urgent p1 / !urgent); recognized bits highlight and become chips you can adjust, Escape (or tapping a highlight on mobile) turns a recognized bit back into plain text, and #project / @label auto-create. Replaces the old inline add form + edit modal.
  • Board view - a List | Board toggle with a Group-by control (due bucket / project / priority). The board shows horizontally-scrollable columns of rich cards (shadow, due-colour tint, priority pill). Each view remembers its own layout.
  • Habits, reworked - a habit is now never completed/closed; its control is a daily check-in (an amber ring that fills green when done today). Habit rows are marked with a flame, a right-side Habits panel (and a mobile drawer) let you check in without leaving your task list, and a habit can carry a schedule (e.g. "every Tue & Thu") - the streak counts only the scheduled days, the dot row shows only those days, and off-days read "not due today." Checking in moves the habit out of the day's list.

Fixed

  • A habit could previously be "completed" from the task list (closing it) while still showing on the Habits page - two disconnected "done" states. Habits are no longer completable; daily check-in is the only "done."

Notes

  • Frontend-only; no database migration. The "x times a week" habit frequency model + decoupling deadline from habit schedules are deferred to a later Habits v2 Step 2.

v2.16.0 - Habit tracking

Choose a tag to compare

@manucompiles manucompiles released this 28 May 02:32

Added

  • Any task can now be tracked as a daily habit (#74). Tick "Track as a daily habit" when adding or editing a task, and it shows up on a new Habits view (sidebar link).
  • Each habit on the Habits view shows:
    • a current streak - the number of consecutive days you've checked it in (counting back from today; not checking in today yet doesn't break the run until tomorrow)
    • a last-7-days dot row - one filled dot per day you checked in
    • a big "Mark done today" toggle - one tap logs today's check-in (tap again to undo). Checking in is idempotent: doing it twice in a day doesn't double-count.
  • Claude can check a habit in for you over the MCP connector: a new log_habit_checkin tool ("I meditated today", "mark my workout done"), and create_task / update_task accept an isHabit flag.

Habits are decoupled from recurring tasks: a habit is an ongoing daily check-in, not a finish-once task. Check-ins are stored per day in a new table (a small database migration; existing tasks are untouched and default to not-a-habit). A GitHub-style calendar heatmap is a deliberate later addition - the check-in data already supports it.

This is the finale of the recurring + habits program (v2.13.0 comments -> v2.14.0 recurrence -> v2.14.1 advanced grammar -> v2.15.0 quick-add -> v2.16.0 habits).

v2.15.0 - Natural-language quick-add

Choose a tag to compare

@manucompiles manucompiles released this 27 May 17:18

Added

  • The add-task title field is now a Todoist-style quick-add (#72). Type one line and it recognizes, inline, as you type:
    • a due date in natural language - "tomorrow", "friday", "jan 27", "in 3 days", "next week at 4pm"
    • a repeat - "every day", "every weekday", "every other monday", "every 3rd thursday", "monthly on the 1st"
    • #project, @Label (auto-created if new), and p1-p4 priority
  • Recognized tokens are highlighted in the field and listed as removable chips below it (click the x to unlink a wrong match). Typing # or @ opens an autosuggest dropdown (arrow keys + Enter, or click). The parsed values also fill the Deadline / Project / Priority / Repeat controls live.
  • A bare multi-weekday list like "friday and saturday" (no "every") is treated as those specific days once each - modeled as a weekly repeat ending on the last day - rather than an endless repeat. "every friday and saturday" stays ongoing.

Frontend-only, no migration. Uses chrono-node for the free-form date parsing; recurrence and the symbol tokens are parsed in-house onto the existing recurrence grammar. Also fixes the phone deploy to bundle vendored (file:) dependencies.

v2.14.1 - Advanced recurrence

Choose a tag to compare

@manucompiles manucompiles released this 27 May 13:49

Added

  • Recurrence now supports the richer Todoist-style patterns (#71):
    • "the 3rd Thursday" / "the last Friday" of the month (nth-weekday)
    • "the last day" of the month, or a day counted from the end
    • intervals: "every other week", "every 2 months"
    • end conditions: repeat until a date, or for a set number of times - after which the series stops (and logs a "series complete" note)
  • The recurrence picker on the add/edit forms gained controls for all of these (monthly day-of-month / nth-weekday / last-day, an interval input, and an "Ends" option). Claude can use them too via the same recurrence rule string on create_task/update_task

No database migration - end conditions live in the recurrence rule itself, and "for N times" is tracked from the existing series history. This is a patch (it extends the v2.14.0 recurrence feature rather than adding a new one).