Skip to content

Commit c29e336

Browse files
committed
Release 5.5.0
1 parent f4f9b14 commit c29e336

23 files changed

Lines changed: 16605 additions & 3394 deletions

CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,25 @@
11
# Changelog
22

3+
## 5.5.0 - 2026-05-17
4+
5+
Released update from 5.4.2.
6+
7+
- Adds optional Home Assistant ambient light sync that maps the current artwork palette to selected `light.*` entities with brightness, transition, cooldown, and optional per-player light mappings.
8+
- Adds an optional artwork screensaver with digital/analog clock modes, current cover, date, track metadata, configurable message, clock size, and clock position controls.
9+
- Fixes the screensaver idle timer so it starts from the moment the card page becomes visible instead of inheriting idle time from a previous dashboard page.
10+
- Adds an optional POWER button in the player controls that can stop the active player or call `toggle`, `turn_on`, `turn_off`, `scene`, or `script` actions on a selected Home Assistant entity.
11+
- Adds fullscreen Discovery mode with cover-orb browsing, provider-backed mood/genre selectors, fresh/random playlist discovery, recent music, albums, and radio sections.
12+
- Adds optional inline Up Next display and Night mode controls without forcing them into existing layouts when space is tight.
13+
- Reworks responsive sizing around the actual card/container width and allocated height instead of only `window.innerWidth`.
14+
- Adds ResizeObserver-driven layout recovery for dashboard column changes, sidebar changes, visual-editor open/close cycles, mobile rotation, kiosk views, and tablet/desktop resizes.
15+
- Expands layout profiling with width, height, and aspect-aware classes so phone, phone-landscape, tablet, desktop, and short-height modes get different spacing and artwork budgets.
16+
- Improves mobile/tablet/kiosk fit by tightening vertical budgets, preventing content overlap, containing artwork inside its frame, preserving larger artwork when space allows, and reducing accidental page scroll.
17+
- Removes the old fixed `850` height from the default card config. The optional `height` config still works as a fallback/manual override, but the card now prefers the space Home Assistant actually gives it.
18+
- Adds English and Hebrew localization dictionaries backed by shared translation helpers, visual-editor labels, and tests.
19+
- Adds `HOW_TO_ADD_A_LANGUAGE.md` and `TRANSLATING.md` so future languages can be added by copying the English dictionary, translating values, registering the language, and rebuilding release artifacts.
20+
- Improves the visual editor for ambient-light player mappings by using friendly field labels instead of internal helper names.
21+
- Updates validators, mobile settings state, responsive layout tests, localization tests, and the release sync script so `src/localization/` is packaged into `dist/localization/`.
22+
323
## 5.4.2 - 2026-05-14
424

525
Released update from 5.4.1.

HOW_TO_ADD_A_LANGUAGE.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# How To Add A Language
2+
3+
HOMEii Music Flow uses flat JavaScript dictionaries in `src/localization/`. English is the fallback language, so every new language file should start by copying the English keys. Version 5.5.0 ships with English and Hebrew only.
4+
5+
## Steps
6+
7+
1. Create a new language file in `src/localization/`, for example `fr.js`.
8+
2. Copy the full contents of `src/localization/en.js` into the new file.
9+
3. Translate only the string values. Do not rename, remove, or reorder keys unless you also update the source code.
10+
4. Open `src/localization/index.js` and import the new file, for example:
11+
12+
```js
13+
import fr from "./fr.js";
14+
```
15+
16+
5. Register the dictionary in `DICTIONARIES` and add a display option in `LANGUAGE_OPTIONS`:
17+
18+
```js
19+
export const DICTIONARIES = Object.freeze({ en, fr, he });
20+
21+
export const LANGUAGE_OPTIONS = Object.freeze([
22+
{ value: "auto", label: "Auto" },
23+
{ value: "en", label: "English" },
24+
{ value: "fr", label: "French" },
25+
{ value: "he", label: "Hebrew" },
26+
]);
27+
```
28+
29+
6. If the language is right-to-left, add its code to `RTL_LANGUAGE_CODES` in `src/localization/index.js`.
30+
7. Run `npm test`, `npm run build`, and `node scripts/release.mjs` locally.
31+
8. Test the card by setting `language: fr` in the card config. If a key is missing, the card will fall back to English.
32+
33+
Use `TRANSLATING.md` as the glossary and context reference while translating.

LOCAL_DEPLOYMENT.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Use only this runtime package folder in Home Assistant `www`:
1212

1313
Use only this Lovelace resource pattern:
1414

15-
`/local/community/homeii-music-flow/homeii-music-flow.js?v=5.3.0`
15+
`/local/community/homeii-music-flow/homeii-music-flow.js?v=5.5.0`
1616

1717
From now on, bump only the query version after `?v=`.
1818
Do not change the file name again unless there is a hard cache emergency.
@@ -29,14 +29,14 @@ Stable deploy target:
2929

3030
`dist/` should always be the latest approved install package.
3131

32-
## Current 5.3.0 Mapping
32+
## Current 5.5.0 Mapping
3333

3434
- Edit: `src/homeii-music-flow.js`
3535
- Review/share: `dist/`
3636
- Deploy to HA `www`: copy the full contents of `dist/` into `www/community/homeii-music-flow/`
37-
- Package includes: `homeii-music-flow.js`, `sendspin-js/`, `vendor/embla-carousel.umd.js`, `homeii-flow-logo.svg`
37+
- Package includes: `homeii-music-flow.js`, `localization/`, `sendspin-js/`, `vendor/embla-carousel.umd.js`, `homeii-flow-logo.svg`
3838
- Lovelace type: `custom:homeii-music-flow`
39-
- Lovelace resource: `/local/community/homeii-music-flow/homeii-music-flow.js?v=5.3.0`
39+
- Lovelace resource: `/local/community/homeii-music-flow/homeii-music-flow.js?v=5.5.0`
4040

4141
## Cache Reset Rule
4242

@@ -48,7 +48,7 @@ If a new version is approved:
4848

4949
Example:
5050

51-
`/local/community/homeii-music-flow/homeii-music-flow.js?v=5.3.0`
51+
`/local/community/homeii-music-flow/homeii-music-flow.js?v=5.5.0`
5252

5353
## Foundation Note
5454

PUBLISHING.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
- `LICENSE`
1010
- `hacs.json`
1111
- `dist/homeii-music-flow.js`
12+
- `dist/localization/`
1213
- `dist/sendspin-js/`
1314
- `dist/vendor/embla-carousel.umd.js`
1415
- `dist/homeii-flow-logo.svg`
@@ -23,18 +24,19 @@
2324
- the HACS My Home Assistant button
2425
- the HACS download/install button
2526

26-
## 2. Create the 5.4.1 release
27+
## 2. Create the 5.5.0 release
2728

28-
- Create a Git tag named `v5.4.1`.
29+
- Create a Git tag named `v5.5.0`.
2930
- Create a GitHub release from that tag.
30-
- Title the release `5.4.1`.
31-
- Use the `5.4.1` section from `CHANGELOG.md` as the release notes.
31+
- Title the release `5.5.0`.
32+
- Use the `5.5.0` section from `CHANGELOG.md` as the release notes.
3233
- Do not attach a custom release zip asset for HACS. Keep the complete installable runtime in `dist/` and let HACS use the normal repository release/tag contents.
3334

3435
## 3. Verify repository files after publishing
3536

3637
- Confirm `hacs.json` still points to `homeii-music-flow.js`.
3738
- Confirm `dist/homeii-music-flow.js` matches the released runtime.
39+
- Confirm `dist/localization/` includes English and Hebrew dictionaries only.
3840
- Confirm `dist/sendspin-js/` exists for the local Sendspin browser player.
3941
- Confirm `dist/vendor/embla-carousel.umd.js` exists for mobile swipe support.
4042
- Confirm `dist/homeii-flow-logo.svg` and `docs/brand/homeii-flow-logo.svg` exist.
@@ -79,13 +81,15 @@ to:
7981

8082
Then load:
8183

82-
`/local/community/homeii-music-flow/homeii-music-flow.js?v=5.4.1`
84+
`/local/community/homeii-music-flow/homeii-music-flow.js?v=5.5.0`
8385

8486
## 7. Final pre-release smoke test
8587

8688
- Load the card after a hard browser refresh.
8789
- Verify main player, compact player, FLOW, Studio, queue, library, actions, settings, lyrics, announcements, history, recommendations, and night mode screens.
8890
- Verify `This device` creates a HOMEii Sendspin browser player and does not select an unrelated browser player.
8991
- Verify phone, tablet, and desktop layouts.
92+
- Verify mobile portrait, mobile landscape, tablet, desktop, kiosk, and visual-editor open/close layout recovery.
93+
- Verify ambient light sync, screensaver idle timing, POWER button behavior, Discovery mode, Up Next, and Night mode controls when enabled.
9094
- Verify light and dark themes.
9195
- Verify HACS install path and manual install path.

README.md

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
</p>
2727

2828
<p align="center">
29-
<a href="https://github.com/r11a/homeii-music-flow"><img alt="version" src="https://img.shields.io/badge/version-5.4.1-gold"></a>
29+
<a href="https://github.com/r11a/homeii-music-flow"><img alt="version" src="https://img.shields.io/badge/version-5.5.0-gold"></a>
3030
<img alt="Home Assistant" src="https://img.shields.io/badge/Home%20Assistant-Dashboard-41BDF5">
3131
<img alt="Music Assistant" src="https://img.shields.io/badge/Music%20Assistant-required-7C5CFF">
3232
<img alt="Sendspin" src="https://img.shields.io/badge/Sendspin-browser%20player-18B6FF">
@@ -50,9 +50,21 @@ HOMEii Flow started from my own daily use of Home Assistant and Music Assistant.
5050
- **Studio / Control Room:** choose players, group rooms, control volumes, move playback, and manage multi-room listening.
5151
- **Mobile-first workflow:** queue, search, library, FLOW, actions, timers, announcements, settings, and player switching are designed for touch.
5252
- **Real Music Assistant library flow:** playlists, albums, artists, tracks, radio, favorites, recent listening, and recommendations.
53+
- **Smart-home aware listening:** optional Home Assistant light sync, screensaver display, and POWER actions let the card participate in the room without becoming mandatory setup.
5354
- **Hebrew and RTL ready:** layout, labels, alignment, and interaction patterns are built for Hebrew as a first-class use case.
5455
- **Release-ready package:** HACS-ready `dist/` output includes the card, Sendspin files, Embla swipe support, and the brand asset.
5556

57+
## What's New In 5.5.0
58+
59+
- **Commercial-grade responsive fit:** the card now measures its actual dashboard/container size, reacts to Home Assistant grid/sidebar/editor changes, and adapts by width, height, and aspect ratio instead of relying only on the browser viewport.
60+
- **Better phone, tablet, kiosk, and desktop layouts:** artwork, metadata, progress, actions, transport controls, volume, footer buttons, Up Next, and Night mode now use tighter fit budgets to avoid content overlapping or escaping its container.
61+
- **No fixed default height:** the old `850` default is no longer part of the stub config. The card prefers the space Home Assistant allocates to it, while the optional `height` setting remains available as a fallback/manual override.
62+
- **Ambient light sync:** selected `light.*` entities can follow the current artwork color with brightness, transition, cooldown, and optional per-player mappings.
63+
- **Artwork screensaver:** an optional idle display shows the current cover, digital or analog clock, date, track info, and a short local message. The idle timer now starts when the card page becomes visible.
64+
- **POWER button:** player controls can show an optional POWER action for stopping the active player or calling a selected Home Assistant entity.
65+
- **Discovery mode:** a fullscreen recommendation view adds cover orbs, provider-backed category selectors, fresh/random playlist discovery, albums, radio, and recent music.
66+
- **Editor and language coverage:** the new settings are available in the visual editor, in-card settings, and English/Hebrew localization dictionaries.
67+
5668
## What's New In 5.4.1
5769

5870
- **Distribution hotfix:** republishes the 5.4.0 fixes without a custom release zip asset, so HACS can use the normal repository release/tag contents and the complete `dist/` package.
@@ -178,7 +190,7 @@ If HACS does not add the resource automatically, add:
178190
3. Add this Dashboard resource:
179191

180192
```text
181-
/local/community/homeii-music-flow/homeii-music-flow.js?v=5.4.1
193+
/local/community/homeii-music-flow/homeii-music-flow.js?v=5.5.0
182194
```
183195

184196
4. Add the card:
@@ -488,7 +500,7 @@ Notes:
488500
- In-card settings panels
489501
- Language, theme, layout, color, motion, footer, volume, mic, swipe, liked, night mode, and shortcut settings
490502
- Announcement preset and TTS entity settings
491-
- Current defaults: height `850`, night mode `off`, up-next `off`, mic `smart`, settings source `visual editor`, dynamic theme `auto`, background motion `subtle`, footer `icon+text`, font scale `1`, artwork swipe `browse`, home shortcut `off`, liked mode `Music Assistant`
503+
- Current defaults: auto-fit card height, night mode `off`, up-next `off`, mic `smart`, settings source `visual editor`, dynamic theme `auto`, background motion `subtle`, footer `icon+text`, font scale `1`, artwork swipe `browse`, home shortcut `off`, liked mode `Music Assistant`
492504
- Config validation and tested state helpers
493505

494506
## Full Feature Map
@@ -771,6 +783,15 @@ Notes:
771783
- Hebrew announcement flow
772784
- Editor locale helpers
773785

786+
### Adding A Language
787+
788+
- Start from `src/localization/en.js` and translate values only.
789+
- Register the new file in `src/localization/index.js`.
790+
- Add the language to `LANGUAGE_OPTIONS`.
791+
- Add the language code to `RTL_LANGUAGE_CODES` only for right-to-left languages.
792+
- Run `npm test`, `npm run build`, and `node scripts/release.mjs`.
793+
- Use `TRANSLATING.md` for the full string glossary and `HOW_TO_ADD_A_LANGUAGE.md` for the step-by-step release checklist.
794+
774795
### Reliability And Release Foundation
775796

776797
- Structured `src/core` foundation helpers
@@ -846,7 +867,7 @@ npm run lint
846867
npm test
847868
```
848869

849-
Current packaged version: `5.4.1`
870+
Current packaged version: `5.5.0`
850871

851872
## Release Readiness
852873

0 commit comments

Comments
 (0)