Commit e8d6747
Upgrade to Matter specification 1.5.1 (#3474)
* Spec parsing and codegen improvements for Matter 1.5
Update spec parser to handle Matter 1.5 HTML structure changes including
new table formats, namespace translations, device type parsing, and
large message quality. Fix JSDoc comment escaping for */ sequences.
Build cluster index from all device children for element requirement
resolution.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Add missing generated file patterns to .prettierignore
Add *Server.ts and top-level behaviors/index.ts to prevent prettier from
reformatting generated behavior files.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix codegen for device types with no cluster requirements
Skip emitting requirements reference when the requirements namespace is
empty, preventing TypeScript errors for composite device types like
FloodlightCamera and VideoDoorbell that have no direct requirements.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Adjust tests for Matter 1.5 spec changes
Update WindowCovering test to remove AbsolutePosition feature and use
currentPositionLiftPercent100ths. Fix server list ClusterId ordering in
InteractionProtocolTest to match 1.5 cluster definitions.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Regenerate code for Matter 1.5 specification
Generated cluster definitions, behaviors, device types, endpoints,
globals, tags, and forward declarations from the Matter 1.5 parsed
specification.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Update changelog for Matter 1.5 specification upgrade
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Remove *Server.ts from prettierignore and drop plan file
Server behavior files are hand-customized and should remain formatted.
The generated output is already prettier-compliant. Also remove plan
document that should not be committed.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix spec parser for renamed "Derived Cluster Namespace" section
Matter 1.5 renamed "Derived Cluster Type" to "Derived Cluster Namespace"
in mode-derived clusters. Add the new section name so ModeTag and
ModeChangeStatus datatypes are correctly parsed for RVC Run/Clean Mode,
Dishwasher Mode, Laundry Washer Mode, and other derivative clusters.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix [object Object] in validation error messages
Use JSON.stringify instead of string interpolation for default values
in INVALID_VALUE error messages so object values render meaningfully.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* formatting
* Emit abstract clusters for shared spec sections without cluster IDs
Instead of duplicating types from common spec sections (e.g. WebRTC
Transport §11.4) into each consuming cluster via overrides, emit them
as abstract clusters (no ID) so shared datatypes have a single home.
Remove WebRtcTransportProvider/Requestor override files that previously
duplicated ICECandidateStruct, WebRTCSessionStruct, ICEServerStruct,
WebRTCEndReasonEnum, and WebRTCSessionID into each cluster.
Sections that have a cluster ID table but fail to parse IDs (e.g.
OccupancySensing) are still skipped — they need full overrides.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* formatting
* Restore files accidentally reverted from main
Reset 36 files that were inadvertently overwritten with older versions
from the spec15gen branch merge. These files belong to PR #3471
(Conformance validation upgrades) and other main-only changes that
should not have been part of this branch.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Parse OccupancySensing cluster from spec HTML instead of override
The 1.5 spec uses "clusterid"/"clustername" column headers in the
cluster ID table instead of "id"/"name". Add these as column aliases
in translateIds() so OccupancySensing (and any future clusters using
this format) parse correctly. Remove the OccupancySensingOverrides
file that was only needed because the parser couldn't handle the table.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Re-gen after latest codegen changes
* Matter 1.5.1 Parse and regen
* AccessControl: Set capability attribute defaults for 1.5.1 constraints
Spec 1.5.1 tightened constraints on SubjectsPerAccessControlEntry,
TargetsPerAccessControlEntry and AccessControlEntriesPerFabric from
"min N" to "N to 65534". Set defaults in initialize() to prevent
constraint validation failures.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* LevelControl: Set minLevel/maxLevel defaults for Rev >= v7 conformance
Spec 1.5.1 made MinLevel and MaxLevel mandatory at cluster revision 7
with Fixed quality. Set defaults in initialize() when not configured:
minLevel defaults to 1 (lighting) or 0 (non-lighting), maxLevel to 254.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* DoorLock: Remove legacy Zigbee commands and vestigial supervision
Spec 1.5.1 removed legacy non-USR commands (SetPINCode, GetPINCode,
ClearPINCode, ClearAllPINCodes, SetRFIDCode, GetRFIDCode, ClearRFIDCode,
ClearAllRFIDCodes, SetUserStatus, GetUserStatus, SetUserType, GetUserType)
and all associated helper methods. Also removes supervision wiring for
the removed clearPinCode/clearRfidCode methods.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* UserLabel: Add RESOURCE_EXHAUSTED validation for LabelList writes
Spec 1.5 requires returning RESOURCE_EXHAUSTED when LabelList exceeds
the supported length. Default max is 255, configurable via State.maxLabels.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Remove REQUIRED_CAT_MISMATCH secure channel status code
Spec 1.5.1 removed this status code from the Secure Channel General
Status Codes table. It was defined but never used in the codebase.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* PairingHintBitmap: Add bits 20-22 for spec 1.5.0/1.5.1
Add missing pairing hint bits:
- Bit 20: Press and release setup button N times (1.5.0)
- Bit 21: Press button for N seconds with indication (1.5.1)
- Bit 22: Power cycle until indication (1.5.1)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* OpCreds: RevokeCommissioning before and after RemoveFabric
Spec 1.5 recommends (SHOULD) invoking RevokeCommissioning before and
after RemoveFabric for security. Checks window status before calling
to avoid WindowNotOpenError.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* RevokeCommissioning: Run cleanup before window check per spec 1.5.1
Spec 1.5.1 restructured RevokeCommissioning Effect on Receipt:
Step 1 (PASE session termination, fail-safe expiry) now runs regardless
of window state. Window check moved to Step 2 after cleanup.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Reject WildcardPathFlags in write interactions per spec 1.5
Spec 1.5: "WildcardPathFlags SHALL ONLY be used for either Read or
Subscribe interactions." Rejects with InvalidAction when present in
write requests. CommandPath doesn't carry this field so invoke is
unaffected.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* RVC example: Support DirectModeChange feature bypass
When DirectModeChange feature is enabled, skip the Idle-first
requirement and allow direct transitions between non-idle run modes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Mark spec-fixed overrides with until and regen
- ColorControl ColorCapabilities bitmap: until 1.4.2 (spec 1.5 adds
ColorCapabilitiesBitmap type)
- DoorLock GetYearDayScheduleResponse field IDs: until 1.4.2 (spec 1.5
has correct IDs)
- Regen picks up BasicInformation productAppearance move to optional
(Rev >= v2 conformance in 1.5.1)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Update spec references from v1.4.2 to v1.5.1 and regen
Add MatterSpecification namespaces for v1.5 and v1.5.1 in
Specifications.d.ts. Update codegen to emit v151 spec references.
Full regeneration of all cluster, endpoint and forward files.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Disable RevokeCommissioning spec 1.5.1 changes pending test alignment
Comment out RevokeCommissioning ordering change (Step 1 before window
check) and RevokeCommissioning around RemoveFabric — as of 1.5.1
release, certification tests are not yet adjusted for these behaviors.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Tweak CADMIN 1.10 error expectation
* Try2: Tweak CADMIN 1.10 error expectation
* Try3: Tweak CADMIN 1.10 error expectation
* Disable RevokeCommissioning around RemoveFabric pending test alignment
Remove server-side RevokeCommissioning around RemoveFabric — this is
a controller-side concern per spec 1.5 (administrator calling
RevokeCommissioning before/after removing another fabric over CASE).
Keep RevokeCommissioning ordering fix (Step 1 cleanup before window
check) using graceful initiateClose().
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat: markdown spec parser for generate-spec (#3528)
* feat(codegen): add markdown spec parser alongside existing HTML parser
The generate-spec tool now auto-detects markdown spec directories
(containing _index.md files) and parses them using a new markdown
pipeline, while preserving the existing HTML pipeline as fallback.
New modules in support/codegen/src/mom/spec/md/:
- md-utils.ts: frontmatter parsing, text/prose element helpers
- parse-tables.ts: pipe table + HTML table parsing with overflow
cell merging for unescaped | in conformance expressions
- scan-markdown.ts: document scanner yielding HtmlReference objects
- load-markdown-files.ts: directory discovery and file concatenation
Also adds scan-spec.ts routing function and extends translate-cluster.ts
and translate-global.ts for markdown-specific patterns (command direction
<= syntax, status code obsolete name cleanup).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore(models): regenerate v1.5.1 spec.ts from markdown source
Generated from the markdown version of the Matter 1.5.1 specification.
Produces identical validation results (7 errors, 7980 elements) as the
HTML source. Text differences are limited to prose formatting: different
word wrapping, admonition markers, list formatting, and minor punctuation.
No structural or semantic changes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: regenerate model, clusters and endpoints from updated spec.ts
All changes are in generated JSDoc comments and description strings
reflecting the markdown-sourced spec.ts text formatting. No structural
or API changes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: regenerate remaining endpoint and tag files from updated spec.ts
More generated JSDoc/description text updates from the markdown-sourced
spec.ts. No structural or API changes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor(codegen): eliminate HTML intermediate in markdown spec parser
Replace MD → HTMLElement → text pipeline with direct MD → text.
Drop HTML spec input support entirely. Translators now operate on
strings, tables produce string cells at parse time, prose is string[].
Delete scan-document.ts, scan-tables.ts, doc-utils.ts (HTML-only).
Rename html-translators.ts → translators.ts with string signatures.
Rename HtmlReference → SpecReference across the codebase.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore(models): regenerate v1.5.1 spec.ts from refactored parser
Minor improvements from direct MD → text pipeline: removed spurious
heading markers on legend text, better paragraph merging, picked up
8 missing network conditions (Ethernet, WiFi, Thread, etc.).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: regenerate model, clusters and endpoints from updated spec.ts
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: update docs and fix formatting after HTML parser removal
Remove references to HTML spec input from README and generate-spec
usage text. Fix formatting in generated file.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor: merge NonUserDoorLockServer and UserDoorLockServer into DoorLockBaseServer
USR feature is mandatory on the DoorLock device type, so the two-stage
class hierarchy (NonUser → User) had no standalone use case. Merged into
a single DoorLockBaseServer following the *BaseServer naming convention
used by all other behaviors.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Regenerate
* chore: regenerate forwards after codegen fix
Removes stray .d.ts forward files left from the broken chooseName() and
regenerates clean .ts forwards for clusters added in Matter 1.5
(camera-av-*, chime, closure-*, commodity-*, electrical-grid-conditions,
meter-identification, push-av-stream-transport, soil-measurement, tls-*,
web-rtc-*, zone-management).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* test(node): replace removed Thermostat.Feature.ScheduleConfiguration in narrowing test
`Thermostat.Feature.ScheduleConfiguration` and its weekly-schedule commands
(setWeeklySchedule / getWeeklySchedule / clearWeeklySchedule) were removed
from the spec-generated cluster types per Matter 1.5.1, replaced by
`MatterScheduleConfiguration` (MSCH) gating `setActiveScheduleRequest`.
`atomicRequest` is gated on `Presets | MatterScheduleConfiguration`.
Update the `commandsOf narrowing via .for()` block in the regression
harness added in #3652 to use the new feature and command set, preserving
the test intent: bare ThermostatServer hides feature-gated commands;
`.with(MatterScheduleConfiguration)` exposes setActiveScheduleRequest +
atomicRequest while keeping Presets-only commands hidden; `.with(Presets)`
exposes setActivePresetRequest + atomicRequest while keeping MSCH-only
commands hidden.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1 parent e76438c commit e8d6747
854 files changed
Lines changed: 142849 additions & 20840 deletions
File tree
- examples/device-robotic-vacuum-cleaner/src
- behaviors
- packages
- main/src/forwards
- behaviors
- clusters
- devices
- model
- src
- common
- dts
- elements
- logic/cluster-variance
- models
- standard
- elements
- resources
- test
- nodejs-ws/test
- node
- src
- behaviors
- access-control
- administrator-commissioning
- camera-av-settings-user-level-management
- camera-av-stream-management
- chime
- closure-control
- closure-dimension
- commodity-metering
- commodity-price
- commodity-tariff
- door-lock
- electrical-grid-conditions
- level-control
- meter-identification
- push-av-stream-transport
- soil-measurement
- tls-certificate-management
- tls-client-management
- user-label
- web-rtc-transport-definitions
- web-rtc-transport-provider
- web-rtc-transport-requestor
- web-rtc-transport
- zone-management
- devices
- endpoints
- endpoint/type
- tags
- test
- behaviors/service-area
- behavior/cluster
- endpoint
- server
- node
- protocol/src
- action/server
- advertisement
- types
- src
- clusters
- globals
- protocol/definitions
- test/schema
- support
- chip-testing
- src
- cluster
- test/core
- codegen/src
- endpoints
- mom/spec
- md
- repairs
- util
- models/src
- local
- v1.5.1
- v1.5
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
13 | 14 | | |
14 | 15 | | |
15 | 16 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
14 | 18 | | |
15 | 19 | | |
16 | 20 | | |
| |||
29 | 33 | | |
30 | 34 | | |
31 | 35 | | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
32 | 39 | | |
33 | 40 | | |
34 | 41 | | |
| |||
Lines changed: 5 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
107 | | - | |
| 107 | + | |
108 | 108 | | |
109 | 109 | | |
110 | 110 | | |
| |||
116 | 116 | | |
117 | 117 | | |
118 | 118 | | |
119 | | - | |
| 119 | + | |
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
| |||
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
131 | | - | |
| 131 | + | |
132 | 132 | | |
133 | 133 | | |
134 | 134 | | |
| |||
140 | 140 | | |
141 | 141 | | |
142 | 142 | | |
143 | | - | |
| 143 | + | |
144 | 144 | | |
145 | 145 | | |
146 | 146 | | |
| |||
Lines changed: 11 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
| 14 | + | |
15 | 15 | | |
16 | | - | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
17 | 20 | | |
18 | 21 | | |
19 | 22 | | |
| |||
27 | 30 | | |
28 | 31 | | |
29 | 32 | | |
30 | | - | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
31 | 39 | | |
32 | 40 | | |
33 | 41 | | |
| |||
Lines changed: 11 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
Lines changed: 11 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
Lines changed: 11 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
Lines changed: 11 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
0 commit comments