edfcore 0.4.431 → 0.4.433

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -109,5 +109,5 @@ export declare const SIGNAL_FIELD_BLOCK_OFFSETS: {
109
109
  readonly reserved: 224;
110
110
  };
111
111
  /** Published package version. Kept in sync with package.json by a test. */
112
- export declare const VERSION = "0.4.431";
112
+ export declare const VERSION = "0.4.433";
113
113
  //# sourceMappingURL=constants.d.ts.map
package/dist/constants.js CHANGED
@@ -79,5 +79,5 @@ export const SIGNAL_FIELD_BLOCK_OFFSETS = {
79
79
  reserved: 224,
80
80
  };
81
81
  /** Published package version. Kept in sync with package.json by a test. */
82
- export const VERSION = '0.4.431';
82
+ export const VERSION = '0.4.433';
83
83
  //# sourceMappingURL=constants.js.map
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,46 @@ alone does not tell you whether you were affected.
6
6
  edfcore is pre-1.0. Patch releases have carried behaviour changes where the old behaviour was a
7
7
  defect; those are called out below.
8
8
 
9
+ ## 0.4.433
10
+
11
+ - **Added** tests for what a conformant header is allowed to say. `validateHeader` raises three
12
+ advisory diagnostics about how a header is written, each checked somewhere for the case where it
13
+ fires, and none for the case where it stays quiet — which is the direction with consequences.
14
+ - A conformance report is only worth reading if a clean file produces a short one. `PREFILTERING_NONE`
15
+ holds four spellings of "no filtering" that EDF+ and real writers use interchangeably, and
16
+ dropping one means every file from that writer carries a warning about a field it filled in
17
+ correctly. Nobody debugs that; they stop reading the warnings, which are the same warnings that
18
+ would have told them something real.
19
+ - The headline is the whole of it at once: a header that follows EDF+ to the letter — an
20
+ `EEG Fpz-Cz` label, a named transducer, `HP:` and `LP:` terms — produces no conformance
21
+ diagnostics at all. That sentence is the product these checks exist to make possible and it was
22
+ never asserted.
23
+ - One subtlety is pinned deliberately. A bare `EEG` label is flagged, because the rule is
24
+ `<type> <sensor>` and a type with no sensor names a category rather than a channel. The condition
25
+ that gets that right reads like a redundant length check beside the set membership next to it,
26
+ and simplifying it away would silently accept `EEG`, `ECG` and `Temp` as channel names.
27
+
28
+ ## 0.4.432
29
+
30
+ - **Added** a check that every version is still signed, and of the four lines that make it so.
31
+ `scripts/release.mjs` ends a successful run by telling whoever cut it that the version "is on npm
32
+ with a provenance attestation". It prints that unconditionally, nothing verified the workflow
33
+ still signs anything, and nothing could notice if it stopped: npm accepts an unsigned publish
34
+ exactly as it accepts a signed one, and the only difference is a panel missing from a web page
35
+ nobody reloads.
36
+ - The attestation is not decoration here. AGENTS.md explains that the
37
+ `archive/pre-squash-2026-08-16` branch is load-bearing precisely because every version published
38
+ that day carries a signed attestation naming the commit it was built from — a whole branch is
39
+ kept alive so those Source Commit links keep resolving.
40
+ - Four things hold it together and each is a line a tidy-up removes without a thought:
41
+ `id-token: write`, where the signing key comes from and whose removal looks like tightening
42
+ permissions; `--provenance` on the publish step, which looks redundant next to `publishConfig`;
43
+ `--provenance` *not* in `publishConfig`, the opposite tidy-up, because there it would apply to a
44
+ publish from a laptop that has no OIDC token to sign with; and `registry-url` on `setup-node`,
45
+ without which the publish is unauthenticated and never gets far enough to sign anything.
46
+ - The reasons written beside them are checked too, since they are the only thing standing between
47
+ the next reader and the tidy-up.
48
+
9
49
  ## 0.4.431
10
50
 
11
51
  - **Added** tests that a 16-bit channel labelled `Status` is not a BioSemi Status channel.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.4.431",
3
+ "version": "0.4.433",
4
4
  "description": "Modern, typed, zero-dependency reader for EDF, EDF+, BDF and BDF+ biosignal files. Works in browsers and Node with true random access.",
5
5
  "keywords": [
6
6
  "edf",
package/src/constants.ts CHANGED
@@ -93,4 +93,4 @@ export const SIGNAL_FIELD_BLOCK_OFFSETS = {
93
93
  } as const;
94
94
 
95
95
  /** Published package version. Kept in sync with package.json by a test. */
96
- export const VERSION = '0.4.431';
96
+ export const VERSION = '0.4.433';