From 09ad21fd32208b99e6814b0b859b53aff9a0b8fe Mon Sep 17 00:00:00 2001 From: lyon Date: Sat, 27 Jun 2026 03:36:05 +0800 Subject: [PATCH] fix(web): rewrite MDTODO page into bounded decomposed workspace (PJ2026-01040409) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the 1125-line monolithic MdtodoView with SPEC PJ2026-01040409 §5.1 component layering and composables. Old page shell, resident metric/detail/ create boxes, nested cards and document-level scroll are cleared. Components: - MdtodoPageShell: page assembly, route restore, loading/error boundary - MdtodoToolbar: narrow status bar, Source/File dropdowns, actions - MdtodoTaskTree: Rxx outline, fold/search/filter/current highlight - MdtodoTaskPanel: title/status/body inline edit, report links, launch - MdtodoReportPanel: right-pane preview, fullscreen, light code blocks - MdtodoSourceDialog/MdtodoCreateTaskDialog/MdtodoInfoDialog: dialogs Composables: - useMdtodoRouteSelection: URL authority for source/file/task/report - useMdtodoSource: source list/config/probe/reindex - useMdtodoTaskData: files/Rxx window/task detail/links - useMdtodoTaskMutation: create/update/delete with fingerprint - useMdtodoReportPreview: preview/fullscreen/close-restore - useMdtodoWorkbenchLaunch: non-empty session with first-round prompt - useMdtodoDisplay: file/status helpers, Rxx tree derivation All web-probe data-testid contracts preserved. Build verified on D601. Closes pikasTech/HWLAB#2216 --- .../mdtodo/MdtodoCreateTaskDialog.vue | 54 + .../components/mdtodo/MdtodoInfoDialog.vue | 80 ++ .../src/components/mdtodo/MdtodoPageShell.vue | 555 ++++++++ .../components/mdtodo/MdtodoReportPanel.vue | 76 ++ .../components/mdtodo/MdtodoSourceDialog.vue | 64 + .../src/components/mdtodo/MdtodoTaskPanel.vue | 167 +++ .../src/components/mdtodo/MdtodoTaskTree.vue | 104 ++ .../src/components/mdtodo/MdtodoToolbar.vue | 82 ++ .../composables/mdtodo/useMdtodoDisplay.ts | 86 ++ .../mdtodo/useMdtodoReportPreview.ts | 86 ++ .../mdtodo/useMdtodoRouteSelection.ts | 80 ++ .../src/composables/mdtodo/useMdtodoSource.ts | 157 +++ .../composables/mdtodo/useMdtodoTaskData.ts | 104 ++ .../mdtodo/useMdtodoTaskMutation.ts | 99 ++ .../mdtodo/useMdtodoWorkbenchLaunch.ts | 156 +++ .../src/views/projects/MdtodoView.vue | 1125 +---------------- 16 files changed, 1955 insertions(+), 1120 deletions(-) create mode 100644 web/hwlab-cloud-web/src/components/mdtodo/MdtodoCreateTaskDialog.vue create mode 100644 web/hwlab-cloud-web/src/components/mdtodo/MdtodoInfoDialog.vue create mode 100644 web/hwlab-cloud-web/src/components/mdtodo/MdtodoPageShell.vue create mode 100644 web/hwlab-cloud-web/src/components/mdtodo/MdtodoReportPanel.vue create mode 100644 web/hwlab-cloud-web/src/components/mdtodo/MdtodoSourceDialog.vue create mode 100644 web/hwlab-cloud-web/src/components/mdtodo/MdtodoTaskPanel.vue create mode 100644 web/hwlab-cloud-web/src/components/mdtodo/MdtodoTaskTree.vue create mode 100644 web/hwlab-cloud-web/src/components/mdtodo/MdtodoToolbar.vue create mode 100644 web/hwlab-cloud-web/src/composables/mdtodo/useMdtodoDisplay.ts create mode 100644 web/hwlab-cloud-web/src/composables/mdtodo/useMdtodoReportPreview.ts create mode 100644 web/hwlab-cloud-web/src/composables/mdtodo/useMdtodoRouteSelection.ts create mode 100644 web/hwlab-cloud-web/src/composables/mdtodo/useMdtodoSource.ts create mode 100644 web/hwlab-cloud-web/src/composables/mdtodo/useMdtodoTaskData.ts create mode 100644 web/hwlab-cloud-web/src/composables/mdtodo/useMdtodoTaskMutation.ts create mode 100644 web/hwlab-cloud-web/src/composables/mdtodo/useMdtodoWorkbenchLaunch.ts diff --git a/web/hwlab-cloud-web/src/components/mdtodo/MdtodoCreateTaskDialog.vue b/web/hwlab-cloud-web/src/components/mdtodo/MdtodoCreateTaskDialog.vue new file mode 100644 index 00000000..d88eafb0 --- /dev/null +++ b/web/hwlab-cloud-web/src/components/mdtodo/MdtodoCreateTaskDialog.vue @@ -0,0 +1,54 @@ + + + + + +