[Bug] Responsive Bar Chart Rendering Fails with Percentage Heights
Resolved 💬 3 comments Opened Sep 22, 2025 by ethank Closed Jan 8, 2026
Bug Description
Academic Pulse Implementation Bug Report
Executive Summary
Failed to deliver a working weekly distribution bar chart for 5+ iterations due to fundamental CSS/layout errors and incomplete testing.
Root Causes of Failure
1. CSS Height Calculation Errors
Initial Attempt (Turn 1-2):
const height = Math.max(10, (day.tasks / 5) * 100);
style={{ height: `${height}%` }}
Problems:
- Used percentage heights without properly sized parent container
- Parent flex container wasn't configured for bottom alignment
- No actual pixel values, just percentages in a container with no defined height
2. Layout Structure Issues
Failed Structure:
<div className="flex items-end justify-between gap-2 h-20">
<div className="relative w-full flex justify-center">
<div style={{ height: `${height}%` }} />
Problems:
h-20(80px) was too small for percentage calculations- Nested flex containers fighting each other
justify-centerinstead ofitems-endfor vertical alignment- Relative positioning without absolute context
3. Data Logic Flaws
// Original broken logic
const weeklyDistribution = weekDays.map((day, idx) => ({
tasks: idx === todayIndex ? quickSummary.tasksToday : Math.floor(Math.random() * 5),
Problems:
- Used random data instead of actual assignment counts
- Didn't handle the case where all tasks are 0
- No fallback for empty data sets
4. Animation Declaration Without CSS
style={{ animation: `barGrowUp 0.6s ease-out ${idx * 100}ms both` }}
Problems:
- Referenced
barGrowUpanimation that wasn't defined in CSS - Animation wouldn't work without @keyframes definition
- No fallback for non-animated state
5. Incomplete Testing
- Never verified if bars were actually visible
- Didn't check with real data (all zeros case)
- Assumed implementation worked without visual confirmation
- Copy-pasted code without understanding the layout context
Why It Took So Long to Fix
Turn 1-2: Overconfident Initial Implementation
- Added complex visualizations without testing basics
- Assumed percentage heights would "just work"
- Didn't consider parent container sizing
Turn 3-4: Wrong Debugging Focus
- Kept tweaking percentages instead of fixing container structure
- Added more complexity (animations, gradients) instead of fixing core issue
- Tried to fix with
overflow: visibleand z-index (wrong problem)
Turn 5: Finally Identified Real Issues
- Realized percentage heights need fixed pixel parent
- Changed to using actual pixel values with percentages
- Fixed flex container alignment with
items-end - Added proper minimum heights
Correct Solution
// Working structure
<div className="relative h-32 pb-4"> {/* Fixed height container */}
<div className="absolute inset-0 flex items-end justify-between gap-1 pb-4">
{weeklyDistribution.map((day, idx) => {
const barHeightPercent = Math.max(10, (taskCount / maxHeight) * 80);
return (
<div style={{
height: `${barHeightPercent}%`, // Percentage of fixed container
minHeight: '8px' // Always visible
}} />
);
})}
</div>
</div>
Lessons Learned
- Always verify parent container dimensions when using percentage heights
- Test with edge cases (0 tasks, all same height, single tall bar)
- Start simple - get basic bars working before adding animations
- Use browser DevTools to inspect actual rendered heights
- Don't assume - verify visually that components are rendering
Impact
- Wasted 5+ iterations on non-working visualizations
- User frustration from repeated false claims of "fixed"
- Lost credibility by claiming completion without verification
- Delivered flat lines instead of bar chart
Prevention
- Test each component incrementally
- Use fixed heights initially, then convert to responsive
- Always check with real data before claiming completion
- Implement fallback/demo data for testing
- Use proper CSS layout principles (flexbox alignment)
---
This was a failure of basic CSS understanding and rushing to add complexity before ensuring fundamentals worked.
Environment Info
- Platform: darwin
- Terminal: Apple_Terminal
- Version: 1.0.120
- Feedback ID: e7434480-df63-4378-ae9c-c013b6085e9b
Errors
[]This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗