Skip to content

Releases: PirAhmedShah/Super-Productivity-MCP

v1.8.2

Choose a tag to compare

@github-actions github-actions released this 05 Aug 11:38

MCP server + plugin for Super Productivity.

Install: Settings -> Plugins -> upload this zip. Version must match package.json/manifest/plugin.js (all 1.8.2).

What's in 1.8.2:

  • bulk_update_tasks now supports the full update_task field set: due_with_time (null = unplan), is_done, and time_spent_on_day bucket merge. A 9-task +1h shift used to take nine separate update_task calls; now it's one
  • The plugin's bulkUpdateTasks runs the same processing as updateTask via one shared applyTaskUpdate processor: title short-syntax scrubbing, time_spent_on_day merging, and dueDay -> dueWithTime preservation. Before, bulk was a raw passthrough that skipped all of that
  • bulk_update_tasks echoes effective tasks: after the writes it re-fetches the affected ids and returns tasks (id -> effective task incl. plannedTime) alongside results, so one round-trip verifies the whole shift
  • batch_update_project update-ops accept due_with_time too, mappable in atomic project batches (null = unplan)

What's in 1.8.1:

  • get_schedule now includes subtasks by default. Before, the default silently dropped every subtask from scheduled, unscheduledInRange, completedInRange, and the summary counts, which hid 8 of 9 planned blocks in the container-parent workflow. SP's own Today/Schedule view always showed subtasks; now the API matches. include_subtasks: false remains as an explicit opt-out, and the response reports what was hidden via a new filteredSubtasks: { count, taskIds } | null field, so filtering is never silent
  • sp://context includes subtasks in today's schedule too. The one-fetch session bootstrap used to hardcode includeSubtasks: false, so the morning snapshot missed subtask plans entirely. It now matches sp://tasks/today and SP's Today view

What's in 1.8.0:

  • Explicitly built for Super Productivity 18.16.0 only. Older builds are refused: the plugin checks SP's app version on every command and fails with a clear error instead of silently degrading. check_connection now reports minSupVersion next to appVersion, and the manifest declares minSupVersion 18.16.0
  • update_task's planned_at parameter is gone. due_with_time is the only way to set a planned time. plannedAt is no longer accepted as a get_tasks fields alias either, and the legacy plannedAt read fallback is removed: dueWithTime is the only planned-time source
  • start_task and stop_task dispatch the whitelisted [Task] SetCurrentTask action unconditionally. The old marker-only fallback for older SP builds is removed; a rejected dispatch now surfaces as an error
  • The getAppState version-guard workarounds ("requires SP from 2026-05-26", the get_tasks recurring_only hint) are replaced with one message: requires SP 18.16.0+

What's in 1.7.3:

  • update_task accepts time_spent_on_day, a { 'YYYY-MM-DD': ms } map that merges into the task's per-day bucket (timeSpentOnDay, what the worklog sums). Dates you don't list stay untouched, so you can correct an over-accrued day without negative values. timeSpent is recomputed as the bucket sum unless you also pass time_spent
  • Before this there was no way to fix a bad day: update_task { time_spent } only zeroed the total, and add_time_today rejects negative ms. The merge runs plugin-side, mirroring the proven addTimeToday write path

What's in 1.7.2:

  • start_task now drives SP's real timer. It dispatches the whitelisted NgRx action [Task] SetCurrentTask with { id }, so the UI shows the ticking timer and SP accrues timeSpentOnDay natively. Before, the plugin only wrote a currentTimestamp marker that never started the UI ticker
  • stop_task dispatches [Task] SetCurrentTask with { id: null }. unsetCurrentTask is not on SP's allowed-action whitelist, and the null-id form reaches the same reducer branch
  • The marker write stays as a verification signal. If the action is rejected on an older SP build, the plugin falls back to marker-only behaviour

What's in 1.7.1:

  • batch_update_project now resolves same-batch temp_id references. Subtasks can reference a parent created in the same call, and reorders can include freshly created tasks. SP was silently dropping those tasks and ignoring the reorder before
  • Unresolvable references (cycles, unknown parents) now surface as errors instead of vanishing
  • Update and delete still need real task ids from the first call's createdTaskIds

What's in 1.7.0:

  • batch_update_project: create/update/delete/reorder in one atomic call
  • get_app_state: full snapshot of tasks, projects, tags, notes, repeat configs, counters; optional JSON backup via output_path
  • Work-context tools: get_active_work_context, get_current_context_tasks, get_selected_task, get_focused_task, select_task
  • Simple counters: get_counter, set_counter, increment_counter, decrement_counter, delete_counter, get_all_counters
  • get_notes, get_plugin_config, reinit_data
  • Fixed: SP 18.16's chrono parser was re-parsing date-like @tokens in plugin-written titles, mangling them and clobbering due dates. The plugin now strips residual date tokens while keeping non-date tokens (@dave, @tag) intact

What's in 1.6.0:

  • @date skips non-date @tokens; get_task_repeat_cfgs falls back gracefully when getAppState is unavailable

What's in 1.5.2:

  • get_schedule excludes done tasks from its scheduled list (no double-counting in the summary)

What's in 1.5.1:

  • Schedule awareness: get_schedule, a time-blocked day view with overlap detection, tasks due but unscheduled, and work completed in range
  • Task name enrichment: responses resolve projectTitle + tags; sp://context one-fetch session bootstrap resource

What's in 1.3.6:

  • get_time tool (machine time in the local timezone, epochMs ready for scheduling); check_connection returns serverNow, so agents no longer shell out to date
  • @due time short syntax (@tomorrow 3pm) sets the exact planned time; due-day changes preserve it
  • update_task due_with_time (exact planned time in epoch ms) and plan_tasks_for_today plan_from_now
  • Canonical planned-time field moved to SP's dueWithTime; responses expose it as plannedTime

Earlier releases (1.0.0-1.3.5):

  • Initial MCP server + plugin (task/tag/project CRUD, short syntax parsing, IPC bridge), triage tools, timer & Today-view bulk tools, MCP resources, add_time_today, diagnostics, install/consent fixes

Full docs in the repository README.

v1.8.1

Choose a tag to compare

@github-actions github-actions released this 05 Aug 11:38

DEPRECATED — this release is superseded. Use v1.8.2 instead (latest plugin.zip, includes all fixes below).


MCP server + plugin for Super Productivity.

Install: Settings -> Plugins -> upload this zip. Version must match package.json/manifest/plugin.js (all 1.8.1).

What's in 1.8.1:

  • get_schedule now includes subtasks by default. Before, the default silently dropped every subtask from scheduled, unscheduledInRange, completedInRange, and the summary counts — in the container-parent workflow that hid 8 of 9 planned blocks. SP's own Today/Schedule view always showed subtasks; now the API matches. include_subtasks: false remains as an explicit opt-out, and the response then reports what was hidden via a new filteredSubtasks: { count, taskIds } | null field, so filtering can never be silent again
  • sp://context includes subtasks in today's schedule too — the one-fetch session bootstrap used to hardcode includeSubtasks: false, so the morning snapshot missed subtask plans entirely. It now matches sp://tasks/today and SP's Today view

What's in 1.8.0:

  • Explicitly built for Super Productivity 18.16.0 only. Older builds are refused: the plugin checks SP's app version on every command and fails with a clear error instead of silently degrading. check_connection now reports minSupVersion next to appVersion, and the manifest declares minSupVersion 18.16.0
  • update_task's planned_at parameter is gone. due_with_time is the only way to set a planned time. plannedAt is no longer accepted as a get_tasks fields alias either, and the legacy plannedAt read fallback is removed: dueWithTime is the only planned-time source
  • start_task and stop_task dispatch the whitelisted [Task] SetCurrentTask action unconditionally. The old marker-only fallback for older SP builds is removed; a rejected dispatch now surfaces as an error
  • The getAppState version-guard workarounds ("requires SP from 2026-05-26", the get_tasks recurring_only hint) are replaced with one message: requires SP 18.16.0+

What's in 1.7.3:

  • update_task accepts time_spent_on_day, a { 'YYYY-MM-DD': ms } map that merges into the task's per-day bucket (timeSpentOnDay, what the worklog sums). Dates you don't list stay untouched, so you can correct an over-accrued day without negative values. timeSpent is recomputed as the bucket sum unless you also pass time_spent
  • Before this there was no way to fix a bad day: update_task { time_spent } only zeroed the total, and add_time_today rejects negative ms. The merge runs plugin-side, mirroring the proven addTimeToday write path

What's in 1.7.2:

  • start_task now drives SP's real timer. It dispatches the whitelisted NgRx action [Task] SetCurrentTask with { id }, so the UI shows the ticking timer and SP accrues timeSpentOnDay natively. Before, the plugin only wrote a currentTimestamp marker that never started the UI ticker
  • stop_task dispatches [Task] SetCurrentTask with { id: null }. unsetCurrentTask is not on SP's allowed-action whitelist, and the null-id form reaches the same reducer branch
  • The marker write stays as a verification signal. If the action is rejected on an older SP build, the plugin falls back to marker-only behaviour

What's in 1.7.1:

  • batch_update_project now resolves same-batch temp_id references. Subtasks can reference a parent created in the same call, and reorders can include freshly created tasks. SP was silently dropping those tasks and ignoring the reorder before
  • Unresolvable references (cycles, unknown parents) now surface as errors instead of vanishing
  • Update and delete still need real task ids from the first call's createdTaskIds

What's in 1.7.0:

  • batch_update_project: create/update/delete/reorder in one atomic call
  • get_app_state: full snapshot of tasks, projects, tags, notes, repeat configs, counters; optional JSON backup via output_path
  • Work-context tools: get_active_work_context, get_current_context_tasks, get_selected_task, get_focused_task, select_task
  • Simple counters: get_counter, set_counter, increment_counter, decrement_counter, delete_counter, get_all_counters
  • get_notes, get_plugin_config, reinit_data
  • Fixed: SP 18.16's chrono parser was re-parsing date-like @tokens in plugin-written titles, mangling them and clobbering due dates. The plugin now strips residual date tokens while keeping non-date tokens (@dave, @tag) intact

What's in 1.6.0:

  • @date skips non-date @tokens; get_task_repeat_cfgs falls back gracefully when getAppState is unavailable

What's in 1.5.2:

  • get_schedule excludes done tasks from its scheduled list (no double-counting in the summary)

What's in 1.5.1:

  • Schedule awareness — get_schedule: time-blocked day view with overlap detection, due-but-unscheduled, and completed-in-range
  • Task name enrichment — responses resolve projectTitle + tags; sp://context one-fetch session bootstrap resource

What's in 1.3.6:

  • get_time tool (machine time in the local timezone, epochMs ready for scheduling); check_connection returns serverNow — agents no longer shell out to date
  • @due time short syntax (@tomorrow 3pm) sets the exact planned time; due-day changes preserve it
  • update_task due_with_time (exact planned time in epoch ms) and plan_tasks_for_today plan_from_now
  • Canonical planned-time field moved to SP's dueWithTime; responses expose it as plannedTime

Earlier releases (1.0.0-1.3.5):

  • Initial MCP server + plugin (task/tag/project CRUD, short syntax parsing, IPC bridge), triage tools, timer & Today-view bulk tools, MCP resources, add_time_today, diagnostics, install/consent fixes

Full docs in the repository README.

v1.8.0

Choose a tag to compare

@PirAhmedShah PirAhmedShah released this 05 Aug 08:28

DEPRECATED — this release is superseded. Use v1.8.2 instead (latest plugin.zip, includes all fixes below).


MCP server + plugin for Super Productivity.

What's in 1.8.0:

  • Explicitly built for Super Productivity 18.16.0 only. Older builds are refused: the plugin checks SP's app version on every command and fails with a clear error instead of silently degrading. check_connection now reports minSupVersion next to appVersion, and the manifest declares minSupVersion 18.16.0
  • update_task's planned_at parameter is gone. due_with_time is the only way to set a planned time. plannedAt is no longer accepted as a get_tasks fields alias either, and the legacy plannedAt read fallback is removed: dueWithTime is the only planned-time source
  • start_task and stop_task dispatch the whitelisted [Task] SetCurrentTask action unconditionally. The old marker-only fallback for older SP builds is removed; a rejected dispatch now surfaces as an error
  • The getAppState version-guard workarounds ("requires SP from 2026-05-26", the get_tasks recurring_only hint) are replaced with one message: requires SP 18.16.0+

Behavior on 18.16.0 is unchanged from 1.7.3. Below it, tools hard-fail with an explicit message.

Install: Settings -> Plugins -> upload this zip. Version must match package.json/manifest/plugin.js (all 1.8.0).

What's in 1.7.3:

  • update_task accepts time_spent_on_day, a { 'YYYY-MM-DD': ms } map that merges into the task's per-day bucket (timeSpentOnDay, what the worklog sums). Dates you don't list stay untouched, so you can correct an over-accrued day without negative values. timeSpent is recomputed as the bucket sum unless you also pass time_spent
  • Before this there was no way to fix a bad day: update_task { time_spent } only zeroed the total, and add_time_today rejects negative ms. The merge runs plugin-side, mirroring the proven addTimeToday write path
  • add_time_today is now documented as what it is since 1.7.2: a fallback/correction tool (retroactive accrual, backgrounded-window under-accrual), not the primary tracking path

What's in 1.7.2:

  • start_task now drives SP's real timer. It dispatches the whitelisted NgRx action [Task] SetCurrentTask with { id }, so the UI shows the ticking timer and SP accrues timeSpentOnDay natively. Before, the plugin only wrote a currentTimestamp marker that never started the UI ticker
  • stop_task dispatches [Task] SetCurrentTask with { id: null }. unsetCurrentTask is not on SP's allowed-action whitelist, and the null-id form reaches the same reducer branch
  • The marker write stays as a verification signal. If the action is rejected on an older SP build, the plugin falls back to marker-only behaviour
  • Fixed the timer spec (specs/003): [Task] Set Current Task (full-task payload) was stale, the real action is [Task] SetCurrentTask ({ id: string | null })

What's in 1.7.1:

  • batch_update_project now resolves same-batch temp_id references. Subtasks can reference a parent created in the same call, and reorders can include freshly created tasks. SP was silently dropping those tasks and ignoring the reorder before
  • Unresolvable references (cycles, unknown parents) now surface as errors instead of vanishing
  • Update and delete still need real task ids from the first call's createdTaskIds

What's in 1.7.0:

  • batch_update_project: create/update/delete/reorder in one atomic call
  • get_app_state: full snapshot of tasks, projects, tags, notes, repeat configs, counters; optional JSON backup via output_path
  • Work-context tools: get_active_work_context, get_current_context_tasks, get_selected_task, get_focused_task, select_task
  • Simple counters: get_counter, set_counter, increment_counter, decrement_counter, delete_counter, get_all_counters
  • get_notes, get_plugin_config, reinit_data
  • Fixed: SP 18.16's chrono parser was re-parsing date-like @tokens in plugin-written titles, mangling them and clobbering due dates. The plugin now strips residual date tokens while keeping non-date tokens (@dave, @tag) intact

What's in 1.6.0:

  • @date skips non-date @tokens; get_task_repeat_cfgs falls back gracefully when getAppState is unavailable

Full docs in the repository README.

v1.7.3

Choose a tag to compare

@PirAhmedShah PirAhmedShah released this 05 Aug 08:11

DEPRECATED — this release is superseded. Use v1.8.2 instead (latest plugin.zip, includes all fixes below).


MCP server + plugin for Super Productivity.

What's in 1.7.3:

  • update_task accepts time_spent_on_day, a { 'YYYY-MM-DD': ms } map that merges into the task's per-day bucket (timeSpentOnDay, what the worklog sums). Dates you don't list stay untouched, so you can correct an over-accrued day without negative values. timeSpent is recomputed as the bucket sum unless you also pass time_spent
  • Before this there was no way to fix a bad day: update_task { time_spent } only zeroed the total, and add_time_today rejects negative ms. The merge runs plugin-side, mirroring the proven addTimeToday write path
  • add_time_today is now documented as what it is since 1.7.2: a fallback/correction tool (retroactive accrual, backgrounded-window under-accrual), not the primary tracking path

Install: Settings -> Plugins -> upload this zip. Version must match package.json/manifest/plugin.js (all 1.7.3).

What's in 1.7.2:

  • start_task now drives SP's real timer. It dispatches the whitelisted NgRx action [Task] SetCurrentTask with { id }, so the UI shows the ticking timer and SP accrues timeSpentOnDay natively. Before, the plugin only wrote a currentTimestamp marker that never started the UI ticker
  • stop_task dispatches [Task] SetCurrentTask with { id: null }. unsetCurrentTask is not on SP's allowed-action whitelist, and the null-id form reaches the same reducer branch
  • The marker write stays as a verification signal. If the action is rejected on an older SP build, the plugin falls back to marker-only behaviour
  • Fixed the timer spec (specs/003): [Task] Set Current Task (full-task payload) was stale, the real action is [Task] SetCurrentTask ({ id: string | null })

What's in 1.7.1:

  • batch_update_project now resolves same-batch temp_id references. Subtasks can reference a parent created in the same call, and reorders can include freshly created tasks. SP was silently dropping those tasks and ignoring the reorder before
  • Unresolvable references (cycles, unknown parents) now surface as errors instead of vanishing
  • Update and delete still need real task ids from the first call's createdTaskIds

What's in 1.7.0:

  • batch_update_project: create/update/delete/reorder in one atomic call
  • get_app_state: full snapshot of tasks, projects, tags, notes, repeat configs, counters; optional JSON backup via output_path
  • Work-context tools: get_active_work_context, get_current_context_tasks, get_selected_task, get_focused_task, select_task
  • Simple counters: get_counter, set_counter, increment_counter, decrement_counter, delete_counter, get_all_counters
  • get_notes, get_plugin_config, reinit_data
  • Fixed: SP 18.16's chrono parser was re-parsing date-like @tokens in plugin-written titles, mangling them and clobbering due dates. The plugin now strips residual date tokens while keeping non-date tokens (@dave, @tag) intact

What's in 1.6.0:

  • @date skips non-date @tokens; get_task_repeat_cfgs falls back gracefully when getAppState is unavailable

Full docs in the repository README.

v1.7.2

Choose a tag to compare

@PirAhmedShah PirAhmedShah released this 05 Aug 07:42

DEPRECATED — this release is superseded. Use v1.8.2 instead (latest plugin.zip, includes all fixes below).


MCP server + plugin for Super Productivity.

What's in 1.7.2:

  • start_task now drives SP's real timer. It dispatches the whitelisted NgRx action [Task] SetCurrentTask with { id }, so the UI shows the ticking timer and SP accrues timeSpentOnDay natively. Before, the plugin only wrote a currentTimestamp marker that never started the UI ticker
  • stop_task dispatches [Task] SetCurrentTask with { id: null }. unsetCurrentTask is not on SP's allowed-action whitelist, and the null-id form reaches the same reducer branch
  • The marker write stays as a verification signal. If the action is rejected on an older SP build, the plugin falls back to marker-only behaviour
  • Fixed the timer spec (specs/003): [Task] Set Current Task (full-task payload) was stale, the real action is [Task] SetCurrentTask ({ id: string | null })

Install: Settings -> Plugins -> upload this zip. Version must match package.json/manifest/plugin.js (all 1.7.2).

What's in 1.7.1:

  • batch_update_project now resolves same-batch temp_id references. Subtasks can reference a parent created in the same call, and reorders can include freshly created tasks. SP was silently dropping those tasks and ignoring the reorder before
  • Unresolvable references (cycles, unknown parents) now surface as errors instead of vanishing
  • Update and delete still need real task ids from the first call's createdTaskIds

What's in 1.7.0:

  • batch_update_project: create/update/delete/reorder in one atomic call
  • get_app_state: full snapshot of tasks, projects, tags, notes, repeat configs, counters; optional JSON backup via output_path
  • Work-context tools: get_active_work_context, get_current_context_tasks, get_selected_task, get_focused_task, select_task
  • Simple counters: get_counter, set_counter, increment_counter, decrement_counter, delete_counter, get_all_counters
  • get_notes, get_plugin_config, reinit_data
  • Fixed: SP 18.16's chrono parser was re-parsing date-like @tokens in plugin-written titles, mangling them and clobbering due dates. The plugin now strips residual date tokens while keeping non-date tokens (@dave, @tag) intact

What's in 1.6.0:

  • @date skips non-date @tokens; get_task_repeat_cfgs falls back gracefully when getAppState is unavailable

Full docs in the repository README.

v1.7.1

Choose a tag to compare

@github-actions github-actions released this 05 Aug 06:24

DEPRECATED — this release is superseded. Use v1.8.2 instead (latest plugin.zip, includes all fixes below).


MCP server + plugin for Super Productivity. Fixes the two SP 18.16 incompatibilities and adds atomic batch operations.

What's in 1.7.1:

  • batch_update_project now resolves same-batch temp_id references. Subtasks can reference a parent created in the same call, and reorders can include freshly created tasks. SP was silently dropping those tasks and ignoring the reorder before
  • Unresolvable references (cycles, unknown parents) now surface as errors instead of vanishing
  • Update and delete still need real task ids from the first call's createdTaskIds

What's in 1.7.0:

  • batch_update_project: create/update/delete/reorder in one atomic call
  • get_app_state: full snapshot of tasks, projects, tags, notes, repeat configs, counters; optional JSON backup via output_path
  • Work-context tools: get_active_work_context, get_current_context_tasks, get_selected_task, get_focused_task, select_task
  • Simple counters: get_counter, set_counter, increment_counter, decrement_counter, delete_counter, get_all_counters
  • get_notes, get_plugin_config, reinit_data
  • Fixed: SP 18.16's chrono parser was re-parsing date-like @tokens in plugin-written titles, mangling them and clobbering due dates. The plugin now strips residual date tokens while keeping non-date tokens (@dave, @tag) intact

What's in 1.6.0:

  • @date skips non-date @tokens; get_task_repeat_cfgs falls back gracefully when getAppState is unavailable

Full docs in the repository README.

v1.5.2

Choose a tag to compare

@github-actions github-actions released this 04 Aug 14:11

DEPRECATED — this release is superseded. Use v1.8.2 instead (latest plugin.zip, includes all fixes below).


Schedule-aware MCP server for Super Productivity.

What's in 1.5.2:

  • get_schedule returns a time-blocked view with start/end times, overlap clusters, and completed tasks binned by the day they finished
  • get_tasks gains scheduled_on, completed_on, overlapping, sort_by filters and an include_schedule mode
  • get_task composes a full task detail: parent, subtasks, and time spent over the last 14 days
  • Task responses resolve project titles and tags by default; refresh a 30s cache on tag or project edits
  • sp://context resource: server time, projects, tags, today's schedule, and overdue tasks in one fetch
  • add_time_today and get_time support agent-driven time tracking
  • Fixed completed_on sorting (done tasks were being stripped before filtering) and an overlap where done tasks appeared twice

Full docs in the repository README.