Skip to content

Commit eeb62a6

Browse files
hangtime79claude
andcommitted
docs(v0.9.8): Add release notes and post-mortem
- Release notes for v0.9.8 - Post-mortem analysis - Updated CHANGELOG 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 797ac5c commit eeb62a6

3 files changed

Lines changed: 201 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.9.8] - 2025-12-29
11+
12+
### Added
13+
- Task status filter buttons in control bar (#51)
14+
- Filter by: All, Completed, Overdue, In Progress, Not Started
15+
- Multiple selection with OR logic
16+
- Overdue tasks also appear in In Progress/Not Started filters
17+
- Empty state message when no tasks match selected filters
18+
- Dark mode styling for filter buttons
19+
1020
## [0.9.7] - 2025-12-29
1121

1222
### Added
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# Post-Mortem: v0.9.8
2+
3+
**Branch:** `feature/v0.9.8-task-filtering`
4+
**Type:** Feature
5+
**Duration:** 1 day (Started: 2025-12-29, Completed: 2025-12-29)
6+
**Outcome:** ✅ Success
7+
8+
---
9+
10+
## Summary
11+
12+
Implemented task status filtering feature allowing users to filter the Gantt chart by task status (Completed, Overdue, In Progress, Not Started). Initial implementation used DOM hiding which was refactored to full re-render per user feedback to properly resize the chart container.
13+
14+
---
15+
16+
## Scope
17+
18+
### Planned
19+
- [x] Filter buttons in control bar
20+
- [x] Multiple selection with OR logic
21+
- [x] Overdue overlap with In Progress/Not Started
22+
- [x] Empty state for no matches
23+
- [x] Dark mode support
24+
- [x] Filter persistence across view changes
25+
26+
### Delivered
27+
All planned items delivered.
28+
29+
### Deferred Items
30+
None
31+
32+
---
33+
34+
## Commit Analysis
35+
36+
| Metric | Value | Assessment |
37+
|--------|-------|------------|
38+
| Total commits | 2 | |
39+
| Feature commits | 1 | |
40+
| Fix/debug commits | 1 | |
41+
| Reverts | 0 | |
42+
| Churn ratio | 50% | 🟡 Medium (expected - user QA feedback) |
43+
44+
The fix commit was expected iteration: initial implementation used DOM hiding (display:none) which didn't resize the chart. User correctly identified this as "hiding" rather than true filtering. Refactored to re-render approach.
45+
46+
---
47+
48+
## What Went Well
49+
50+
- Clean spec-to-implementation path
51+
- All user-specified features delivered
52+
- Quick turnaround on refactor request
53+
- Re-render approach is more robust than DOM hiding
54+
55+
---
56+
57+
## What Didn't Go Well
58+
59+
- Initial approach (DOM hiding) was simpler but didn't meet UX expectation
60+
- Should have anticipated that "filtering" implies chart resizing
61+
62+
---
63+
64+
## Blockers Encountered
65+
66+
None
67+
68+
---
69+
70+
## Technical Discoveries
71+
72+
### Implementation Pattern
73+
- **DOM hiding vs re-render**: For filtering that should affect layout (chart height, grid size), re-render with filtered data is preferred over hiding DOM elements. DOM hiding keeps the original layout intact.
74+
75+
### State Management
76+
- Storing `allTasks` separately from `currentTasks` allows filtering without re-fetching data
77+
- Storing `lastGanttConfig` enables re-render without rebuilding config
78+
79+
---
80+
81+
## CLI Docs Candidates
82+
83+
None - no new platform learnings.
84+
85+
---
86+
87+
## Recommendations
88+
89+
### For Next Release
90+
- Consider adding filter state to URL/localStorage for persistence across sessions
91+
92+
### Process Improvements
93+
- When implementing "filter" functionality, default to re-render approach unless specifically need to preserve layout
94+
95+
### Technical Debt
96+
- None introduced
97+
98+
---
99+
100+
## Lessons Learned
101+
102+
1. "Filtering" implies layout changes - users expect the chart to shrink when tasks are hidden
103+
2. Re-render is more robust than DOM manipulation for filter state
104+
3. Storing original data separately enables non-destructive filtering
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# Release Notes: v0.9.8
2+
3+
**Release Date:** 2025-12-29
4+
**Type:** Feature
5+
**Branch:** `feature/v0.9.8-task-filtering`
6+
7+
---
8+
9+
## Summary
10+
11+
This release adds task status filtering to the Gantt chart, allowing users to focus on specific categories of work by showing only Completed, Overdue, In Progress, or Not Started tasks. Multiple filters can be combined with OR logic.
12+
13+
---
14+
15+
## Changes
16+
17+
### Added
18+
- Task status filter buttons in control bar (#51)
19+
- Filter options: All, Completed, Overdue, In Progress, Not Started
20+
- Positioned to the right of "Project Timeline" brand title
21+
- Multiple selection with OR logic (e.g., Overdue + In Progress shows both)
22+
- Overdue tasks also appear when In Progress or Not Started filters active
23+
- Empty state message when no tasks match selected filter(s)
24+
- Dark mode styling for filter buttons
25+
26+
### Technical Details
27+
- Status definitions:
28+
- **Completed:** progress === 100
29+
- **Overdue:** progress < 100 AND end_date < today
30+
- **In Progress:** progress > 0 AND progress < 100
31+
- **Not Started:** progress === 0
32+
- Filtering triggers full chart re-render (not just DOM hiding) so container properly resizes
33+
- Filter state persists across view mode changes
34+
35+
---
36+
37+
## Files Modified
38+
39+
| File | Change Type | Description |
40+
|------|-------------|-------------|
41+
| `webapps/gantt-chart/body.html` | Modified | Added filter button group HTML |
42+
| `webapps/gantt-chart/app.js` | Modified | Added filter state, getTaskStatuses(), filterTasksByStatus(), applyTaskFilters(), setupFilterButtons() |
43+
| `resource/webapp/style.css` | Modified | Added filter button and empty state styles with dark mode support |
44+
| `plugin.json` | Modified | Version bump to 0.9.8 |
45+
| `plan/specs/feature-v0.9.8-spec.md` | Added | Feature specification |
46+
47+
---
48+
49+
## Testing
50+
51+
- **Unit Tests:** N/A (no Python changes, JS-only feature)
52+
- **Manual Verification:**
53+
- [x] Filter buttons appear right of "Project Timeline"
54+
- [x] "All" button active by default
55+
- [x] Each filter shows correct task subset
56+
- [x] Multiple filters can be selected (OR logic)
57+
- [x] Clicking active filter deselects it
58+
- [x] Deselecting all filters returns to "All"
59+
- [x] Filters persist across view mode changes
60+
- [x] Chart resizes when tasks filtered out
61+
- [x] Empty state shows when no tasks match
62+
- [x] Dark mode styling works correctly
63+
64+
---
65+
66+
## Breaking Changes
67+
68+
None
69+
70+
---
71+
72+
## Known Issues
73+
74+
None
75+
76+
---
77+
78+
## Dependencies
79+
80+
None
81+
82+
---
83+
84+
## Related Documents
85+
86+
- Spec: `plan/specs/feature-v0.9.8-spec.md`
87+
- Post-mortem: `plan/post-mortems/v0.9.8-post-mortem.md`

0 commit comments

Comments
 (0)