Skip to content

Fix task status parity with master - #153

Merged
tiensonqin merged 1 commit into
mainfrom
devin/1793877777-task-status-parity
Nov 5, 2026
Merged

tiensonqin merged 1 commit into
mainfrom
devin/1793877777-task-status-parity

Conversation

@tiensonqin

@tiensonqin tiensonqin commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Align mobile capture and editor toolbar behavior with the reviewed master property rules and status cycle.

  • Add #Task when setting status, scheduled, or deadline unless an existing class (including inherited classes) supplies that property.
  • Cycle Todo → Doing → Done → empty → Todo from the current database status, not stale UI state. Clearing status removes #Task only when no other task properties remain; otherwise preserve the class and store the empty placeholder.
  • Apply capture tags before the explicit status, using the actual stored value for conflict checks so tag defaults cannot override the selection or add a redundant #Task.
  • Cover class-aware tagging, status clearing, stale-snapshot cycling, and capture transaction ordering.

Validation: opam exec --switch=5.5.0 -- dune build @shared/native/runtest passed locally (1,295 tests); git diff --check passed. CI passed: OCaml core, Android e2e, iOS e2e, and Vendor duniverse.

Native iOS UI validation passed at 7559c203 on iPhone 17 / iOS 26.5 with an isolated offline graph and the real OCaml core/native renderer. Capture status/tag behavior, continuous editor toolbar cycling, both clearing paths, and app-restart persistence were exercised. Built-in Task membership was additionally checked from persisted transactions because compact rows intentionally hide that chip. Local interactive Android, hosted auth/sync, scheduled/deadline, direct Task picker capture, and the two review-specific canonical edge cases were not exercised.

Link to Devin session: https://app.devin.ai/sessions/3e39d05f8d7a49cd81782d601d79b9b2
Open in Devin Desktop: https://app.devin.ai/desktop/session/3e39d05f8d7a49cd81782d601d79b9b2?variant=devin
Requested by: @tiensonqin


🟢 Devin Review found nothing to fix · View findings · Follow Devin's work

Devin Review

@devin-ai-integration

Copy link
Copy Markdown

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

@devin-ai-integration

Copy link
Copy Markdown

Native iOS UI validation passed at 7559c203 on iPhone 17 / iOS 26.5 using an isolated offline graph, the real OCaml core, and the native renderer.

  • Explicit Todo/Doing capture adds Task; inline #Task capture retains Done.
  • Task-child capture retains Doing without a redundant Task tag.
  • The same active editor cycles Todo → Doing → Done → empty → Todo continuously.
  • Clear removes Task/status with no other task properties; with High priority, it retains Task/priority, hides status, and next cycles to Todo.
  • Captured and cleared states persist after app restart.

Compact rows intentionally hide the built-in Task chip; read-only persisted-transaction checks additionally verified membership and empty-placeholder semantics.

Recorded native interaction

Native iOS capture and status cycling

After restart

Capture statuses Cleared states and retained priority
Capture after restart Cleared states after restart

Not exercised locally: hosted auth/sync, Android, scheduled/deadline, direct Task picker capture, or the two review-specific canonical edge cases. No parity defect was observed in the executed scenarios. The checkout remains clean and unchanged.

Written by Devin

@tiensonqin
tiensonqin merged commit 5fd5d34 into main Nov 5, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant