From 7f2bf5b38071a3014b45739235b8e47fb3e3b75f Mon Sep 17 00:00:00 2001 From: Lars Kvanum Date: Fri, 30 Oct 2026 12:35:12 +0100 Subject: [PATCH] docs: shorten the Store readme and clean up the community listing Athom approved v1.10.38 but asked for a shorter Store readme: one or two plain-text paragraphs instead of a device overview, Flow card list and technical notes (App Store Guidelines 1.3). - README.txt is now two everyday-language paragraphs with no lists, versions or URLs, translated into the ten other languages the app description already uses. README.*.txt stays out of the app bundle. - HOMEY_COMMUNITY_LISTING.md reflects v1.10.38 in both store and test, replaces the per-version sections with one "What's new" summary since v1.10.16 and drops version tags from the feature descriptions. - README.md no longer calls the store version 1.10.16. - AI_RULES.md section 8, plus a pointer in the repo conventions file, records the readme rules so later releases do not grow the readme again. --- AI_RULES.md | 9 ++ CLAUDE.md | 4 + HOMEY_COMMUNITY_LISTING.md | 225 ++++++++------------------ README.md | 2 +- WORKLOG.md | 23 +++ no.tiwas.booleantoolbox/.homeyignore | 1 + no.tiwas.booleantoolbox/README.da.txt | 3 + no.tiwas.booleantoolbox/README.de.txt | 3 + no.tiwas.booleantoolbox/README.es.txt | 3 + no.tiwas.booleantoolbox/README.fi.txt | 3 + no.tiwas.booleantoolbox/README.fr.txt | 3 + no.tiwas.booleantoolbox/README.it.txt | 3 + no.tiwas.booleantoolbox/README.nl.txt | 3 + no.tiwas.booleantoolbox/README.no.txt | 3 + no.tiwas.booleantoolbox/README.pl.txt | 3 + no.tiwas.booleantoolbox/README.sv.txt | 3 + no.tiwas.booleantoolbox/README.txt | 97 +---------- 17 files changed, 135 insertions(+), 256 deletions(-) create mode 100644 no.tiwas.booleantoolbox/README.da.txt create mode 100644 no.tiwas.booleantoolbox/README.de.txt create mode 100644 no.tiwas.booleantoolbox/README.es.txt create mode 100644 no.tiwas.booleantoolbox/README.fi.txt create mode 100644 no.tiwas.booleantoolbox/README.fr.txt create mode 100644 no.tiwas.booleantoolbox/README.it.txt create mode 100644 no.tiwas.booleantoolbox/README.nl.txt create mode 100644 no.tiwas.booleantoolbox/README.no.txt create mode 100644 no.tiwas.booleantoolbox/README.pl.txt create mode 100644 no.tiwas.booleantoolbox/README.sv.txt diff --git a/AI_RULES.md b/AI_RULES.md index cdca2f0..8b0aa41 100644 --- a/AI_RULES.md +++ b/AI_RULES.md @@ -35,5 +35,14 @@ The following rules are absolute and must be followed by any AI/LLM assistant wo * **Enforced by** `.github/workflows/message-check.yml`: it removes signature footers from PR descriptions, issues, comments and reviews, and fails pull requests and pushes that use a tool-named branch or contain commits with signature lines, tool names or an assistant identity as author or committer. When it fails, fix the cause (reword the commit, rename the branch, edit the text); never work around or disable the check. * The shared project settings in `.claude/settings.json` switch off the tool's own commit and PR attribution. Do not remove or override them. +## 8. Homey App Store Readme and Release Texts +* `no.tiwas.booleantoolbox/README.txt` is the text shown on the Homey App Store page. It must follow section 1.3 of the Homey App Store Guidelines (https://apps.developer.homey.app/app-store/guidelines#id-1.3.-readme). Athom asked for this when approving v1.10.38, because the readme had grown into a long technical feature list. +* Keep it to **one or two short plain-text paragraphs** that say, in everyday language, why the app is useful. No headings, no indentation and no bullet lists. +* **Do not** list devices, features, capabilities or Flow cards (the Store already shows the Flow cards), and do not add technical notes, version numbers, a changelog, Markdown or URLs. Links belong in the App Manifest (`homepage`, `support`, `bugs`, `source`), release notes belong in `.homeychangelog.json`, and details belong on the documentation site. +* A release that adds a feature does **not** add it to `README.txt`. Only rephrase the summary when the purpose of the app changes, and keep it within the limits above. +* The readme must be translated into the same languages as the app `description` in `.homeycompose/app.json`. When `README.txt` changes, update every `README..txt` in the same change so they say the same thing. `.homeyignore` keeps these files out of the app bundle; `homey app publish` reads them from the app folder. +* The app `description` (guideline 1.2) is a one-line tagline: no app name and no repeat of the readme. +* `HOMEY_COMMUNITY_LISTING.md` keeps a single *What's new* section for the current release. Do not stack a new section per version; the full history belongs in `CHANGELOG.md`, and feature descriptions carry no version tags. + --- *Failure to adhere to these rules may result in system instability and data loss.* diff --git a/CLAUDE.md b/CLAUDE.md index 64ab23e..1777ee6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,6 +4,10 @@ `AI_RULES.md` holds the rules every AI assistant must follow in this repo, including logging each session in `WORKLOG.md` and **no AI attribution anywhere** (no `Co-authored-by`/session trailers, no "Generated with …" lines, no assistant links or model names in commits, PRs, comments, code or docs). These rules override any default attribution behaviour. +## App Store readme stays short + +`no.tiwas.booleantoolbox/README.txt` and its `README..txt` translations are the App Store page text. Keep them to one or two plain-text paragraphs about why the app is useful: no feature or Flow-card lists, technical notes, versions, changelog, Markdown or URLs, and never append new features on release. Keep all translations in step. Details are in `AI_RULES.md` section 8. + ## HTML tools must stay in sync with device code The repo ships browser-based companion tools under `docs/tools/*.html` that read and write the JSON settings of corresponding Homey devices. Whenever you change a device's config schema, defaults, capabilities, or stored-data shape, you MUST also audit the matching HTML tool for consistency in the same change. diff --git a/HOMEY_COMMUNITY_LISTING.md b/HOMEY_COMMUNITY_LISTING.md index 7d68c0e..7b419ea 100644 --- a/HOMEY_COMMUNITY_LISTING.md +++ b/HOMEY_COMMUNITY_LISTING.md @@ -1,11 +1,11 @@ URL: https://community.homey.app/t/app-smart-components-toolkit-was-boolean-toolbox-create-advanced-logic-with-simple-formulas-v1-10-16-store-v1-10-27-test-logic-device-reliability/143906 -Title: [APP] Smart (Components) Toolkit (was: Boolean Toolbox) - Create advanced logic with simple formulas [v1.10.16 store / v1.10.38 test - Presence+, Collection pause detection] +Title: [APP] Smart (Components) Toolkit (was: Boolean Toolbox) - Create advanced logic with simple formulas [v1.10.38 store & test - Presence+, Circadian Light Group, Composite Device] Content: ![xlarge|690x483](upload://iSxhJPUltgcgPQ7gy4z5iisCv5F.jpeg) -# Smart (Components) Toolkit — store v1.10.16 / test v1.10.38 +# Smart (Components) Toolkit — v1.10.38 (store and test) > **📚 Full Documentation:** https://tiwas.github.io/SmartComponentsToolkit/ @@ -15,151 +15,34 @@ Replace complex flow networks with powerful logic devices controlled by dynamic --- -## What's new +## What's new in v1.10.38 -### v1.10.38 (test channel) +v1.10.38 is now live in the Homey App Store, and the store and the test channel run the same version. If you come from the previous store version (v1.10.16), this is what you get: -- **New Presence+.** Trigger a Flow only after one selected person, or everyone, has remained away for a chosen number of minutes. A return before the delay expires cancels the pending trigger, filtering out brief Home/Away glitches. Countdown state survives an app restart. [Read the Presence+ guide](https://tiwas.github.io/SmartComponentsToolkit/docs/presence-plus.html). -- **Repeated departures are re-armed.** If someone returns Home and leaves again while the previous Presence+ trigger call is still finishing, the new absence keeps its own start time and triggers after the configured delay. -- **Collection pause detection fixed.** *Is paused* on a Circadian Light Group Collection now answers yes when the Collection itself or at least one available member group is paused. -- **Reliable All on after a partial pause.** An *All on* Flow can now take its Resume branch when one member group is paused. Resume still reaches every member group before the Flow continues to turn the lights on. +- **Presence+.** Start a Flow only after one selected person, or everyone, has stayed away for a chosen number of minutes. A return cancels the pending trigger, so brief Home/Away glitches are filtered out. Presence+ guide +- **Composite Device.** Combine the same capability from several devices into one live value: average, minimum or maximum of numbers, any/all of alarms, or text and clock values, with triggers for every change or for changes above a threshold. Composite Device guide +- **Circadian Light Group.** The schedule follows your Homey's time zone, mornings can have their own profile, and cards no longer hit Homey's 60-second timeout. New *… and report the result* cards tell you which lights did not answer, and Collections pause, resume and switch more reliably. Circadian Light Group guide +- **Waits longer than one minute.** *Start waiting…* cards wait in the background and a *…wait finished* trigger continues your Flow, for both Conditional Gates and Waiter Gates. Conditional Gates · Waiter Gates +- **New Flow cards.** Math Compare, Gradient Map and *Get the name of this Flow*. Flow Cards Reference +- **Logic Unit and Logic Device.** The *Formula result* alarm works with Homey's standard alarm cards again, new *Formula changed* triggers fire on every TRUE/FALSE change, and Logic Devices that depend on other Logic Devices keep working after an app restart. +- **Diagnostic report.** Generate a privacy-conscious report from App Settings and open a prefilled GitHub issue. Nothing is uploaded automatically. +- **Reliability.** Shared realtime subscriptions keep devices updated after network hiccups and stop the memory growth that could make Homey restart the app. -### v1.10.35 (test channel) +Full version history (CHANGELOG) -- **Circadian Light Group: no more "Timeout after 60000ms".** Homey stops an app's Flow card after 60 seconds, and the rest of the Flow then never runs. With a few lights that don't answer (an unplugged bulb, a Z-Wave module out of range), turning a group or Collection on could take almost that long, because the card waited for every retry. Now the card lets the Flow continue as soon as every light has its commands and has been checked, usually within a few seconds. Lights that haven't confirmed are retried in the background, and no Circadian card waits more than 50 seconds. -- **New: *Turn on / Turn off / Toggle and report the result*** (Then cards, Advanced Flow). They work like the device's own On/Off/Toggle cards and add two tags: *All lights confirmed* (yes/no) and *Status* (text), for example *"Continued before everything was confirmed. Lights still being retried in the background (1 of 11): Dining room bulb."* -- **Retries stop when you change your mind:** a newer command, pausing the group or deleting it stops retries that are still running, so a retry never turns a light back on after you paused or switched off. -- **Clearer Collection errors:** the error message for groups with unresponsive lights now names the groups (it said *undefined*). -- **Tip:** a lamp that is unplugged slows every command down. Untick *Enabled* for it in the group's light settings until it works again; the *Status* tag tells you which lamps don't answer. - -``` -WHEN: Button "All on" pressed -THEN: Turn on and report the result (Circadian Light Group Collection) -AND: All lights confirmed is no -THEN: Create a notification with "Lights: [Status]" -``` - -Circadian Light Group guide — retries and result tags - -### v1.10.34 (test channel) - -- **Clearer waiter log:** when a wait takes over a Waiter ID that is already waiting, the app log now says so. The earlier wait still ends on its NO path, as before. Internal clean-up only; nothing changes in your Flows. Waiter Gates guide +--- -### v1.10.33 (test channel) +## 🏠 Presence+ -- **Get the name of [this Flow] (Then card, Advanced Flow).** Returns the name, id and folder of the Flow the card is in as tags, so a notification or log line can say which Flow sent it. No more typing the Flow name by hand. -- **Pick once, rename freely:** click the field and pick the only choice, *this Flow*. The name is read every time the card runs, so it follows when you rename the Flow. -- **Copies are caught:** if you copy the card or duplicate the Flow, *Flow name* shows *[Duplicate]*, *Has error* is yes and the *Error message* tag names the Flows, until you pick *this Flow* again in the copy. A Flow that is not saved yet gives *[Unknown – save the Flow]*. The card always continues on its normal output, so put a Logic condition on *Has error* to branch. -- Translated into all 11 app languages. +Homey's presence can flicker between Home and Away. Presence+ waits until a person, or everyone, has really been away for the number of minutes you choose before it starts your Flow. A return before the delay expires cancels the pending trigger, a new departure starts a new countdown, and countdowns survive an app restart. ``` -WHEN: This Flow is started -THEN: Get the name of this Flow -THEN: Create a notification with "[Flow name] ran" +WHEN: Everyone has been away for 15 minutes +THEN: Turn off all lights +THEN: Set the thermostat to 17 °C ``` -Get this Flow's name — reference - -### v1.10.32 (test channel) - -- **Circadian schedule on local time:** clock-time anchors, lux anchors and *Pause until time* now follow your Homey's time zone, including daylight saving time. Homey runs apps on UTC, so in Norway the schedule ran 2 hours late in summer (1 hour in winter), and mornings stayed dim and red until about 09:00. **If you moved your anchors earlier to compensate, move them back.** -- **Correct outdoor light estimate:** the astronomical estimate (the default outdoor source, also used for MET.no) now follows the real sun at your location. It was up to an hour off in Norway and several hours off in the Americas. -- **Optional morning profile:** tick *Own morning profile* under Repair → Light Profile to give mornings their own brightness and colour temperature. It applies from the Morning anchor and fades into Day. It is off by default, so existing groups behave exactly as before. With it on, *Is in phase* and *Phase changed* also use a Morning phase. -- **Lux anchors kept in the editors:** the pairing and Repair editors no longer turn lux-sensor anchors back into clock times when you open or save them. A saved lux sensor that is missing from the list (deleted, or not loaded yet) now shows as *Unknown sensor* instead of being cleared on save. - -Circadian Light Group guide - -### v1.10.31 (test channel) - -- **More reliable realtime updates:** the Homey Web API library is updated to 3.20.0, which shares device subscriptions and restores them automatically after a connection drop. Logic Devices, Circadian Light Groups and capability waiters keep receiving device changes after network hiccups. - -### v1.10.30 (test channel) - -- **No more app restarts from leaked subscriptions:** realtime device subscriptions are shared, so the Logic Device health check no longer grows memory until Homey restarts the app, and one listener finishing no longer stops updates for other Logic Devices on the same device. -- **Wait longer than one minute:** *Start waiting for Conditional Gate GO* and *Start waiting until device capability becomes value* wait in the background; the *…wait finished* triggers continue your Flow. Conditional Gates guide · Waiter Gates guide -- **Clear 60-second limit handling:** waits inside a card end with an explanatory message at 55 s instead of Homey's generic `Timeout after 60000ms`. -- **Better diagnostics:** warnings show where they come from, memory is sampled over time, and unclean shutdowns are reported. - -### v1.10.29 (test channel) - -- **Diagnostic report generation fixed:** Homey models that cannot provide process-memory or other resource metrics can now generate a report successfully. -- **Graceful resource fallback:** unavailable CPU, memory, or storage values are shown as `unavailable`; all other diagnostics remain in the report. - -### v1.10.28 (test channel) - -- **Diagnostic report from App Settings:** generate a readable report containing the installed version, current-session uptime, recent warnings/errors and stack traces. -- **Resource and setup load:** includes available app/Homey CPU, memory and storage data, anonymous app-device counts, and Circadian Light Group member, watcher and scheduler details. -- **Prefilled GitHub issue:** review the report, then open a new issue with the version and report already filled in. Nothing is uploaded automatically. -- **Privacy-conscious:** device names and IDs are omitted from structured data, and common identifiers and secrets are redacted from captured log lines. Always review before submitting. - -### v1.10.27 (test channel) - -This test release is a general reliability improvement based on a thorough code review. - -- **Reliable Logic Device updates:** formula evaluations are serialized and stale results are discarded, so bursts of linked-device updates cannot leave a Logic Device on an old result. -- **Quieter diagnostics:** normal Logic Unit updates no longer flood the app log. -- **Lean release package:** development-only material is excluded and manifest assets are verified before release. - -### v1.10.25 (test channel) - -- **Ordered Collection flows:** Collection cards wait for all member work before downstream cards run. -- **Deterministic conflicts:** pause/resume runs before simultaneous on/off operations. -- **Cascading pause:** pausing or resuming a Collection propagates to every member Circadian Light Group. - -### v1.10.24 (test channel) - -- **Reliable activation from all-off:** member lights now acknowledge on before receiving dim and colour targets. -- **Settling-safe watcher:** short off/on bounces during intentional activation are accepted, while an explicit off still wins immediately. -- **Race-free scheduling:** explicit member commands are no longer superseded by scheduler ticks, and the Collection no longer duplicates member schedulers or resume applies. - -### v1.10.23 (test channel) - -- **Logic Unit alarm restored:** the read-only Formula result alarm now follows the combined result of all enabled formulas, so Homey's standard generic-alarm turned on/off cards work again. -- **New Formula changed card:** fires on every TRUE/FALSE transition for the selected formula and provides the current and previous result as tags. -- **Fixed Formula changed to... card:** correctly filters on both the selected formula and the chosen TRUE/FALSE result. -- Existing formula-trigger IDs are retained for backwards compatibility with saved flows. - -### v1.10.22 (test channel) - -- **Composite value changed:** a new device trigger that fires for real numeric, alarm/boolean, text, enum, or clock-value changes and exposes current value, previous value, value type, and device name. -- **Composite value changed by more than:** a numeric trigger with a configurable fixed-unit or percentage threshold plus signed, absolute, and percentage change tags. -- Startup establishes the comparison baseline without firing either card. Thresholds compare consecutive exposed values and do not accumulate smaller changes. - -### v1.10.21 (test channel) - -- **Composite Device is now included in the app listing.** Its Store description, small device image, community listing, and online guide have all been refreshed. -- **Guide:** See setup steps, supported calculations, and examples. - -### v1.10.20 (test channel) - -- **New Composite Device.** Combine the same capability from two or more devices into one live virtual sensor, alarm, or text value. -- **Numbers:** average, minimum, maximum, sum, and median. A five-sensor humidity group can now expose its highest or lowest reading directly. -- **Alarms and booleans:** any/all, majority, count on, and percentage on. For example, a composite contact alarm is active when any selected door or window is open. -- **Text and clock values:** most common, min/max, most recently updated, and circular average clock time. For example, 23:00 and 01:00 average to 00:00. -- **Logic Unit guide:** illustrated Advanced Settings and Flow examples are now included in the online documentation. - -### v1.10.19 (test channel) - -- **Logic Device restart fix.** Logic Device groups that depend on another Logic Device now re-fetch their linked inputs after an app restart, so nested groups keep working after Smart (Components) Toolkit restarts. -- **Circadian Light Group member verification.** Improved handling around member verification so group state reporting is more reliable when members are checked or temporarily unavailable. - -### v1.10.18 (test channel) - -- **Math Compare (And card).** Calculate one value with `+`, `-`, `*` or `/`, then compare the result with another value. Useful for rules like `temperature + 3 is greater than high_threshold`. -- **Gradient Map (Then card).** Map an input value from one range to another and expose the result as a `Mapped value` tag for the next card. Supports range offsets and configurable rounding, for example mapping a room temperature into a heat pump / aircondition fan speed. -- **Token fix (v1.10.18).** The Gradient Map token now has a distinct `Mapped value` tag, so it is easier to pick the token from the specific map card that actually ran. - -**Heat pump / aircondition example:** -``` -WHEN: Temperature changes -AND: Temperature is less than low_threshold_livingroom -THEN: Set fan speed to 0% - -WHEN: Temperature changes -AND: Temperature is greater than or equal to low_threshold_livingroom -THEN: Map Temperature in range low_threshold_livingroom to high_threshold_livingroom into 100-500, round to 1 -THEN: Set fan speed to Mapped value -``` +→ Read the Presence+ guide --- @@ -167,37 +50,41 @@ THEN: Set fan speed to Mapped value When Flows start each other, or several Flows send notifications, log lines or variables to the same place, it is hard to see which Flow actually did what. -**New card: *Get the name of [this Flow]*** (Advanced Flow, test v1.10.33 and later) +***Get the name of [this Flow]*** (Advanced Flow) - Put it in any Advanced Flow and use the *Flow name* tag in notifications, timeline entries, log lines or values you pass on to a shared Flow. You see at once which Flow sent each message. - No hard-coded names that go stale: the name is read every time the card runs, so it follows when you rename the Flow. *Flow id* and *Folder* tags are there too, for example to group log lines by folder. - A log never names the wrong Flow: if you copy the card or duplicate the Flow, *Flow name* shows *[Duplicate]*, *Has error* turns yes and *Error message* names the Flows until you pick *this Flow* again in the copy. +``` +WHEN: This Flow is started +THEN: Get the name of this Flow +THEN: Create a notification with "[Flow name] ran" +``` + **Flow Doctor: Flow tree and loop check** -- The new *Flow tree* tab shows all your Flows in their folders. Select one to see every Flow that starts, enables or disables it, through the whole chain, with flags for disabled Flows, unconnected cards, *else* branches and delays. +- The *Flow tree* tab shows all your Flows in their folders. Select one to see every Flow that starts, enables or disables it, through the whole chain, with flags for disabled Flows, unconnected cards, *else* branches and delays. - **Circular references:** Flow Doctor warns about Flows that start each other in a loop, which can keep running forever. It tells active loops from inactive ones (through a disabled Flow or an unconnected card). The Flows view also reports references to deleted Flows. +- **Deleted devices:** the app keeps a record of Homey device IDs and names, so Flow Doctor can tell you which deleted device a broken Flow refers to. -Together they cover both sides: Flow Doctor shows how your Flows are wired, and the new card shows at run time which Flow actually ran. +Together they cover both sides: Flow Doctor shows how your Flows are wired, and the card shows at run time which Flow actually ran. Get this Flow's name — reference · Open Flow Doctor --- -## ✨ Circadian Light Group — now on stable +## 💡 Circadian Light Group -A virtual **light device** that adjusts brightness and color temperature for a group of real lights — automatically following a circadian rhythm. Store is currently v1.10.16; v1.10.38 is available on the test channel. +A virtual **light device** that adjusts brightness and color temperature for a group of real lights — automatically following a circadian rhythm. -### Circadian Light Group highlights +### Highlights -- **No more 60-second timeouts (v1.10.35).** Cards let the Flow continue once every light has its commands; lights that don't answer are retried in the background. *Turn on / Turn off / Toggle and report the result* (Advanced Flow) tell you whether every light confirmed. -- **Local time and morning profile (v1.10.32).** The schedule follows your Homey's time zone instead of UTC. Mornings can have their own dim and temperature, and lux anchors stay intact when you edit the group. -- **Device ID resolver (v1.10.16).** The app now captures Homey device IDs and names so Flow Doctor can resolve references to previously deleted devices. -- **Parallel device writes (v1.10.7).** Multi-device flow actions and the scheduler push to up to 5 lights at the same time instead of one-after-another. A 16-light "turn on all" goes from minute-scale to seconds. -- **Last-write-wins on conflicting commands (v1.10.7).** Trigger "all off" right after "all on" and the off command supersedes the in-flight on, instead of fighting it on every lamp. Each pass also verifies the on/off state afterwards and serially retries transient Z-Wave / Zigbee timeouts. -- **Group-level "Turn on / off all members" actions (v1.10.7).** Convenience cards that switch every enabled light in the group, respecting the current circadian dim/temperature when turning on. -- **Tunable-light fix (v1.10.5).** Tuneable bulbs now correctly become warmer (not cooler) towards evening. -- **Pre-warm auto-detection during pairing (v1.10.2).** A wizard step tests each light by briefly cycling it off, pre-setting `dim` / `light_temperature` / `light_hue` / `light_saturation`, then turning back on to verify the value persisted. Each capability is marked ✓/✗ per device, with a re-test button available later via Repair. -- **Smarter candidate filter (v1.10.2).** Lights registered as `socket` with `virtualClass: light` (Hue/Z2M-bridged lamps) and Z-Wave dimmer modules with a `dim` capability are now picked up automatically. -- **"Turn on light at current circadian level" action (v1.10.2).** Pick any member of the group from a dropdown — the action sets temperature/colour and dim, then turns the light on, in one step. Avoids the brief flash at the previous brightness for lamps that don't support pre-warming. +- **No 60-second timeouts.** Cards let the Flow continue as soon as every light has its commands; lights that don't answer are retried in the background, and no card waits more than 50 seconds. *Turn on / Turn off / Toggle and report the result* (Advanced Flow) add *All lights confirmed* and *Status* tags, so you can see which lamps did not answer. +- **Local time and morning profile.** The schedule follows your Homey's time zone, including daylight saving time. Tick *Own morning profile* to give mornings their own brightness and colour temperature. +- **Fast, predictable group commands.** Up to 5 lights are switched at the same time, and the newest command wins: "all off" right after "all on" supersedes the on instead of fighting it. The on/off state is verified afterwards and transient Z-Wave / Zigbee timeouts are retried. +- **Collections.** Combine several groups into one virtual light. Pausing or resuming a Collection reaches every member group, and Collection cards wait for all members before the Flow continues. +- **Pre-warm auto-detection during pairing.** A wizard step tests each light by briefly cycling it off, pre-setting `dim` / `light_temperature` / `light_hue` / `light_saturation`, then turning it back on to verify the value persisted. Each capability is marked ✓/✗ per device, with a re-test button available later via Repair. +- **Smart light detection.** Lights registered as `socket` with `virtualClass: light` (Hue/Z2M-bridged lamps) and Z-Wave dimmer modules with a `dim` capability are picked up automatically. +- **"Turn on light at current circadian level".** Pick any member of the group from a dropdown — the action sets temperature/colour and dim, then turns the light on, in one step. Avoids the brief flash at the previous brightness for lamps that don't support pre-warming. **Why use it?** - Bright cool light during the day, warm dim light in the evening, deep red at night to preserve melatonin and night vision. @@ -226,7 +113,7 @@ Choose how the device knows how bright it is outside: - **Open-Meteo / MET.no** (radiation-based estimate) - **External value** pushed from a Flow -### 25 new flow cards +### Flow cards **Triggers**: phase changed, red mode started/ended, paused/resumed, turned on/off, target changed, error, outdoor light requested. Plus an **app-level "Solar event occurred"** card with all 14 events + offset, usable from any flow. @@ -234,11 +121,16 @@ Choose how the device knows how bright it is outside: **Actions**: pause (sec/min/hour), pause until time, pause until solar event, resume, turn on/off/toggle (also as **… and report the result** with *All lights confirmed* and *Status* tags, Advanced Flow), set red threshold, **apply temporary state** (override dim/temp/saturation/red — restored on next tick, perfect for testing or quick "moods"), **force red mode** (with optional duration), apply now, set outdoor lux, **turn on light at current circadian level** (pick any group member from dropdown), **turn on / off all members** (group-level convenience). -→ Read full Circadian Light Group guide +``` +WHEN: Button "All on" pressed +THEN: Turn on and report the result (Circadian Light Group Collection) +AND: All lights confirmed is no +THEN: Create a notification with "Lights: [Status]" +``` -→ Install store v1.10.16 -
-→ Install test v1.10.32 +> **Tip:** a lamp that is unplugged slows every command down. Untick *Enabled* for it in the group's light settings until it works again; the *Status* tag tells you which lamps don't answer. + +→ Read full Circadian Light Group guide --- @@ -305,6 +197,18 @@ Flow 2 — WHEN: Capability wait finished "kettle_boil" THEN: Send notification "Water is ready!" ``` +**Heat pump / aircondition fan speed with Math Compare and Gradient Map:** +``` +WHEN: Temperature changes +AND: Temperature is less than low_threshold_livingroom +THEN: Set fan speed to 0% + +WHEN: Temperature changes +AND: Temperature is greater than or equal to low_threshold_livingroom +THEN: Map Temperature in range low_threshold_livingroom to high_threshold_livingroom into 100-500, round to 1 +THEN: Set fan speed to Mapped value +``` + > Homey stops every app Flow card after 60 seconds. The in-card waits (*Conditional Gate: Wait for GO*, *Wait until device capability becomes value*, *Wait*) therefore end after at most 55 seconds; use the **Start waiting…** cards plus their **…wait finished** trigger for anything longer. In an Advanced Flow both parts can live on one canvas. Pending waits are kept in memory and are lost if the app restarts. --- @@ -315,6 +219,7 @@ Flow 2 — WHEN: Capability wait finished "kettle_boil" - **Device Types Guide** - **Composite Device** - **Circadian Light Group** +- **Presence+** - **State Device** - **State Capture Device** - **Conditional Gates** @@ -325,8 +230,8 @@ Flow 2 — WHEN: Capability wait finished "kettle_boil" ## Installation and Links -* **Homey App Store (v1.10.16):** Install Smart (Components) Toolkit -* **Test channel (v1.10.32):** Install test version +* **Homey App Store (v1.10.38):** Install Smart (Components) Toolkit +* **Test channel (v1.10.38, same as the store):** Install test version * **GitHub Repo:** github.com/tiwas/SmartComponentsToolkit * **Online Emulator:** Boolean Logic Emulator * **Formula Builder:** Formula Builder diff --git a/README.md b/README.md index 60975a6..9426c8c 100644 --- a/README.md +++ b/README.md @@ -139,7 +139,7 @@ THEN: Pop state (restore previous) [Homey Flow delay: 5 minutes] --- -### Circadian Light Group *(stable v1.10.16 / test v1.10.38)* +### Circadian Light Group *(v1.10.38)* Virtual light device that adjusts brightness and color temperature for a group of real lights based on time, sun position or ambient lux. diff --git a/WORKLOG.md b/WORKLOG.md index ca314ee..654005c 100644 --- a/WORKLOG.md +++ b/WORKLOG.md @@ -1,5 +1,28 @@ # Worklog +## 2026-10-30 — v1.10.38 live: Store readme and community listing clean-up + +### Requested +- v1.10.38 is now live in the Homey App Store. Update `HOMEY_COMMUNITY_LISTING.md` to say that store and test run the same version, and clean up the per-version sections in that file. +- Act on Athom's review feedback for v1.10.38: the Store readme had become long and technical (device overview, list of standalone Flow cards, technical notes). It should be a short, engaging summary in one or two plain-text paragraphs (App Store Guidelines 1.3). Add the rule to the project rules for future releases. + +### Findings +- The Athom app API reports `liveVersion` 1.10.38 and no separate `testVersion`. +- Guideline 1.3: at most one or two paragraphs, plain text (Markdown is not rendered), no headers, no feature or Flow-card lists, no URLs (links belong in the App Manifest) and no changelog. Guideline 1.11: the readme should be translated into the same languages as the app description. +- The app description exists in 11 languages, but only `README.txt` existed. `homey app publish` reads `README..txt` from the app folder for every language code `homey-lib` accepts (all 10 used here, including `fi`). `README.txt` is already excluded from the app bundle by `.homeyignore`. + +### Implemented +- Rewrote `no.tiwas.booleantoolbox/README.txt` as two plain-text paragraphs about what the app does in everyday use, with no lists, versions or URLs. Added matching translations `README.{no,da,sv,de,nl,fr,it,es,pl,fi}.txt`; German and Dutch use the formal form, like the existing locales. Added `README.*.txt` to `.homeyignore` next to `README.txt`. +- Rewrote `HOMEY_COMMUNITY_LISTING.md` for v1.10.38 in store and test: new title, a single *What's new in v1.10.38* section that summarises everything since the previous store version (1.10.16) with links to the guides and the CHANGELOG, a Presence+ section, and version tags removed from the feature descriptions. The examples from the old per-version notes (Flow name, report-the-result, heat pump) moved into the matching sections; stale install links that said v1.10.32 now say v1.10.38. +- `README.md`: the Circadian Light Group heading said *stable v1.10.16 / test v1.10.38*; it now says *v1.10.38*. +- Added section 8 to `AI_RULES.md` (Store readme limits, no feature appends on release, translations kept in step, one *What's new* section in the community listing) and a short pointer in the repo conventions file. + +### Verification +- `homey app validate --level publish` passed. +- `npm run test:package`: 912 files, 8.09 MB, 17 manifest assets verified; the bundle size and file count are unchanged, so the translated readmes stay out of the bundle. +- All 11 readme files have two paragraphs and no URLs, Markdown markers or indentation. +- No app code changed; the readme takes effect with the next published build. + ## 2026-10-14 — Remove stale Composite Device badge ### Requested diff --git a/no.tiwas.booleantoolbox/.homeyignore b/no.tiwas.booleantoolbox/.homeyignore index 13a418b..f048a01 100644 --- a/no.tiwas.booleantoolbox/.homeyignore +++ b/no.tiwas.booleantoolbox/.homeyignore @@ -14,6 +14,7 @@ tests/ PROJECT_DOCUMENTATION.md DOCUMENTATION_PROMPT_TEMPLATE.md README.txt +README.*.txt robots.md run_test.ps1 jest.config.js diff --git a/no.tiwas.booleantoolbox/README.da.txt b/no.tiwas.booleantoolbox/README.da.txt new file mode 100644 index 0000000..22e12b5 --- /dev/null +++ b/no.tiwas.booleantoolbox/README.da.txt @@ -0,0 +1,3 @@ +Smart (Components) Toolkit giver dig de byggeklodser, som almindelige Flows mangler. Gør flere sensorer til ét enkelt svar, for eksempel "et vindue er åbent, mens ingen er hjemme", og brug det overalt som én enhed. Saml målinger fra mange sensorer i én værdi, husk hvordan lysene var indstillet, og gendan dem, når det har ringet på døren, eller lad lysene følge døgnet: lyst og koldt om dagen, varmt og dæmpet om aftenen. + +Dine Flows bliver færre, kortere og nemmere at forstå. Praktiske kort lader et Flow vente på en enhed, reagere først når alle virkelig har været væk et stykke tid, og sammenligne eller omregne tal uden ekstra variabler. Trin-for-trin-vejledninger, eksempler og onlineværktøjer finder du i appens dokumentation. diff --git a/no.tiwas.booleantoolbox/README.de.txt b/no.tiwas.booleantoolbox/README.de.txt new file mode 100644 index 0000000..e0e7fde --- /dev/null +++ b/no.tiwas.booleantoolbox/README.de.txt @@ -0,0 +1,3 @@ +Smart (Components) Toolkit liefert die Bausteine, die gewöhnlichen Flows fehlen. Fassen Sie mehrere Sensoren zu einer einfachen Antwort zusammen, etwa "ein Fenster ist offen, während niemand zu Hause ist", und nutzen Sie diese überall als ein einziges Gerät. Führen Sie Messwerte vieler Sensoren zu einem Wert zusammen, merken Sie sich, wie Ihre Lampen eingestellt waren, und stellen Sie sie wieder her, nachdem es geklingelt hat, oder lassen Sie Ihre Lampen dem Tagesverlauf folgen: hell und kühl am Tag, warm und gedimmt am Abend. + +Ihre Flows werden weniger, kürzer und leichter verständlich. Praktische Karten lassen einen Flow auf ein Gerät warten, erst reagieren, wenn wirklich alle eine Weile weg sind, und Zahlen ohne zusätzliche Variablen vergleichen oder umrechnen. Schritt-für-Schritt-Anleitungen, Beispiele und Online-Werkzeuge finden Sie in der Dokumentation der App. diff --git a/no.tiwas.booleantoolbox/README.es.txt b/no.tiwas.booleantoolbox/README.es.txt new file mode 100644 index 0000000..9c1933e --- /dev/null +++ b/no.tiwas.booleantoolbox/README.es.txt @@ -0,0 +1,3 @@ +Smart (Components) Toolkit aporta las piezas que les faltan a los Flows normales. Convierte varios sensores en una sola respuesta sencilla, por ejemplo "hay una ventana abierta y no hay nadie en casa", y úsala en todas partes como un único dispositivo. Combina las mediciones de muchos sensores en un solo valor, recuerda cómo estaban tus luces y restáuralas después de que suene el timbre, o deja que tus luces sigan el ritmo del día: intensas y frías durante el día, cálidas y tenues por la noche. + +Tus Flows serán menos, más cortos y más fáciles de entender. Unas tarjetas prácticas permiten que un Flow espere a un dispositivo, reaccione solo cuando todos lleven un rato realmente fuera de casa y compare o convierta números sin variables adicionales. En la documentación de la app encontrarás guías paso a paso, ejemplos y herramientas en línea. diff --git a/no.tiwas.booleantoolbox/README.fi.txt b/no.tiwas.booleantoolbox/README.fi.txt new file mode 100644 index 0000000..f11534e --- /dev/null +++ b/no.tiwas.booleantoolbox/README.fi.txt @@ -0,0 +1,3 @@ +Smart (Components) Toolkit tuo rakennuspalikat, jotka tavallisista Floweista puuttuvat. Yhdistä useat anturit yhdeksi yksinkertaiseksi vastaukseksi, kuten "ikkuna on auki, eikä ketään ole kotona", ja käytä sitä kaikkialla yhtenä laitteena. Kokoa monen anturin lukemat yhdeksi arvoksi, muista valojen asetukset ja palauta ne ovikellon soitua, tai anna valojen seurata vuorokauden rytmiä: kirkasta ja viileää päivällä, lämmintä ja himmeää illalla. + +Floweja tarvitaan vähemmän, ja ne ovat lyhyempiä ja helpompia ymmärtää. Kätevät kortit antavat Flown odottaa laitetta, reagoida vasta kun kaikki ovat todella olleet poissa jonkin aikaa sekä verrata tai muuntaa lukuja ilman ylimääräisiä muuttujia. Vaiheittaiset oppaat, esimerkit ja verkkotyökalut löydät sovelluksen dokumentaatiosta. diff --git a/no.tiwas.booleantoolbox/README.fr.txt b/no.tiwas.booleantoolbox/README.fr.txt new file mode 100644 index 0000000..02158e5 --- /dev/null +++ b/no.tiwas.booleantoolbox/README.fr.txt @@ -0,0 +1,3 @@ +Smart (Components) Toolkit apporte les briques qui manquent aux Flows ordinaires. Transformez plusieurs capteurs en une seule réponse simple, par exemple "une fenêtre est ouverte alors que personne n'est à la maison", et utilisez-la partout comme un seul appareil. Regroupez les mesures de nombreux capteurs en une seule valeur, mémorisez le réglage de vos lumières et rétablissez-le après un coup de sonnette, ou laissez vos lumières suivre le rythme de la journée : vives et froides le jour, chaudes et tamisées le soir. + +Vos Flows deviennent moins nombreux, plus courts et plus faciles à comprendre. Des cartes pratiques permettent à un Flow d'attendre un appareil, de ne réagir que lorsque tout le monde est vraiment absent depuis un moment, et de comparer ou convertir des nombres sans variables supplémentaires. Des guides pas à pas, des exemples et des outils en ligne sont disponibles dans la documentation de l'application. diff --git a/no.tiwas.booleantoolbox/README.it.txt b/no.tiwas.booleantoolbox/README.it.txt new file mode 100644 index 0000000..a6e8678 --- /dev/null +++ b/no.tiwas.booleantoolbox/README.it.txt @@ -0,0 +1,3 @@ +Smart (Components) Toolkit offre i mattoncini che mancano ai normali Flow. Trasforma più sensori in un'unica risposta semplice, ad esempio "una finestra è aperta mentre non c'è nessuno in casa", e usala ovunque come un solo dispositivo. Unisci le misure di molti sensori in un unico valore, ricorda come erano impostate le luci e ripristinale dopo che ha suonato il campanello, oppure lascia che le luci seguano il ritmo della giornata: intense e fredde di giorno, calde e soffuse la sera. + +I tuoi Flow diventano meno numerosi, più brevi e più facili da capire. Schede pratiche permettono a un Flow di attendere un dispositivo, di reagire solo quando tutti sono davvero fuori casa da un po' e di confrontare o convertire numeri senza variabili aggiuntive. Guide passo passo, esempi e strumenti online sono disponibili nella documentazione dell'app. diff --git a/no.tiwas.booleantoolbox/README.nl.txt b/no.tiwas.booleantoolbox/README.nl.txt new file mode 100644 index 0000000..b95b9da --- /dev/null +++ b/no.tiwas.booleantoolbox/README.nl.txt @@ -0,0 +1,3 @@ +Smart (Components) Toolkit levert de bouwstenen die gewone Flows missen. Maak van meerdere sensoren één eenvoudig antwoord, bijvoorbeeld "er staat een raam open terwijl niemand thuis is", en gebruik het overal als één apparaat. Voeg metingen van veel sensoren samen tot één waarde, onthoud hoe uw lampen stonden en zet ze terug nadat de deurbel is gegaan, of laat uw lampen het ritme van de dag volgen: helder en koel overdag, warm en gedimd in de avond. + +Uw Flows worden minder talrijk, korter en makkelijker te begrijpen. Handige kaarten laten een Flow wachten op een apparaat, pas reageren als iedereen echt een tijdje weg is, en getallen vergelijken of omrekenen zonder extra variabelen. Stapsgewijze handleidingen, voorbeelden en online tools vindt u in de documentatie van de app. diff --git a/no.tiwas.booleantoolbox/README.no.txt b/no.tiwas.booleantoolbox/README.no.txt new file mode 100644 index 0000000..98ee24e --- /dev/null +++ b/no.tiwas.booleantoolbox/README.no.txt @@ -0,0 +1,3 @@ +Smart (Components) Toolkit gir deg byggeklossene som vanlige Flows mangler. Gjør flere sensorer om til ett enkelt svar, for eksempel «et vindu er åpent mens ingen er hjemme», og bruk det overalt som én enhet. Slå sammen målinger fra mange sensorer til én verdi, husk hvordan lysene var stilt inn og sett dem tilbake etter at det har ringt på døren, eller la lysene følge døgnet: lyst og kaldt på dagtid, varmt og dempet om kvelden. + +Flowene dine blir færre, kortere og lettere å forstå. Nyttige kort lar en Flow vente på en enhet, reagere først når alle virkelig har vært borte en stund, og sammenligne eller regne om tall uten ekstra variabler. Steg-for-steg-guider, eksempler og nettbaserte verktøy finner du i appens dokumentasjon. diff --git a/no.tiwas.booleantoolbox/README.pl.txt b/no.tiwas.booleantoolbox/README.pl.txt new file mode 100644 index 0000000..79fa35e --- /dev/null +++ b/no.tiwas.booleantoolbox/README.pl.txt @@ -0,0 +1,3 @@ +Smart (Components) Toolkit daje Ci elementy, których brakuje zwykłym Flow. Zamień kilka czujników w jedną prostą odpowiedź, na przykład "okno jest otwarte, a nikogo nie ma w domu", i używaj jej wszędzie jako jednego urządzenia. Połącz odczyty z wielu czujników w jedną wartość, zapamiętaj ustawienia świateł i przywróć je po dzwonku do drzwi albo pozwól, by światła podążały za rytmem dnia: jasne i chłodne w dzień, ciepłe i przygaszone wieczorem. + +Twoje Flow będą mniej liczne, krótsze i łatwiejsze do zrozumienia. Praktyczne karty pozwalają Flow czekać na urządzenie, reagować dopiero wtedy, gdy wszyscy naprawdę są poza domem od dłuższej chwili, oraz porównywać lub przeliczać liczby bez dodatkowych zmiennych. Przewodniki krok po kroku, przykłady i narzędzia online znajdziesz w dokumentacji aplikacji. diff --git a/no.tiwas.booleantoolbox/README.sv.txt b/no.tiwas.booleantoolbox/README.sv.txt new file mode 100644 index 0000000..c6c0290 --- /dev/null +++ b/no.tiwas.booleantoolbox/README.sv.txt @@ -0,0 +1,3 @@ +Smart (Components) Toolkit ger dig byggstenarna som vanliga Flows saknar. Gör flera sensorer till ett enkelt svar, till exempel "ett fönster är öppet medan ingen är hemma", och använd det överallt som en enda enhet. Slå ihop mätvärden från många sensorer till ett värde, kom ihåg hur lamporna var inställda och återställ dem när det har ringt på dörren, eller låt lamporna följa dygnet: ljust och kallt på dagen, varmt och dämpat på kvällen. + +Dina Flows blir färre, kortare och lättare att förstå. Praktiska kort låter ett Flow vänta på en enhet, reagera först när alla verkligen har varit borta en stund, och jämföra eller räkna om tal utan extra variabler. Steg-för-steg-guider, exempel och onlineverktyg finns i appens dokumentation. diff --git a/no.tiwas.booleantoolbox/README.txt b/no.tiwas.booleantoolbox/README.txt index ecd4303..dfa809b 100644 --- a/no.tiwas.booleantoolbox/README.txt +++ b/no.tiwas.booleantoolbox/README.txt @@ -1,96 +1,3 @@ -== DEVICES == +Smart (Components) Toolkit adds the building blocks that ordinary Flows lack. Turn several sensors into one simple answer, such as "a window is open while nobody is home", and use it everywhere as a single device. Combine readings from many sensors into one value, remember how your lights were set and bring them back after the doorbell has rung, or let your lights follow the day: bright and cool in the daytime, warm and dim in the evening. -Composite Device - Combine the same capability from two or more devices into one continuously updated virtual value. - - Numbers: average, minimum, maximum, sum, and median - - Booleans and alarms: any/all, majority, count on, and percentage on - - Text and clock values: most common, min/max, newest, and circular average time - - Continues with available sources and reports missing sources - - Flow triggers: every value change, or numeric change above a fixed/percentage threshold - -Circadian Light Group - Control a group of lights as one virtual light with automatic brightness and color-temperature targets. - - Build schedules from clock times, solar events, or lux thresholds - - Supports red mode, per-light limits, pausing, temporary states, and outdoor-light sources - - Includes Flow cards for phases, targets, pause/resume, solar events, and member control - -Circadian Light Group Collection - Combine multiple Circadian Light Groups into one virtual light for shared on/off and Flow control. - -Logic Device - Create a single boolean formula using a visual pairing wizard. - - Select Homey devices and capabilities as inputs - - Dynamic input expansion and state-change triggers - -Logic Unit (Dynamic) - Create advanced boolean logic using text-based formulas. - - Define formulas such as: (A AND B) OR (NOT C) - - Multiple formulas per unit, individual timeouts, and first-impression mode - - Dynamic input linking, validation, and error reporting - - Formula result alarm plus Formula changed / Formula changed to Flow triggers - -State Capture Device - Dynamically capture and restore device states at runtime. - - Named States: Save snapshots with custom names for scene management - - Stack Operations: Push/pop for temporary state changes (e.g., doorbell interruptions) - - Template-based: Define which devices and capabilities to capture - - Backup/Restore: Export all named states as JSON for backup, import to restore - -State Device - Pre-define device states and apply them via flows. Configure states at setup time rather than capturing them dynamically. - -Legacy Logic Unit X (2-10 inputs) - Existing fixed-input Logic Unit devices remain supported but are deprecated. Use Logic Unit (Dynamic) or Logic Device for new setups. - -== DIAGNOSTICS AND SUPPORT == - -Generate a privacy-conscious diagnostic report from App Settings and open the GitHub bug form with the report prefilled. - - Includes app version, uptime, recent warnings/errors, and stack traces - - Shows anonymous app-device and Circadian Light Group load counts - - Includes available app/Homey CPU, memory, and storage information - - Redacts common identifiers and secrets; nothing is uploaded automatically - -== STANDALONE FLOW CARDS == - -Presence+ - Debounce Homey's presence signal before starting a Flow. - Repeated departures are re-armed from their own Away time. - - Trigger after one selected person has remained away for a configurable number of minutes - - Trigger after everyone has remained away since the last present person left - - A return cancels the pending trigger; countdowns survive app restarts - -Conditional Gates - Persistent named GO/NO GO gates for coordinating flows without a virtual device. Gates and pending waits are kept in memory until the app restarts. - - Check a gate immediately - - Wait for a gate to become GO, with timeout (up to 55 seconds in the card) - - Start a background wait for GO and continue when the "Conditional Gate wait finished" trigger fires (minutes or hours) - - Open, close, toggle, or update a gate from another Flow - -Waiter Gates - Wait until any selected device capability reaches a target value, with YES/NO timeout branches (up to 55 seconds in the card). For longer waits, start a background wait and continue when the "Capability wait finished" trigger fires. Enable, disable, or stop a waiter by ID. - -Math Compare - Calculate a simple numeric expression and compare the result with another value. - -Gradient Map - Map a number from one range to another, clamp out-of-range values, round the result, and expose it as a Flow tag. - -Get this Flow's name - Return the name, id and folder of the Advanced Flow the card is in as Flow tags. Pick "this Flow" once in the card; the name follows when the Flow is renamed. - -Evaluate Expression - Evaluate range rules with AND/OR logic and return output and error tags. - -Wait - Pause a Flow for up to 55 seconds. Homey stops app Flow cards after 60 seconds, so use Homey's built-in Flow delay for longer pauses. - -Solar Event Occurred - Trigger a Flow at sunrise, sunset, dawn, dusk, golden hour, blue hour, solar noon, or solar midnight, with an optional offset. - -App-wide Configuration Alarm Triggers - Trigger when a Logic Device or Logic Unit configuration error is detected, resolved, or changes state. - -== DOCUMENTATION == - -Full device guides and Flow card reference: -https://tiwas.github.io/SmartComponentsToolkit/ +Your Flows become fewer, shorter and easier to understand. Handy cards let a Flow wait for a device, react only when everyone has really been away for a while, and compare or convert numbers without extra variables. Step-by-step guides, examples and online tools are available in the app's documentation.