• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

zwave-js / zwave-js-ui
18%

Build:
DEFAULT BRANCH: master
Repo Added 20 Sep 2022 02:07PM UTC
Token mus2r2yYRz7XGYVesP5DKNJXitjqkrcyd regen
Build 2514 Last
Files 70
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH master
branch: SELECT
CHANGE BRANCH
x
Sync Branches
  • No branch selected
  • @release-it/conventional-changelog@10.0.4
  • @zwave-js/server@1.23.1
  • @zwave-js/server@1.24.1
  • @zwave-js/server@1.37.0
  • @zwave-js/server@1.38.0
  • @zwave-js/server@1.39.0
  • @zwave-js/server@3.2.1
  • AlCalzone-patch-1
  • SYNC-NODE-NAME-LOC
  • actions-updates
  • actually-live-network-map
  • add-node-dsk
  • ai-repo-chooser
  • alpine-3.21
  • application-test
  • armv7-pkg
  • association-error-ui
  • associations-error
  • auto-redirect
  • battery-fix
  • better-logs-intercept
  • bug/to-subscribe-set-to-map
  • bump
  • bump-actions
  • bump-deps
  • bump-docker
  • bump-jsonl
  • bump-node
  • bump-server
  • bump-server-1.23.0
  • bump-zwave-js
  • bump-zwavejs-and-server
  • bump_2
  • central-scene-default-mqtt-ad
  • changelog-links
  • chore-docker
  • chore-package-ations-bump
  • chore-pem
  • chore/bump-node-to-18-14-2
  • chore/bump-node-version
  • chore/claude-md-reference-copilot-instructions
  • chore/include-node-19-in-tests
  • chore/update-alpine-3.22
  • cleanup-logs
  • compact-sort
  • compact-table
  • compress
  • config-db
  • controller-events
  • controller-values
  • copilot-instructions
  • copilot/add-checkbox-bypass-restriction
  • copilot/add-compact-view-default-setting
  • copilot/add-custom-browser-title-option
  • copilot/add-debugging-package-wizard
  • copilot/add-destructive-parameter-support
  • copilot/add-disable-background-checking
  • copilot/add-driver-startup-logging
  • copilot/add-manual-poll-button
  • copilot/add-save-settings-without-restart
  • copilot/add-text-for-navigation-tabs
  • copilot/bump-nodejs-to-24
  • copilot/fix-4271-2
  • copilot/fix-4355
  • copilot/fix-4357
  • copilot/fix-4366
  • copilot/fix-4377
  • copilot/fix-4379
  • copilot/fix-4381
  • copilot/fix-battery-level-reporting
  • copilot/fix-controller-background-rssi-chart
  • copilot/fix-direct-controller-connection
  • copilot/fix-discord-webhook-400-error
  • copilot/fix-discord-workflow-issue
  • copilot/fix-fab-in-store
  • copilot/fix-firmware-update-button-issue
  • copilot/fix-multiple-file-selection-issue
  • copilot/fix-null-cc-value-display
  • copilot/fix-pwa-cache-issue
  • copilot/fix-query-latest-release-info
  • copilot/fix-race-condition-firmware-check
  • copilot/fix-refresh-node-neighbors
  • copilot/fix-settings-update-restart-issue
  • copilot/fix-tcp-connection-issue
  • copilot/fix-ui-update-on-route-rebuild
  • copilot/fix-unknown-notification-issue
  • copilot/fix-warning-ui-groups-associations
  • copilot/improve-agents-md-file
  • copilot/migrate-to-vite-7
  • copilot/sub-pr-4520
  • copilot/unhide-button-aria-attributes
  • copilot/update-deprecated-packages
  • copilot/update-status-on-task-completion
  • copilot/validate-number-inputs-against-allowed-values
  • crc-error-zniffer
  • ct-101
  • custom-zwavejs-build
  • dark-mode
  • dark-toggle
  • date-zniffer
  • dbm-limits
  • debug-autoscroll
  • default-host
  • default-powerlevel-message
  • dependabot/github_actions/actions/checkout-3
  • dependabot/github_actions/actions/setup-node-3.4.1
  • dependabot/github_actions/actions/stale-6
  • dependabot/github_actions/actions/upload-artifact-3
  • dependabot/github_actions/docker/build-push-action-3
  • dependabot/github_actions/docker/login-action-2
  • dependabot/github_actions/docker/metadata-action-4
  • dependabot/github_actions/docker/setup-qemu-action-2.0.0
  • dependabot/github_actions/github/codeql-action-2
  • dependabot/github_actions/peter-evans/create-pull-request-4
  • dependabot/npm_and_yarn/axios-1.7.4
  • dependabot/npm_and_yarn/multi-9423f4c335
  • dependabot/npm_and_yarn/npm_and_yarn-0d7ef37a24
  • dependabot/npm_and_yarn/npm_and_yarn-2c2cf9d17b
  • dependabot/npm_and_yarn/npm_and_yarn-6ea9762674
  • dependabot/npm_and_yarn/npm_and_yarn-87115a91ec
  • dependabot/npm_and_yarn/npm_and_yarn-e04d5d616f
  • dependabot/npm_and_yarn/uplot-1.6.31
  • deps-bump
  • discord-bot
  • discovery-lights
  • discovery-scene-units
  • docker-alpine
  • docker-fix
  • docker22
  • dockerfixing
  • docs#3054
  • docs/improve-documentation
  • download-zniffer-trace
  • drop-18
  • drop-yarn
  • enable_renovate
  • esbuild
  • esbuild-pkg
  • eslint-bump
  • esmoduleinterop
  • event-channels
  • external-auth-fix
  • external-port-setting
  • feat#1942
  • feat#2517
  • feat#2695
  • feat#2730
  • feat#2767
  • feat#2768
  • feat#2835
  • feat#2847
  • feat#2857
  • feat#2859
  • feat#2871
  • feat#2896
  • feat#2921
  • feat#2998
  • feat#3008
  • feat#3097
  • feat#3129
  • feat#3162
  • feat#3225
  • feat#uid_prefix
  • feat-add-state-classes
  • feat-auto-powerleve
  • feat-cc-config-enabled
  • feat-changelog
  • feat-dsk
  • feat-dump
  • feat-inclusion-state
  • feat-load-zlf
  • feat-long-range
  • feat-max-files
  • feat-mqtt-options
  • feat-note-ui
  • feat-otw-update
  • feat-restart
  • feat-time
  • feat-tz-locale
  • feat-vid
  • feat-zjs10.6
  • feat-zniffer
  • feat/configuration-templates
  • feat/docker-more-semver
  • feat/ingress
  • feat/playwright-screenshot-tooling
  • feat/plugin-on-demand-install
  • feature/learnMode
  • fix#2691
  • fix#2761
  • fix#2789
  • fix#2819
  • fix#2845
  • fix#2945
  • fix#2975
  • fix#2983
  • fix#2993
  • fix#3034
  • fix#3045
  • fix#3141
  • fix#3190
  • fix#782
  • fix(ui)--improve-network-graph-popup-positioning
  • fix-3461
  • fix-QR-code-scanning
  • fix-arm-build
  • fix-association-error
  • fix-auth
  • fix-auto-powerlevel
  • fix-basic-auth
  • fix-build
  • fix-circular
  • fix-colors
  • fix-config-changed
  • fix-controller-events
  • fix-cover-up-down
  • fix-default-eu-region
  • fix-default-host
  • fix-dev-reload
  • fix-discovery-coves
  • fix-docker
  • fix-driver-function
  • fix-formatting-in-debug-window
  • fix-groups-LR
  • fix-hardreset
  • fix-indicator-not-defined
  • fix-k8s-deployment
  • fix-key-check
  • fix-log-rotate
  • fix-logger
  • fix-manager
  • fix-mcc-discovery
  • fix-mode-thermostat
  • fix-mqtt-callbacks
  • fix-name-loc-on-added
  • fix-nodes-manager
  • fix-optional-deps
  • fix-otw
  • fix-otw-firmware-update
  • fix-otw-progress
  • fix-pack
  • fix-pkg-config-sync
  • fix-powerlevel-auto
  • fix-rebuild-node-routes
  • fix-refresh-after-lr-powerlevel-set
  • fix-region-check-for-europe
  • fix-release
  • fix-reproducible-builds
  • fix-restart
  • fix-schedule-lock-cc-query
  • fix-scheduled-jobs
  • fix-set-return-routes
  • fix-stringify
  • fix-stuff
  • fix-topics
  • fix-unconnected-battery
  • fix-update-firmware
  • fix-valueid
  • fix-valueid-2
  • fix-win-build
  • fix-windows
  • fix-windows-v2
  • fix-zniffer-init
  • fix-zniffer-routes
  • fix/confirm-dialog-margins
  • fix/is-authenticated
  • fix/remove-deprecated-csurf
  • fixFWUpdate
  • fixed-footer-header
  • fw-infor
  • gh-queue
  • handle-battery-cc-notification
  • hard-reset
  • hass-mqtt-availability
  • healthcheck-improvements
  • inclusion-state-changed
  • inverted-checkbox
  • joneshf/ouknwmotlvts
  • kc/feat/configurable-defaultPsw
  • last-active
  • launch-task
  • link-iterations
  • link-statistics
  • logs-dir
  • logs-spacing
  • marcin-witkowski-language-improvements
  • master
  • max-lr-powerlevel
  • mergify/configuration-deprecated-update
  • mergify/robertsLando/config-update
  • migrate-vite-v7
  • move-to-esm
  • mqtt-ad-revert-central-scene-state-class
  • mqtt-discovery-configuration
  • mqtt-discovery-scene
  • multiple-releases
  • next-to-last
  • nif-event
  • nlwr
  • no-safe
  • no-watch-local-zwave-js
  • nodes-store-update
  • npm-pack
  • nvm-restore-raw
  • opensource-alt-patch-1
  • optimize-space
  • ota-rfregion
  • ota-updates-nits
  • otw-update-service
  • parse-ota-changelog
  • patch-1
  • patch-2
  • patch-4
  • patch-5
  • pinia
  • plugins-fix
  • privacy-mode
  • refactor-heal
  • refs/pull/3176/merge
  • refs/pull/3210/merge
  • refs/pull/3212/merge
  • refs/pull/3224/merge
  • refs/pull/3240/merge
  • refs/pull/3247/merge
  • refs/pull/3260/merge
  • refs/pull/3263/merge
  • refs/pull/3268/merge
  • refs/pull/3278/merge
  • refs/pull/3292/merge
  • refs/pull/3293/merge
  • refs/pull/3294/merge
  • refs/pull/3299/merge
  • refs/pull/3305/merge
  • refs/pull/3306/merge
  • refs/pull/3308/merge
  • refs/pull/3318/merge
  • refs/pull/3319/merge
  • refs/pull/3324/merge
  • refs/pull/3325/merge
  • refs/pull/3331/merge
  • refs/pull/3332/merge
  • refs/pull/3335/merge
  • refs/pull/3337/merge
  • refs/pull/3345/merge
  • refs/pull/3346/merge
  • refs/pull/3348/merge
  • refs/pull/3349/merge
  • refs/pull/3351/merge
  • refs/pull/3359/merge
  • refs/pull/3360/merge
  • refs/pull/3367/merge
  • refs/pull/3375/merge
  • refs/pull/3377/merge
  • refs/pull/3706/merge
  • release-ot
  • remove_node_14
  • reorder-settings
  • replace-failed
  • restart
  • reuse-code-api
  • revert-3539-mqtt-discovery-scene
  • revert-changes
  • rework-ota-region
  • rf-region-mandatory
  • rollup-issue
  • routedACK
  • save-options-on-node
  • scene-activation-mqtt-ad
  • scheduler-fix
  • search-in-table
  • settings-improvements
  • settings-ui-not-peristed
  • sh-syntax-error
  • sk-fix-typo
  • smart-start-improvements
  • snyk-fix-39d19f89e2774cc34c8c79fbe864ac9f
  • table-header
  • throttle_otw
  • toggle-hass-discovery
  • trackpad-scroll-speed
  • typo
  • ui-settings-changed
  • ui-theme-fix
  • unresponsive-setting
  • unsued-reds
  • update_k8s_ingress_to_not_beta
  • update_node_and_alpine
  • update_to_node_18
  • upload-file-to-folder
  • usercc-test
  • validate-number-inputs
  • views-settings
  • vitejs
  • vue3-refactor
  • websocket
  • zip-firmware
  • zj-server
  • zjs
  • zjs-15
  • zjs-v11
  • zjs10.12.0
  • zniffer-update
  • zwave-js-13
  • zwave-js-13.0.2
  • zwave-js-14
  • zwave-js-15.3.0
  • zwave-js@10.10.0
  • zwave-js@10.14.0
  • zwave-js@10.14.1
  • zwave-js@10.17.0
  • zwave-js@10.18.0
  • zwave-js@10.2.0
  • zwave-js@10.21.0
  • zwave-js@10.22.1
  • zwave-js@10.22.2
  • zwave-js@10.22.3
  • zwave-js@10.23.1
  • zwave-js@10.23.5
  • zwave-js@10.3.1
  • zwave-js@10.5.0
  • zwave-js@10.5.4
  • zwave-js@10.5.5
  • zwave-js@10.5.6
  • zwave-js@11.10.0
  • zwave-js@11.13.1
  • zwave-js@11.14.0
  • zwave-js@11.4.1
  • zwave-js@11.4.2
  • zwave-js@11.5.1
  • zwave-js@11.6.0
  • zwave-js@11.8.1
  • zwave-js@11.9.0
  • zwave-js@11.9.2
  • zwave-js@12
  • zwave-js@12.0.2
  • zwave-js@12.1.1
  • zwave-js@12.10.0
  • zwave-js@12.10.1
  • zwave-js@12.11.0
  • zwave-js@12.11.1
  • zwave-js@12.11.2
  • zwave-js@12.12.0
  • zwave-js@12.12.1
  • zwave-js@12.12.2
  • zwave-js@12.12.3
  • zwave-js@12.12.4
  • zwave-js@12.12.5
  • zwave-js@12.13.0
  • zwave-js@12.3.0
  • zwave-js@12.3.1
  • zwave-js@12.3.2
  • zwave-js@12.4.0
  • zwave-js@12.4.1
  • zwave-js@12.4.2
  • zwave-js@12.4.3
  • zwave-js@12.4.4
  • zwave-js@12.5.1
  • zwave-js@12.5.2
  • zwave-js@12.5.3
  • zwave-js@12.5.4
  • zwave-js@12.5.5
  • zwave-js@12.5.6
  • zwave-js@12.6.0
  • zwave-js@12.7.0
  • zwave-js@12.8.1
  • zwave-js@12.9.1
  • zwave-js@13.0.1
  • zwave-js@13.0.3
  • zwave-js@13.1.0
  • zwave-js@13.10.0
  • zwave-js@13.10.1
  • zwave-js@13.10.2
  • zwave-js@13.10.3
  • zwave-js@13.2.0
  • zwave-js@13.3.0
  • zwave-js@13.3.1
  • zwave-js@13.4.0
  • zwave-js@13.5.0
  • zwave-js@13.7.0
  • zwave-js@13.8.0
  • zwave-js@13.9.0
  • zwave-js@13.9.1
  • zwave-js@14.3.1
  • zwave-js@14.3.10
  • zwave-js@14.3.11
  • zwave-js@14.3.12
  • zwave-js@14.3.5
  • zwave-js@14.3.6
  • zwave-js@14.3.7
  • zwave-js@14.3.8
  • zwave-js@14.3.9
  • zwave-js@15.0.0
  • zwave-js@15.0.3
  • zwave-js@15.0.4
  • zwave-js@15.0.5
  • zwave-js@15.0.6
  • zwave-js@15.1.0
  • zwave-js@15.1.2
  • zwave-js@15.1.3
  • zwave-js@15.10.0
  • zwave-js@15.11.0
  • zwave-js@15.12.0
  • zwave-js@15.13.0
  • zwave-js@15.14.0
  • zwave-js@15.15.0
  • zwave-js@15.15.2
  • zwave-js@15.15.3
  • zwave-js@15.16.0
  • zwave-js@15.17.0
  • zwave-js@15.17.1
  • zwave-js@15.18.0
  • zwave-js@15.19.0
  • zwave-js@15.20.0
  • zwave-js@15.20.1
  • zwave-js@15.21.0
  • zwave-js@15.3.1
  • zwave-js@15.4.1
  • zwave-js@15.4.2
  • zwave-js@15.5.0
  • zwave-js@15.6.0
  • zwave-js@15.7.0
  • zwave-js@15.8.0
  • zwave-js@15.9.0

06 Mar 2026 04:30PM UTC coverage: 18.308%. Remained the same
22772360183

push

github

web-flow
fix(ui): display 'unknown' for CC values with null value (#4582)

CC values with a literal `null` value (indicating an unknown state) were
displayed as the string `"null"` in the UI instead of `"unknown"`.

## Root cause

JavaScript's `typeof null === 'object'` quirk caused `null` to fall into
the object-serialization branch of `parsedValue`, returning
`JSON.stringify(null)` → the string `"null"`. The template's
`parsedValue == null` guard never triggered since `"null"` is a non-null
string.

## Fix

Added an explicit `=== null` guard before the `typeof === 'object'`
check in `parsedValue`:

```js
// ValueId.vue — parsedValue getter
if (this.modelValue.newValue === null) {
    return null  // template: parsedValue == null → displays 'unknown'
} else if (typeof this.modelValue.newValue === 'object') {
    return JSON.stringify(this.modelValue.newValue)
}
```

Returning `null` from the getter lets the existing template condition
`parsedValue == null ? 'unknown' : ...` handle it correctly, consistent
with how `undefined` values are already treated.

<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> 
> ----
> 
> *This section details on the original issue you should resolve*
> 
> <issue_title>CC values with value `null` shown as `null`</issue_title>
> <issue_description>When a CC value has the literal value `null`
(meaning known to be in an unknown state), the UI shows `null` for this
value instead.
> We should display `unknown` like we do when the value is
`undefined`.</issue_description>
> 
> ## Comments on the Issue (you are @copilot in this section)
> 
> <comments>
> </comments>
> 


</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

- Fixes zwave-js/zwave-js-ui#4581

<!-- START COPILOT CODING AGENT TIPS -->
---

✨ Let Copilot coding agent [set things up for
you](https://github.com/zwave-js/zwave-js-ui/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%... (continued)

334 of 444 branches covered (75.23%)

Branch coverage included in aggregate %.

4054 of 23524 relevant lines covered (17.23%)

1.07 hits per line

Relevant lines Covered
Build:
Build:
23524 RELEVANT LINES 4054 COVERED LINES
1.07 HITS PER LINE
Source Files on master
  • Tree
  • List 70
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
22772360183 master fix(ui): display 'unknown' for CC values with null value (#4582) CC values with a literal `null` value (indicating an unknown state) were displayed as the string `"null"` in the UI instead of `"unknown"`. ## Root cause JavaScript's `typeof null... push 06 Mar 2026 04:31PM UTC web-flow github
18.31
22765474641 copilot/fix-null-cc-value-display Merge be76dae60 into abf1f0612 Pull #4582 06 Mar 2026 04:28PM UTC web-flow github
18.31
22757619786 master Release 11.14.0 push 06 Mar 2026 09:35AM UTC zwave-js-bot github
18.31
22756228332 master fix: broken ui snackbar Fixes #4574 push 06 Mar 2026 08:54AM UTC robertsLando github
18.31
22755858891 master fix(ui): fix background RSSI chart showing blank on second open (#4576) Opening the controller's background RSSI fullscreen dialog a second time renders a blank chart. The root cause was that on the second open, the async component module is alr... push 06 Mar 2026 08:43AM UTC web-flow github
18.31
22755423550 master feat: make the network graph truly dynamic (#4573) This PR fixes issues with the network graph that have bugged me for a looooong time. It removes the `live view` toggle and `reload graph` button, because they are now no longer necessary. Summar... push 06 Mar 2026 08:29AM UTC web-flow github
18.31
22737123007 copilot/fix-controller-background-rssi-chart Merge a674d6e41 into 88a3f9187 Pull #4576 05 Mar 2026 09:17PM UTC web-flow github
18.31
22731958657 actually-live-network-map Merge 6efcde63e into 88a3f9187 Pull #4573 05 Mar 2026 06:58PM UTC web-flow github
18.31
22728854948 feat/playwright-screenshot-tooling Merge 8f6ff97a5 into 88a3f9187 Pull #4579 05 Mar 2026 05:41PM UTC web-flow github
18.23
22727422046 master feat(ui): validate number inputs against allowed values from config (#4566) ## Implementation Plan: Add Support for Configuration Value `allowed` Field ### Understanding - Z-Wave JS now supports `allowed` field in ValueMetadataNumeric for defini... push 05 Mar 2026 04:25PM UTC web-flow github
18.31
See All Builds (2148)

Badge your Repo: zwave-js-ui

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc