stimeo-ui 0.11.0 → 0.13.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dbc740b1497e7c760dce2eb0207e1e513a64e944aef2d666b8785c1244bd4618
4
- data.tar.gz: e687fa19aae7ea8432130228a1bb0bfeb82868f56b18c8d823edb5d6dd1b77c7
3
+ metadata.gz: 9270fc3c010e18a652ab837ecec7b712bbdd78e9859b0690409fff8b5623f640
4
+ data.tar.gz: 8920d26834c8c2444f35c0f6d04cc2c21835163414a62f7339e95608130dc29a
5
5
  SHA512:
6
- metadata.gz: eeeef9df2dedeb5aa23da6de1c08bc6921f0c85554de9162999895d48ddd89950dfe5dfa32b895d3fd80a780470966a2ae9f9517e8743b6b7868c9a1e441b2da
7
- data.tar.gz: 3a40f5f32596616f06fa52a93a446ddf73ed25421c610c54209d200eb8c631d5b334e1f014852e8331e4fd9b09ad0933929ad1de54d36aaa4d14361e05a2bcc0
6
+ metadata.gz: 8da3b269a404ca927d73e19a3be176b8fe7ce094a3d2742055bdb0675c2a1862fda1b20667aed527a2a7848dedaf568617b01824d7bd90819171a7d3bbd49e2e
7
+ data.tar.gz: 0141d8fec6cc63786a1e0dc348350670236c54129969dfebbc93538c23dea48945bb2080d5e692e7219d092304cf07725a93a7539e3185bbf56198e544f0fd46
data/CHANGELOG.md CHANGED
@@ -7,6 +7,111 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
  While the version is `0.x`, the public API (the `stimeo--*` data attributes) may
8
8
  change between releases.
9
9
 
10
+ ## [0.13.0] - 2026-09-13
11
+
12
+ Minor release with no new components. The three server-bound components are
13
+ reworked — live-counter, presence, and optimistic — and each changed a contract,
14
+ so read Changed before upgrading. The Inspector manifest stays on schema v12.
15
+
16
+ ### Changed
17
+
18
+ - live-counter: a broadcast whose `count` or `delta` is not an integer is
19
+ ignored, a `delta` param that is not an integer falls back to `1`, and a
20
+ declared `channel` keeps the gate closed until the subscription is confirmed.
21
+ A delta carrying your own `id` is applied unless an optimistic add of the same
22
+ size is still outstanding. Runtime changes to `channel` / `params`
23
+ re-subscribe.
24
+ - presence: a leave notice is sent by the last element claiming that `id` rather
25
+ than by every element, a `channel` key in `params` no longer overrides the
26
+ declared `channel`, `heartbeat` / `timeout` fall back to their defaults unless
27
+ finite, positive and at most 2147483647 — typing-indicator's `timeout` takes
28
+ the same bound — and `template` clones only its root element.
29
+ - optimistic: `turbo:submit-end` is matched to the submission it names instead of
30
+ to any ending that reaches the element, so a submission whose ending never
31
+ arrives no longer strands the element. The `data-optimistic-toggled` marker
32
+ carries the authored value to restore instead of `"true"`, `aria-busy` gets the
33
+ same record (`data-optimistic-busy`), and a rollback writes those records back
34
+ rather than inverting the current value — `hidden="until-found"` no longer
35
+ degrades to a bare `hidden`, and an element registered for both `show` and
36
+ `hide` returns to its authored state.
37
+
38
+ ### Fixed
39
+
40
+ - calendar: a malformed `<html lang>` (an `en_US`-style tag that `Intl` rejects)
41
+ no longer stops the month grid from painting. The month label falls back to
42
+ English while the 42 cells, the single tab stop, and the `monthchange` /
43
+ `select` conditions stay as they were; any other failure of the label
44
+ formatter still propagates.
45
+
46
+ ## [0.12.0] - 2026-09-06
47
+
48
+ Minor release with no new components. Six existing ones are reworked — count-up,
49
+ intersection, lazy-frame, reading-progress, smart-sticky-header, and sortable —
50
+ and the number reading count-up gained reaches live-counter too. Most of them
51
+ changed a contract, so read Removed and Changed before upgrading. The Inspector
52
+ manifest stays on schema v12.
53
+
54
+ ### Removed
55
+
56
+ - sortable: the `status` target, its `data-grabbed` / `data-moved` /
57
+ `data-dropped` / `data-canceled` templates, and the English fallback wording.
58
+ Seat a `stimeo--announcer` on the page and set `announceGrabbedText` /
59
+ `announceMovedText` / `announceDroppedText` / `announceCanceledText`
60
+ (`{name}` / `{position}` / `{total}`); an unset one announces nothing.
61
+ `stimeo check` stops asking for the live region and warns when no announcer
62
+ is seated.
63
+
64
+ ### Changed
65
+
66
+ - count-up: only the text node holding the number is animated, and while it
67
+ ticks it is wrapped in a `role="img"` element named with the authored text —
68
+ the host's own `aria-label` and `role` are never touched, and sibling markup
69
+ stays where it was.
70
+ - count-up and live-counter read a formatted number by one rule: the first
71
+ numeric token, group separators dropped, the fraction truncated, and a hyphen
72
+ a sign only where it opens the token — `"Sign-ups: 1,200"` reads 1200, not
73
+ -1200.
74
+ - intersection: `0` is always among the observed lines, so a non-zero
75
+ `threshold` also reports the element leaving for good (one more `change`;
76
+ `data-passed` and the ratio property follow the departure to its end), and an
77
+ exit across the start edge reports `position: "before"` while the element
78
+ still overlaps the root.
79
+ - lazy-frame: a re-fetch needs a genuine re-entry — the frame is seen inside the
80
+ observed area, leaves it, and comes back; where a connection or a
81
+ focus-started load first finds it is the baseline. A frame with `once` off is
82
+ armed again after a cache restore, and `load` names the URL that was fetched.
83
+ - reading-progress: an article with no layout box is not measured, the
84
+ article's own box is watched so late-settling content re-measures, and the
85
+ connect frame is the baseline — a restored scroll position does not fire
86
+ `complete`. Both faces of the custom property are leased: the element's copy
87
+ is returned on `disconnect()` too, an authored `:root` declaration comes back,
88
+ and a later writer is left alone.
89
+ - smart-sticky-header: `change` fires on transitions only (connecting is
90
+ silent), and the `offset` zone is decided ahead of the jitter guard.
91
+ - sortable: insertion is relative to the neighbouring item — the `list`-less
92
+ markup works and the last slot is after the last item — and a drag signal from
93
+ a pointer-drag nested inside an item no longer moves the card. The pickup slot
94
+ is remembered as neighbours, so rows inserted or removed mid-drag shift neither
95
+ the restore nor `from`; only laid-out siblings take part in pointer following;
96
+ and a session whose item leaves the item set ends instead of refusing every
97
+ later grab. pointer-drag consumes `Home` / `End` while grabbed.
98
+ - A declaration that cannot be read falls back to its default: count-up's
99
+ `duration` / `from`, smart-sticky-header's `offset`, and a `rootSelector` /
100
+ `containerSelector` that does not parse (intersection, sticky-observer,
101
+ smart-sticky-header) observes the viewport or the window. Runtime changes to
102
+ intersection's `threshold`, lazy-frame's `url` / `rootMargin`, and
103
+ smart-sticky-header's `offset` are followed.
104
+
105
+ ### Fixed
106
+
107
+ - lazy-frame: focus moving inside a loaded frame no longer re-fetches it, the
108
+ first intersection after a focus-started load is not a re-entry, and an empty
109
+ `url` is never written to `src`.
110
+ - intersection: with `once`, a handler calling `refresh()` from `enter` no longer
111
+ clears the one-shot marker, so a cache restore does not fire `enter` again.
112
+ - reading-progress: hiding a half-read article no longer publishes `1` and
113
+ `complete`.
114
+
10
115
  ## [0.11.0] - 2026-09-05
11
116
 
12
117
  Minor release with no new components. Eight existing ones are reworked — the three
@@ -930,6 +1035,8 @@ Initial public alpha: 101 behavior-only, accessible Stimulus controllers driven
930
1035
  by `data-*` attributes, shipping no CSS. Published to npm (with provenance) and
931
1036
  RubyGems.
932
1037
 
1038
+ [0.13.0]: https://github.com/taiyaky/stimeo-ui/releases/tag/v0.13.0
1039
+ [0.12.0]: https://github.com/taiyaky/stimeo-ui/releases/tag/v0.12.0
933
1040
  [0.11.0]: https://github.com/taiyaky/stimeo-ui/releases/tag/v0.11.0
934
1041
  [0.10.0]: https://github.com/taiyaky/stimeo-ui/releases/tag/v0.10.0
935
1042
  [0.9.0]: https://github.com/taiyaky/stimeo-ui/releases/tag/v0.9.0