This release includes 1 security fix for security teams reviewing exposed deployments.
Topics
+13 more
Affected surfaces
ReleasePort's take
Moderate signalThe 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 summaryHardened SuperSync E2EE against metadata tampering (GHSA-8pxh-mgc7-gp3g), added new contributors, and recorded other changes.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| 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
About Super Productivity
Advanced todo list app with integrated timeboxing and time tracking capabilities. Integrates with Jira, GitHub, GitLab, Redmine and OpenProject.
Beta — feedback welcome: [email protected]