Update application branding to reflect broader financial tracking capabilities beyond just ETF trades. Add comprehensive growth visualization features with time period selectors and three distinct chart views for portfolio, cash, and total net worth tracking.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Features added:
- Dashboard now shows top 5 holdings, accounts, and subscriptions under each segment
- Quick action cards positioned underneath data cards for easy access
- Cancel/Add buttons added to all forms (trade, cash account, subscription)
- Auto-focus functionality when navigating from quick actions
- Responsive design optimized for mobile and desktop
- Consistent styling following existing design patterns
UI improvements:
- Card groups structure for better organization
- Top accounts sections with hover effects and proper formatting
- Form actions container with proper button alignment
- Mobile-responsive quick action cards and forms
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Complete subscription tracking with monthly/annual billing cycles
- Dashboard integration with simplified card-based layout
- Website URL fields with clickable links for easy service access
- Comprehensive form validation and error handling
- Database schema with proper website_url column support
- Responsive design with mobile-friendly interface
- Export functionality for subscription data management
- Real-time dashboard summaries showing total costs and service counts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add getMajorityCurrency() to calculate which currency holds most value
- Include both ETF positions and cash accounts in currency calculation
- Update formatCurrency() to use majority currency symbol by default
- Dashboard now displays in EUR/USD/GBP based on portfolio composition
- Automatic currency switching improves user experience and accuracy
- Maintain backward compatibility with optional currency parameter
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add British Pound (GBP) support to all database schemas and constraints
- Update API validation to accept EUR, USD, and GBP currencies
- Implement centralized currency symbol mapping with getCurrencySymbol()
- Replace all hardcoded currency mappings throughout frontend code
- Add GBP options to all currency dropdown menus in UI forms
- Update README with enhanced feature descriptions and changelog
- Document multi-currency support and historical price tracking features
- Improve project documentation with comprehensive feature overview
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create price_history table for storing ETF price updates over time
- Add API endpoints for saving/retrieving price history per user
- Auto-load latest prices on app initialization for continuity
- Add "History" button to view price update timeline in modal
- Enhance price update notifications to confirm database saves
- Implement responsive modal design for price history viewing
- Maintain user data isolation for all price history features
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add cash accounts management with CRUD operations and account types
- Implement date-stamped transfer system with deposits/withdrawals
- Add total holdings card combining portfolio and cash values
- Create dedicated "Add Transfer" page in navigation
- Include automatic balance calculations and transaction history
- Add database migrations for cash_accounts and cash_transfers tables
- Integrate cash data with dashboard and real-time updates
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Features:
- New section specifically for holdings over 8 years
- Fixed 33% CGT rate for ultra long-term positions
- Automatic identification of 8+ year old trades
- Comprehensive breakdown showing individual position performance
- Visual cards displaying key metrics:
- Eligible holdings count and total value
- Total gains on 8+ year positions
- CGT liability at 33% rate
- After-tax gains calculation
Calculation Logic:
- Identifies all buy trades that are 8+ years old (≥2920 days)
- Groups trades by ETF symbol for position-level calculations
- Calculates current value vs original cost basis
- Applies 33% tax rate only to positive gains
- Shows holding period for each position in years
- Displays both gross and net (after-tax) performance
Visual Design:
- Distinct blue color scheme to differentiate from other CGT calculations
- Calendar icon (📅) to emphasize long-term nature
- Detailed breakdown cards for each qualifying position
- Color-coded positive/negative performance indicators
- Professional grid layout with responsive design
Display Features:
- Only appears when current prices are updated
- Hidden when no positions qualify (under 8 years)
- Shows exact holding period in years for each position
- Individual CGT liability and after-tax gains per position
- Clear distinction from existing variable-rate CGT system
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove collapse button from sidebar header
- Remove all collapsed state CSS styling
- Remove JavaScript sidebar toggle functionality
- Remove tooltip functionality and data-tooltip attributes
- Restore sidebar to fixed 260px width
- Clean up mobile responsive CSS
- Remove localStorage sidebar state persistence
- Return to original static sidebar behavior
Sidebar now:
- Fixed 260px width (no collapsing)
- Clean header without collapse button
- Standard menu items with icons + text
- Original mobile slide-out behavior maintained
- Simplified codebase without collapse complexity
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Features:
- Icons remain visible and functional when sidebar is collapsed
- Text labels hidden when collapsed, shown when expanded
- Hover tooltips on collapsed icons show full menu names
- Smooth transitions between collapsed and expanded states
- Enhanced visual feedback with hover effects
- Larger, more prominent icons in collapsed state (1.3rem)
- Proper centering and spacing for collapsed icon navigation
Collapsed State (60px):
- Only icons visible, centered and enlarged
- Hover effects with background highlighting
- Animated tooltips appear on hover showing full names
- Fully functional navigation via icon clicks
Expanded State (260px):
- Icons + text labels both visible
- Normal menu item layout with gaps and spacing
- Full sidebar functionality maintained
User Experience:
- Best of both worlds: minimal space usage + clear navigation
- Tooltips provide context in collapsed state
- Smooth 0.2s transitions for professional feel
- State persistence still maintained via localStorage
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Hide all menu icons when sidebar is collapsed
- Hide all menu text, header text, and footer content
- Create completely minimal collapsed state (60px wide)
- Only collapse button remains visible for expanding
- Smooth transitions for all elements
- Clean, distraction-free collapsed sidebar experience
When collapsed, sidebar now shows:
- Only the expand button (›)
- Clean gradient background
- 60px minimal width
- No icons or text bleeding through
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Features:
- Sidebar can now be collapsed to save screen space (260px → 60px)
- Collapse button integrated directly into sidebar header
- Smooth animations for expand/collapse transitions
- State persistence using localStorage (remembers user preference)
- Responsive design - collapse feature disabled on mobile devices
- Visual feedback with hover effects and rotation animation
- Icons remain visible when collapsed for easy navigation
- Seamless integration with existing mobile sidebar toggle
User Experience:
- Click the "‹" button in sidebar to collapse
- Click "›" button to expand back to full width
- User preference is saved and restored on page reload
- Main content area automatically adjusts width
- Smooth 0.3s transition animations for professional feel
- Tooltips show current state (Collapse/Expand sidebar)
Technical Implementation:
- CSS transitions for smooth animations
- JavaScript event handling with localStorage persistence
- Responsive CSS media queries for mobile compatibility
- Graceful degradation on smaller screens
- Clean separation of desktop vs mobile behavior
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Dockerfile with Node.js 18 Alpine base image
- Multi-stage build with production dependencies only
- Non-root user for security
- Health checks and proper signal handling
- Volume mounting for persistent database storage
- Docker Compose configuration for easy deployment
- Environment variable support for production config
- Updated README with comprehensive container instructions
Container features:
- Persistent data storage in /app/data volume
- Production-ready configuration
- Security hardened with non-root user
- Health monitoring built-in
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Installation and setup instructions
- Feature overview and screenshots section
- Default credentials and security info
- API documentation
- Database schema details
- Development and contribution guidelines
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>