Skip to content

feat: add edit sprint functionality and completed sprints section to project interactions - #373

Merged
pikann merged 2 commits into
masterfrom
feature/enhance-sprint-functionality
Aug 7, 2026
Merged

feat: add edit sprint functionality and completed sprints section to project interactions#373
pikann merged 2 commits into
masterfrom
feature/enhance-sprint-functionality

Conversation

@pikann

@pikann pikann commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Previously, completed sprints disappeared from the sidebar entirely once closed, and sprint metadata (name, goal, start/due date) could only be set once when starting a sprint — there was no way to fix a typo or adjust dates afterward.

  • Sidebar now shows a collapsible Completed Sprints section (collapsed by default) below the active sprints, so past sprints stay reachable instead of vanishing after completion.
  • Sprint detail page gets a new Edit sprint action (next to Complete sprint, gated on sprints.write) that opens a modal to update the sprint's name, goal, start date, and due date — available regardless of sprint status, including completed sprints.
  • Added the new UI strings to all 9 supported locales.

Changes

  • apps/web/src/components/app-shell/app-sidebar.tsx — collapsible "Completed Sprints" list in the project sidebar, filtered from the existing sprints query.
  • apps/web/src/routes/_authenticated/projects/$projectId/interactions/sprints/$sprintId.tsx — "Edit sprint" button + modal wired to the existing PATCH /projects/:projectId/sprints/:sprintId endpoint (no backend changes needed — it already supported updating these fields for any sprint status).
  • apps/web/src/i18n/locales/*/{appShell,projects}.json — translated strings for interactions.completedSprints and layout.sprintDetail.editSprint(Modal).

Test plan

  • tsc -b --noEmit passes
  • biome check passes
  • Manually verify: complete a sprint, confirm it appears under "Completed Sprints" in the sidebar and opens correctly
  • Manually verify: edit name/goal/start/due date on an active, planned, and completed sprint, confirm changes persist and sidebar/detail view update

@pikann pikann changed the title feat: add edit sprint functionality and completed sprints section to … feat: add edit sprint functionality and completed sprints section to project interactions Aug 7, 2026

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ No new issues found.

Reviewed changes

This PR adds two related project-interactions features across 20 files (18 of which are i18n locale additions):

  • Edit sprint modalapps/web/src/routes/_authenticated/projects/$projectId/interactions/sprints/$sprintId.tsx now lets users with sprints.write permission edit a sprint's name, goal, start date, and end date via a new inline modal backed by the existing updateSprint API.
  • Completed sprints sidebar sectionapps/web/src/components/app-shell/app-sidebar.tsx now renders a collapsible "Completed Sprints" section below active sprints, sorted by updated_at descending.
  • i18n coverage — added interactions.completedSprints in appShell.json and layout.sprintDetail.editSprint / editSprintModal.* keys in projects.json for all supported locales.

The edit flow reuses the existing UpdateSprintPayload/updateSprint client, invalidates the correct query keys, and matches the date-conversion pattern already used by StartSprintModal. The completed-sprints list is scoped to users who can view sprints and mirrors the active-sprint item styling. No blocking issues.

Pullfrog  | View workflow run | Using Kimi K2 (free via Pullfrog for OSS) | 𝕏

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ No new issues found.

Reviewed changes

The latest commit polishes the initial edit-sprint and completed-sprints work:

  • Persisted completed-sprints collapse stateapp-sidebar.tsx now stores the collapsed/expanded state per-project in localStorage (paca:sidebar-completed-sprints-collapsed:${projectId}), defaulting to collapsed and guarded against storage exceptions.
  • Kept sprint counts fresh during task editsinteraction-layout.tsx now invalidates ["projects", projectId, "sprints"] after task status changes, creation, updates, and deletion so the Complete Sprint dialog's move-to-sprint suggestions reflect current incomplete-task counts.
  • Added client-side date validation and error handling — the edit sprint modal validates that the due date is not before the start date (string comparison on YYYY-MM-DD is lexicographically correct), disables save while invalid or empty, surfaces a generic error message on API failure, and closes on Escape via a document-level listener that matches StartSprintModal.
  • Added missing i18n strings — all 9 locales received editSprintModal.dateRangeError and editSprintModal.error.

Verified that the invalidated query keys exactly match sprintsQueryOptions / sprintQueryOptions. No blocking issues.

Pullfrog  | View workflow run | Using Kimi K2 (free via Pullfrog for OSS) | 𝕏

@pikann
pikann merged commit a40d295 into master Aug 7, 2026
2 checks passed
@pikann
pikann deleted the feature/enhance-sprint-functionality branch August 7, 2026 07:28
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