It does seem like you should be using Apple or Google or some other product. They are often easier to use than open source based software.
Migration script is broken. I did the following quick fix to it by deleting the "| not" from the JSON selection list, then it will find the correct entries for configuration.
frodo@trinity:/tmp/ZWave JS UI migrate to JS> diff migrate_to_zwave_js_app.sh.orig migrate_to_zwave_js_app.sh
71c71
< | select(.data.url | contains("core-zwave-js") | not)
---
> | select(.data.url | contains("core-zwave-js"))
79c79
< | select(.data.url | contains("core-zwave-js") | not)
---
> | select(.data.url | contains("core-zwave-js"))
87c87
< | select(.data.url | contains("core-zwave-js") | not)
---
> | select(.data.url | contains("core-zwave-js"))
frodo@trinity:/tmp/ZWave JS UI migrate to JS>
Before the fix:
[core-ssh migrate-from-JS_UI]$ ./migrate_to_zwave_js_app.sh store-backup_20260529061155.zip
[migrate] ERROR: No non-core Z-Wave integration found in config entries.
[core-ssh migrate-from-JS_UI]$
After the fix:
[core-ssh migrate-from-JS_UI]$ ./migrate_to_zwave_js_app.sh store-backup_20260529061155.zip
[migrate] Found Z-Wave integration: Z-Wave JS (ws://core-zwave-js:3000)
[migrate] Extracting backup to /tmp/tmp.oGkCcA...
[migrate] Reading security keys and port from settings.json...
[migrate] Configuring core app...
[migrate] Copying cache files...
[migrate] Copying nodes.json and users.json...
[migrate] Transforming and copying settings.json...
[migrate] Starting core app...
[migrate] Migration complete!
[migrate] You can now reconfigure the Z-Wave integration as follows:
[migrate] If using a USB or TCP based controller:
[migrate] - CHECK 'Use the Z-Wave Supervisor app'
[migrate] Otherwise:
[migrate] - DO NOT check 'Use the Supervisor app'
[migrate] - URL: ws://core-zwave-js:3000
[migrate]
[migrate] When done, you can remove your old Z-Wave JS UI app
[core-ssh migrate-from-JS_UI]$