vue-dockable-desktop 1.0.1 → 1.1.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
@@ -11,6 +11,104 @@ correspondence lives, alongside the feature-by-feature map in [docs/PARITY.md](d
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [1.1.0] — 2026-09-18
15
+
16
+ **Parity: react-dockable-desktop 6.3.0.**
17
+
18
+ ### Fixed
19
+
20
+ - **`<VddDesktop :skin>` did nothing at all.** The stylesheet keyed its 104 skin selectors on
21
+ `data-workspace-skin` while the component emitted `data-vdd-skin`, so no skin rule had ever
22
+ matched in any published version: all seven skins painted identically to the default. The
23
+ stylesheet now uses the library's own `data-vdd-skin`, which is the name the component, its
24
+ test and [ADR 0008](docs/decisions/0008-css-prefix.md) already agreed on.
25
+
26
+ A consumer who wrote a custom skin against `[data-workspace-skin="…"]`, as the manual
27
+ previously showed, must rename it to `[data-vdd-skin="…"]`. Nothing can break in practice:
28
+ skins have never applied, so no such CSS was having any effect.
29
+
30
+ - **Skins would have been unusable in light mode**, which the rename alone would have shipped. A
31
+ skin's token block matches the workspace element as well as the root, and the colour scheme was
32
+ only on the root — so a skin's *dark* tokens were re-declared closer to the content than the
33
+ root's light ones and shadowed them: dark panels with dark text. `<VddDesktop>` now mirrors
34
+ `data-color-scheme` onto the workspace element beside the skin, which is how rdd has always done
35
+ it. Measured across seven skins × two schemes on four surfaces; every surface now flips.
36
+
37
+ - **The sidebar, its drawer and the workspace toolbar were unstyled in dark mode.** Twenty-nine
38
+ tokens — the whole `--vdd-sidebar-*` family, the rail's icon colours and the workspace toolbar's
39
+ button states — had their dark values only inside `[data-color-scheme="dark"]`, and that selector
40
+ never matches: dark is signalled by *removing* the attribute, as `useColorScheme()` documents. So
41
+ they were undefined exactly when they were needed, and fifteen of them are read with no `var()`
42
+ fallback, which drops the whole declaration instead of defaulting it. The strips had no
43
+ background, the drawer inherited black text, and **the selected rail icon had no colour at all**,
44
+ which is why it appeared not to render.
45
+
46
+ Dark is the base look, so those values now live on `:root` and the dark block is gone —
47
+ `[data-color-scheme="light"]` overrides them, which is all a scheme block should do. An
48
+ application that sets `data-color-scheme="dark"` explicitly sees no change. Reported from the
49
+ demo; it affects rdd too, whose own demo happens to set the attribute for both schemes and so
50
+ never shows it.
51
+
52
+ - **The sidebar rail did not fill its own column.** `.vdd-sidebar-strip-outer` is full height,
53
+ but it is a block wrapper — added in this port to own the width-collapse transition — and a
54
+ block does not stretch its child the way rdd's flex row did. So the strip inside it shrank to
55
+ its buttons, 216px of a 915px column, and its background covered only the icons while the rest
56
+ showed the host page through. It has `height: 100%` now.
57
+
58
+ - **A rail holding one tab collapsed that tab to its icon.** An active rail button takes
59
+ `width: var(--vdd-tab-btn-active-width, 100%)`, and that percentage resolves against the
60
+ shrink-to-fit tabs list; with a single tab there is no sibling to hold the list open, so button
61
+ and list both shrank to 26px against a normal 44px, putting the accent border 15px inboard of
62
+ the rail's edge. `.vdd-sidebar-tabs-list` now carries the same `min-width: 44px` floor that
63
+ `.vdd-sidebar-header-area` and `.vdd-sidebar-footer-area` already had for exactly this reason.
64
+ A rail with several tabs hid it, because the inactive buttons' own 44px kept the list open.
65
+
66
+ - **Text in a side panel was black on a dark background.** `.vdd-side-panel` set a background
67
+ and no foreground, so content teleported into a drawer inherited the host page's text colour —
68
+ the user agent's black. Measured at **1.18:1** in the demo's own Panel manager, against the
69
+ 16.31:1 of the library's title beside it. `.vdd-modal-window`, `.vdd-workspace` and
70
+ `.vdd-sidebar-content-drawer` all set a colour; the drawer was simply missed. rdd has the same
71
+ omission, hidden in its demo by Bootstrap's page-wide theme, which this demo deliberately does
72
+ not import. An application that wants its own colour still sets it on its content or through
73
+ `createWorkspace({ classes: { sidePanelBody } })`.
74
+
75
+ - **The theming chapter documented three things that were not true**: the skin selector
76
+ (`data-workspace-skin`), the claim that *"the workspace publishes its scheme as
77
+ `data-color-scheme`"* — the library only ever reads it; your application sets it — and a
78
+ `createWorkspace({ windowClass, modalClass, … })` config shape that has never existed (it is
79
+ `classes: { window, modal, … }`).
80
+
81
+ ### Added
82
+
83
+ - **A token reference**: all **119** tokens the library declares on `:root`, in sixteen groups,
84
+ with defaults and what each paints ([ch. 10](docs/manual/10-theming.md#token-reference)). A gate
85
+ checks it against the stylesheet in both directions, so a new token needs a row and a row cannot
86
+ outlive its token.
87
+
88
+ - **`:root` is now a complete inventory.** Six measurements and off-by-default effects that
89
+ existed only as `var()` fallbacks are declared at exactly those values, so nothing renders
90
+ differently — `--vdd-tab-accent-bar-width`, `--vdd-tab-btn-active-glow/-radius/-width`,
91
+ `--vdd-toolbar-accent-bar-width`, `--vdd-toolbar-btn-active-glow`. Together with the
92
+ twenty-nine folded out of the dark block, everything a skin may override is declared and
93
+ documented in one place.
94
+
95
+ - **Guidance for defining your own skin**, both of it learned by measurement: leave the selector
96
+ unqualified (`[data-vdd-skin="mono"]`, not `html[…]`, which cannot match the workspace element
97
+ and loses there), and import your stylesheet after the library's. The demo ships `mono` as a
98
+ worked example in both schemes, and the browser gate measures it beside the seven built-ins.
99
+
100
+ ### Changed
101
+
102
+ - The M14 browser gate's skin step used to cycle the seven skins and assert nothing — which is how
103
+ this shipped. It now measures each skin in both schemes and fails if a surface does not change
104
+ between them or if a skin paints identically to the default. Two new source rules join it: every
105
+ `[data-*]` selector in the stylesheet must name an attribute a component emits (the rule that
106
+ would have caught this on day one), and the token reference must match the stylesheet. A third
107
+ rejects a token whose only declaration sits inside a colour-scheme block — the shape that left
108
+ the sidebar unstyled. The browser gate also measures the chrome *outside* the workspace now: the
109
+ first matrix sampled only inside it, and passed while the sidebar was unpainted. All are proven
110
+ non-vacuous by `gate:selftest`, now 87 rules.
111
+
14
112
  ## [1.0.1] — 2026-09-17
15
113
 
16
114
  **Parity: react-dockable-desktop 6.3.0.**