Files
dashcaddy/status/js
Hermes e4b5372b6d [pending-judge] feat(DC-168 r4): calendar widget — month-following fetch, window-authoritative event cache, universal theme contrast
Owner directives: "show no upcoming appointments" when empty; "days and times
highlighted" per appointment; "properly stylize ... to fit with each theme
correctly"; "relatively small widget basically about the size of the weather
widget".

r3 judge blockers fixed:
- Cache semantics extracted to status/js/calendar-cache.js (bundled ahead of
  the widget; module.exports for tests, window.CalendarCache for browser):
  entries keyed by uid+start (recurring instances kept distinct); a FETCHED
  WINDOW IS AUTHORITATIVE — on refetch, entries starting inside that window
  are replaced/purged (deletions + reschedules propagate), entries outside
  survive. 5 direct contract tests cover merge, duplicate suppression,
  recurring instances, stale removal on refetch, cross-window survival.
- Chip filters by CURRENT INSTANT against event END (ongoing appointments
  qualify; started-long-ago with no end excluded). Covered by contract test.
- Contract suite (4 cache tests) + ns suite (9) + widget-contract (4) = 18
  calendar tests; smoke harness DC168-SMOKE-OK; eslint clean.
r1/r2 items carried: universal light-bg contrast (objective WCAG >= 4.5:1 for
all 10 builtin themes, worst 4.60 ocean), month-following fetch with refetch
on navigation, weather-widget-sized chip, month grid with highlighted days.
2026-10-12 00:14:56 -07:00
..
2026-03-05 02:26:12 -08:00
2026-03-05 02:26:12 -08:00
2026-03-05 02:26:12 -08:00
2026-03-05 02:26:12 -08:00
2026-03-05 02:26:12 -08:00

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):

  1. progress-tracker.js
  2. theme-adapter.js
  3. tooltip-definitions.js
  4. dns-template-selector.js
  5. tour-manager.js
  6. onboarding.js (main initialization)

Dependencies

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.