@umriss-ui/schedule 0.41.1 → 0.42.0

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.
package/CHANGELOG.md CHANGED
@@ -4,9 +4,11 @@ This document describes what changes for **callers** of the package: exports,
4
4
  props, behaviour.
5
5
 
6
6
  **The numbers.** The middle digit rises when something is added; the last one
7
- when something is repaired. As long as the first digit is `0`, no number
8
- promises compatibility — which is why whatever changes existing behaviour stands
9
- under a heading "Changed" of its own, no matter which digit rose.
7
+ when something is repaired. The six packages are released in step, and a rename
8
+ keeps its old name for one further minor, with a warning, before the minor after
9
+ it removes the name ([the upgrade promise, ADR-0066](../../docs/adr/0066-one-number-peers-over-the-minor-a-rename-lives-one-minor.md)).
10
+ Whatever changes existing behaviour stands under a heading "Changed" of its own,
11
+ no matter which digit rose, with a `Migration:` line.
10
12
 
11
13
  From 0.34.0 the packages share one number - five, and six from 0.40.0, when the dashboard joined: they are released together, and a package without a change of its own still gets a heading for it.
12
14
 
@@ -16,12 +18,30 @@ moves from here under the rule above.
16
18
 
17
19
  ---
18
20
 
21
+ ## 0.42.0 – A schedule under test, and quiet on a server (Oct. 2026)
22
+
23
+ ### Added
24
+
25
+ - **Loadable in Vitest and Jest** with core's and charts' lines one after the other: the `.` entry carries a `default` condition, the README's "Testing" section says how the two setup files combine, and the release check runs a test of a lane with a bar under both runners.
26
+ - **TypeScript 5.4 or newer**, stated in the Install section (the declarations use `NoInfer`); the release check compiles a strict consumer under 5.4 as well as the current TypeScript.
27
+
28
+ ### Changed
29
+
30
+ - **The peer range on core and charts covers the minor: `^0.42.0`.** It named the exact patch before (`^0.41.1`), so npm refused an install beside an earlier patch of core with `ERESOLVE`; the six packages move under one number and a minor moves the range (ADR-0066).
31
+ - Migration: nothing to change; any 0.42 patch of `@umriss-ui/core` and `@umriss-ui/charts` satisfies the peers.
32
+ - **On a server the schedule's description holds no summary.** A server knows no lanes, so it described "0 lanes, 0 subtasks" for a plan that had both; the summary arrives with the lanes after mount, and the key help stays.
33
+ - Migration: nothing to change; a server-rendered test that read the summary's counts finds the key help only.
34
+ - **A date or time rendered on a server is empty until the page has hydrated** (core 0.42.0, ADR-0067). Only the browser knows the reader's zone, so a server in another zone wrote a different text and React raised hydration error #418; the schedule now shows its dates and times right after hydration.
35
+ - Migration: nothing to change in an application that renders in the browser; a test that renders to a string and expects a date finds an empty text - render it in the DOM instead.
36
+
19
37
  ## 0.41.1 – The documentation runs where the code is (Oct. 2026)
20
38
 
21
39
  ### Changed
22
40
 
23
41
  - **The documentation is no longer hosted.** The site on GitHub Pages is gone, and the package's `homepage` now names its README on GitHub. The running documentation of this version opens from a checkout of the tag `schedule-v0.41.1` with `pnpm install` and `pnpm start`, at `http://localhost:4170/umriss-ui/` - the repository README says how, under "See it running".
42
+ - Migration: nothing to change; a bookmark or link to the old hosted site no longer resolves - open the documentation from a checkout of the tag, as described above.
24
43
  - **`docs/llms-full.md` in the package stands on its own:** a link to another page points at that page's heading in the same file, a link to a place on the site that the file does not hold keeps only its text, and ADR-0032 is linked at this version's tag.
44
+ - Migration: nothing to change; look at any tool that read `docs/llms-full.md` and followed its links to the site, which now find the heading in the same file.
25
45
 
26
46
  ## 0.41.0 – Strict consumers compile (Oct. 2026)
27
47
 
package/README.md CHANGED
@@ -19,17 +19,18 @@ Both `@umriss-ui/core` and `@umriss-ui/charts` are **peer dependencies**
19
19
  (ADR-0022): the schedule takes its styling regime, provider, formats and
20
20
  wording from core, and its time arithmetic — the affine scale, the time steps,
21
21
  the working calendar, the canvas colour resolution — from charts. React 19 or
22
- newer as a peer as well.
22
+ newer as a peer as well. TypeScript 5.4 or newer (the declarations use `NoInfer`).
23
23
 
24
24
  The package ships ES2022 syntax; an application that serves older browsers
25
25
  transpiles it itself.
26
26
 
27
27
  Every entry begins with `"use client"`, the directive a framework
28
- with Server Components reads to treat a module as client code. No test runs
29
- inside such a framework: the
30
- schedule is rendered to a string in a test. On a server it gives its labelled
31
- frame and empty canvases; the lanes, subtasks and the summary's counts arrive
32
- on the client after mount.
28
+ with Server Components reads to treat a module as client code. A schedule is declared by its hook,
29
+ `useSchedule`, so the declaration lives in a Client Component file: a Server Component renders that
30
+ file and hands it the rows and subtasks. On a server a schedule gives its labelled frame and empty
31
+ canvases; the lanes, the subtasks and the summary arrive on the client after mount, and a date or
32
+ time is empty until the page has hydrated, because only the browser knows the reader's zone. No test
33
+ runs inside such a framework: the schedule is rendered to a string in a test.
33
34
 
34
35
  ## The smallest schedule that runs
35
36
 
@@ -199,6 +200,14 @@ Done from this list: **blocked time** per lane and **milestones**.
199
200
  * [`../../docs/design-language.md`](../../docs/design-language.md) — the design
200
201
  language all five packages share.
201
202
 
203
+ ## Testing
204
+
205
+ Tested under Vitest 5 and Jest 30 on jsdom. A schedule draws with core and charts, so it needs the
206
+ runner lines and the setup file of [`@umriss-ui/core`'s Testing section](../core/README.md#testing)
207
+ and the setup file of [`@umriss-ui/charts`'](../charts/README.md#testing), one file after the other
208
+ in your `umriss.setup.js`. `check:dist` runs a test of the installed schedule (a lane with a bar)
209
+ with exactly those files.
210
+
202
211
  ## Licence
203
212
 
204
213
  MIT — see [`LICENSE`](LICENSE).
package/dist/schedule.js CHANGED
@@ -999,7 +999,7 @@ function Ln(s) {
999
999
  },
1000
1000
  Z.count
1001
1001
  ) }),
1002
- /* @__PURE__ */ m(fe, { id: it, children: `${P.scheduleSummary({ ...Mt, from: le(Mt.from), to: le(Mt.to) })} ${P.scheduleKeyHelp}` })
1002
+ /* @__PURE__ */ m(fe, { id: it, children: v === e.getServerSnapshot() ? P.scheduleKeyHelp : `${P.scheduleSummary({ ...Mt, from: le(Mt.from), to: le(Mt.to) })} ${P.scheduleKeyHelp}` })
1003
1003
  ]
1004
1004
  }
1005
1005
  ),
package/docs/llms-full.md CHANGED
@@ -1,4 +1,4 @@
1
- # @umriss-ui/schedule 0.41.1
1
+ # @umriss-ui/schedule 0.42.0
2
2
 
3
3
  > React Gantt-style schedule for data-dense applications - work on lanes over time, with dependencies, blocked time, findings and controlled editing.
4
4
 
@@ -1523,11 +1523,11 @@ no subtask yet; the caller creates one, with its own identity, from
1523
1523
 
1524
1524
  #### Known limits
1525
1525
 
1526
- - No dependency types, critical path or auto-scheduling: the application decides where work goes, the schedule shows the result and its findings ([ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md)).
1526
+ - No dependency types, critical path or auto-scheduling: the application decides where work goes, the schedule shows the result and its findings ([ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md)).
1527
1527
  - No milestones yet: a point in time on a lane has no mark of its own.
1528
1528
  - A dependency joins two subtasks of one task; dependencies across tasks are not yet possible.
1529
1529
 
1530
- What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md).
1530
+ What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md).
1531
1531
 
1532
1532
  ## Plan
1533
1533
 
@@ -1969,7 +1969,7 @@ The keys of [First schedule](#first-schedule) apply here.
1969
1969
 
1970
1970
  - A folded group shows no summary - no utilisation band, no bar spanning its work: a computed claim would look like a drawn fact ([ADR-0025](https://github.com/romanhaendler/umriss-ui/blob/main/docs/adr/0025-a-lane-group-is-structure-over-lanes-never-a-lane.md)).
1971
1971
 
1972
- What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md).
1972
+ What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md).
1973
1973
 
1974
1974
  ### Subtasks
1975
1975
 
@@ -2833,7 +2833,7 @@ From `ScheduleView` — the full table stands on [View](#view).
2833
2833
 
2834
2834
  - No stacked layout on request yet: an overlap is always drawn offset, as the finding it is.
2835
2835
 
2836
- What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md).
2836
+ What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md).
2837
2837
 
2838
2838
  ### Dependencies
2839
2839
 
@@ -3203,9 +3203,9 @@ type DependencyEnds = "dot" | "none";
3203
3203
 
3204
3204
  #### Known limits
3205
3205
 
3206
- - Only finish-to-start within one task; no dependency types and no critical path ([ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md)).
3206
+ - Only finish-to-start within one task; no dependency types and no critical path ([ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md)).
3207
3207
 
3208
- What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md).
3208
+ What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md).
3209
3209
 
3210
3210
  ### Routes
3211
3211
 
@@ -4908,7 +4908,7 @@ From `ScheduleView` — the full table stands on [View](#view).
4908
4908
 
4909
4909
  - One task at a time: there is no multiple selection.
4910
4910
 
4911
- What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md).
4911
+ What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md).
4912
4912
 
4913
4913
  ### Interactions
4914
4914
 
@@ -5990,7 +5990,7 @@ From `ScheduleView` — the full table stands on [View](#view).
5990
5990
 
5991
5991
  - Only the view is shared - the span and the folded groups, not the selection, the hover or the vertical scroll.
5992
5992
 
5993
- What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md).
5993
+ What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md).
5994
5994
 
5995
5995
  ### The handle
5996
5996
 
@@ -6386,7 +6386,7 @@ The keys of [First schedule](#first-schedule) apply here.
6386
6386
 
6387
6387
  - Overlapping work is marked, not packed into sub-lanes; stacked overlap is not built yet.
6388
6388
 
6389
- What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md).
6389
+ What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md).
6390
6390
 
6391
6391
  ## Editing
6392
6392
 
@@ -6761,10 +6761,10 @@ From `Overlap` — the full table stands on [Findings as data](#findings-as-data
6761
6761
 
6762
6762
  #### Known limits
6763
6763
 
6764
- - No undo: your application owns the data, and with it the history ([ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md)).
6764
+ - No undo: your application owns the data, and with it the history ([ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md)).
6765
6765
  - The keys move work in time only; a lane change needs the pointer.
6766
6766
 
6767
- What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md).
6767
+ What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md).
6768
6768
 
6769
6769
  ### Stretch, lead-in, lead-out
6770
6770
 
@@ -6936,7 +6936,7 @@ From `ScheduleView` — the full table stands on [View](#view).
6936
6936
 
6937
6937
  - A main time never becomes shorter than one raster step, or a minute without a raster.
6938
6938
 
6939
- What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md).
6939
+ What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md).
6940
6940
 
6941
6941
  ### Snapping
6942
6942
 
@@ -7795,7 +7795,7 @@ From `ScheduleView` — the full table stands on [View](#view).
7795
7795
 
7796
7796
  - A rule that changes while a drag runs is noticed at the drop, not before.
7797
7797
 
7798
- What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md).
7798
+ What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md).
7799
7799
 
7800
7800
  ### Ripple
7801
7801
 
@@ -8080,10 +8080,10 @@ From `ScheduleView` — the full table stands on [View](#view).
8080
8080
 
8081
8081
  #### Known limits
8082
8082
 
8083
- - No dependency types, slack or critical path: the schedule is no project-planning engine ([ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md)).
8083
+ - No dependency types, slack or critical path: the schedule is no project-planning engine ([ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md)).
8084
8084
  - A dependency joins subtasks of one task, so work of other tasks is never pushed.
8085
8085
 
8086
- What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.41.1/docs/adr/0032-what-umriss-is-not.md).
8086
+ What umriss deliberately does not build, and why: [ADR-0032](https://github.com/romanhaendler/umriss-ui/blob/schedule-v0.42.0/docs/adr/0032-what-umriss-is-not.md).
8087
8087
 
8088
8088
  ## Measuring
8089
8089
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umriss-ui/schedule",
3
- "version": "0.41.1",
3
+ "version": "0.42.0",
4
4
  "description": "React Gantt-style schedule for data-dense applications - work on lanes over time, with dependencies, blocked time, findings and controlled editing.",
5
5
  "license": "MIT",
6
6
  "author": "Roman Händler",
@@ -50,7 +50,8 @@
50
50
  "exports": {
51
51
  ".": {
52
52
  "types": "./dist/index.d.ts",
53
- "import": "./dist/schedule.js"
53
+ "import": "./dist/schedule.js",
54
+ "default": "./dist/schedule.js"
54
55
  },
55
56
  "./styles.css": {
56
57
  "types": "./dist/styles.d.ts",
@@ -58,10 +59,10 @@
58
59
  }
59
60
  },
60
61
  "peerDependencies": {
62
+ "@umriss-ui/charts": "^0.42.0",
63
+ "@umriss-ui/core": "^0.42.0",
61
64
  "react": ">=19",
62
- "react-dom": ">=19",
63
- "@umriss-ui/charts": "^0.41.1",
64
- "@umriss-ui/core": "^0.41.1"
65
+ "react-dom": ">=19"
65
66
  },
66
67
  "devDependencies": {
67
68
  "@fontsource/geist-mono": "^5.3.0",
@@ -75,8 +76,8 @@
75
76
  "typescript": "^5.6.3",
76
77
  "vite": "^6.0.0",
77
78
  "vite-plugin-dts": "^4.3.0",
78
- "@umriss-ui/charts": "0.41.1",
79
- "@umriss-ui/core": "0.41.1",
79
+ "@umriss-ui/core": "0.42.0",
80
+ "@umriss-ui/charts": "0.42.0",
80
81
  "@umriss-ui/demo": "0.0.0"
81
82
  },
82
83
  "scripts": {