Repository navigation
Releases
v0.11.0
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 itshvac_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?fieldand!fieldfilters) 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.infrastructureis nowsections.system, and theordervalue'infrastructure'is now'system'.SectionNameandSECTION_NAMESare gone: useSectionKeyfromsrc/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:
roomandroom-popup:meters, now each outlet'senergyinoutlets; andheating.batteries, now each thermostat'sbatteryinheating.thermostats.heating-popup:batteries, now each thermostat'sbatteryinthermostats.person:activities,focusesandbatteries, now each device'sactivity,focusandbatteryindevices.proxmox-serverandproxmox-popup:guest_statuses, now each guest'sstatusinguests.tailscale:essential,personal,updatesanddirect, nowdevices, each with itsessentialflag, itsupdateand itsudp.tailscale-popup:essentialandpersonal, the same way.
Added
glances: the slotscars,locks,network_devices,device_up,tailscale,guestsandmedia_health.- A Glances count takes
not: it counts the entities in none of those states. - Battery thresholds
lowandcriticalonroom-popup,heating-popupanddevice-popup.car-planandcar-popuptakeopen_states, andcar-planalsohalf_states.media-popuptakesnone. - 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), andmnml_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,trebleandloudnessare optional in aHome.
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.
- A slot left unset no longer shows as
- 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.
- Picking a default over a found value no longer writes
- 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<<.
- Items without
- 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, andsrc/editors/labels.tsholds only the labels whose humanised name reads badly. interface.jsonrecords the public interface, andinterface.test.tsfails on any change to it untilpnpm run fix:interfacerecords it.pnpm run accept:corpusaccepts a change in what discovery finds. Neither is part ofpnpm 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
What's new
- A status strip.
mnml-glances-card, drawn by the newglancestemplate, 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.
- 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
- A weather pop-up.
mnml-weather-cardshows the conditions now and the forecast, followed over Home Assistant'sweather/subscribe_forecast: up to seven days, or up to eight hours when the entity only has an hourly forecast. Theweather-popuptemplate draws it, and the strip's weather opens it. - Checks you can run. The server's
checkstakeactions(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, thechecks-popuptemplate): 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
tailscaletile 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
essentialyou set yourself. - It is one of the system cards in the dashboard builder.
- More devices in a room.
roomandroom-popuptakecameras,covers,fans,humidifiers,appliances,petsandplants. 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
criticalandlowslots). 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-serverandmedia-serverfind their own entities from their integrations, astailscaledoes, 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 sensormnml_windowand it is its room'swindow. - When several entities fit an
entityslot, 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'sslots. - 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_wordcapitalises 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
-
problemsis removed frommnml-tile-card, with its dot. A tile that still has it fails withunknown key: problems. Usestatuschips withsilent: trueinstead, as the shippedroomandpersontemplates 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 }
-
vpnis removed fromunifi-networkandnetwork-popup, with the network tile's VPN chip and the pop-up's VPN list. A card that still sets it fails withno slot named vpn. There is no generic replacement. For Tailscale's connected-to-control sensors, which it was written for, place atailscalecard: each sensor is a device'sconnectedwithessential: true, and is listed inessentialtoo, which the Offline chip reads. -
The home generator's
Network.vpnis removed. Move each sensor tosystem.tailscale.devicesas{ connected: ..., essential: true }. The generator fills the rest of the Tailscale tile from the devices. -
src/contract/defaults.tsis removed (BATTERY_LOW,BATTERY_CRITICAL), and so is the contract'sProblemstype. The battery thresholds are the templates'lowandcriticalslots, 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) andmnml-weather-card(entity,title). - New keys:
silentonstatusandtyrescontrols, which are then drawn only while a rule holds or an entity is unavailable;belowandwithin_dayson a status rule;low_onlyon a list row;relative: trueon a state item; and the slider kindsposition(a cover),percentage(a fan) andhumidity(a humidifier). - A
statusrule whoseisnamesunavailablegives an unavailable entity that rule's colour instead of orange. - Discovery filters take
entity_category,unit,state_class,name,manufacturer,model,labelandexclude. - 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-cardandplants.
For dashboards made with the...
v0.9.0
What's new
- A report card.
mnml-report-cardshows a text report that a sensor keeps in itsdetailsattribute.- 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
checksofproxmox-serverandproxmox-popuptake an optionalwarningssensor.- 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
detailsreport 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-serverandmedia-popuptakemore_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
ServerCheckstakeswarnings, written as the checks'warnings.MediaServertakesmoreStreams, written asmore_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
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_highand red overdisk_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_disksis removed fromproxmox-serverandproxmox-popup. A card that still sets it fails withno slot named guest_disks. Give each guest inguestsitsdiskinstead (used, andsizefor the share): the Disk column reads it. The home generator builtguest_disksfrom each guest'sdiskalready, 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 (
headersandvalues), a row withofshows its last value as a share of that entity, orange overhighand red overcritical_high. primary: truemakes 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,
GLASSandFLATinsrc/theme/model.ts, listed inTHEMESand built intomnml.yamlandmnml-flat.yaml. The contrast gate checks both, the glass over its gradient and glows included. pnpm screenshotstakes 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
What's new
- Backups in the Home Assistant pop-up.
home-assistantandsystem-popuptake an optionalbackupsslot:last, the last successful automatic backup,attempted, the last one attempted, andproblem, 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 whileproblemis on. MNML does not find these entities on its own, so set them on the card. Withoutbackupsthe 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-radiusstays 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
- Home Assistant's pop-up lists its own backups by @bfmatei in #25
- The Home Assistant pop-up shows a backup problem by @bfmatei in #26
- The pop-up has the cards' radius by @bfmatei in #27
- MNML 0.7.0 by @bfmatei in #28
Full Changelog: v0.6.0...v0.7.0
v0.6.0
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
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
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-assistantfinds its CPU and memory from System Monitor, its disk from the Supervisor (or System Monitor), and its updates from the Supervisor.adguardfinds every entity from the AdGuard Home integration.- A card that spells its slots is unchanged.
- A person without the companion app gets a tile:
devicesis no longer required onpersonandperson-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
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
openkey onmnml-popups-card, for exampleopen: { phone: sheet, tablet: unfold, desktop: unfold }, eachsheet,dialogorunfold. 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
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 iconsrenders the PNG icons fromcustom_components/mnml/brand/icon-light.svgandicon-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
- @dependabot[bot] made their first contribution in #1
Full Changelog: v0.1.0...v0.2.0