Skip to content

Super Productivity

v18.15.1 Security

This release includes 1 security fix for security teams reviewing exposed deployments.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →
This release patches 1 known CVE

Topics

android flowmodoro flowtime habit-tracker ios issue-tracker
+13 more
linux local-first macos pomodoro pomodoro-timer privacy productivity task-manager time-tracker time-tracking to-do-list todo windows

Affected surfaces

auth rbac crypto_tls

ReleasePort's take

Moderate signal
editorial:auto 9d

The release hardens SuperSync's end‑to‑end encryption against metadata tampering (GHSA-8pxh-mgc7-gp3g).

Why it matters: GHSA-8pxh-mgc7-gp3g poses a high‑severity risk; operators must upgrade to v18.15.1 immediately.

Summary

AI summary

Hardened SuperSync E2EE against metadata tampering (GHSA-8pxh-mgc7-gp3g), added new contributors, and recorded other changes.

Changes in this release

Security Critical

Hardens SuperSync E2EE against metadata tampering (GHSA-8pxh-mgc7-gp3g)

Hardens SuperSync E2EE against metadata tampering (GHSA-8pxh-mgc7-gp3g)

Source: llm_adapter@2026-07-17

Confidence: high

Feature Low

Adds a single-day view to the Schedule tab

Adds a single-day view to the Schedule tab

Source: llm_adapter@2026-07-17

Confidence: high

Feature Low

Adds a one background full‑sync scheduler to sync module

Adds a one background full‑sync scheduler to sync module

Source: llm_adapter@2026-07-17

Confidence: high

Feature Low

Adds Home Assistant Bridge plugin to community plugins

Adds Home Assistant Bridge plugin to community plugins

Source: llm_adapter@2026-07-17

Confidence: high

Feature Low

Shows custom section task counts in Work View

Shows custom section task counts in Work View

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Feature Low

Suppresses idle dialog during active work sessions

Suppresses idle dialog during active work sessions

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Feature Low

Adds conflict journal, disjoint‑field auto‑merge, and review UI to sync

Adds conflict journal, disjoint‑field auto‑merge, and review UI to sync

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Feature Low

Shows break time today in Work View

Shows break time today in Work View

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Feature Low

Navigates from empty add‑subtask input in Tasks module

Navigates from empty add‑subtask input in Tasks module

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Feature Low

Completes Simplified Chinese translations

Completes Simplified Chinese translations

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Medium

Prevents migrator advisory‑lock leak on deploy timeout in supersync server

Prevents migrator advisory‑lock leak on deploy timeout in supersync server

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Medium

Heals missing idle config field during sync schema‑migration upgrade

Heals missing idle config field during sync schema‑migration upgrade

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Medium

Makes interrupted CONCURRENTLY migrations recoverable in supersync server

Makes interrupted CONCURRENTLY migrations recoverable in supersync server

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Medium

Unfreezes disjoint‑field merge to stop data loss in sync engine

Unfreezes disjoint‑field merge to stop data loss in sync engine

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Medium

Dedupes surgical‑sync retries and retains import author through pruning in sync engine

Dedupes surgical‑sync retries and retains import author through pruning in sync engine

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Medium

Fences in‑flight sync cycles across destructive config changes in sync engine

Fences in‑flight sync cycles across destructive config changes in sync engine

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Low

Stops Android widget labeling stale list as Today

Stops Android widget labeling stale list as Today

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

Keeps import author during client‑side clock pruning in sync

Keeps import author during client‑side clock pruning in sync

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

Guards snapshots against unpersisted state changes in sync

Guards snapshots against unpersisted state changes in sync

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

Quiesces op capture before snapshot and compaction in sync

Quiesces op capture before snapshot and compaction in sync

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

Rebases repair op clocks on the durable clock in sync

Rebases repair op clocks on the durable clock in sync

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

Keeps taskIds unique on replayed move‑to‑done in Project module

Keeps taskIds unique on replayed move‑to‑done in Project module

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

Keeps layout reference live instead of freezing at first render in Schedule UI

Keeps layout reference live instead of freezing at first render in Schedule UI

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

Isolates file‑provider state across target changes in sync

Isolates file‑provider state across target changes in sync

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

Sanitizes invalid LWW projectId to the current project in sync

Sanitizes invalid LWW projectId to the current project in sync

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

Self‑heals orphan tasks to Inbox on navigation in Tasks module

Self‑heals orphan tasks to Inbox on navigation in Tasks module

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

Recovers project notes, sections, and repeat configurations after losing delete in sync

Recovers project notes, sections, and repeat configurations after losing delete in sync

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

Stops GitLab connection test/search from firing thousands of requests

Stops GitLab connection test/search from firing thousands of requests

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

Localizes ISO 8601 recurring‑task start date & weekday labels in locale module

Localizes ISO 8601 recurring‑task start date & weekday labels in locale module

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

Localizes remaining ISO 8601 spelled‑out date names in locale module

Localizes remaining ISO 8601 spelled‑out date names in locale module

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Full changelog

For all current downloads, package links, and platform-specific notes: check the wiki.

Features

  • schedule: add a single-day view to the Schedule tab (#9058)
  • work-view: show custom section task counts #9068 (#9109)
  • sync: add one background full-sync scheduler (#9078)
  • suppress idle dialog during active work sessions (#8965)
  • sync: conflict journal + disjoint-field auto-merge + review UI (#8874)
  • work-view: show break time today (#8909)
  • tasks: navigate from empty add-subtask input (#8916)
  • add Home Assistant Bridge to community plugins (#8891)

Fixes

  • supersync: prevent migrator advisory-lock leak on deploy timeout (#9126)
  • sync: heal missing idle config field on schema-migration upgrade (#9124)
  • supersync: make interrupted CONCURRENTLY migrations recoverable
  • android: stop the widget labelling a stale list as Today (#9098) (#9118)
  • sync: keep import author in client-side clock pruning (#9096) (#9102)
  • sync: unfreeze the disjoint-field merge to stop data loss (#9095) (#9101)
  • sync: dedupe surgical-sync retries and keep the import author through pruning (#9089)
  • sync: fence in-flight sync cycles across destructive config changes (#9088)
  • locale: consolidate textLocale, fix planner month label, enforce via lint (#8987) (#9065)
  • sync: guard snapshots against unpersisted state changes (#8751) (#9081)
  • sync: defer LocalFile folder pick commit to settings Save (#9075) (#9085)
  • sync: make no-pending concurrent crossings deterministic (#9073) (#9086)
  • sync: quiesce op capture before snapshot and compaction (#8469) (#9083)
  • sync: rebase repair op clocks on the durable clock (#8939) (#9080)
  • project: keep taskIds unique on replayed move-to-done (#8469) (#9076)
  • schedule: keep the layout reference live instead of freezing at first render (#9064)
  • sync: isolate file-provider state across target changes (#9063)
  • sync: freeze the conflict-review producers before the next release (#9061)
  • locale: localize ISO 8601 recurring-task start date & weekday labels (#8987) (#9055)
  • locale: localize remaining ISO 8601 spelled-out date names (#8987) (#9056)
  • sync: authenticate LWW project-move footprint (#9053) (#9054)
  • tasks: self-heal orphan tasks to Inbox on navigation (#8780) (#9052)
  • sync: sync review follow-up fixes (hydration data-loss + journal privacy) (#9045)
  • sync: don't block on repair dialogs while holding sp_op_log (#9026) (#9049)
  • sync: write split-compaction snapshots to immutable files (#9040) (#9047)
  • sync: recover project notes/sections/repeat-cfgs on losing delete (#9048)
  • gitlab: stop connection test/search from firing thousands of requests (#9034) (#9051)
  • i18n: complete Simplified Chinese translations #5362 (#9036)
  • sync: sanitize invalid LWW projectId to the current project (#9025) (#9041)
  • planner: don't erase day-scheduled subtasks on parent plan (#9019) (#9027)
  • sync: isolate provider encryption settings + enforce critical e2e coverage (#9044)
  • sync: guard file-based recovery snapshot vs concurrent ops (#9023) (#9043)
  • sync: retention pruning, misc→tasks alias boundary & WS local-win re-upload (#9028)
  • sync-core: break whole-entity LWW timestamp ties by clientId (#9035)
  • electron: assert renderer IPC boundary at window creation (#9018)
  • tasks: decode multipart and transfer-encoded eml bodies #8975 (#8999)
  • sync: recover tasks when a deleteProject loses an LWW conflict (#8997) (#9007)
  • sync: preserve local edits during snapshot hydration (#9010)
  • locale: localize ISO 8601 calendar weekday/month names (#8987) (#9013)
  • electron: gate Jira IPC behind a one-shot capability (#9008)
  • sync: serialize archive read-modify-write vs remote replacement (#8941) (#9006)
  • sync: make marked project deletions win LWW conflicts (#9009)
  • sync: file-based provider atomicity & conflict UX (#8960) (#9004)
  • tasks: keep REST project moves atomic across replay (#9001)
  • tasks: keep add-task bar visible above iOS keyboard (#8995)
  • sync: preserve multi-entity conflict recovery (#8990)
  • ui: open time picker for Electron touch input (#8989)
  • android: keep material icons aligned with system font scaling (#8992)
  • locale: localize ISO weekday labels (#8991)
  • sync: surface Dropbox OAuth service failures (#8988)
  • sync: keep the conflict summary banner counts live during review (#8946)
  • sync: enforce conflict-journal retention mid-session, not only at start (#8948)
  • sync: harden passkey registration verification (#8985)
  • sync: harden full-state operation recovery (#8973)
  • sync: reject forged encrypted full-state operations (#8984)
  • sync: preserve conflict cancellation and harden force overwrite (#8981)
  • sync: make task and time replay deterministic (#8979)
  • sync: prevent multi-entity conflict corruption (#8980)
  • sync: guard full-state apply against late local ops (#8976)
  • sync: harden op-log replay and recovery (#8978)
  • plugins: prevent automation rule data loss (#8972)
  • supersync-server: op data-loss on retention/cleanup & auth-endpoint hardening (#8971)
  • sync: suppress the "Project updated" snack on conflict-review flips
  • sync: bind empty string, not null, for the sync badge description at 0
  • sync: serialize remote archive side effects behind the archive mutex
  • sync: persist disjoint merges atomically and exempt them from checkpoint
  • shared-schema: let existing tasks settings win in v1-to-v2 merge
  • supersync: isolate duplicate upload ids and make clean-slate idempotent
  • supersync: widen conflict lookups to aliased and unioned entity ids
  • sync: serialize archive mutations and persist before dispatch
  • sync: guard rebuild backup identity and keep undo across reload
  • sync: make remote reducer checkpoint atomic with its clock merge
  • sync: converge rebuild capture races, unwedge archive recovery
  • accessibility: add ARIA roles, live regions, and alt attributes to banner component (#8888)
  • app: hide donation page on macOS (#8915)
  • sync: handle initial provider setup safely
  • sync: preserve actionable recovery state
  • sync: migrate legacy remote failures once
  • sync: gate incomplete rebuild recovery
  • supersync: preserve occupied ids during cleanup
  • sync: preserve incomplete recovery work
  • sync-core: validate remote apply results
  • supersync: isolate invalid upload operations
  • sync: enforce upload completion contracts
  • sync: block on incomplete local persistence
  • sync: preserve edits across rebuild resume
  • sync: preserve fresh-client recovery state
  • sync: exempt fresh-client startup ops from conflict gate
  • sync: harden SuperSync E2EE against metadata tampering (GHSA-8pxh-mgc7-gp3g) (#8904)
  • sync: surface Undo when an interrupted USE_REMOTE resume can't finish
  • sync: keep USE_REMOTE recovery Undo visible after routine sync
  • sync: preserve device-local sync settings in rebuild baseline
  • sync: remediate multi-agent review findings
  • sync: harden replay and conflict recovery
  • sync: remediate sync-correctness review findings

Other Changes

  • 18.15.0
  • Add critical tests for task and sync helper flows (#9079)
  • chore(deps)(deps): bump the github-actions-minor group with 7 updates
  • Avoid dynamic option placeholder keys
  • Polish CalDAV option load state handling
  • Clarify empty CalDAV option loads

Contributors

Thanks to everyone who contributed to this release: @aakhter @archit-goyal @coyaSONG @Erick0412-dev @ghostkeni @jkusa @jloops412 @johannesjo @lanesawyer @MannXo @Rishi943 @SalmaAbdelrhmanMostafaMahmoud @WikG1018

New Contributors

  • @jloops412 made their first contribution in https://github.com/super-productivity/super-productivity/pull/8891
  • @SalmaAbdelrhmanMostafaMahmoud made their first contribution in https://github.com/super-productivity/super-productivity/pull/8888
  • @archit-goyal made their first contribution in https://github.com/super-productivity/super-productivity/pull/8519
  • @Erick0412-dev made their first contribution in https://github.com/super-productivity/super-productivity/pull/8965
  • @WikG1018 made their first contribution in https://github.com/super-productivity/super-productivity/pull/9036
  • @ghostkeni made their first contribution in https://github.com/super-productivity/super-productivity/pull/9079
  • @coyaSONG made their first contribution in https://github.com/super-productivity/super-productivity/pull/9109
  • @jkusa made their first contribution in https://github.com/super-productivity/super-productivity/pull/9058

Full Changelog: https://github.com/super-productivity/super-productivity/compare/v18.14.0...v18.15.1

Security Fixes

  • GHSA-8pxh-mgc7-gp3g — hardened SuperSync E2EE against metadata tampering (#8904)

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Super Productivity

Get notified when new releases ship.

Sign up free

About Super Productivity

Advanced todo list app with integrated timeboxing and time tracking capabilities. Integrates with Jira, GitHub, GitLab, Redmine and OpenProject.

All releases →

Related context

Beta — feedback welcome: [email protected]