Introduces `cachedHorizonGlowHeight` to independently track dimensions for the horizon glow gradient, preventing stale rendering when `cachedHeight` is updated by other functions.
Added :focus-visible styles to sidebar interactive elements (sliders, buttons, links) to improve keyboard accessibility.
Added aria-label to GitHub link to indicate it opens in a new tab.
- Cached `window.innerWidth` and `window.innerHeight` in `src/aether-snow.ts` to prevent layout thrashing in the animation loop.
- Switched to `translate3d` for snowflake transforms to enforce GPU acceleration.
- Updated `js/` artifacts (including `js/background-themes.js` which was out of sync with `src/`).
- Added a "Reset Defaults" button to the sidebar footer to allow users to quickly revert all settings.
- Added tooltip (`title`) support to toggle and slider controls for better discoverability.
- Updated sidebar styles to accommodate the new button.
- Manually updated build artifacts `js/christmas-sidebar.js` via `pnpm build`.
Pre-calculates RGBA color strings for snowflake gradients to avoid string concatenation and allocation inside the main render loop. This optimization reduces GC pressure during animations.
- Caches full `rgba()` strings in `BgSnowflake` entities.
- Updates `initBgSnowflakes` and `updateBgSnowflakeColors` to populate cache.
- Updates `drawEnhancedBackground` to use cached strings.
- Added a retry limit (50 attempts) to `installBackgroundHook` in `src/background-themes.ts` to prevent infinite loops if `app.canvas` is unavailable.
- Updated `js/` build artifacts.
- Updated Sentinel journal with learnings on Availability/Reliability.
Enhanced accessibility for the Christmas theme sidebar by adding `aria-label` attributes to select dropdowns, range sliders, and the custom file upload button. This ensures screen readers can correctly announce the purpose of each control, improving the experience for visually impaired users.
Changes:
- Added `ariaLabel` to `createSelect` helper.
- Added `ariaLabel` to `createSlider` helper.
- Added `ariaLabel` to `createSettingRow` inline slider logic.
- Added `ariaLabel` to the custom file upload button.
- Add `role="switch"`, `aria-checked`, `aria-label`, and `tabindex="0"` to toggle switches in `christmas-sidebar.ts`.
- Add keyboard event handling (Enter/Space) to toggle switches.
- Add `:focus-visible` styles to `sidebar.css` for better keyboard navigation visibility.
- Ensure toggle logic is shared between mouse and keyboard interactions.
- Introduce to for reusable path drawing.
- Refactor Candy Cane effect to use native for smoother performance and cleaner code.
- Align Candy Cane animation flow and speed with other effects.