feat(projects): more intuitive task add/edit and back nav (MAPPS-165) #158
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/mapps-165-task-edit-ux"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
MAPPS-165: makes adding/editing project tasks more intuitive.
[View Tasks][Add Task][Edit][Delete]./projects/:id/tasks, clicking a task row opens the same task editor the detail page uses.How
To give both pages one edit experience instead of duplicating ~200 lines, the task-edit modal (form + change history +
PUT /tasks/{id}) is extracted fromProjectDetailPageinto a sharedTaskEditModalcomponent. It seeds its own form state from the passed task, fetches that task's change history, and reports back viaonsaved/onclose(the caller clears the selection and restarts its task list).This is a net simplification of
ProjectDetailPage: the inline modal plus its ~10te_*signals and the per-task history resource are gone, replaced by a smallif let Some(task) = ... { TaskEditModal { ... } }.ProjectTasksPagereuses the same component.RemoteTask/RemoteTaskStatus/RemoteUsergainPartialEqso they can pass as props.Notes
cargo clippy --all-targets -- -D warnings) gates. A reviewer pass found no compile/clippy issues (no dangling refs, props satisfy Clone+PartialEq, borrow/move clean, all touched component props exist).Test plan
/projects/:id/tasks): rows are clickable and open the task editor in place; save refreshes; "Back to Project" returns to the detail page.MAPPS-165. - Move the project Edit button into the detail-page header action group, next to View Tasks / Add Task / Delete, so all project actions sit together (it was tucked on the Overview card, easy to miss). - Make the project-tasks overview (/projects/:id/tasks) rows click-to-edit, opening the same task editor the detail page uses. - Add a "Back to Project" button to the tasks-overview header (there was no way back after clicking View Tasks). To give both pages one edit experience, the task-edit modal (form + change history + PUT /tasks/{id}) is extracted from ProjectDetailPage into a shared `TaskEditModal` component that seeds its own state from the passed task and reports back via onsaved/onclose. This removes the inline modal and its ~10 te_* signals + history resource from ProjectDetailPage (net simplification) and is reused verbatim by ProjectTasksPage. `RemoteTask`/`RemoteTaskStatus`/`RemoteUser` gain `PartialEq` so they can pass as props. Not compiled locally (no Rust toolchain in this environment); mirrors existing modal/resource idioms and is gated by CI (cargo clippy --all-targets -- -D warnings). #MAPPS-165 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>