Skip to content

feat: add camera widgets and refine page creation, touch interactions, and responsive layouts - #87

Merged
jingle-jew merged 7 commits into
masterfrom
dev
Jul 21, 2026
Merged

feat: add camera widgets and refine page creation, touch interactions, and responsive layouts#87
jingle-jew merged 7 commits into
masterfrom
dev

Conversation

@jingle-jew

@jingle-jew jingle-jew commented Jul 21, 2026

Copy link
Copy Markdown
Owner

Summary

This pull request promotes the latest development changes from dev to master.

The update introduces a first-class camera widget, expands page creation and icon selection capabilities, improves touch interactions across mobile and tablet layouts, and refines several responsive layout and theme-transition behaviors.

Highlights

Camera widget

  • Add a dedicated camera widget and configuration module.
  • Support authorized Home Assistant camera entities.
  • Allow customization of the displayed camera name.
  • Add configurable refresh intervals:
    • every second;
    • every 3 seconds;
    • every 5 seconds;
    • manual refresh on click.
  • Improve camera image refresh and cache-busting behavior.
  • Add camera support to entity permissions and the widget registry.
  • Add English, French, and Spanish translations.

Page creator

  • Add a dedicated page-name field.
  • Allow users to select a custom dock icon before creating a page.
  • Automatically update the suggested icon when changing the page type.
  • Use the searchable icon picker instead of a limited static icon grid.
  • Use the cloud icon for the initial weather page.
  • Reduce unnecessary page-creator rerenders for smoother interactions.

Icon picker

  • Improve embedded icon-picker interactions.
  • Add icon search and empty-result states.
  • Improve touch and swipe handling between icon categories.
  • Reuse the icon picker in page creation and dock-page editing.

Touch and pointer interactions

  • Fix continuous vertical slider dragging on touch devices.
  • Apply reliable pointer-based control to OneUI and Material vertical sliders.
  • Fix vertical sliders inside the detailed light-control popup.
  • Prevent the light-popup snap scroller from stealing active slider gestures.
  • Improve tablet widget dragging by capturing the pointer before the long-press delay.
  • Safely handle pointer-capture failures and cancellations in older Android WebViews.

Theme and settings transitions

  • Replace abrupt theme changes with a background crossfade.
  • Smoothly transition the appearance section when switching themes.
  • Preserve settings-panel scroll position during updates.
  • Avoid redundant settings DOM synchronization.
  • Respect reduced-motion preferences.

Responsive layout and navigation

  • Keep desktop and tablet column sizing independent from available vertical space.
  • Allow row height to adapt when vertical space is reduced by status bars or other reserved surfaces.
  • Improve weather-page layouts with a bottom dock.
  • Hide and reveal the bottom dock according to scroll direction on large weather pages.
  • Refine shell, dock, widget-grid, weather-radar, light-popup, and drag-state styling.

Main files

Added

  • src/widget-config/camera-config.js
  • src/widgets/camera-widget.js

Major areas updated

  • src/ui/slider.js
  • src/widgets/widget-drag-coordinator.js
  • src/widget-config/icon-picker.js
  • src/pages/page-creator.js
  • src/pages/page-ui-coordinator.js
  • src/settings/appearance-coordinator.js
  • src/settings/settings-panel.js
  • src/layout/grid-runtime.js
  • src/layout/responsive-dock-coordinator.js
  • widget, layout, panel, dock, slider, light-popup, and theme styles
  • English, French, and Spanish translations

Validation

The automated coverage was expanded for:

  • vertical slider pointer and touch behavior;
  • tablet widget dragging;
  • appearance and theme transitions;
  • responsive grid calculations;
  • page creation and page-model defaults;
  • settings-panel updates and mobile visibility;
  • widget registration and catalog contracts.

Recommended validation commands:

npm run check
npm run check:layout

Manual test plan

  • Add and configure a camera widget with an authorized camera entity.
  • Verify 1-second, 3-second, 5-second, and click-only camera refresh modes.
  • Create grid, weather, and media pages with custom names and icons.
  • Search and select icons in both the page creator and page editor.
  • Drag vertical sliders using touch in iOS, OneUI, and Material themes.
  • Test vertical sliders inside the light-control popup.
  • Long-press and move widgets on Android tablet and mobile layouts.
  • Switch themes while the settings panel is open.
  • Verify reduced-motion behavior.
  • Verify weather-page scrolling with a bottom dock.
  • Verify desktop, tablet, mobile portrait, and mobile landscape layouts.

Risk areas

  • Touch gesture ownership may affect scrolling while directly manipulating sliders or moving widgets in edit mode.
  • Camera refresh intervals may increase Home Assistant image traffic when short intervals are selected.
  • Theme crossfades temporarily retain snapshots of the previous visual surface.
  • Grid sizing changes may slightly alter widget proportions on unusual tablet or desktop aspect ratios.
    • Bottom-dock auto-hiding changes navigation behavior specifically on scrollable weather pages.

@jingle-jew
jingle-jew merged commit b5d5378 into master Jul 21, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant