1. Fix json_script double-encoding bug: payroll_dashboard view was
passing json.dumps() strings to template context, then json_script
filter serialized them AGAIN. JavaScript received strings instead
of arrays, crashing the entire DOMContentLoaded handler and
preventing preview, edit/delete, and other features from working.
Fix: pass raw Python objects, let json_script handle serialization.
2. Add defense-in-depth: wrap Chart.js initialization in try-catch
blocks and use Bootstrap getOrCreateInstance() for modals.
3. Add calendar view to work history: monthly grid with day cells
showing work log indicators, click-to-see-details panel, month
navigation, and responsive mobile layout. Ported from V2.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>