Owner directives (verbatim): "show no upcoming appointments" when empty / "days and times highlighted" when there are events; "properly stylize the calendar to fit with each theme correctly"; "relatively small widget basically about the size of the weather widget". r1 judge blockers fixed: - .mytheme literal rule replaced by UNIVERSAL theme handling: theme.js tags <html> with the class `light-bg` (luminance-derived) for builtin AND user themes; chip colors derive via color-mix toward white (dark surfaces, 80%) or black (light surfaces, 28%) — no per-slug rules, arbitrarily-named user themes covered. Objective WCAG contrast test computes the ratio for ALL 10 builtin themes from themes.css values: worst case 4.60:1 (ocean), all >= 4.5:1. - Event query now FOLLOWS THE VISIBLE MONTH: windowFor(viewMonth) = [prev-month 1st .. current+2mo end]; loaded-range union with refetch when grid navigation leaves the loaded window (navigate() -> fetchCalendar). Contract test navigates twice and asserts the refetch window extends past the initial 60 days. - [data-theme] comment corrected (implementation uses html.light-bg class). Also: smoke harness now at dashcaddy-api/.dc168-smoke.js (asserts empty chip string, events chip, grid cell counts); contract suite 4 tests + 9 ns suite = 13 calendar tests green; eslint 0 errors.
DashCaddy Onboarding System
This directory contains the JavaScript modules for the user onboarding tooltip system.
Files
- onboarding.js - Main entry point, initializes the onboarding system
- tour-manager.js - Orchestrates the onboarding flow and manages tour state
- progress-tracker.js - Manages persistent storage of user progress
- tooltip-definitions.js - Defines all tooltip content and positioning
- dns-template-selector.js - Presents DNS server template options
- theme-adapter.js - Ensures tooltips match the current dashboard theme
Load Order
The scripts are loaded in the following order (as defined in status/index.html):
- progress-tracker.js
- theme-adapter.js
- tooltip-definitions.js
- dns-template-selector.js
- tour-manager.js
- onboarding.js (main initialization)
Dependencies
- Driver.js - Loaded from CDN (https://cdn.jsdelivr.net/npm/driver.js@1.3.1/)
- Dashboard CSS variables (for theming)
- Browser localStorage API (for progress tracking)
Integration
The onboarding system integrates with:
- Dashboard theme system (via CSS variables)
- App template selector (for DNS server deployment)
- Local storage (for progress persistence)
Development
Each module is wrapped in an IIFE (Immediately Invoked Function Expression) to avoid global namespace pollution. Modules communicate through well-defined interfaces and the window object where necessary.