Skip to content

Releases

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 22:44
31e99db

MNML 0.11.0: devices that find themselves, Glances that list what needs you, and one description per card

Highlights

  • Devices find themselves. Discovery, in the builder and in the template card's editor, anchors an object on its device and follows via_device. It finds a room's AC apart from its heating (an AC can cool, by its hvac_modes), a vacuum with its dock, a 3D printer, speakers, metered outlets and appliances.
    • Only areas that hold something a room shows are offered as rooms. An area of phones, trackers or system devices is offered unticked, with the reason.
    • An empty room says which devices have no area.
    • The editor names the device it found ("Found: Vacuum in Living"), offers another that fits, and lists that device's entities first in every picker.
  • The Glances strip lists everything that needs you: unlocked cars and locks, network devices down, essential Tailscale devices offline, stopped guests and a media server's health. Each badge opens the pop-up that deals with it, unfolded from the badge at the dialog's width.
  • Calmer tiles. AdGuard's protection is neutral while it is on. Tailscale's Update chip counts essential devices only; the personal ones stay listed in its pop-up. A room tile's Lights line is compact (36 px) and keeps its scene, brightness, white, colour and power controls, with a slider that opens over the row.
  • Shorter templates that share more. Named slot shapes (templates/shapes.yaml, { shape: meter }) and projections ([[devices.*.battery]], with ?field and !field filters) replace slots that were copies of others. The shipped templates are 600 lines shorter.

Breaking changes, and how to migrate

  • The generator's System section. In a Home, sections.infrastructure is now sections.system, and the order value 'infrastructure' is now 'system'. SectionName and SECTION_NAMES are gone: use SectionKey from src/contract/builder.ts. A dashboard the panel built needs nothing.
  • Retired slots. These slots are now read from fields of another slot. A configuration that still gives them draws exactly as before, until 1.0, and can drop them at any time:
    • room and room-popup: meters, now each outlet's energy in outlets; and heating.batteries, now each thermostat's battery in heating.thermostats.
    • heating-popup: batteries, now each thermostat's battery in thermostats.
    • person: activities, focuses and batteries, now each device's activity, focus and battery in devices.
    • proxmox-server and proxmox-popup: guest_statuses, now each guest's status in guests.
    • tailscale: essential, personal, updates and direct, now devices, each with its essential flag, its update and its udp. tailscale-popup: essential and personal, the same way.

Added

  • glances: the slots cars, locks, network_devices, device_up, tailscale, guests and media_health.
  • A Glances count takes not: it counts the entities in none of those states.
  • Battery thresholds low and critical on room-popup, heating-popup and device-popup. car-plan and car-popup take open_states, and car-plan also half_states. media-popup takes none.
  • Discovery rules: a device: anchor on object rules, filters on an attribute's value (attribute: { hvac_modes: cool }) and on the device (integration, entry_type, manufacturer, model), and mnml_ labels on object slots.
  • The builder's plan keeps the Glances. A section may be spelled (spelled: true): its slots are kept exactly as written, with no discovery.
  • A speaker's bass, treble and loudness are optional in a Home.

Fixed

  • The panel:
    • A slot left unset no longer shows as "".
    • Opening the builder asks before it drops unsaved changes.
    • A failed create or rebuild keeps the plan's draft.
    • A rename updates what refers to the template.
    • A failed dashboard list no longer marks every dashboard as gone from Home Assistant.
    • Dialogs have accessible names.
  • The cards:
    • A slider opened from the keyboard takes focus.
    • A commit in flight no longer cancels the next one.
    • A slider over a heading sits in place.
    • A pop-up that closes while it opens closes cleanly.
    • A tooltip leaves with its element.
    • A menu's trigger closes its own menu.
    • Key expiry dates are evaluated again over time.
  • The editors:
    • Picking a default over a found value no longer writes null.
    • Clearing a slot no longer brings its default back.
    • A failed fetch of the shipped templates is retried.
  • The templates:
    • Items without if: (vacuum, people's batteries, a printer's progress, a vacuum's map, the network's QR code) are drawn only when their slot is filled.
    • Pop-ups receive their thresholds.
    • Discovered system tiles keep their chips.
    • An empty word list no longer matches every state.
    • The YAML writer quotes 1_000, 0b101, dates, = and <<.
  • The integration:
    • The default theme option is applied at setup.
    • A failed theme reload keeps the theme.
    • Source maps no longer depend on where the repository is checked out.
  • The store: one malformed template of the home's own no longer stops the others; only its own cards fail, naming it. A state too deep to compare is still taken.

For contributors

  • Every card is described once, in src/contract/structure.ts: its keys, kinds, required flags and defaults. The cards' key schemas and the editors' forms derive from it, and src/editors/labels.ts holds only the labels whose humanised name reads badly.
  • interface.json records the public interface, and interface.test.ts fails on any change to it until pnpm run fix:interface records it. pnpm run accept:corpus accepts a change in what discovery finds. Neither is part of pnpm fix.
  • build(home) is Home -> Plan -> dashboardOf, the same path the panel's builder takes.
  • The pop-ups, the slider, the panel and the template card are split into parts, each with its own tests: 1135 in vitest, 59 in pytest.
  • A release needs an annotated tag. Its message is the release notes, followed by the interface's changes since the previous release (tools/notes.ts), and then the pull requests.

Interface changes since v0.10.0

v0.10.0 records no interface.json, so there is nothing to compare.

What's Changed

  • One structure per card, slot shapes, one generator, and devices that find themselves by @bfmatei in #40
  • Fresh screenshots by @bfmatei in #41
  • MNML 0.11.0 by @bfmatei in #42

Full Changelog: v0.10.0...v0.11.0

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 15:40
6ef957a

What's new

  • A status strip. mnml-glances-card, drawn by the new glances template, is one line of wells across the top of a dashboard, with no card behind them.
    • On the left, the calm statuses: the weather (its temperature, with an icon that follows the conditions; a tap opens a weather pop-up), the alarm panel (a button that arms it away or disarms it), the vacation toggle, and the power the home uses now (a tap opens #energy). The alarm and the vacation turn red when they do not fit who is home: on with somebody home, or off with everybody away. The alarm is red while triggered too.
    • On the right, behind a hairline, what needs you, each only while it does and each opening where to deal with it: the checks, the server's notifications, failing disks, a backup problem, low batteries (#batteries, lowest first), services that are down, pending updates, leaks and smoke.
    • A strip with nothing to show is not drawn.
  • A weather pop-up. mnml-weather-card shows the conditions now and the forecast, followed over Home Assistant's weather/subscribe_forecast: up to seven days, or up to eight hours when the entity only has an hourly forecast. The weather-popup template draws it, and the strip's weather opens it.
  • Checks you can run. The server's checks take actions (run, stop, running): a Run button that becomes Stop while the checks run.
    • In the server pop-up, Daily checks is one Checks item: the last run under its name, a red icon while a check failed, an orange one while there are warnings, and Run or Stop.
    • It opens the checks pop-up (#checks, the checks-popup template): the failures, the warnings, the last run, the overdue flag and Check details, with Run and Stop in its header.
    • In the strip, the failed checks and the warnings are one Checks count, red while a check failed and orange while there are only warnings.
  • Tailscale. A tailscale tile and pop-up for the tailnet.
    • The tile's chips, each only while it holds: Offline, red while an essential device is not connected to Tailscale's control server; Relayed, orange while a device that carries traffic cannot connect directly; Update, amber while a device has a newer client.
    • The pop-up has a card per device, the essential ones under Infrastructure and the others under Devices: its IP address, a pending update, a key that expires within soon_days (14), Direct or Relayed, and connected or when it was last seen.
    • Placed with no slots, it finds the devices from the Tailscale integration. Which ones are essential you set yourself.
    • It is one of the system cards in the dashboard builder.
  • More devices in a room. room and room-popup take cameras, covers, fans, humidifiers, appliances, pets and plants. A room placed by area finds its cameras, covers, fans and humidifiers itself.
    • Cameras: a live picture in the pop-up, an Activity list of the motion, person and doorbell sensors, and a chip on the tile while a doorbell or person sensor is on.
    • Covers: a position slider when the cover has a position, and Open, Stop and Close. A garage door (garage) has a chip on the tile while it is open or moving, which closes it when pressed.
    • Fans and humidifiers: a speed or target humidity slider, and a power button.
    • Appliances, such as a washer, a dryer or a dishwasher: the cycle, the time left and the power, blue while a cycle runs.
    • Pets: when the pet last ate, the food and litter levels, and a Feed button.
    • Plants: the soil moisture, driest first, orange under 30 % and red under 15 %.
  • Tiles show only what is wrong. The status chips of the shipped tiles are drawn only while they have something to report: a room's window and door while open, the car's chips, a person's Driving and Do not disturb, and every status chip of the server, network, AdGuard, Home Assistant and media tiles. A chip whose entity is unavailable still shows, in orange. Controls you press stay, and the pop-ups keep showing every state.
  • Chips instead of the problems dot. The problems dot of a room's and a person's tile is gone. A room has a Leak chip, red while a leak sensor is wet, and a room and a person have a Batteries chip, red under 5 % and orange under 20 % (the new critical and low slots). Each is drawn only while there is a problem.
  • The car's Alarm chip is red while the car is disarmed, while its alarm is going off, or while either sensor is unavailable, and is not drawn while the car is armed. It used to be amber while the car was armed.
  • Tooltips of MNML's own. An icon without text, such as a chip, a round button or a glance, explains itself in a tooltip drawn above pop-ups, instead of the browser's: after 400 ms on hover, and on keyboard focus, never on a touch. A chip's tooltip lists what is behind it.
  • Pop-ups. The scrollbar sits in the strip between the cards and the panel's edge, never over a card. Hover washes fade in without flicker. After a pop-up closes by a tap or a swipe, the glance or icon you tapped lets go of its focus, so no tooltip or focus ring lingers on a phone.
  • Discovery that says why.
    • unifi-network, proxmox-server and media-server find their own entities from their integrations, as tailscale does, when placed with no area and no slots. What the integrations do not expose is still set by hand: the UniFi Wi-Fi and clients, the Proxmox outlet, storage, disks and checks, and the Radarr free space.
    • A Home Assistant label mnml_<slot> on an entity or its device makes it that slot's value: label a sensor mnml_window and it is its room's window.
    • When several entities fit an entity slot, discovery ranks them (a primary entity first, then one with a usable state, then the device's main entity, then the lowest id) instead of taking the first by id, so a card may pick another entity than before. When the best ones tie, the card editor offers them ("Temperature: 2 fit equally. Pick one"), and the one you pick stays in the card's slots.
    • In the template builder, the Slots tab says why a slot found what it found, or nothing, under "Try it in".
  • The Design tab. The template builder opens on Design, in place of Simple: the template drawn large, with a panel beside it.
    • Click a part, or reach it with the arrow keys, to change what it shows, its colour, icon and name, and when it shows; move it by dragging, copy or delete it, or add another beside it.
    • A new template starts from a tile, a list, a strip of statuses or a pop-up, filled with entities of your home.
    • A piece that another template draws can be written out to change it here, or opened to change it for every template that uses it.
    • The other tabs are behind More tools.
  • Smaller changes:
    • strip_word capitalises the new first word, so "Tailscale router" reads "Router".
    • A page opened before an update, which asks for an editor file that is gone, says to reload the page.

Breaking changes, and how to migrate

  • problems is removed from mnml-tile-card, with its dot. A tile that still has it fails with unknown key: problems. Use status chips with silent: true instead, as the shipped room and person templates now do, for example:

    chips:
      - type: status
        name: Leak
        icon: mdi:water-alert-outline
        silent: true
        rules:
          - { entities: [binary_sensor.kitchen_leak], is: ['on'], color: red, label: device }
      - type: status
        name: Batteries
        icon: mdi:battery-alert-variant-outline
        silent: true
        rules:
          - { entities: [sensor.window_battery], below: 5, color: red, label: device }
          - { entities: [sensor.window_battery], below: 20, color: orange, label: device }
  • vpn is removed from unifi-network and network-popup, with the network tile's VPN chip and the pop-up's VPN list. A card that still sets it fails with no slot named vpn. There is no generic replacement. For Tailscale's connected-to-control sensors, which it was written for, place a tailscale card: each sensor is a device's connected with essential: true, and is listed in essential too, which the Offline chip reads.

  • The home generator's Network.vpn is removed. Move each sensor to system.tailscale.devices as { connected: ..., essential: true }. The generator fills the rest of the Tailscale tile from the devices.

  • src/contract/defaults.ts is removed (BATTERY_LOW, BATTERY_CRITICAL), and so is the contract's Problems type. The battery thresholds are the templates' low and critical slots, 20 and 5 by default.

  • Changes to parts that are gone are skipped. A change your home made in the template builder to the network's VPN chip or list, or to the server pop-up's Daily checks rows or Check details card, no longer applies. The rest of each template still draws, and the Daily checks rows are now in checks-popup.

For templates you write

  • New cards: mnml-glances-card (items, each an entity or a count) and mnml-weather-card (entity, title).
  • New keys: silent on status and tyres controls, which are then drawn only while a rule holds or an entity is unavailable; below and within_days on a status rule; low_only on a list row; relative: true on a state item; and the slider kinds position (a cover), percentage (a fan) and humidity (a humidifier).
  • A status rule whose is names unavailable gives an unavailable entity that rule's colour instead of orange.
  • Discovery filters take entity_category, unit, state_class, name, manufacturer, model, label and exclude.
  • New templates: glances, weather-popup, checks-popup, checks-actions, batteries-popup, energy-popup, tailscale, tailscale-popup, tailscale-device, camera-card, camera-activity, cover-card, fan-card, humidifier-card, appliance-card, pet-card and plants.

For dashboards made with the...

Read more

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 10 Oct 10:04
96a1dbd

What's new

  • A report card. mnml-report-card shows a text report that a sensor keeps in its details attribute.
    • Each entry has an alert icon, with the lines under it as its details, and the heading counts the entries.
    • A line without indentation is a headline over a group of entries. Its last word picks the group's colour from colors ({ warnings: orange }), red otherwise.
    • Nothing is drawn while the report has no entries.
    • It is in the card picker as MNML Report, with an editor.
  • Warnings and details for the server's checks. The checks of proxmox-server and proxmox-popup take an optional warnings sensor.
    • The tile's Checks chip turns orange while there are warnings, and stays red while a check failed.
    • The pop-up's Daily checks list has a Warnings row, orange while not 0.
    • Under it, Check details draws the failures sensor's details report with the new card: each failed check in red and each warning in orange, with what it found under it.
  • More than one media server. media-server and media-popup take more_streams, the stream counts of other servers, such as Jellyfin's beside Plex's. Each gets its own count, with its icon, on the tile and in the pop-up's header, and its own row under Watching. The Watching rows are named by their device, the main server's included.

For templates you write

Nothing changes in the format. mnml-report-card is new (entity, title, icon, colors), and so are the optional slots above.

For dashboards made with the home generator

  • ServerChecks takes warnings, written as the checks' warnings.
  • MediaServer takes moreStreams, written as more_streams.

The report card's keys and its report format have the details.

What's Changed

  • A report card for failed checks, and Jellyfin in the media server by @bfmatei in #31
  • MNML 0.9.0 by @bfmatei in #32

Full Changelog: v0.8.0...v0.9.0

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 10 Oct 07:46
4ae9a15

What's new

  • Glass or flat. MNML's design comes in two materials.
    • Glass: translucent, blurred cards over a soft gradient with five glows behind them, a highlight along each card's top and a soft shadow.
    • Flat: the same design with opaque cards on a hairline edge, no blur and no shadow.
    • The setup asks which with Use the glass design, and the integration's options change it later. MNML writes the matching theme, still named MNML, and reloads the themes.
    • An existing install gets the glass design when it updates. Turn Use the glass design off in the integration's options for the flat one.
    • Under another theme the cards draw the flat material in that theme's colours.
  • A new look, in both materials.
    • Cards and pop-ups have a 22 px radius, up from 18 px.
    • What sits in a card is recessed: pills, tile chips, the tile's Lights strip and slider tracks are wells, and the cards inside a pop-up are trays.
    • Icon pills are rounded squares, and a state colour also tints the pill behind its icon.
    • The tile's Lights row is as tall as any item row, and a slider opened from it covers that row alone, not the whole tile.
    • A card's primary control is brighter than the others rather than filled; only a tile chip is filled.
    • Headings are small capitals, and a pop-up header's back and close buttons are rounded squares.
    • Pop-ups are cards over a frosted, dimmed backdrop.
    • The themes set the gaps of a sections view to 12 px.
  • Pop-ups that move better.
    • A swipe down from the top of a pop-up closes it, on a touch screen or with a pen.
    • Going from one pop-up to another slides the content aside and the new content in, and the panel's height follows, so the backdrop and an unfolded panel's place stay. Going back slides the other way.
    • A shadow along the bottom edge says there is more to scroll.
    • Before a pop-up unfolds from a tile, the page scrolls so that the tile has room below it, or its top is in view.
    • A folded list that you open scrolls into view, and the agenda's Next scrolls the week it added into view with its buttons.
  • A Disk column for the server's guests. The server pop-up's Guests table has a Disk column: a container's disk used as a share of its size, orange over disk_high and red over disk_full, and a dash for a VM. The separate Guest disks list is gone.
  • A new icon for the integration: the MNML mark in a well on a frosted card.

Breaking changes, and how to migrate

  • guest_disks is removed from proxmox-server and proxmox-popup. A card that still sets it fails with no slot named guest_disks. Give each guest in guests its disk instead (used, and size for the share): the Disk column reads it. The home generator built guest_disks from each guest's disk already, so a generated dashboard needs no change.
  • A change your home made to the Guest disks list in the template builder is skipped, since that part is gone. The rest of the server pop-up still draws.

For templates you write

  • In a table (headers and values), a row with of shows its last value as a share of that entity, orange over high and red over critical_high.
  • primary: true makes a control brighter than the others of its card. It fills the control only in a tile chip.

For your own theme

The cards read thirteen new variables, each with a fallback that draws the flat material: mnml-card-background-color, mnml-card-backdrop-filter, mnml-card-highlight-color, mnml-card-shadow, mnml-button-shadow, mnml-pill-raised-color, mnml-overlay-background-color, mnml-popup-section-color, mnml-popup-backdrop-filter, mnml-popup-scrim-color, mnml-popup-scrim-filter, mnml-popup-scroll-shadow and mnml-popup-shadow. None of the five earlier ones is renamed or removed. The glass theme also sets Home Assistant's own ha-card-background, ha-card-backdrop-filter and lovelace-background.

For dashboards made with the home generator

Home takes order, the order of the four sections: a list of rooms, people, garage and infrastructure, each once (SectionName). problems() reports any other list.

For contributors

  • The theme is two models, GLASS and FLAT in src/theme/model.ts, listed in THEMES and built into mnml.yaml and mnml-flat.yaml. The contrast gate checks both, the glass over its gradient and glows included.
  • pnpm screenshots takes every screenshot in the glass design and then in the flat one.

The theme and Design have the details.

What's Changed

Full Changelog: v0.7.0...v0.8.0

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 09:48
1b5fba1

What's new

  • Backups in the Home Assistant pop-up. home-assistant and system-popup take an optional backups slot: last, the last successful automatic backup, attempted, the last one attempted, and problem, a binary sensor. The pop-up then draws a Backups list after Resources: the two backups as relative times, which differ while the latest backup failed, and a red row while problem is on. MNML does not find these entities on its own, so set them on the card. Without backups the pop-up is unchanged.
  • Pop-ups with the cards' corners. A pop-up's radius goes from 24 px to 18 px, the radius of the cards and tiles, so a pop-up that unfolds in a tile's place keeps its corners. mnml-popup-border-radius stays a theme variable.

For dashboards made with the home generator

System takes an optional backups (SystemBackups: last, and optionally attempted and problem), written into the Home Assistant tile and pop-up as backups.

The templates' slots and the Home Assistant pop-up have the details.

What's Changed

Full Changelog: v0.6.0...v0.7.0

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 15:47
5273170

What's new

  • Templates ask for less. Of the shipped templates' 323 top-level slots, 69 stay required, down from 142. What stays required is a part's key, each card's subject, and the car plan's doors, windows, tyres, hood and tailgate. Every other slot is optional, and the parts that read one are drawn only when it is set.
    • A room no longer needs a light: Quick start and the builder offer every area where the room template finds something beyond its name and icon.
    • A system card is offered when its tile shows something.
    • Discovery finds an object only when it finds every field it requires, so an area with a scene and no light finds no lights.
  • Reorder the whole dashboard. In the dashboard builder, Rooms, People, Garage and System move up and down, and so do the people, cars and system cards inside them, as rooms already did. A dashboard template keeps the order.
  • Simple, in the template builder. Icons use Home Assistant's icon picker. A colour outside the theme's four stays offered. A field that is emptied shows its value again. The note links to the card editor.
  • Smaller fixes:
    • The card editor's folds start afresh on another template.
    • Its preview starts in an area that finds more than the required slots.
    • From a template counts only the templates it brings in.
    • A system template other than the five shipped ones is kept.
    • A save that Home Assistant refuses says why.
    • Moving a row keeps the focus on its button.

For templates you write

Nothing changes in the format. The shipped templates now mark fewer slots required, and add if: to the parts that read the optional ones. The fragments still require their subject. A template of yours that places one without it is refused, and the error names the slot.

The templates' slots and Building a dashboard have the details.

Full Changelog: v0.5.0...v0.6.0

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 14:26
e987551

What's new

  • Dashboards first. The MNML panel opens on Dashboards. The template library is at /mnml/templates.
  • Dashboard templates. Share on a built dashboard's row exports its layout as YAML: its sections, their looks, its system cards, its pop-up openings, and every template of yours it uses.
    • Its layout names no area, person or entity of your home. A template's example goes as it is, so check it before you share.
    • From a template makes a dashboard from one, filled with the importing home's areas and people. It shows what it will make first.
    • It asks about any template it would change: keeping both is the default, and replacing one changes it on every dashboard of the home.
  • Each section's look. In the dashboard builder, Rooms, People, Garage and System each take a title and an icon. All but System also take the template their cards are drawn with, for example your own copy of room.
  • Tiles first. The library and the template card's gallery list the nine tiles you place on a dashboard. Pop-ups and parts sit behind a switch, or a fold in the gallery. Your own templates, and shipped ones you changed, are always listed.
  • The card editor says what it found. Placed by area or in the whole home, a template card's editor says what discovery found ("Found in Living: ...") and what still needs a value ("Needs: Lights"). It opens only the panels that are missing something. Every slot of the shipped tiles now reads in plain words.
  • Simple, in the template builder. A template opens on a new Simple tab, beside its preview. Each part has a switch and the condition it is drawn under, and you can change its colour, icon and name without the outline. Conditions everywhere read as sentences ("when window is set"). Example values now sit under the slots, in one Slots tab.
  • The README opens with the demo home split diagonally, light above and dark below.

For templates you write

Nothing changes in the format. The shipped tiles gained label: and help: on their slots. home-assistant and adguard are unchanged since 0.4.0.

Building a dashboard and Sharing a dashboard have the details.

Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 12:39
e37ca2c

What's new

  • A dashboard builder. The MNML panel has a Dashboards tab, and the library offers it while MNML has built none.
    • Quick start makes a whole dashboard from your home in one click: a room tile for each area with lights, a tile for each person, and the system cards whose entities MNML finds. It is put in the sidebar, with pop-ups that unfold from their tiles on a tablet and a computer.
    • Step by step opens the builder first, one page with live tiles: tick and order the rooms, pick the people, add cars, choose the system cards, set how pop-ups open on a phone, a tablet and a computer, then Create.
  • Rebuild and Undo. A dashboard MNML built opens in the builder again. Rebuild replaces its cards (it asks first) and keeps the version it replaced, so Undo goes back one rebuild. Forget stops MNML building it, and can delete it too.
  • Customize on any row opens the template card's editor on that card. The builder keeps only what you change, so a rebuild still follows the home for the rest. A car is added the same way, and so is a system card whose entities MNML does not find on its own.
  • System cards that find themselves.
    • home-assistant finds its CPU and memory from System Monitor, its disk from the Supervisor (or System Monitor), and its updates from the Supervisor.
    • adguard finds every entity from the AdGuard Home integration.
    • A card that spells its slots is unchanged.
  • A person without the companion app gets a tile: devices is no longer required on person and person-popup, and the pop-up leaves its Devices and Location access out when there are none.

Building a dashboard has the details.

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 10:58

What's new

  • Pop-ups that unfold. A pop-up can open out of the tile you tapped, in that tile's place and as wide as it, instead of in the middle of the screen. It grows down from the tile, or up from it near the bottom of the screen, and folds back into it when it closes. A pop-up opened from inside it keeps the same place, it moves with its tile when the window is resized, and a reload brings it back where it was. You choose per screen with the new open key on mnml-popups-card, for example open: { phone: sheet, tablet: unfold, desktop: unfold }, each sheet, dialog or unfold. Without the key nothing changes: a sheet on a phone and a dialog elsewhere. Keys has the details.
  • A sidebar icon of its own. The MNML panel shows the MNML mark in the sidebar: the logo's frame made square, with MN over M and the corner, in the sidebar's colour.
  • An X on sliders. A slider opened from a button, such as a light's brightness, has an X to close it, which gives the focus back to the button.

For dashboards made with the home generator

Home takes popupOpen, written into the pop-ups card as open.

Full Changelog: v0.2.0...v0.3.0

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 09:21

Before updating

MNML 0.2.0 needs Home Assistant 2026.10 or later. Home Assistant 2026.10 validates with probatio instead of voluptuous, and MNML now uses it directly. On an older Home Assistant, stay on 0.1.0.

What's new

  • An icon of its own. The integration shows the MNML mark in Settings and in HACS: a light version in light mode and a dark one in dark mode.

For contributors

  • Dependabot opens a pull request each week for the Python tools, the Node packages and the pinned GitHub Actions. The test harness and Home Assistant's frontend package move together.
  • The tests run on Home Assistant 2026.10.0b2. The tests of the oldest supported version run on 2026.10.0b0, and the throwaway Home Assistant runs the beta image.
  • Ruff targets Python 3.14.
  • pnpm icons renders the PNG icons from custom_components/mnml/brand/icon-light.svg and icon-dark.svg.

What's Changed

  • Bump astral-sh/setup-uv from 6.8.0 to 10.2.0 by @dependabot[bot] in #1
  • Bump actions/checkout from 4.4.0 to 7.0.1 by @dependabot[bot] in #2
  • Bump actions/upload-artifact from 4.6.2 to 7.0.1 by @dependabot[bot] in #3
  • Bump actions/download-artifact from 4.3.0 to 8.0.1 by @dependabot[bot] in #4
  • Bump actions/setup-node from 4.4.0 to 7.0.0 by @dependabot[bot] in #5

New Contributors

Full Changelog: v0.1.0...v0.2.0