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

zwave-js / zwave-js-ui / 20848380898 / 1
19%
master: 19%

Build:
DEFAULT BRANCH: master
Ran 09 Jan 2026 10:08AM UTC
Files 69
Run time 2s
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

09 Jan 2026 10:07AM UTC coverage: 19.521% (-0.01%) from 19.532%
20848380898.1

push

github

web-flow
feat: add bypass option for association restrictions (#4512)

Z-Wave associations are currently blocked when certain compatibility
checks fail, including security class mismatches and unsupported command
classes. This prevents legitimate use cases where devices can work
around these restrictions (e.g., Fibaro FGKF-601 supports
per-association security mode configuration via parameter 29).

## Changes

### Backend (`api/lib/ZwaveClient.ts`)
- `addAssociations` now accepts `{ force: boolean }` option to bypass
association checks
- Logs warnings when associations are force-created
- Leverages upstream zwave-js controller support for forced associations

### Frontend (`src/components/dialogs/DialogAssociation.vue`)
- Adds "I know what I'm doing - bypass this check" checkbox for
bypassable errors
- Checkbox appears for these association check failures:
- `Forbidden_SecurityClassMismatch` - Devices have different security
classes
- `Forbidden_DestinationSecurityClassNotGranted` - Source node lacks
target's security class
- `Forbidden_NoSupportedCCs` - Target doesn't support source's command
classes
- Uses enum-based error detection (`canForceAssociation` computed
property)
- Enables ADD button when bypass is explicitly checked

### Frontend (`src/components/nodes-table/AssociationGroups.vue`)
- Passes `force` parameter through to backend API call

## UI Behavior

When attempting to create an association that fails compatibility
checks:

**Before:**
<img
src="https://github.com/user-attachments/assets/b85245c3-0884-4cbd-a692-e870e4a3dee2">

**After:**
A checkbox appears below the error message allowing expert users to
bypass the restriction with an explicit acknowledgment.

## Example

```javascript
// Backend API call with force option
await this.app.apiRequest('addAssociations', [
  sourceAddress,
  groupId,
  [targetAddress],
  { force: true }  // Bypass association checks
])
```

The upstream `Driver.controller.addAssociations()` method already
supports ... (continued)

334 of 443 branches covered (75.4%)

Branch coverage included in aggregate %.

4052 of 22025 relevant lines covered (18.4%)

1.14 hits per line

Source Files on job 20848380898.1
  • Tree
  • List 69
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 20848380898
  • c1289e56 on github
  • Prev Job for on master (#20779326840.1)
  • Next Job for on master (#21001136547.1)
  • Delete
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