|
| 1 | +# Post-Mortem: v0.9.5 |
| 2 | + |
| 3 | +**Branch:** `feature/v0.9.5-tooltip-polish-ii` |
| 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 two tooltip enhancements: dependency name resolution (showing task names instead of IDs) and a pinnable tooltip system. The pin feature evolved during QA from single-pinned to multi-pinned with collision avoidance based on user feedback. |
| 13 | + |
| 14 | +--- |
| 15 | + |
| 16 | +## Scope |
| 17 | + |
| 18 | +### Planned |
| 19 | +- [x] Show task names in dependency tooltips (#65) |
| 20 | +- [x] Pin tooltip to keep visible (#68) |
| 21 | + |
| 22 | +### Delivered |
| 23 | +- [x] Dependency name resolution with fallback to ID |
| 24 | +- [x] Multi-pinned tooltip system (enhanced from original spec) |
| 25 | +- [x] Collision avoidance for overlapping tooltips |
| 26 | +- [x] Pin/unpin toggle with visual indicator |
| 27 | + |
| 28 | +### Deferred Items |
| 29 | +None |
| 30 | + |
| 31 | +--- |
| 32 | + |
| 33 | +## Commit Analysis |
| 34 | + |
| 35 | +| Metric | Value | Assessment | |
| 36 | +|--------|-------|------------| |
| 37 | +| Total commits | 1 | Squashed during development | |
| 38 | +| Feature commits | 1 | | |
| 39 | +| Fix/debug commits | 0 | | |
| 40 | +| Reverts | 0 | | |
| 41 | +| Churn ratio | 0% | 🟢 Low | |
| 42 | + |
| 43 | +--- |
| 44 | + |
| 45 | +## What Went Well |
| 46 | + |
| 47 | +- **Clean Python implementation**: Dependency name resolution was straightforward - simple post-processing loop after task creation |
| 48 | +- **Iterative QA refinement**: User feedback during QA led to better multi-tooltip design |
| 49 | +- **Inline SVG for icons**: Learned from v0.9.1 post-mortem that FontAwesome doesn't work in Dataiku webapp context - used inline SVG from start |
| 50 | + |
| 51 | +--- |
| 52 | + |
| 53 | +## What Didn't Go Well |
| 54 | + |
| 55 | +- **Initial pin design too simple**: Original spec assumed single-pinned tooltip, but user clarified they wanted multiple simultaneous tooltips |
| 56 | +- **FontAwesome assumption**: Initially tried `fas fa-thumbtack` class before remembering Dataiku context requires inline SVG |
| 57 | + |
| 58 | +--- |
| 59 | + |
| 60 | +## Blockers Encountered |
| 61 | + |
| 62 | +| Blocker | Impact | Resolution | Time Lost | |
| 63 | +|---------|--------|------------|-----------| |
| 64 | +| FontAwesome icons not rendering | Icons invisible in tooltip | Switched to inline SVG paths | ~15 min | |
| 65 | +| Single vs multi-tooltip design | Had to redesign pin system | Created clone-based pinned container | ~30 min | |
| 66 | + |
| 67 | +--- |
| 68 | + |
| 69 | +## Technical Discoveries |
| 70 | + |
| 71 | +### Platform Behavior |
| 72 | +- Dataiku webapps don't have FontAwesome 5 class support despite it being available for plugin.json icons |
| 73 | + |
| 74 | +### Library Behavior |
| 75 | +- Frappe-gantt has single `$popup_wrapper` - supporting multiple tooltips requires creating independent DOM elements |
| 76 | + |
| 77 | +### Architecture Insights |
| 78 | +- Clone-based approach for pinned tooltips cleanly separates library-managed popup from user-pinned copies |
| 79 | +- Using `pointer-events: none` on container with `pointer-events: auto` on children allows click-through while keeping tooltips interactive |
| 80 | + |
| 81 | +--- |
| 82 | + |
| 83 | +## CLI Docs Candidates |
| 84 | + |
| 85 | +1. **Inline SVG for webapp icons**: FontAwesome classes don't work in Dataiku webapp context. Use inline SVG with `fill="currentColor"` for theme compatibility. |
| 86 | + |
| 87 | +--- |
| 88 | + |
| 89 | +## Recommendations |
| 90 | + |
| 91 | +### For Next Release |
| 92 | +- Consider adding keyboard shortcuts for pin/close (Escape to close all pinned) |
| 93 | + |
| 94 | +### Process Improvements |
| 95 | +- Clarify multi-element behaviors upfront in QA script |
| 96 | + |
| 97 | +### Technical Debt |
| 98 | +- None introduced |
| 99 | + |
| 100 | +--- |
| 101 | + |
| 102 | +## Lessons Learned |
| 103 | + |
| 104 | +1. **Clarify "pin" semantics early**: Single vs multiple pinned items is a fundamental UX decision that affects architecture |
| 105 | +2. **Reuse prior learnings**: The FontAwesome-in-SVG issue was already documented in v0.9.1 post-mortem |
| 106 | +3. **Clone-based persistence**: When a library manages a singleton element, cloning is cleaner than fighting the library's lifecycle |
0 commit comments