feat(app): support Markdown in task details and messages #67

Merged
morten-olsen merged 1 commit from feat/01a158a9-markdown into main 2026-10-20 20:42:38 +02:00
Owner

Summary

Task descriptions now render Markdown in authored order, with Mission Control's existing Checkbox and a separate Edit description action. Conversation and activity steps show saved state and are read-only. Quick view keeps plain notes, grouped steps and its other editing controls; description tap-to-edit is removed.

shared themed Markdown → supported React Native render rules
                       → markdown-it task source lines → existing tick/save action
images → tappable links; code/tables → local horizontal scroll

Evidence

  • CI: PR pipeline #469 and branch pipeline #470 passed at 30f0372. Quality: 129 files / 866 tests, type/lint/dependency/format checks; documentation, deployment-tool smoke and both server/agent image builds passed.
  • Before: main 972bb75 showed raw task descriptions and extracted steps; before phone/desktop screenshots are attached to the task.
  • After: source tests cover duplicate labels, nested/quoted/continuation-line tasks, LF/CRLF/CR and fenced/indented examples. Web acceptance exercises authored order, keyboard toggle, source preservation, save/reopen, explicit raw editing, text selection, independent links, readonly historical checkboxes, images-as-links, chat tones and phone overflow. The existing task and quick-view regression suites pass.
  • Android Expo export/Hermes compilation passed on Expo 58 / React Native 0.88 / React 19.3. This container has no adb, SDK, emulator or Android target: actual Android UI, TalkBack, native selection/keyboard/touch and screenshots remain unverified. Morten explicitly approved merge and release on 2026-10-20 at 18:39:56 so he can perform the real-device test afterward. Native acceptance follows release and is not a merge gate.
  • Renderer selection, acceptance matrix and rollout plan. 11 source/checklist tests passed locally. The broader phone/desktop task regression run passed 32 cases; the final expanded Markdown run passed all 8 cases, and the final commit passed the focused description checks again at both widths. Before/after screenshots are attached to the task. Owner review findings are resolved; actual Android acceptance remains pending.

Merge danger

Door: two-way
No schema or stored-format change. Main builds an image and updates the existing draft release; it does not publish a stable release or deploy this UI. Creating/publishing a release remains a separate approval step.

Blast radius: app
The shared renderer also serves roles, skills, routines, templates and transcripts. It retains the existing theme and native Text/View conventions. HTML is inert; unsafe link schemes are rejected; images never load inline. No new execution, privilege, auth or exposure path meets the Security Engineer trigger. No Designer sign-off was requested.

Rollback and verification

  • Roll back: revert the UI commit and deliver a compatible approved release. Checkbox edits remain ordinary Markdown.
  • Verify after rollout: green release pipelines, GitOps mirror/revision and actual server/agent image pins/readiness, then description order/toggle/save/edit and historical messages in the live app. Publishing a stable release automatically updates both GitOps pins and restarts the server; obtain Morten's explicit approval first.
  • Reviewers: owner self-review against standards and the agreed design. Morten will perform Android native acceptance after the authorized release. The native checks remain unverified until then; no code finding remains open.
## Summary Task descriptions now render Markdown in authored order, with Mission Control's existing Checkbox and a separate Edit description action. Conversation and activity steps show saved state and are read-only. Quick view keeps plain notes, grouped steps and its other editing controls; description tap-to-edit is removed. ```text shared themed Markdown → supported React Native render rules → markdown-it task source lines → existing tick/save action images → tappable links; code/tables → local horizontal scroll ``` ## Evidence - **CI:** [PR pipeline #469](https://woodpecker.olsen.cloud/repos/32/pipeline/469) and [branch pipeline #470](https://woodpecker.olsen.cloud/repos/32/pipeline/470) passed at `30f0372`. Quality: 129 files / 866 tests, type/lint/dependency/format checks; documentation, deployment-tool smoke and both server/agent image builds passed. - **Before:** main `972bb75` showed raw task descriptions and extracted steps; before phone/desktop screenshots are attached to the task. - **After:** source tests cover duplicate labels, nested/quoted/continuation-line tasks, LF/CRLF/CR and fenced/indented examples. Web acceptance exercises authored order, keyboard toggle, source preservation, save/reopen, explicit raw editing, text selection, independent links, readonly historical checkboxes, images-as-links, chat tones and phone overflow. The existing task and quick-view regression suites pass. - Android Expo export/Hermes compilation passed on Expo 58 / React Native 0.88 / React 19.3. This container has no adb, SDK, emulator or Android target: actual Android UI, TalkBack, native selection/keyboard/touch and screenshots remain **unverified**. Morten explicitly approved merge and release on 2026-10-20 at 18:39:56 so he can perform the real-device test afterward. Native acceptance follows release and is not a merge gate. - [Renderer selection, acceptance matrix and rollout plan](https://code.olsen.cloud/ai/mission-control/src/commit/30f0372372af012cd677063023f8a4be12dd2b80/docs/review/markdown/acceptance.md). 11 source/checklist tests passed locally. The broader phone/desktop task regression run passed 32 cases; the final expanded Markdown run passed all 8 cases, and the final commit passed the focused description checks again at both widths. Before/after screenshots are attached to the task. Owner review findings are resolved; actual Android acceptance remains pending. ## Merge danger **Door:** two-way No schema or stored-format change. Main builds an image and updates the existing draft release; it does not publish a stable release or deploy this UI. Creating/publishing a release remains a separate approval step. **Blast radius:** app The shared renderer also serves roles, skills, routines, templates and transcripts. It retains the existing theme and native Text/View conventions. HTML is inert; unsafe link schemes are rejected; images never load inline. No new execution, privilege, auth or exposure path meets the Security Engineer trigger. No Designer sign-off was requested. ## Rollback and verification - **Roll back:** revert the UI commit and deliver a compatible approved release. Checkbox edits remain ordinary Markdown. - **Verify after rollout:** green release pipelines, GitOps mirror/revision and actual server/agent image pins/readiness, then description order/toggle/save/edit and historical messages in the live app. Publishing a stable release automatically updates both GitOps pins and restarts the server; obtain Morten's explicit approval first. - **Reviewers:** owner self-review against standards and the agreed design. Morten will perform Android native acceptance after the authorized release. The native checks remain unverified until then; no code finding remains open.
feat(app): render Markdown with source-bound task checkboxes
All checks were successful
ci/woodpecker/push/deploy-tools Pipeline was successful
ci/woodpecker/pr/deploy-tools Pipeline was successful
ci/woodpecker/pr/image-agent Pipeline was successful
ci/woodpecker/pr/quality Pipeline was successful
ci/woodpecker/push/quality Pipeline was successful
ci/woodpecker/pr/docs Pipeline was successful
ci/woodpecker/push/docs Pipeline was successful
ci/woodpecker/pr/image Pipeline was successful
30f0372372
morten-olsen left a comment

Owner self-review at 30f0372 against main 972bb75. Standards: no open findings; shared native/themed rendering and source-edit module follow repo conventions. Spec: reproduced and fixed CR-only line preservation, and restored completed-label styling without crossing out nested content; fix-only reviews confirm resolution. Source tests and web task/Markdown flows pass, Android/Hermes export passes. Actual Android UI/TalkBack/selection/touch acceptance remains unverified because no SDK/adb/emulator/target is available. Images only link, HTML stays inert, no new security review trigger. Release/rollout remains pending; verify native UI then approved release pipelines, live image pins/readiness and the original Markdown interactions. Roll back with a compatible revert release; no schema/source format changed.

Owner self-review at 30f0372 against main 972bb75. Standards: no open findings; shared native/themed rendering and source-edit module follow repo conventions. Spec: reproduced and fixed CR-only line preservation, and restored completed-label styling without crossing out nested content; fix-only reviews confirm resolution. Source tests and web task/Markdown flows pass, Android/Hermes export passes. Actual Android UI/TalkBack/selection/touch acceptance remains unverified because no SDK/adb/emulator/target is available. Images only link, HTML stays inert, no new security review trigger. Release/rollout remains pending; verify native UI then approved release pipelines, live image pins/readiness and the original Markdown interactions. Roll back with a compatible revert release; no schema/source format changed.
Author
Owner

Shipped in v0.50.0, combined source 57a858b838 (including #68). Main pipeline #475 and complete release pipeline #476 passed, including the signed Android APK. Apps CI #381 passed for pair-update 9695f53. Argo is Synced/Healthy at that revision; actual server and restarted agent imageIDs match the release digests, PVC remains Bound and health is ok. The original authored-order failure was reproduced on v0.49 public assets; all eight phone/desktop Markdown checks now pass against the deployed v0.50 assets using isolated local API fixtures. Native Android acceptance follows release on Morten’s device as explicitly authorized, and remains unverified until that test. Release/APK/checksum and visual evidence are on task 01a158a9.

Shipped in v0.50.0, combined source 57a858b838e2acafb2e0575e89bc121d81be9590 (including #68). Main pipeline #475 and complete release pipeline #476 passed, including the signed Android APK. Apps CI #381 passed for pair-update 9695f53. Argo is Synced/Healthy at that revision; actual server and restarted agent imageIDs match the release digests, PVC remains Bound and health is ok. The original authored-order failure was reproduced on v0.49 public assets; all eight phone/desktop Markdown checks now pass against the deployed v0.50 assets using isolated local API fixtures. Native Android acceptance follows release on Morten’s device as explicitly authorized, and remains unverified until that test. Release/APK/checksum and visual evidence are on task 01a158a9.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ai/mission-control!67
No description provided.