super-productivity/src
John Costa 3dc9dc8db2
fix(tasks): persist collapsed subtask state across restart (#8788)
* fix(tasks): persist collapsed subtask state across restart #8781

Collapse/expand of a task's subtasks was written by non-persistent
actions, so the op-log never captured it and the state reset to
expanded on every reload.

Route collapse changes through the absolute, replay-safe updateTaskUi
op. toggleSubTaskMode now resolves the next _hideSubTasksMode at
dispatch time (extracted into a pure getNextHideSubTasksMode helper)
and persists that absolute value, so it is captured to the op-log and
restored on reload. Remove the old relative toggleTaskHideSubTasks
action and its reducer, which was non-deterministic on replay and threw
on a missing task. Register [Task] Update Task Ui in the ActionType enum
and compaction code map.

* test(tasks): add op-log round-trip test for _hideSubTasksMode #8781

The existing updateTaskUi test only asserted the action's persistence
metadata. Add a test that runs the value through the full op-log path
(dispatch -> capture -> JSON serialize -> convertOpToAction -> reducer
replay) and asserts the collapse value survives. The JSON hop is where a
dropped value would regress on the sync transport and SQLite op-log
backend.
2026-07-08 13:01:04 +02:00
..
app fix(tasks): persist collapsed subtask state across restart (#8788) 2026-07-08 13:01:04 +02:00
assets feat(tasks): redesign add-task-bar layout, toggles, note field & a11y (#8812) 2026-07-07 16:26:36 +02:00
environments 18.13.1 2026-07-02 16:41:38 +02:00
static fix(security): harden XSS sinks and add Origin check (#7413) 2026-05-06 21:37:06 +02:00
styles fix(android): reserve full system-bar inset for the mobile bottom nav (#8792) (#8799) 2026-07-06 18:34:24 +02:00
test-helpers build: improve testing setup to give indication about which test hangs 2025-07-18 12:11:05 +02:00
typings refactor: improve typing 2025-09-16 18:04:40 +02:00
_common.scss refactor: modernize scss syntax and get rid of most of the warnings 2025-09-04 20:29:24 +02:00
favicon.ico
hammer-config.class.ts feat: replace hammerjs with custom swipe and pan directives 2025-08-10 12:56:11 +02:00
index.html fix(security): stored XSS → RCE chain — note image, plugin nodeExecution, CSP (GHSA-78rv-m663-4fph) (#8178) 2026-06-08 20:20:17 +02:00
karma.conf.js chore(task-repeat): revert RRULE Phase 1 from master (#7948) Develop the full RFC-5545 RRULE epic on the long-running feat/rrule-epic branch and merge once complete and testable in final form, rather than landing 13 phases into master one half-state at a time. Work preserved on feat/rrule-epic. Not yet shipped (post-v18.9.1), so no user impact. 2026-06-09 13:56:38 +02:00
main.ts fix(android): suspend idle AudioContext in background to stop battery drain (#8243) (#8280) 2026-06-12 14:55:24 +02:00
manifest.json
polyfills.ts fix(schedule): indicate tasks beyond available time 2026-05-11 14:30:55 +02:00
styles.scss fix(android): reserve full system-bar inset for the mobile bottom nav (#8792) (#8799) 2026-07-06 18:34:24 +02:00
test.ts chore: remove unused eslint-disable directives 2026-06-10 17:35:37 +02:00
tsconfig.app.json fix(build): exclude test helpers from production build 2026-02-25 16:46:51 +01:00
tsconfig.spec.json fix(keyboard): resolve macOS global shortcut layout mismatch (#8378) (#8381) 2026-06-17 12:57:47 +02:00
tsconfig.worker.json build: update configuration files 2025-06-27 10:25:00 +02:00