@octanejs/cli 0.0.7 → 0.0.9
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/package.json +1 -1
- package/src/data/octane-data.json +898 -150
|
@@ -1,8 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bindings": [
|
|
3
|
+
{
|
|
4
|
+
"name": "@octanejs/alien-signals",
|
|
5
|
+
"version": "0.0.15",
|
|
6
|
+
"category": "Shared state",
|
|
7
|
+
"upstream": {
|
|
8
|
+
"package": "react-alien-signals",
|
|
9
|
+
"version": "0.3.0",
|
|
10
|
+
"source": "https://github.com/Rajaniraiyn/react-alien-signals/tree/6d883959ddf25a3f486451ff8abff60eb989671c",
|
|
11
|
+
"license": "MIT"
|
|
12
|
+
},
|
|
13
|
+
"surface": "Complete react-alien-signals hook and helper surface over the unchanged alien-signals@1.0.4 core, with Octane-native subscriptions and lifecycle ownership.",
|
|
14
|
+
"divergences": [
|
|
15
|
+
"`useSignalValue` accepts any readable signal, including computed signals, correcting the upstream declaration to match its documented behavior.",
|
|
16
|
+
"`useSignalScope` starts its scope after client commit and returns a cancellation-safe controller, avoiding render-phase effects."
|
|
17
|
+
],
|
|
18
|
+
"ssr": "Supported and hydration-tested. Reads use the same server snapshot; effects and scopes begin only after client commit and stop on unmount.",
|
|
19
|
+
"verified": "2026-07-30"
|
|
20
|
+
},
|
|
3
21
|
{
|
|
4
22
|
"name": "@octanejs/animejs",
|
|
5
|
-
"version": "0.0.
|
|
23
|
+
"version": "0.0.19",
|
|
6
24
|
"category": "UI and interaction",
|
|
7
25
|
"upstream": {
|
|
8
26
|
"package": "animejs",
|
|
@@ -21,7 +39,7 @@
|
|
|
21
39
|
},
|
|
22
40
|
{
|
|
23
41
|
"name": "@octanejs/apollo-client",
|
|
24
|
-
"version": "0.1.
|
|
42
|
+
"version": "0.1.44",
|
|
25
43
|
"category": "AI, data, and routing",
|
|
26
44
|
"upstream": { "package": "@apollo/client", "version": "4.2.6" },
|
|
27
45
|
"surface": "Complete published client adapter surface: all 18 @apollo/client/react runtime exports and their Apollo 4.2.6 TypeScript declarations, framework-neutral root/testing exports, an Octane MockedProvider, and the Octane-native /react/ssr prerenderStatic entry.",
|
|
@@ -31,49 +49,87 @@
|
|
|
31
49
|
"React Server Components and Apollo's React Compiler-generated entry are intentionally not exposed."
|
|
32
50
|
],
|
|
33
51
|
"ssr": "Dedicated Node-mode tests cover multi-pass useQuery, nested query waterfalls, per-request cache isolation, ssr:false/no-cache, render limits, and scoped CSS; client hydration verifies cache restoration, in-place adoption, and no duplicate fetch. Streaming cache patches remain open.",
|
|
34
|
-
"verified": "2026-
|
|
52
|
+
"verified": "2026-08-02"
|
|
35
53
|
},
|
|
36
54
|
{
|
|
37
55
|
"name": "@octanejs/aria",
|
|
38
|
-
"version": "0.0.
|
|
56
|
+
"version": "0.0.43",
|
|
39
57
|
"category": "UI and interaction",
|
|
40
58
|
"upstream": { "package": "react-aria", "version": "3.50.0" },
|
|
41
|
-
"surface": "
|
|
59
|
+
"surface": "The `@octanejs/aria/components` entry point matches the complete named public surface of `react-aria-components@1.19.0`: 280 runtime exports and 313 type exports, checked in both directions with no missing or extra names. This includes calendar/date/time, color, drag-and-drop, DropZone/FileTrigger, toast, data hooks, and virtualized layout APIs in addition to the previously ported primitives, overlays, collections, Tree, and Table. The root behavior-hook and `/stately` entries remain curated React Aria 3.50.0 / React Stately 3.48.0 surfaces rather than separate full-export claims.",
|
|
60
|
+
"divergences": [
|
|
61
|
+
"`native-input-event-wiring`: Text-input DOM wiring uses Octane's native `onInput` per keystroke instead of React's synthetic `onChange`; public value-level callbacks are unchanged.",
|
|
62
|
+
"`ref-as-prop`: React `forwardRef` wrappers become Octane ref-as-prop components.",
|
|
63
|
+
"React Server Components are not part of the Octane binding.",
|
|
64
|
+
"`valid-hoisted-identifiers`: The i18n server serializer keeps hoisted-string identifiers valid past 26 entries instead of emitting invalid JavaScript identifiers.",
|
|
65
|
+
"`server-rtl-direction`: The SSR locale direction derives from the injected locale via `isRTL` rather than being hard-coded to `ltr`."
|
|
66
|
+
],
|
|
67
|
+
"ssr": "Dedicated Node-mode coverage verifies SSRProvider, hydration-safe labelled relationships, server snapshots, and injected LTR/RTL locales; real Vite-compiled Octane server markup is hydrated in place and remains interactive. The newly completed advanced component families have client behavior and type/export coverage but do not yet extend the package's existing SSR evidence.",
|
|
68
|
+
"verified": "2026-08-18"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "@octanejs/auto-animate",
|
|
72
|
+
"version": "0.0.5",
|
|
73
|
+
"category": "UI and interaction",
|
|
74
|
+
"upstream": {
|
|
75
|
+
"package": "@formkit/auto-animate",
|
|
76
|
+
"version": "0.10.0",
|
|
77
|
+
"source": "https://github.com/formkit/auto-animate/tree/b6a6feebf75c198dd85f280c549bc0303f9e7aa8",
|
|
78
|
+
"license": "MIT"
|
|
79
|
+
},
|
|
80
|
+
"surface": "Vanilla autoAnimate core is reused from @formkit/auto-animate@0.10.0. The React useAutoAnimate hook is ported at ./react. Vue, Preact, Solid, Angular, Nuxt, Marko, and Qwik entry points are explicit gaps.",
|
|
42
81
|
"divergences": [
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"useDefaultLocale, SSR branch: `direction` derives from the server-injected locale via `isRTL` (upstream hardcodes 'ltr' even for an injected RTL locale, disagreeing with its own getDefaultLocale)."
|
|
82
|
+
"Consumers import from @octanejs/auto-animate and @octanejs/auto-animate/react rather than @formkit/auto-animate and @formkit/auto-animate/react.",
|
|
83
|
+
"useAutoAnimate treats a compiler-injected symbol in the options position as omitted options.",
|
|
84
|
+
"Vue, Preact, Solid, Angular, Nuxt, Marko, and Qwik bindings are not ported."
|
|
47
85
|
],
|
|
48
|
-
"ssr": "
|
|
49
|
-
"verified": "2026-
|
|
86
|
+
"ssr": "The vanilla core is DOM-only; the hook attaches in a ref callback and destroys the controller on unmount. No server DOM mutations.",
|
|
87
|
+
"verified": "2026-08-20"
|
|
50
88
|
},
|
|
51
89
|
{
|
|
52
90
|
"name": "@octanejs/base-ui",
|
|
53
|
-
"version": "0.1.
|
|
91
|
+
"version": "0.1.47",
|
|
54
92
|
"category": "UI and interaction",
|
|
55
93
|
"upstream": { "package": "@base-ui/react", "version": "1.6.0" },
|
|
56
|
-
"surface": "Alpha, in progress:
|
|
94
|
+
"surface": "Alpha, in progress: 35 of 43 upstream subpaths. The implemented surface has a complete byte-exact upstream inventory, 98 same-fixture React/Octane differential cases, and 49 Accordion, Collapsible, and Tabs adapted cases. This is bounded evidence and remains recorded-unverified because eight public subpaths and most of the canonical runtime/type suite are not yet adapted. Menu covers all 20 upstream parts, Toast all 11 parts, Collapsible all 3 parts, Accordion all 5 parts, and Tabs 4 of 5 parts (Indicator unported); their detailed gaps and evidence are recorded in UPSTREAM.md and audit/react-parity.json.",
|
|
57
95
|
"divergences": [
|
|
58
|
-
"
|
|
59
|
-
"`
|
|
60
|
-
"The
|
|
61
|
-
"
|
|
62
|
-
"`NumberField.ScrubArea` and hold-to-repeat stepping remain unported; the steppers respond to single presses only."
|
|
96
|
+
"`native-event-semantics`: Host handlers receive native DOM events rather than React synthetic events; text edits use native `input`, form-facing NumberField commits use native `change`, and propagation reads `cancelBubble`.",
|
|
97
|
+
"`ref-as-prop-class-composition`: React `forwardRef` wrappers become ref-as-prop, and class values use Octane's composition rules.",
|
|
98
|
+
"`unported-internal-hover`: The internal standalone floating-ui-react `useHover` combiner is not republished because no ported Base UI component consumes it.",
|
|
99
|
+
"`number-field-interaction-gaps`: `NumberField.ScrubArea` and hold-to-repeat stepping remain unported; steppers respond to single presses only."
|
|
63
100
|
],
|
|
64
101
|
"ssr": "Dedicated Node-mode tests cover server snapshots, accessible separators, edge-aligned slider visibility, and closed dialogs; hydration adopts Vite-compiled Octane server markup, transitions to the client snapshot, and preserves interaction. Open overlays and remaining components are not yet covered.",
|
|
65
102
|
"verified": "2026-08-01"
|
|
66
103
|
},
|
|
104
|
+
{
|
|
105
|
+
"name": "@octanejs/calendar",
|
|
106
|
+
"version": "0.0.5",
|
|
107
|
+
"category": "UI and interaction",
|
|
108
|
+
"upstream": {
|
|
109
|
+
"package": "react-calendar",
|
|
110
|
+
"version": "6.0.1",
|
|
111
|
+
"source": "https://github.com/wojtekmaj/react-calendar/tree/dc73f86f68239cb694650b66e0795a2f7f9323ed/packages/react-calendar",
|
|
112
|
+
"license": "MIT"
|
|
113
|
+
},
|
|
114
|
+
"surface": "Public react-calendar 6.0.1 runtime and type surface: default and named Calendar, CenturyView, DecadeView, MonthView, YearView, Navigation, CalendarProps, and all types exported by the upstream root. The three framework-neutral shared suites run without weakened assertions; representative Calendar and tile cases are adapted to Octane.",
|
|
115
|
+
"divergences": [
|
|
116
|
+
"Component refs are ordinary Octane props. Calendar ref exposes the upstream imperative handle; inputRef remains the DOM wrapper ref.",
|
|
117
|
+
"Callbacks receive native MouseEvent objects, which persist without React's synthetic event.persist() method.",
|
|
118
|
+
"Renderable public types use OctaneNode instead of React.ReactNode."
|
|
119
|
+
],
|
|
120
|
+
"ssr": "Supported. Pass locale explicitly when server and browser locale defaults may differ.",
|
|
121
|
+
"verified": "2026-08-20"
|
|
122
|
+
},
|
|
67
123
|
{
|
|
68
124
|
"name": "@octanejs/cmdk",
|
|
69
|
-
"version": "0.1.
|
|
125
|
+
"version": "0.1.32",
|
|
70
126
|
"category": "UI and interaction",
|
|
71
127
|
"upstream": { "package": "cmdk", "version": "1.1.1" },
|
|
72
128
|
"surface": "Complete against the published `cmdk@1.1.1` public surface: `Command` (the root itself) and the `CommandRoot` named export, `Command.Input`, `Command.List`, `Command.Item`, `Command.Group`, `Command.Separator`, `Command.Dialog`, `Command.Empty`, `Command.Loading`, the flat `CommandX` aliases, `useCommandState`, and `defaultFilter` — with the DOM-authoritative store and item/group registration, `useValue` text-content inference, `onInput`-driven search, score filtering plus item and group DOM sorting, keyboard navigation (arrows/Home/End/vim/Enter), controlled `value`/`onValueChange`/`loop`/`shouldFilter`/custom `filter`/`forceMount`, the `--cmdk-list-height` ResizeObserver, and a Radix-backed `Command.Dialog`. `asChild` is the one unsupported prop (see divergences).",
|
|
73
129
|
"divergences": [
|
|
74
130
|
"No forwardRef: components take `ref` as a normal prop; multi-ref uses octane's `ref={[a, b]}` instead of composeRefs.",
|
|
75
131
|
"`Command.Input` drives search from the native `onInput` event; the public `onValueChange(search)` API is unchanged (no synthetic `onChange`).",
|
|
76
|
-
"Item value is inferred from the provided `value` prop or the rendered `textContent`; cmdk's string-child inspection is dropped because octane's compiled children are opaque. An item that has never been scored therefore renders once so the inference can read its text — treating unscored as score zero deadlocks it
|
|
132
|
+
"Item value is inferred from the provided `value` prop or the rendered `textContent`; cmdk's string-child inspection is dropped because octane's compiled children are opaque. An item that has never been scored therefore renders once so the inference can read its text — treating unscored as score zero deadlocks it. Consumer-visible mid-search arrivals match upstream.",
|
|
77
133
|
"Score ranking is expressed as CSS `order` inside a flex container, not by relocating DOM nodes. Upstream's sort() is DOM-authoritative: it appendChild's matching items into the list sizer. Octane fences every component's DOM with comment markers and tracks the range between them, and a template construct like `@for` or `@if` wraps each item in a SECOND, outer range — so relocating an item carries it out of every range at once, and the loop later clears an empty range while the real node is orphaned in the list forever. Carrying the flanking markers along only repairs the innermost range, so it breaks again at each new nesting construct. Ranking declaratively removes the class of bug: no node moves, no range is violated, and clearing the search restores true source order because the styles are simply dropped. The cost is that the list sizer and each group's item container are flex columns WHILE a filter is active, so a consumer relying on physical DOM order (`:nth-child` styling, drag handles) or on a custom container `display` diverges from upstream. Selection, arrow-key navigation and alt+arrow group navigation all read the ranked order, not DOM order, so what is selected always matches what is on screen. Every valid item is ranked rather than only the matches: an unranked flex child keeps the initial `order` of 0, which sorts it AHEAD of every match, so a force-mounted non-match would jump to the top of its container. Ranking everything puts zero-scoring items last, which is where upstream's append-in-score-order leaves them too. Ranks land on the child the container actually lays out, resolved at any nesting depth, because `order` applies to a flex CHILD — upstream resolves a single wrapper level, which its appendChild model tolerates but this one does not. Ungrouped items and group hosts share the sizer's rank space, so the former are numbered densely and the latter continue past them, matching upstream's order of appending items before groups.",
|
|
78
134
|
"`aria-activedescendant` is wired on the initial auto-select and after every filter; upstream queues that work from inside its own layout-effect flush and its batcher discards it, so upstream only sets the attribute after a directly user-driven selection. The runtimes agree on which item is selected.",
|
|
79
135
|
"Ids are `radix-` prefixed to match upstream, which takes them from `@radix-ui/react-id`.",
|
|
@@ -81,23 +137,76 @@
|
|
|
81
137
|
"Re-registering an item value during an active search re-derives the whole filter aggregate (match count and matching groups), not just that item's score. Upstream only re-sorts, leaving `filtered.count`/`filtered.groups` describing the previous values — so an item that starts matching renders while `Command.Empty` still shows \"no results\" (and its group can stay hidden). Upstream's own item-registration path already re-derives the aggregate the same way, so the omission reads as an oversight rather than intent.",
|
|
82
138
|
"Force-mounted items are counted so `Command.Empty` can see them. Upstream skips registration entirely for a `forceMount` item, so it never reaches `filtered.count` — with a search that matches nothing, upstream renders the force-mounted item and \"no results\" on top of each other. The port tracks the live force-mounted count separately (`filtered.count` keeps its upstream meaning for `useCommandState`) and Empty consults both.",
|
|
83
139
|
"Removing the selected force-mounted item moves the selection on. Because upstream never registers a `forceMount` item it has no teardown for one either, so the selected value keeps pointing at a node that is gone: nothing renders `aria-selected`, `aria-activedescendant` dangles at a removed id, and Enter does nothing until the user arrows away. The port re-selects from the force-mount teardown, the same way the plain item teardown does.",
|
|
84
|
-
"Every registration path releases the value it registered. Items, force-mounted items and groups all register through the same `useValue`,
|
|
140
|
+
"Every registration path releases the value it registered. Items, force-mounted items and groups all register through the same `useValue`, so remount cycles stay quiet and the dev-only duplicate-value report stays honest.",
|
|
85
141
|
"Registration teardowns hop a microtask before scheduling their follow-up work. Octane runs a removed child's effect cleanups during the PARENT's render, so scheduling straight from a teardown lands its state update mid-render and the runtime reports \"Cannot update a component (`CommandRoot`) while rendering a different component\" — advice a teardown cannot act on, since it does not choose when it runs. The queued work is unchanged and still runs before paint; only the teardown paths defer, because every other caller schedules from a layout effect where the synchronous update is load-bearing. React has no equivalent problem: it runs cleanups in the commit phase.",
|
|
86
142
|
"`Command.Empty` renders nothing during SSR. Items register in layout effects, which never run on the server, so the match count is unavoidably 0 there and upstream ships \"no results\" above a fully-populated list on every server-rendered page — permanently so for readers without JavaScript. The port supplies a server snapshot of \"not empty\" instead, and the empty state appears on the client once the count is real.",
|
|
87
143
|
"An item leaving a group is removed from that group's member set. Upstream deletes the item from `ids`/`allItems` but never from `allGroups`, so a group accumulates dead item ids for the lifetime of the Command — unbounded growth in a menu whose results churn, plus wasted work in every filter pass.",
|
|
88
144
|
"`Command.Dialog` additionally forwards `defaultOpen` and `modal` to the underlying Radix `Dialog.Root`. Upstream cmdk forwards only `open`/`onOpenChange`, so it has no uncontrolled open state and is always modal.",
|
|
89
145
|
"Duplicate item values are reported in development. Selection is keyed by value, so two items sharing one both render `aria-selected=\"true\"` while only the first responds to Enter — an invalid single-select listbox. The runtime cannot pick a winner (cmdk requires unique values), so the port warns instead of failing silently; upstream neither warns nor resolves it.",
|
|
90
|
-
"The layout-effect batcher
|
|
146
|
+
"The layout-effect batcher reports a throwing queued callback through `console.error` (as octane reports effect exceptions) instead of rethrowing out of the flush. Upstream's batcher has no such isolation, so a throwing `onValueChange` reached from that flush rethrows there.",
|
|
91
147
|
"`asChild` is not supported: cmdk's SlottableWithNestedChildren clones a child element and re-parents the component's own content into it, which has no faithful equivalent over octane's opaque compiled children. Components always render their own host element.",
|
|
92
148
|
"`Command.Dialog` builds on @octanejs/radix's Dialog (composed via createElement descriptors, since radix's Portal iterates children) instead of @radix-ui/react-dialog.",
|
|
93
149
|
"The vendored scorer gained explicit parameter type annotations for strict typecheck and repo-style formatting; the algorithm and score constants are unchanged from cmdk@1.1.1."
|
|
94
150
|
],
|
|
95
151
|
"ssr": "Supported and tested: the menu server-renders all items in source order without browser globals (the DOM-authoritative filter/selection is post-hydration work), and no empty state — items cannot register on the server, so `Command.Empty` renders nothing there rather than claiming \"no results\" over a full list. `hydrateRoot` adopts the server nodes without a mismatch, then activates — values infer from textContent, the first item selects, and typing filters live.",
|
|
96
|
-
"verified": "2026-
|
|
152
|
+
"verified": "2026-08-03"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"name": "@octanejs/colorful",
|
|
156
|
+
"version": "0.0.15",
|
|
157
|
+
"category": "UI and interaction",
|
|
158
|
+
"upstream": { "package": "react-colorful", "version": "5.8.0" },
|
|
159
|
+
"surface": "Complete against the published react-colorful 5.8.0 root runtime and type surface: all 14 picker variants, HexColorInput, setNonce, six public color types, controlled updates, mouse/touch/keyboard input, commit callbacks, ARIA state, and automatic closest-root styling.",
|
|
160
|
+
"divergences": [
|
|
161
|
+
"React synthetic event attribute types are represented by Octane native DOM event attributes; observable DOM events and callback values retain the upstream contract."
|
|
162
|
+
],
|
|
163
|
+
"ssr": "All pickers and HexColorInput render deterministically without browser globals, hydrate by adopting existing nodes, install styles only on the client, and become interactive after hydration.",
|
|
164
|
+
"verified": "2026-08-03"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "@octanejs/content-loader",
|
|
168
|
+
"version": "0.0.5",
|
|
169
|
+
"category": "UI and interaction",
|
|
170
|
+
"upstream": {
|
|
171
|
+
"package": "react-content-loader",
|
|
172
|
+
"version": "7.1.2",
|
|
173
|
+
"source": "https://github.com/danilowoz/react-content-loader/tree/c8a6b6c6669d7e663f9d7e1efecec08e876b0e5d",
|
|
174
|
+
"license": "MIT"
|
|
175
|
+
},
|
|
176
|
+
"surface": "Web runtime at react-content-loader 7.1.2: default ContentLoader, Facebook, Instagram, Code, List, and BulletList presets, and IContentLoaderProps. ./native is an explicit gap.",
|
|
177
|
+
"divergences": [
|
|
178
|
+
"Consumers import from @octanejs/content-loader instead of react-content-loader.",
|
|
179
|
+
"The React Native ./native entry is not published because Octane has no React Native renderer.",
|
|
180
|
+
"React test-renderer and shallow-renderer observations are asserted through mounted SVG DOM without changing their numeric expectations.",
|
|
181
|
+
"useId values use Octane's opaque identifier format.",
|
|
182
|
+
"Octane serializes SVG/CSS url() functions with quotes while React's test renderer reports the unquoted form; uniqueKey/baseUrl relationships are unchanged.",
|
|
183
|
+
"Octane inserts empty comment holes between children; snapshots compare the public SVG tree after stripping those markers.",
|
|
184
|
+
"rtl=false uses an empty style object instead of null so the style spread typechecks.",
|
|
185
|
+
"IContentLoaderProps.style is an object map rather than Octane's string-or-object SVG style union, matching React SVGAttributes.",
|
|
186
|
+
"Git package.json at the pin SHA advertises 6.2.1; npm published 7.1.2 from that SHA."
|
|
187
|
+
],
|
|
188
|
+
"ssr": "Supported. uniqueKey pins clip and gradient identifiers; otherwise useId remains opaque and request-local.",
|
|
189
|
+
"verified": "2026-08-20"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"name": "@octanejs/day-picker",
|
|
193
|
+
"version": "0.0.15",
|
|
194
|
+
"category": "UI and interaction",
|
|
195
|
+
"upstream": {
|
|
196
|
+
"package": "react-day-picker",
|
|
197
|
+
"version": "10.0.1",
|
|
198
|
+
"commit": "6d3929d655779d178638d8f80171597a579468e8"
|
|
199
|
+
},
|
|
200
|
+
"surface": "DayPicker, public components, hooks, date classes, helpers, labels, formatters, locales, styles, and public types.",
|
|
201
|
+
"divergences": [
|
|
202
|
+
"React DOM prop types are preserved publicly and normalized at Octane render boundaries."
|
|
203
|
+
],
|
|
204
|
+
"ssr": "Calendar markup and accessibility attributes render without browser globals.",
|
|
205
|
+
"verified": "2026-08-02"
|
|
97
206
|
},
|
|
98
207
|
{
|
|
99
208
|
"name": "@octanejs/devtools",
|
|
100
|
-
"version": "0.0.
|
|
209
|
+
"version": "0.0.37",
|
|
101
210
|
"category": "Styling, tests, and devtools",
|
|
102
211
|
"upstream": { "package": "octane", "version": "workspace" },
|
|
103
212
|
"surface": "Octane-native DevTools plugin (not an upstream port): renders live runtime diagnostics into a TanStack Devtools host via @tanstack/devtools-event-client. P1 ships the Components tree + state inspector.",
|
|
@@ -107,7 +216,7 @@
|
|
|
107
216
|
},
|
|
108
217
|
{
|
|
109
218
|
"name": "@octanejs/dexie",
|
|
110
|
-
"version": "0.1.
|
|
219
|
+
"version": "0.1.42",
|
|
111
220
|
"category": "AI, data, and routing",
|
|
112
221
|
"upstream": { "package": "dexie-react-hooks", "version": "4.4.0" },
|
|
113
222
|
"surface": "Port of the public dexie-react-hooks surface: useObservable, useLiveQuery, useSuspendingObservable, useSuspendingLiveQuery, usePermissions, and useDocument, with Dexie's framework-neutral API re-exported from the package root.",
|
|
@@ -117,11 +226,11 @@
|
|
|
117
226
|
"useDocument requires consumers to install and import y-dexie and yjs before using the hook; those integrations remain optional."
|
|
118
227
|
],
|
|
119
228
|
"ssr": "Supported for non-suspending live queries: SSR returns the configured default without opening IndexedDB, and hydration adopts the server host before replacing the default with live data. Suspending live queries remain client-oriented and do not claim server data loading.",
|
|
120
|
-
"verified": "2026-
|
|
229
|
+
"verified": "2026-08-02"
|
|
121
230
|
},
|
|
122
231
|
{
|
|
123
232
|
"name": "@octanejs/dnd-kit",
|
|
124
|
-
"version": "0.1.
|
|
233
|
+
"version": "0.1.44",
|
|
125
234
|
"category": "UI and interaction",
|
|
126
235
|
"upstream": { "package": "@dnd-kit/react", "version": "0.5.0" },
|
|
127
236
|
"surface": "Complete modern dnd-kit React-adapter surface: DragDropProvider, DragOverlay, useDraggable/useDroppable, manager/monitor/operation hooks, PointerSensor/KeyboardSensor re-exports, the public signal-hook utilities, useSortable, and all four upstream entry points.",
|
|
@@ -130,11 +239,49 @@
|
|
|
130
239
|
"useSortable retains the upstream keyboard plugin by default but omits OptimisticSortingPlugin because moving one host element before application state commits can split an Octane keyed DOM range; explicit plugin arrays remain authoritative."
|
|
131
240
|
],
|
|
132
241
|
"ssr": "Static SSR and hydration are covered; DOM plugins initialize only after client refs register.",
|
|
133
|
-
"verified": "2026-
|
|
242
|
+
"verified": "2026-08-03"
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"name": "@octanejs/draggable",
|
|
246
|
+
"version": "0.0.15",
|
|
247
|
+
"category": "UI and interaction",
|
|
248
|
+
"upstream": { "package": "react-draggable", "version": "4.7.1" },
|
|
249
|
+
"surface": "Complete against the published react-draggable 4.7.1 root runtime and type surface: default Draggable, named DraggableCore, controlled and uncontrolled positioning, bounds, grid, axis, offsets, mouse and touch gestures, and all eight public types.",
|
|
250
|
+
"divergences": [
|
|
251
|
+
"React component instance, lifecycle, React.Component assignability, findDOMNode fallback, and instance refs are unavailable; use the structural nodeRef prop with an Octane host ref.",
|
|
252
|
+
"React-specific node and synthetic-event types are represented by OctaneNode and native mouse/touch events while retaining the observable callback and data contract."
|
|
253
|
+
],
|
|
254
|
+
"ssr": "Draggable and DraggableCore render deterministically without browser globals, adopt their existing HTML or SVG child during hydration, and become interactive after hydration.",
|
|
255
|
+
"verified": "2026-08-03"
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"name": "@octanejs/drei",
|
|
259
|
+
"version": "0.0.15",
|
|
260
|
+
"category": "Web 3D",
|
|
261
|
+
"upstream": { "package": "@react-three/drei", "version": "10.7.7" },
|
|
262
|
+
"surface": "Complete port of the pinned @react-three/drei 10.7.7 public web API (commit b8b99fd4ca1dfb8d821335671320512daa6efea4): 379 source exports and 217 runtime exports are accounted for by the executable crosswalk, with 299 parity assertions across 105 test files.",
|
|
263
|
+
"divergences": [
|
|
264
|
+
"View: inline Canvas views are ported. Calling View from an Octane DOM root fails with the universal renderer-boundary diagnostic, and View.Port is a callable no-op. Octane components are statically renderer-owned, so one component cannot switch between DOM and Three renderers or transport authored Three children between independent roots as React Drei does with tunnel-rat."
|
|
265
|
+
],
|
|
266
|
+
"ssr": "Browser-dependent helpers remain client-only; server-safe behavior is verified per export.",
|
|
267
|
+
"verified": "2026-08-02"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"name": "@octanejs/dropzone",
|
|
271
|
+
"version": "0.0.15",
|
|
272
|
+
"category": "Forms and content",
|
|
273
|
+
"upstream": { "package": "react-dropzone", "version": "20.0.0" },
|
|
274
|
+
"surface": "Exact mapped port of the react-dropzone 20.0.0 root runtime and type namespace at canonical commit 01fc05c5996bf615caf812627f7491375e647c7d. The binding preserves the default Dropzone component, useDropzone, ErrorCode, all public types, root package conditions, and ./package.json export. Runtime coverage executes 218 pristine canonical React cases plus 109 adapted, differential, SSR, hydration, browser, and evidence cases.",
|
|
275
|
+
"divergences": [
|
|
276
|
+
"Consumers import from @octanejs/dropzone and author TSRX instead of importing react-dropzone and authoring React JSX; option names and observable file-acquisition behavior remain mapped to the pinned upstream contract.",
|
|
277
|
+
"The package points its types/import/require conditions at authored Octane source under repository policy; packed-consumer checks prove equivalent ESM, CommonJS, TypeScript, package-json, and public-namespace resolution without React runtime leakage."
|
|
278
|
+
],
|
|
279
|
+
"ssr": "Supported and tested — server rendering and hydration preserve the hidden input and getter-provided root contract without browser-global access during render.",
|
|
280
|
+
"verified": "2026-08-02"
|
|
134
281
|
},
|
|
135
282
|
{
|
|
136
283
|
"name": "@octanejs/electron",
|
|
137
|
-
"version": "0.0.
|
|
284
|
+
"version": "0.0.27",
|
|
138
285
|
"category": "Desktop",
|
|
139
286
|
"upstream": { "package": "electron", "version": "43.2.0" },
|
|
140
287
|
"surface": "Process-split Electron bindings: ./main registers ipcMain handlers, ./main/native re-exports main-only Electron APIs (Menu, Tray, session, protocol, BrowserWindow, …), ./preload exposes Electron IPC and desktop helpers via contextBridge, and the renderer entry provides Octane hooks (useInvoke, useInvokeState, useIpcEvent, useNativeTheme, useWindowState) plus promise helpers for app/window/dialog/shell/clipboard/screen. Menu/Tray/session/protocol stay intentional main-only under contextIsolation.",
|
|
@@ -150,19 +297,74 @@
|
|
|
150
297
|
"ssr": "Server rendering performs no IPC. useInvokeState renders pending and issues the command on the client after hydration; useIpcEvent and reactive desktop hooks subscribe only on the client. useInvoke without a host rejects with ElectronUnavailableError.",
|
|
151
298
|
"verified": "2026-08-02"
|
|
152
299
|
},
|
|
300
|
+
{
|
|
301
|
+
"name": "@octanejs/embla-carousel",
|
|
302
|
+
"version": "0.0.15",
|
|
303
|
+
"category": "UI and interaction",
|
|
304
|
+
"upstream": {
|
|
305
|
+
"package": "embla-carousel-react",
|
|
306
|
+
"version": "8.6.0",
|
|
307
|
+
"core": "embla-carousel@8.6.0"
|
|
308
|
+
},
|
|
309
|
+
"surface": "Complete package-root adapter: default useEmblaCarousel hook, its viewport-ref and tuple types, and globalOptions; the framework-neutral Embla core and reactive equality utilities are reused unchanged.",
|
|
310
|
+
"divergences": [],
|
|
311
|
+
"ssr": "The hook constructs no carousel without DOM globals; client attachment initializes the core.",
|
|
312
|
+
"verified": "2026-08-02"
|
|
313
|
+
},
|
|
153
314
|
{
|
|
154
315
|
"name": "@octanejs/floating-ui",
|
|
155
|
-
"version": "0.1.
|
|
316
|
+
"version": "0.1.48",
|
|
156
317
|
"category": "UI and interaction",
|
|
157
318
|
"upstream": { "package": "@floating-ui/react", "version": "0.27.19" },
|
|
158
|
-
"surface": "
|
|
159
|
-
"divergences": [
|
|
160
|
-
|
|
161
|
-
|
|
319
|
+
"surface": "Complete @floating-ui/react 0.27.19 export surface: positioning (`useFloating`, ref-aware `arrow`, and the framework-neutral middleware re-exports), floating tree and list primitives, every interaction hook, portals/overlays/focus management/arrows/composites, transitions, both delay-group APIs, and the deprecated `inner`/`useInnerOffset` pair. Runtime parity is executable and bounded: 272 adapted assertions pass compatibly, 29 remain executable expected-failure negative controls, and 6 upstream-declared skips are non-evidence.",
|
|
320
|
+
"divergences": [
|
|
321
|
+
"`ref-as-prop`: React forwardRef component APIs become Octane ref-as-prop APIs.",
|
|
322
|
+
"Twenty-nine upstream assertions remain executable expected-failure controls across ref/focus/effect scheduling, dynamic-child registration, iframe realms, render counts, React-only context fixtures, and list registration; audit/expected-failures.json names every case.",
|
|
323
|
+
"The combined Octane entry point cannot preserve every @floating-ui/react-dom-only type narrowing; the one-for-one adapted type program records those diagnostics explicitly."
|
|
324
|
+
],
|
|
325
|
+
"ssr": "No dedicated SSR/hydration lane; the supported claims are client positioning and interactions.",
|
|
326
|
+
"verified": "2026-08-26"
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"name": "@octanejs/formisch",
|
|
330
|
+
"version": "0.0.4",
|
|
331
|
+
"category": "Forms and content",
|
|
332
|
+
"upstream": {
|
|
333
|
+
"package": "@formisch/react",
|
|
334
|
+
"version": "1.0.0-rc.0",
|
|
335
|
+
"commit": "4c494fd8cf105efd04a4b179e9c090595a0bf041"
|
|
336
|
+
},
|
|
337
|
+
"surface": "Ports the Formisch React adapter surface while vendoring its React-selected core and modular methods into one React-free Octane package.",
|
|
338
|
+
"divergences": [
|
|
339
|
+
"Octane native text controls use `onInput`; selects, checkboxes, and radios use native `onChange`.",
|
|
340
|
+
"React synthetic event and renderable types are replaced with native DOM events and OctaneNode.",
|
|
341
|
+
"React StrictMode-specific delayed signal cleanup is omitted in favor of Octane lifecycle cleanup."
|
|
342
|
+
],
|
|
343
|
+
"ssr": "Supported and tested: sequential requests stay isolated, hydration adopts existing form controls, and native input updates activate after hydration.",
|
|
344
|
+
"verified": "2026-07-30"
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"name": "@octanejs/gsap",
|
|
348
|
+
"version": "0.0.18",
|
|
349
|
+
"category": "UI and interaction",
|
|
350
|
+
"upstream": {
|
|
351
|
+
"package": "@gsap/react",
|
|
352
|
+
"version": "2.1.2",
|
|
353
|
+
"source": "https://github.com/greensock/react/tree/2.1.2",
|
|
354
|
+
"tagCommit": "b7f44ca767eb93390f965d6f19679e2b77be7966",
|
|
355
|
+
"license": "GSAP Standard License"
|
|
356
|
+
},
|
|
357
|
+
"surface": "Full useGSAP hook contract: callback, dependency-array and config signatures; scoped contexts; contextSafe; revertOnUpdate; register; and headless.",
|
|
358
|
+
"divergences": [
|
|
359
|
+
"The adapter imports Octane hooks and uses compiler-selected manual hook slots instead of React hooks.",
|
|
360
|
+
"GSAP remains an external peer dependency and is not redistributed by this MIT-licensed adapter."
|
|
361
|
+
],
|
|
362
|
+
"ssr": "Server rendering creates stable context helpers without running GSAP effects. Client hydration activates the standard lifecycle.",
|
|
363
|
+
"verified": "2026-08-02"
|
|
162
364
|
},
|
|
163
365
|
{
|
|
164
366
|
"name": "@octanejs/hook-form",
|
|
165
|
-
"version": "0.1.
|
|
367
|
+
"version": "0.1.46",
|
|
166
368
|
"category": "Forms and content",
|
|
167
369
|
"upstream": { "package": "react-hook-form", "version": "7.81.0" },
|
|
168
370
|
"surface": "Complete port of react-hook-form 7.81.0 (tag commit 46b217e034dd92f7aa3cb3a478815556b416b299). The automated parity check runs all 1,193 original tests against the pinned React package as a pristine baseline; the Octane port separately runs byte-locked, unfiltered DOM and server suites with exact collected/executed inventories containing 1,187 entries representing 1,178 unique file/full-name identities. The nine duplicate entries are repeated titles within the DOM inventory; the server inventory is disjoint. Coverage includes `useForm`, `useController`, `useFieldArray`, `useFormState`, `useWatch`, `useFormContext`/`FormProvider`, schema resolvers, and all validation modes.",
|
|
@@ -173,9 +375,30 @@
|
|
|
173
375
|
"ssr": "Supported and tested — the upstream `*.server.test.tsx` suite runs via `octane/server` with byte-identical markup.",
|
|
174
376
|
"verified": "2026-08-01"
|
|
175
377
|
},
|
|
378
|
+
{
|
|
379
|
+
"name": "@octanejs/html-react-parser",
|
|
380
|
+
"version": "0.0.5",
|
|
381
|
+
"category": "Forms and content",
|
|
382
|
+
"upstream": {
|
|
383
|
+
"package": "html-react-parser",
|
|
384
|
+
"version": "6.1.7",
|
|
385
|
+
"source": "https://github.com/remarkablemark/html-react-parser/tree/v6.1.7",
|
|
386
|
+
"license": "MIT"
|
|
387
|
+
},
|
|
388
|
+
"surface": "Public runtime surface at html-react-parser 6.1.7: default parse, attributesToProps, domToReact, htmlToDOM, HTMLReactParserOptions, and re-exported domhandler node classes. library defaults to Octane createElement/cloneElement/isValidElement.",
|
|
389
|
+
"divergences": [
|
|
390
|
+
"Consumers import from @octanejs/html-react-parser instead of html-react-parser.",
|
|
391
|
+
"Default element library is Octane, not React.",
|
|
392
|
+
"PRESERVE_CUSTOM_ATTRIBUTES is hardcoded true because Octane matches React 16+ DOM attributes while octane.version is 0.x.",
|
|
393
|
+
"Public types use ElementDescriptor/OctaneNode instead of React JSX.Element/ReactNode.",
|
|
394
|
+
"Octane serializes style objects through CSSOM, so custom-element style attribute spelling can differ from React snapshots while the parsed style object stays identical."
|
|
395
|
+
],
|
|
396
|
+
"ssr": "Parsing is string-to-element-tree and is SSR-safe. Rendering the tree uses Octane server renderToStaticMarkup.",
|
|
397
|
+
"verified": "2026-08-20"
|
|
398
|
+
},
|
|
176
399
|
{
|
|
177
400
|
"name": "@octanejs/i18next",
|
|
178
|
-
"version": "0.1.
|
|
401
|
+
"version": "0.1.44",
|
|
179
402
|
"category": "Forms and content",
|
|
180
403
|
"upstream": { "package": "react-i18next", "version": "17.0.9" },
|
|
181
404
|
"surface": "Complete runtime port of react-i18next 17.0.9: useTranslation, I18nextProvider/context, Trans/TransWithoutContext, IcuTrans/IcuTransWithoutContext, Translation, the withTranslation/withSSR HOCs, useSSR, namespace reporting, initialization/default helpers, and the root ICU helper exports over the unchanged i18next core.",
|
|
@@ -186,34 +409,112 @@
|
|
|
186
409
|
"The React/Babel-specific `icu.macro` subpath is not shipped; the runtime IcuTrans APIs are fully supported."
|
|
187
410
|
],
|
|
188
411
|
"ssr": "Preloaded renderToString output and namespace collection are covered; useSSR, withSSR, getInitialProps, and composeInitialProps are ported. A dedicated hydration differential is still open.",
|
|
189
|
-
"verified": "2026-
|
|
412
|
+
"verified": "2026-08-02"
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"name": "@octanejs/image-crop",
|
|
416
|
+
"version": "0.0.5",
|
|
417
|
+
"category": "UI and interaction",
|
|
418
|
+
"upstream": {
|
|
419
|
+
"package": "react-image-crop",
|
|
420
|
+
"version": "11.1.2",
|
|
421
|
+
"commit": "2cd4d49b36ec9a29a63b27394ec29ade5646dc99"
|
|
422
|
+
},
|
|
423
|
+
"surface": "ReactCrop, default and Component aliases, crop types, aspect/centering/conversion/containment/nudge utilities, browser canvas/image helpers, pointer and keyboard crop interactions, selection addons, circular masks, rule-of-thirds overlays, and stylesheet compatibility exports.",
|
|
424
|
+
"divergences": [
|
|
425
|
+
"Event callbacks receive native DOM PointerEvent objects because Octane has no synthetic event layer.",
|
|
426
|
+
"The upstream Sass source compatibility path resolves to the precompiled CSS artifact."
|
|
427
|
+
],
|
|
428
|
+
"ssr": "ReactCrop renders its static wrapper, media child, mask, and selection markup without reading browser globals during render; crop interaction remains client-only.",
|
|
429
|
+
"verified": "2026-08-20"
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
"name": "@octanejs/inertia",
|
|
433
|
+
"version": "0.0.18",
|
|
434
|
+
"category": "AI, data, and routing",
|
|
435
|
+
"upstream": { "package": "@inertiajs/react", "version": "3.6.1" },
|
|
436
|
+
"surface": "Octane Inertia 3.6.1 adapter foundation: framework-neutral router, HTTP client, progress, and server exports reuse @inertiajs/core unchanged; page, remember, poll, prefetch, form-state, router-submit, direct-HTTP, precognition, and layout-property hooks are ported to Octane.",
|
|
437
|
+
"divergences": [
|
|
438
|
+
"React, ReactDOM, StrictMode, forwardRef, and synthetic events are not runtime dependencies; the Octane adapter uses Octane roots, refs-as-props, and native events."
|
|
439
|
+
],
|
|
440
|
+
"ssr": "The framework-neutral Inertia server entry is exposed. Hook initialization is request-local and covered in the server runtime; Octane page rendering and hydration are completed by the adapter SSR unit.",
|
|
441
|
+
"verified": "2026-07-30"
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
"name": "@octanejs/ink",
|
|
445
|
+
"version": "0.0.12",
|
|
446
|
+
"category": "Terminal UI",
|
|
447
|
+
"upstream": { "package": "ink", "version": "7.1.1" },
|
|
448
|
+
"surface": "Complete against Ink 7.1.1's published exports: terminal render roots, Yoga-backed Box and Text primitives, Static/Transform/Newline/Spacer, application and stream hooks, input/paste/focus/cursor/animation/window-size/metrics hooks, measurement helpers, DOM element types, and Kitty keyboard protocol helpers.",
|
|
449
|
+
"divergences": [
|
|
450
|
+
"Octane programmatic roots accept a component and props separately instead of a pre-created React element.",
|
|
451
|
+
"The concurrent render option remains accepted for source compatibility, but scheduling is owned by Octane rather than React Concurrent Mode.",
|
|
452
|
+
"Components are authored as .ink.tsrx and require @octanejs/ink's renderer configuration and JSX intrinsics."
|
|
453
|
+
],
|
|
454
|
+
"ssr": "Ink is a native terminal renderer. renderToString uses the same Octane universal host driver and Yoga/ANSI renderer without a terminal session.",
|
|
455
|
+
"verified": "2026-08-10"
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
"name": "@octanejs/input-otp",
|
|
459
|
+
"version": "0.0.15",
|
|
460
|
+
"category": "Forms and content",
|
|
461
|
+
"upstream": { "package": "input-otp", "version": "1.5.0" },
|
|
462
|
+
"surface": "Complete against input-otp@1.5.0: OTPInput, OTPInputContext, the three exported regexp patterns, public props and slot types including nonce, controlled and uncontrolled values, one-input accessibility and mobile-autofill markup, default spellcheck off, translation opt-out, render/context projection, keyboard selection and deletion, paste transformation, completion callbacks, overflow-aware password-manager displacement, SSR, and hydration.",
|
|
463
|
+
"divergences": [
|
|
464
|
+
"Octane's native per-edit `input` event drives the hidden text input internally; the public callback remains the source-compatible `onChange(newValue)`.",
|
|
465
|
+
"Refs are ordinary Octane ref props rather than React `forwardRef`; consumer ref behavior is unchanged."
|
|
466
|
+
],
|
|
467
|
+
"ssr": "Supported and tested — rendering is deterministic and browser-global-free; hydration adopts the server input and cleanup removes owned listeners, observers, timers, and styles.",
|
|
468
|
+
"verified": "2026-08-20"
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
"name": "@octanejs/intersection-observer",
|
|
472
|
+
"version": "0.0.15",
|
|
473
|
+
"category": "UI and interaction",
|
|
474
|
+
"upstream": {
|
|
475
|
+
"package": "react-intersection-observer",
|
|
476
|
+
"version": "10.1.0",
|
|
477
|
+
"source": "https://github.com/thebuilder/react-intersection-observer/tree/v10.1.0",
|
|
478
|
+
"license": "MIT"
|
|
479
|
+
},
|
|
480
|
+
"surface": "Public runtime surface at react-intersection-observer 10.1.0: useInView, useOnInView, InView, observe, defaultFallbackInView, and test utilities. Pinned upstream unit and browser suites plus one-for-one adapted runtime/type probes are registered with react-parity:check.",
|
|
481
|
+
"divergences": [
|
|
482
|
+
"Public node and prop types use Octane structural types and do not import React.",
|
|
483
|
+
"InView is implemented as a function component while preserving the upstream render-prop and wrapper behavior.",
|
|
484
|
+
"In TSRX, an InView render function must be supplied through the children prop; nested children compile to an opaque render block.",
|
|
485
|
+
"Unsupported false fallback (`fallbackInView={false}` / `defaultFallbackInView(false)`) does not emit `onChange(false)` on mount under Octane (`intersection-observer-initial-false-onchange`): treat the default hidden state as authoritative rather than waiting for that callback.",
|
|
486
|
+
"Unsupported IntersectionObserver without a fallback surfaces as a passive-effect `console.error` under Octane rather than a synchronous mount throw (`intersection-observer-unsupported-mount-error-surface`); wrap with an error boundary/`tryBlock` or supply `fallbackInView`/`defaultFallbackInView` instead of try/catch around render.",
|
|
487
|
+
"`@octanejs/intersection-observer/test-utils` does not auto-register Vitest/Jest beforeEach/afterEach (`intersection-observer-test-utils-manual-setup`); call `setupIntersectionMocking`/`resetIntersectionMocking` in the test setup file."
|
|
488
|
+
],
|
|
489
|
+
"ssr": "Supported. Observation begins in an effect; initialInView controls deterministic server output.",
|
|
490
|
+
"verified": "2026-07-30"
|
|
190
491
|
},
|
|
191
492
|
{
|
|
192
493
|
"name": "@octanejs/jotai",
|
|
193
|
-
"version": "0.1.
|
|
494
|
+
"version": "0.1.46",
|
|
194
495
|
"category": "Shared state",
|
|
195
496
|
"upstream": { "package": "jotai", "version": "2.20.2" },
|
|
196
497
|
"surface": "Complete 1:1 port: the framework-agnostic vanilla core (`jotai/vanilla`, `/vanilla/utils`, `/vanilla/internals`) is reused verbatim; the React layer (`Provider`, `useStore`, `useAtom`, `useAtomValue`, `useSetAtom`) and `react/utils` (`useResetAtom`, `useReducerAtom`, `useAtomCallback`, `useHydrateAtoms`) are ported onto octane hooks, preserving upstream's useReducer force-update + effect-subscription implementation, async atoms via octane's `use()`.",
|
|
197
|
-
"divergences": [
|
|
498
|
+
"divergences": [],
|
|
198
499
|
"ssr": "No SSR-specific surface; `useHydrateAtoms` is ported and usable for hydration seeding; no dedicated SSR tests.",
|
|
199
|
-
"verified": "2026-
|
|
500
|
+
"verified": "2026-08-02"
|
|
200
501
|
},
|
|
201
502
|
{
|
|
202
503
|
"name": "@octanejs/lexical",
|
|
203
|
-
"version": "0.1.
|
|
504
|
+
"version": "0.1.48",
|
|
204
505
|
"category": "Forms and content",
|
|
205
506
|
"upstream": { "package": "@lexical/react", "version": "0.46.0" },
|
|
206
|
-
"surface": "35
|
|
507
|
+
"surface": "The 35 legacy `@lexical/react` modules represented by this port cover composer + contexts, the editable surface, plain/rich text, the plugin/menu set, and the `useLexical*` hooks. The 0.46.0 extension subsystem, collaboration plugin, and tree view remain excluded as itemized in UPSTREAM.md.",
|
|
207
508
|
"divergences": [
|
|
208
509
|
"Positioning uses `@floating-ui/dom` instead of `@floating-ui/react`.",
|
|
209
|
-
"The class-based `LexicalErrorBoundary` becomes an
|
|
510
|
+
"The class-based `LexicalErrorBoundary` becomes an Octane error boundary; `forwardRef` becomes ref-as-prop."
|
|
210
511
|
],
|
|
211
512
|
"ssr": "No dedicated SSR/hydration tests.",
|
|
212
|
-
"verified": "2026-
|
|
513
|
+
"verified": "2026-08-02"
|
|
213
514
|
},
|
|
214
515
|
{
|
|
215
516
|
"name": "@octanejs/livestore",
|
|
216
|
-
"version": "0.0.
|
|
517
|
+
"version": "0.0.19",
|
|
217
518
|
"category": "AI, data, and routing",
|
|
218
519
|
"upstream": { "package": "@livestore/react", "version": "0.4.0" },
|
|
219
520
|
"surface": "Ports the complete stable renderer surface (registry provider/access, Suspense store loading and augmentation, reactive queries, client documents, and sync status) plus the exported experimental LiveList over LiveStore's unchanged 0.4.0 framework-neutral packages.",
|
|
@@ -227,7 +528,7 @@
|
|
|
227
528
|
},
|
|
228
529
|
{
|
|
229
530
|
"name": "@octanejs/lucide",
|
|
230
|
-
"version": "0.1.
|
|
531
|
+
"version": "0.1.44",
|
|
231
532
|
"category": "UI and interaction",
|
|
232
533
|
"upstream": { "package": "lucide-react", "version": "1.24.0" },
|
|
233
534
|
"surface": "Complete against the published `lucide-react@1.24.0` runtime surface: every canonical icon and alias, the `icons` namespace, `Icon`, `createLucideIcon`, `LucideProvider`, `useLucideContext`, `DynamicIcon`, `iconNames`, `dynamicIconImports`, and per-icon subpath imports.",
|
|
@@ -236,11 +537,11 @@
|
|
|
236
537
|
"Event callbacks receive native DOM events rather than React synthetic events."
|
|
237
538
|
],
|
|
238
539
|
"ssr": "Supported and tested: icons and provider defaults render through `octane/server`, and client hydration adopts the server-rendered SVG element.",
|
|
239
|
-
"verified": "2026-
|
|
540
|
+
"verified": "2026-08-02"
|
|
240
541
|
},
|
|
241
542
|
{
|
|
242
543
|
"name": "@octanejs/mantine-hooks",
|
|
243
|
-
"version": "0.1.
|
|
544
|
+
"version": "0.1.30",
|
|
244
545
|
"category": "UI and interaction",
|
|
245
546
|
"upstream": { "package": "@mantine/hooks", "version": "9.5.0" },
|
|
246
547
|
"surface": "Complete @mantine/hooks 9.5.0 runtime export surface: state, timing, storage, viewport, input, focus, pointer, observer, hotkey, scrolling, collapse, drag, splitter, mask, and utility hooks.",
|
|
@@ -250,11 +551,25 @@
|
|
|
250
551
|
"React is retained only as a source-compatibility type vocabulary for refs, events, actions, and CSS properties; it is not loaded at runtime."
|
|
251
552
|
],
|
|
252
553
|
"ssr": "Dedicated Node-mode coverage verifies deterministic state-hook output and guarded media-query initial values without a browser. DOM-only effects remain inert during server rendering.",
|
|
253
|
-
"verified": "2026-
|
|
554
|
+
"verified": "2026-08-02"
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
"name": "@octanejs/markdown",
|
|
558
|
+
"version": "0.0.15",
|
|
559
|
+
"category": "Forms and content",
|
|
560
|
+
"upstream": { "package": "react-markdown", "version": "10.1.0" },
|
|
561
|
+
"surface": "Complete react-markdown 10.1.0 root runtime and public type surface: Markdown, MarkdownAsync, MarkdownHooks, defaultUrlTransform, and all six exported type families.",
|
|
562
|
+
"divergences": [
|
|
563
|
+
"Rendered elements, component mappings, hooks, and public renderable types target Octane instead of React.",
|
|
564
|
+
"React 19 may emit automatic image preload hints during server rendering; Octane preserves the Markdown image output without that renderer-specific hint.",
|
|
565
|
+
"React's synchronous renderer throws when MarkdownAsync suspends; Octane's MarkdownAsync returns an awaitable ElementDescriptor."
|
|
566
|
+
],
|
|
567
|
+
"ssr": "Synchronous and awaited asynchronous Markdown are deterministic and browser-global-free; hydration adoption and updates are covered for default output, plugins, filtering, URLs, and component mappings. MarkdownHooks preserves its fallback and resolves on the client.",
|
|
568
|
+
"verified": "2026-08-02"
|
|
254
569
|
},
|
|
255
570
|
{
|
|
256
571
|
"name": "@octanejs/mdx",
|
|
257
|
-
"version": "0.1.
|
|
572
|
+
"version": "0.1.46",
|
|
258
573
|
"category": "Forms and content",
|
|
259
574
|
"upstream": { "package": "@mdx-js/mdx", "version": "3.1.1" },
|
|
260
575
|
"surface": "The full compile-don't-interpret pipeline: `.mdx`/`.md` → `@mdx-js/mdx` (reused verbatim) → octane compiler, via the `octaneMdx()` Vite plugin plus the `./compile` and `./server` entries; compiler warnings propagate through direct and Vite compile surfaces with authored `.mdx` ranges; `@mdx-js/react`'s provider layer (`MDXProvider`/`useMDXComponents`) is ported onto octane context. The octane website runs on it.",
|
|
@@ -266,7 +581,7 @@
|
|
|
266
581
|
},
|
|
267
582
|
{
|
|
268
583
|
"name": "@octanejs/mobx",
|
|
269
|
-
"version": "0.1.
|
|
584
|
+
"version": "0.1.30",
|
|
270
585
|
"category": "Shared state",
|
|
271
586
|
"upstream": { "package": "mobx-react-lite", "version": "4.1.1", "core": "mobx@6.16.1" },
|
|
272
587
|
"surface": "The framework-independent MobX core is re-exported verbatim. The function-component binding includes observer, Observer, useObserver, useLocalObservable, enableStaticRendering, isUsingStaticRendering, and the deprecated useStaticRendering alias.",
|
|
@@ -276,39 +591,90 @@
|
|
|
276
591
|
"React-specific batching, prop-types validation, React DevTools integration, and useDebugValue output are omitted."
|
|
277
592
|
],
|
|
278
593
|
"ssr": "enableStaticRendering(true) renders observed components without creating a Reaction or retaining observable subscriptions.",
|
|
279
|
-
"verified": "2026-
|
|
594
|
+
"verified": "2026-08-02"
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
"name": "@octanejs/monaco-editor",
|
|
598
|
+
"version": "0.0.17",
|
|
599
|
+
"category": "Forms and content",
|
|
600
|
+
"upstream": {
|
|
601
|
+
"package": "@monaco-editor/react",
|
|
602
|
+
"version": "4.7.0",
|
|
603
|
+
"commit": "eb120e66378471315620fe5339b73ba003f199ad"
|
|
604
|
+
},
|
|
605
|
+
"surface": "Editor (default), DiffEditor, loader, useMonaco, and the complete upstream 4.7.0 prop and callback type surface, including controlled values, model paths, languages, themes, options, view-state restoration, validation, and model ownership.",
|
|
606
|
+
"divergences": [
|
|
607
|
+
"Components are compiled Octane `.tsrx` modules and accept OctaneNode for loading content; they do not depend on React.",
|
|
608
|
+
"MonacoContainer uses Octane ref as an ordinary prop instead of upstream private _ref.",
|
|
609
|
+
"Model disposal is ownership-aware: binding-owned models are tracked in a WeakSet with lease counts in a WeakMap, so externally created or shared models are not disposed by the wrong owner; superseded owned path models are cleaned up on unmount.",
|
|
610
|
+
"View state is stored in a WeakMap keyed by model identity rather than upstream path-string Map.",
|
|
611
|
+
"CSS style modules use plain records instead of React CSSProperties."
|
|
612
|
+
],
|
|
613
|
+
"ssr": "Editor and DiffEditor render a deterministic loading shell without touching browser globals; live Monaco construction begins in a client effect. Hydration adopts server DOM (section, slot nodes) and reaches a ready editor without mismatch warnings.",
|
|
614
|
+
"verified": "2026-08-10"
|
|
280
615
|
},
|
|
281
616
|
{
|
|
282
617
|
"name": "@octanejs/motion",
|
|
283
|
-
"version": "0.1.
|
|
618
|
+
"version": "0.1.48",
|
|
284
619
|
"category": "UI and interaction",
|
|
285
620
|
"upstream": { "package": "motion", "version": "12.42.2" },
|
|
286
|
-
"surface": "Core surface: `motion.<tag>` (animate, gestures, variants with propagation/stagger, drag, layout basics), `AnimatePresence`, `MotionConfig`, and the motion-value hooks (`useMotionValue`, `useScroll`, `useTransform`, `useSpring`, `useAnimate`, `useMotionValueEvent`); motion-dom's animation engine and gesture primitives are reused verbatim.",
|
|
621
|
+
"surface": "Core surface: `motion.<tag>` (animate, gestures, variants with propagation/stagger, drag, layout basics), `AnimatePresence`, `MotionConfig`, live `useReducedMotion`, reduced-motion enforcement, `LayoutGroup` layoutId namespaces, `LazyMotion` with `domAnimation`/`domMax`, the `m` proxy and complete `./react-m` named host entry, plus the motion-value hooks (`useMotionValue`, `useScroll`, `useTransform`, `useSpring`, `useAnimate`, `useMotionValueEvent`); motion-dom's animation engine and gesture primitives are reused verbatim.",
|
|
287
622
|
"divergences": [
|
|
288
623
|
"Exit animations run via cleanup-before-detach instead of React's deferred-deletion machinery.",
|
|
289
|
-
"`layout`/`layoutId` use single-element FLIP, not the full projection tree."
|
|
624
|
+
"`layout`/`layoutId` use single-element FLIP, not the full projection tree.",
|
|
625
|
+
"An `initial` target without an `animate` target does not materialize inline initial styles; set the starting style explicitly or provide an animation target."
|
|
290
626
|
],
|
|
291
627
|
"ssr": "No SSR-specific surface; no dedicated SSR tests.",
|
|
292
|
-
"verified": "2026-
|
|
628
|
+
"verified": "2026-08-02"
|
|
293
629
|
},
|
|
294
630
|
{
|
|
295
631
|
"name": "@octanejs/nuqs",
|
|
296
|
-
"version": "0.1.
|
|
632
|
+
"version": "0.1.38",
|
|
297
633
|
"category": "AI, data, and routing",
|
|
298
634
|
"upstream": { "package": "nuqs", "version": "2.9.1" },
|
|
299
635
|
"surface": "Full vendored port: the framework-agnostic core (`parsers`/`parseAs*`/`createParser`, `createSerializer`, `createLoader`, `createStandardSchemaV1`, the throttle/debounce update queues, sync emitter and URL encoding) is vendored verbatim from nuqs 2.9.1; the React layer (`useQueryState`, `useQueryStates`, the `useSyncExternalStores` helper and the adapter context) is ported onto octane's hooks — same `useState`/`useEffect`/`useSyncExternalStore` implementation shape as upstream, so re-render and URL-reconciliation behaviour matches nuqs on React. Adapters ported: `@octanejs/nuqs/adapters/react` (`NuqsAdapter`, `enableHistorySync`), `/adapters/custom` (`unstable_createAdapterProvider`), `/adapters/testing` (`NuqsTestingAdapter`, `withNuqsTestingAdapter`). Server surface (`@octanejs/nuqs/server`) exposes `createLoader`/`createSerializer`/parsers/`createStandardSchemaV1`.",
|
|
300
636
|
"divergences": [
|
|
301
|
-
"
|
|
302
|
-
"
|
|
303
|
-
"
|
|
304
|
-
"
|
|
637
|
+
"Router-specific React adapters are not shipped; use the standalone or custom adapter.",
|
|
638
|
+
"createSearchParamsCache is unavailable because Octane does not implement React.cache.",
|
|
639
|
+
"TransitionStartFunction is declared locally instead of importing React types.",
|
|
640
|
+
"NuqsTestingAdapter resets the shared update queue once per mount instead of every render."
|
|
305
641
|
],
|
|
306
|
-
"ssr": "The server entry
|
|
307
|
-
"verified": "2026-
|
|
642
|
+
"ssr": "The react-free server entry has a dedicated Node lane for parsing and serialising search params. Client hydration remains outside the supported evidence claim.",
|
|
643
|
+
"verified": "2026-08-02"
|
|
644
|
+
},
|
|
645
|
+
{
|
|
646
|
+
"name": "@octanejs/opentui",
|
|
647
|
+
"version": "0.0.4",
|
|
648
|
+
"category": "Terminal",
|
|
649
|
+
"upstream": { "package": "@opentui/react", "version": "0.5.8" },
|
|
650
|
+
"surface": "Technical-preview OpenTUI 0.5.8 renderer: renderer-local TSRX intrinsics for the complete built-in catalogue and text modifiers, custom `extend()` renderables, component-plus-props roots, OpenTUI prop/style/event application, refs and retained visibility, same-renderer `RootRenderable` portals, terminal error fallback, `act`/`flushSync`, all public hooks, `TimeToFirstDraw`, the core slot/plugin registry adapted to universal renderables, and an FFI-backed test utility. Native behavioral coverage exercises terminal frames, state and prop updates, host identity, keyboard and resize hooks, multi-argument select callbacks, subscription cleanup, portals, slots, errors, and teardown under Bun.",
|
|
651
|
+
"divergences": [
|
|
652
|
+
"Octane owns reconciliation, components, hooks, context, scheduling, errors, refs, and effects instead of embedding React Reconciler.",
|
|
653
|
+
"Components are authored in `.opentui.tsrx`; the package does not export React `createElement` or accept React element trees. Programmatic roots render an Octane component plus props.",
|
|
654
|
+
"Refs are ordinary Octane props and may be composed with `ref={[a, b]}`; there is no `forwardRef` layer.",
|
|
655
|
+
"Slot plugins return universal renderables and plugin errors use source `octane` instead of `react`. `createReactSlotRegistry` and the upstream `React*` type names remain migration aliases for the canonical Octane-named API.",
|
|
656
|
+
"React DevTools and OpenTUI's React runtime-plugin bundling subpaths are not ported. Applications configure the Octane compiler with `opentuiRenderers`.",
|
|
657
|
+
"Portal targets are explicitly limited to borrowed `RootRenderable` instances from the same `CliRenderer` context and are never destroyed by the binding."
|
|
658
|
+
],
|
|
659
|
+
"ssr": "Unsupported. OpenTUI is a native terminal renderer; `.opentui.tsrx` modules are rejected from server graphs and have no HTML hydration contract.",
|
|
660
|
+
"verified": "2026-08-25"
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
"name": "@octanejs/pdf",
|
|
664
|
+
"version": "0.0.15",
|
|
665
|
+
"category": "Forms and content",
|
|
666
|
+
"upstream": { "package": "react-pdf", "version": "10.4.1" },
|
|
667
|
+
"surface": "Complete against the documented react-pdf 10.4.1 root contract: Document, Page, Thumbnail, Outline, all three context hooks, PasswordResponses, pdfjs, all ten root types, both documented layer styles, and the unchanged PDF.js worker import.",
|
|
668
|
+
"divergences": [
|
|
669
|
+
"React nodes, refs, DOM events, and CSS property types are represented by Octane nodes, refs-as-props, native DOM events, and Octane class/style values while preserving observable behavior.",
|
|
670
|
+
"The permissive upstream ./* export exposes React implementation and source artifacts; these are pinned framework-private evidence rather than supported Octane entry points. Root imports and the two documented CSS paths are exact public support."
|
|
671
|
+
],
|
|
672
|
+
"ssr": "Document renders deterministic loading, no-data, and error shells without browser globals or workers. The browser build adopts the server shell before starting PDF.js and uses the modern worker-backed build; Node resolves the legacy PDF.js build.",
|
|
673
|
+
"verified": "2026-08-04"
|
|
308
674
|
},
|
|
309
675
|
{
|
|
310
676
|
"name": "@octanejs/phosphor-icons",
|
|
311
|
-
"version": "0.0.
|
|
677
|
+
"version": "0.0.29",
|
|
312
678
|
"category": "UI and interaction",
|
|
313
679
|
"upstream": { "package": "@phosphor-icons/react", "version": "2.1.10" },
|
|
314
680
|
"surface": "All 1,512 canonical icons from @phosphor-icons/core@2.1.1, including the upstream deprecated Icon-suffixed aliases, six weights, IconContext, IconBase, root exports, and per-icon imports.",
|
|
@@ -318,24 +684,37 @@
|
|
|
318
684
|
"The React package's SSR namespace is unnecessary because Octane icons use the same components on client and server."
|
|
319
685
|
],
|
|
320
686
|
"ssr": "Supported and tested against @phosphor-icons/react/ssr for every weight; hydration adopts and updates server-rendered SVG hosts.",
|
|
321
|
-
"verified": "2026-
|
|
687
|
+
"verified": "2026-08-02"
|
|
688
|
+
},
|
|
689
|
+
{
|
|
690
|
+
"name": "@octanejs/popper",
|
|
691
|
+
"version": "0.0.15",
|
|
692
|
+
"category": "UI and interaction",
|
|
693
|
+
"upstream": { "package": "react-popper", "version": "2.3.0" },
|
|
694
|
+
"surface": "Complete against the published react-popper 2.3.0 root runtime and type surface: Manager, Reference, Popper, usePopper, render-function refs and styles, explicit and virtual references, arrows, hide data, lifecycle actions, Popper modifiers, and all public types.",
|
|
695
|
+
"divergences": [
|
|
696
|
+
"React component classes are Octane function components; React node, ref, and CSS property types are represented by OctaneNode and native structural equivalents while preserving observable render-function values.",
|
|
697
|
+
"Development misuse warnings are emitted directly through console.error instead of React Popper's warning helper."
|
|
698
|
+
],
|
|
699
|
+
"ssr": "Manager, Reference, and Popper render deterministic initial markup without browser globals, adopt server nodes during hydration, then create and clean up the Popper instance after client refs attach.",
|
|
700
|
+
"verified": "2026-08-03"
|
|
322
701
|
},
|
|
323
702
|
{
|
|
324
703
|
"name": "@octanejs/radix",
|
|
325
|
-
"version": "0.1.
|
|
704
|
+
"version": "0.1.48",
|
|
326
705
|
"category": "UI and interaction",
|
|
327
706
|
"upstream": { "package": "radix-ui", "version": "1.6.4" },
|
|
328
|
-
"surface": "
|
|
707
|
+
"surface": "Surface-present against the unified `radix-ui@1.6.4` component exports. Sixteen repo-authored differential cases compare representative primitives and interactions against the real package; the complete 38-file canonical upstream suite is preserved but not adapted, so the binding remains recorded-unverified.",
|
|
329
708
|
"divergences": [
|
|
330
709
|
"`Slot`/`asChild` compose element descriptors (prop-position JSX, `createElement`, `.map()` returns), not children-position JSX.",
|
|
331
710
|
"`forwardRef` becomes octane's ref-as-prop."
|
|
332
711
|
],
|
|
333
712
|
"ssr": "SSR/hydration coverage for the overlay/portal components is still open (tracked in the migration plan).",
|
|
334
|
-
"verified": "2026-
|
|
713
|
+
"verified": "2026-08-03"
|
|
335
714
|
},
|
|
336
715
|
{
|
|
337
716
|
"name": "@octanejs/rainbowkit",
|
|
338
|
-
"version": "0.0.
|
|
717
|
+
"version": "0.0.29",
|
|
339
718
|
"category": "Web3",
|
|
340
719
|
"upstream": { "package": "@rainbow-me/rainbowkit", "version": "2.2.11" },
|
|
341
720
|
"surface": "Octane-native RainbowKitProvider, ConnectButton and ConnectButton.Custom, WalletButton, connect/account/chain modal hooks, connector selection, account/chain actions, native accessible dialogs, and light/dark/midnight themes.",
|
|
@@ -347,11 +726,11 @@
|
|
|
347
726
|
"rainbowTheme is an explicitly documented Octane-only purple/rounded preset; it is not an upstream RainbowKit export."
|
|
348
727
|
],
|
|
349
728
|
"ssr": "The provider and controls emit deterministic disconnected markup without browser wallet access. Connector discovery and live Wagmi state become authoritative after hydration; no hydrated UI state authorizes wallet actions.",
|
|
350
|
-
"verified": "2026-
|
|
729
|
+
"verified": "2026-08-02"
|
|
351
730
|
},
|
|
352
731
|
{
|
|
353
732
|
"name": "@octanejs/react-error-boundary",
|
|
354
|
-
"version": "0.1.
|
|
733
|
+
"version": "0.1.30",
|
|
355
734
|
"category": "UI and interaction",
|
|
356
735
|
"upstream": { "package": "react-error-boundary", "version": "6.1.2" },
|
|
357
736
|
"surface": "Complete against the published react-error-boundary 6.1.2 function/type surface adapted to Octane: ErrorBoundary, ErrorBoundaryContext, getErrorMessage, fallback variants, onError/onReset callbacks, resetKeys, useErrorBoundary (including error), withErrorBoundary, OnErrorCallback, and UseErrorBoundaryApi.",
|
|
@@ -361,11 +740,11 @@
|
|
|
361
740
|
"Server rendering that must match upstream error propagation uses the explicit @octanejs/react-error-boundary/server entry."
|
|
362
741
|
],
|
|
363
742
|
"ssr": "The explicit server entry renders children without a boundary so descendant errors propagate, matching react-error-boundary 6.1.2.",
|
|
364
|
-
"verified": "2026-
|
|
743
|
+
"verified": "2026-08-02"
|
|
365
744
|
},
|
|
366
745
|
{
|
|
367
746
|
"name": "@octanejs/react-map-gl",
|
|
368
|
-
"version": "0.0.
|
|
747
|
+
"version": "0.0.21",
|
|
369
748
|
"category": "Data-heavy screens",
|
|
370
749
|
"upstream": { "package": "@vis.gl/react-mapbox", "version": "8.1.2 (b1e46fcf)" },
|
|
371
750
|
"surface": "Complete against the pinned @vis.gl/react-mapbox 8.1.2 public surface — the package react-map-gl/mapbox re-exports: Map (and default), Marker, Popup, Source, Layer, AttributionControl, FullscreenControl, GeolocateControl, NavigationControl, ScaleControl, useControl, MapProvider, useMap, and every published type. The framework-neutral half of upstream (the Mapbox engine, proxy transform, map ref, and six utils) is reused byte-for-byte and validated by upstream's own specs run against both source trees.",
|
|
@@ -381,7 +760,7 @@
|
|
|
381
760
|
},
|
|
382
761
|
{
|
|
383
762
|
"name": "@octanejs/recharts",
|
|
384
|
-
"version": "0.1.
|
|
763
|
+
"version": "0.1.46",
|
|
385
764
|
"category": "Data-heavy screens",
|
|
386
765
|
"upstream": { "package": "recharts", "version": "3.9.2" },
|
|
387
766
|
"surface": "Broad runtime support across cartesian, polar, hierarchical, tooltip, legend, responsive-container, shape, and chart-state surfaces. `Brush` and `Treemap` remain intentionally unsupported.",
|
|
@@ -389,24 +768,25 @@
|
|
|
389
768
|
"Chart events coordinate through octane's native delegated events rather than React's synthetic layer."
|
|
390
769
|
],
|
|
391
770
|
"ssr": "Untested; text measurement (`getStringSize`) returns 0×0 under SSR.",
|
|
392
|
-
"verified": "2026-
|
|
771
|
+
"verified": "2026-08-02"
|
|
393
772
|
},
|
|
394
773
|
{
|
|
395
774
|
"name": "@octanejs/redux",
|
|
396
|
-
"version": "0.1.
|
|
775
|
+
"version": "0.1.46",
|
|
397
776
|
"category": "Shared state",
|
|
398
777
|
"upstream": { "package": "react-redux", "version": "9.3.0" },
|
|
399
|
-
"surface": "The hooks + `Provider` surface of react-redux 9.3.0 (`useSelector`, `useDispatch`, `useStore`, and the custom-context factory variants) on octane's `useSyncExternalStore`; works with any Redux 5 / Redux Toolkit store.
|
|
778
|
+
"surface": "The hooks + `Provider` surface of react-redux 9.3.0 (`useSelector`, `useDispatch`, `useStore`, and the custom-context factory variants) on octane's `useSyncExternalStore`; works with any Redux 5 / Redux Toolkit store. Upstream runtime-export completeness is pinned by test.",
|
|
400
779
|
"divergences": [
|
|
401
780
|
"`connect()` (the legacy HOC surface) intentionally throws — the hooks API is the supported surface.",
|
|
402
|
-
"Error messages are octane-branded."
|
|
781
|
+
"Error messages are octane-branded.",
|
|
782
|
+
"The root also exposes createReduxContextHook, useReduxContext, createSubscription, and useSyncExternalStoreWithSelector as Octane extension exports."
|
|
403
783
|
],
|
|
404
784
|
"ssr": "No SSR-specific surface; no dedicated SSR tests.",
|
|
405
|
-
"verified": "2026-
|
|
785
|
+
"verified": "2026-08-02"
|
|
406
786
|
},
|
|
407
787
|
{
|
|
408
788
|
"name": "@octanejs/redux-toolkit",
|
|
409
|
-
"version": "0.1.
|
|
789
|
+
"version": "0.1.44",
|
|
410
790
|
"category": "Shared state",
|
|
411
791
|
"upstream": { "package": "@reduxjs/toolkit", "version": "2.12.0" },
|
|
412
792
|
"surface": "Complete four-entry-point port: the framework-agnostic Toolkit and RTK Query core are re-exported verbatim; `/query/react` provides generated query, lazy-query, mutation, infinite-query, prefetch hooks and `ApiProvider`; `/react` provides the dynamic-middleware dispatch-hook integration.",
|
|
@@ -415,14 +795,14 @@
|
|
|
415
795
|
"`useDebugValue` is octane's no-op compatibility hook; observable query behavior is unchanged."
|
|
416
796
|
],
|
|
417
797
|
"ssr": "Preloaded RTK Query state renders through the traditional @octanejs/redux Provider; effects and browser listeners remain client-only. Dedicated SSR and hydration tests are included.",
|
|
418
|
-
"verified": "2026-
|
|
798
|
+
"verified": "2026-08-02"
|
|
419
799
|
},
|
|
420
800
|
{
|
|
421
801
|
"name": "@octanejs/remix-router",
|
|
422
|
-
"version": "0.1.
|
|
802
|
+
"version": "0.1.45",
|
|
423
803
|
"category": "AI, data, and routing",
|
|
424
804
|
"upstream": { "package": "react-router", "version": "8.2.0" },
|
|
425
|
-
"surface": "
|
|
805
|
+
"surface": "All planned port phases are shipped and the pinned runtime export namespace is complete: the framework-agnostic router core, data/declarative/DOM/mutation/guard layers, static SSR, and cookie/session runtime are implemented on Octane. Framework-mode and RSC names remain throwing scope stubs. Selected vendored-core suites, local conformance, and nine exact shared-fixture scenarios provide bounded evidence rather than exhaustive React parity.",
|
|
426
806
|
"divergences": [
|
|
427
807
|
"Refs are props (octane has no forwardRef) — Link's forwardRef becomes a `ref` prop.",
|
|
428
808
|
"Error-boundary reset on location change / revalidation-idle happens in a layout effect one commit after upstream's render-phase derivation — same observable outcome.",
|
|
@@ -431,11 +811,23 @@
|
|
|
431
811
|
"Block-children `<Routes>` collects `<Route>`s by registration (mount order) instead of upstream's element-children walk (source order) — a conditionally-mounted `<Route>` between static siblings registers after them, which only affects matchRoutes score TIES; conformance-pinned."
|
|
432
812
|
],
|
|
433
813
|
"ssr": "Shipped: StaticRouter/StaticRouterProvider/createStaticHandler/createStaticRouter render through octane/server (remix-router-ssr vitest project compiles the whole graph in server mode; markup matches react-dom/server byte-for-byte after framework-marker stripping). Block-children <Routes> is CLIENT-only (the registration collector runs in layout effects) — use descriptor children or route objects for SSR.",
|
|
434
|
-
"verified": "2026-
|
|
814
|
+
"verified": "2026-08-02"
|
|
815
|
+
},
|
|
816
|
+
{
|
|
817
|
+
"name": "@octanejs/resizable-panels",
|
|
818
|
+
"version": "0.0.7",
|
|
819
|
+
"category": "UI and interaction",
|
|
820
|
+
"upstream": { "package": "react-resizable-panels", "version": "4.12.2" },
|
|
821
|
+
"surface": "Group, Panel, Separator, persistence hooks, refs, imperative APIs, layout constraints, pointer and keyboard interaction, ARIA, cursor handling, and ResizeObserver behavior are implemented against react-resizable-panels 4.12.2.",
|
|
822
|
+
"divergences": [
|
|
823
|
+
"useId(undefined) fallback cannot reproduce React's mocked ':r123:' seam; adapted upstream case asserts a non-empty Octane id and is recorded as react-resizable-panels-useId-fallback."
|
|
824
|
+
],
|
|
825
|
+
"ssr": "Deterministic server rendering and live hydration adoption are covered by dedicated executable projects.",
|
|
826
|
+
"verified": "2026-08-02"
|
|
435
827
|
},
|
|
436
828
|
{
|
|
437
829
|
"name": "@octanejs/rxjs",
|
|
438
|
-
"version": "0.1.
|
|
830
|
+
"version": "0.1.28",
|
|
439
831
|
"category": "Shared state",
|
|
440
832
|
"upstream": {
|
|
441
833
|
"package": "@react-rxjs/core + @react-rxjs/utils",
|
|
@@ -447,11 +839,11 @@
|
|
|
447
839
|
"@react-rxjs/dom is omitted because octane batches updates without ReactDOM.unstable_batchedUpdates."
|
|
448
840
|
],
|
|
449
841
|
"ssr": "useSyncExternalStore supplies the state snapshot during server rendering; browser-only ReactDOM batching helpers are intentionally absent.",
|
|
450
|
-
"verified": "2026-
|
|
842
|
+
"verified": "2026-08-02"
|
|
451
843
|
},
|
|
452
844
|
{
|
|
453
845
|
"name": "@octanejs/shadcn",
|
|
454
|
-
"version": "0.0.
|
|
846
|
+
"version": "0.0.34",
|
|
455
847
|
"category": "UI and interaction",
|
|
456
848
|
"upstream": {
|
|
457
849
|
"package": "shadcn-ui/ui (radix base)",
|
|
@@ -476,9 +868,30 @@
|
|
|
476
868
|
"ssr": "Tier 1 is fully server-rendered and tested (17 families through renderToString with no browser globals, including Slot-composed hosts), with hydration adoption pinned for representative shapes (plain host, Button-asChild anchor, nested Table) — zero mismatch, preserved node identity. Tier 2's portal-free components (Checkbox, RadioGroup, Switch, Slider, Tabs, Toggle, ToggleGroup, Accordion, Collapsible, AspectRatio, Progress) are server-rendered and tested. Field is SSR-safe (no portals/browser globals); Sidebar server-renders its static desktop branch (useIsMobile is false on the server; the mobile Sheet branch and tooltip portals are client-only). Portal-backed overlays/menus/Select are excluded until the radix binding supports overlay SSR; ScrollArea awaits verification of its viewport style injection on the server.",
|
|
477
869
|
"verified": "2026-08-02"
|
|
478
870
|
},
|
|
871
|
+
{
|
|
872
|
+
"name": "@octanejs/solana-kit",
|
|
873
|
+
"version": "0.0.18",
|
|
874
|
+
"category": "Web3",
|
|
875
|
+
"upstream": {
|
|
876
|
+
"package": "@solana/react",
|
|
877
|
+
"version": "7.0.0",
|
|
878
|
+
"source": "https://github.com/anza-xyz/kit",
|
|
879
|
+
"license": "MIT"
|
|
880
|
+
},
|
|
881
|
+
"surface": "Octane-native client provider/store hooks, a validated private Wallet Standard adapter, explicit-action transaction orchestration, and a TanStack Query-backed request hook. Applications import framework-neutral operations directly from @solana/kit@7.0.0.",
|
|
882
|
+
"divergences": [
|
|
883
|
+
"@solana/react/swr is excluded because Octane has no SWR binding.",
|
|
884
|
+
"Wallet APIs are deliberately structural and narrower because upstream selected-wallet exports leak React and @wallet-standard/react public types.",
|
|
885
|
+
"useSubscriptionQuery and useTrackedDataQuery are deferred pending streamed-query lifecycle characterization.",
|
|
886
|
+
"Upstream sign-in/message/transaction hooks are represented by a generation-safe explicit transaction executor rather than hidden React runtime code.",
|
|
887
|
+
"ClientProvider accepts only a resolved client; thenables throw at mount rather than suspending."
|
|
888
|
+
],
|
|
889
|
+
"ssr": "Client state is server-readable. Wallet discovery is inert during SSR and activates only when a browser registry is explicitly attached after hydration.",
|
|
890
|
+
"verified": "2026-07-29"
|
|
891
|
+
},
|
|
479
892
|
{
|
|
480
893
|
"name": "@octanejs/sonner",
|
|
481
|
-
"version": "0.1.
|
|
894
|
+
"version": "0.1.44",
|
|
482
895
|
"category": "UI and interaction",
|
|
483
896
|
"upstream": { "package": "sonner", "version": "2.0.7" },
|
|
484
897
|
"surface": "Complete against the published `sonner@2.0.7` public surface: `Toaster`, the callable `toast` API and all methods, `useSonner`, promise lifecycle, multiple toaster targeting, stacked layout, themes, styling, focus management, timers, and swipe dismissal.",
|
|
@@ -488,24 +901,59 @@
|
|
|
488
901
|
"The document-visibility hook is guarded during SSR; upstream 2.0.7 reads `document.hidden` during render."
|
|
489
902
|
],
|
|
490
903
|
"ssr": "Supported and tested: `Toaster` server-renders without browser globals, hydrates by adopting the server host, and can show the first client-created toast without replacing it.",
|
|
491
|
-
"verified": "2026-
|
|
904
|
+
"verified": "2026-08-02"
|
|
905
|
+
},
|
|
906
|
+
{
|
|
907
|
+
"name": "@octanejs/spring",
|
|
908
|
+
"version": "0.0.15",
|
|
909
|
+
"category": "UI and interaction",
|
|
910
|
+
"upstream": { "package": "@react-spring/web", "version": "10.1.2" },
|
|
911
|
+
"surface": "Stable React Spring web target at the package root and Parallax through the ./parallax subpath. The port provides spring values, controllers, interpolation, Octane hooks and render-prop components, animated DOM hosts, browser observers, SSR-safe initial rendering, and Parallax scrolling.",
|
|
912
|
+
"divergences": [
|
|
913
|
+
"React renderables and refs are represented by Octane renderables and refs-as-props.",
|
|
914
|
+
"The all-renderer react-spring meta-package is intentionally not mapped."
|
|
915
|
+
],
|
|
916
|
+
"ssr": "Initial and immediate values render on the server; browser observers and frame work start after client commit.",
|
|
917
|
+
"verified": "2026-08-02"
|
|
918
|
+
},
|
|
919
|
+
{
|
|
920
|
+
"name": "@octanejs/stick-to-bottom",
|
|
921
|
+
"version": "0.0.5",
|
|
922
|
+
"category": "UI and interaction",
|
|
923
|
+
"upstream": {
|
|
924
|
+
"package": "use-stick-to-bottom",
|
|
925
|
+
"version": "1.1.6",
|
|
926
|
+
"source": "https://github.com/stackblitz/use-stick-to-bottom/tree/8d6a19a0ca6ab632830588073e6a29312a06a088",
|
|
927
|
+
"license": "MIT"
|
|
928
|
+
},
|
|
929
|
+
"surface": "Public runtime surface at use-stick-to-bottom 1.1.6: useStickToBottom, StickToBottom, StickToBottom.Content, useStickToBottomContext, and related types.",
|
|
930
|
+
"divergences": [
|
|
931
|
+
"Consumers import from @octanejs/stick-to-bottom instead of use-stick-to-bottom.",
|
|
932
|
+
"Ref objects are structural { current } / callback refs rather than React.RefObject.",
|
|
933
|
+
"The plain TypeScript useStickToBottom hook forwards compiler-injected slots; a symbol in the options position is treated as empty options."
|
|
934
|
+
],
|
|
935
|
+
"ssr": "Scroll/resize listeners attach in ref callbacks. Initial isAtBottom follows options.initial. Overflow auto is applied in a layout/effect.",
|
|
936
|
+
"verified": "2026-08-20"
|
|
492
937
|
},
|
|
493
938
|
{
|
|
494
939
|
"name": "@octanejs/streamdown",
|
|
495
|
-
"version": "0.1.
|
|
940
|
+
"version": "0.1.28",
|
|
496
941
|
"category": "Forms and content",
|
|
497
942
|
"upstream": { "package": "streamdown", "version": "2.5.0" },
|
|
498
943
|
"surface": "Complete Streamdown 2.5.0 root runtime and public type surface, plus the official code 1.1.1, math 1.0.2, Mermaid 1.0.2, and CJK 1.0.3 plugins exposed through ./code, ./math, ./mermaid, and ./cjk.",
|
|
499
944
|
"divergences": [
|
|
500
945
|
"Components, hooks, contexts, lazy boundaries, portals, element inspection, and the HAST JSX runtime target Octane; callbacks receive native DOM events instead of React synthetic events.",
|
|
501
|
-
"The four official plugins are consolidated as subpath exports of @octanejs/streamdown instead of separate packages."
|
|
946
|
+
"The four official plugins are consolidated as subpath exports of @octanejs/streamdown instead of separate packages.",
|
|
947
|
+
"Animation progress is isolated per streaming block instead of sharing upstream 2.5.0's sibling progress, so new sibling text receives its own duration and delay.",
|
|
948
|
+
"Code-block background arbitrary-value classes have balanced parentheses instead of the malformed class strings published by upstream 2.5.0.",
|
|
949
|
+
"Built-in icon size props set SVG width and height; upstream 2.5.0 leaves the size attribute inert and renders the default 16x16 dimensions."
|
|
502
950
|
],
|
|
503
951
|
"ssr": "Static and streaming Markdown, custom components, code blocks, math markup, and hydration are covered by dedicated server and hydration tests. Browser-only controls and deferred Mermaid rendering remain inert until mounted.",
|
|
504
|
-
"verified": "2026-
|
|
952
|
+
"verified": "2026-08-02"
|
|
505
953
|
},
|
|
506
954
|
{
|
|
507
955
|
"name": "@octanejs/styled-components",
|
|
508
|
-
"version": "0.1.
|
|
956
|
+
"version": "0.1.41",
|
|
509
957
|
"category": "Styling, tests, and devtools",
|
|
510
958
|
"upstream": { "package": "styled-components", "version": "6.4.3" },
|
|
511
959
|
"surface": "Full v6 web API, ported from the upstream 6.4.3 sources: `styled` with every HTML/SVG tag shortcut, `.attrs`/`.withConfig` chaining, `css`, `keyframes`, `createGlobalStyle`, `createTheme`, `ThemeProvider`/`ThemeContext`/`ThemeConsumer`/`useTheme`/`withTheme`, `StyleSheetManager`/`StyleSheetContext`/`StyleSheetConsumer` (targets, namespaces, vendor prefixing, stylis plugins, `shouldForwardProp`), `ServerStyleSheet`, `isStyledComponent`, `version`, and `__PRIVATE__`. Component selectors, folding (`styled(Styled)`), transient `$` props, `as`/`forwardedAs`, and the grouped CSSOM sheet engine (with upstream `data-styled` rehydration) all behave as upstream. The React Native surface and the RSC-only `stylisPluginRSC` are not ported.",
|
|
@@ -520,11 +968,11 @@
|
|
|
520
968
|
"Interpolation-position styled components are recognized by an octane brand symbol rather than React's forward-ref `$$typeof` (octane styled components are plain functions)."
|
|
521
969
|
],
|
|
522
970
|
"ssr": "Supported and tested: zero-config collection into `RenderResult.css` via octane's `injectStyle` channel (styled rules, keyframes, and globals, with content-derived immutable chunk ids that make streaming dedup sound), repeat-render and dynamic-global request isolation through a stateless server output backend, hydration adoption of server chunks (removed after adoption, no duplicate rules), and the `ServerStyleSheet` compat surface.",
|
|
523
|
-
"verified": "2026-
|
|
971
|
+
"verified": "2026-08-02"
|
|
524
972
|
},
|
|
525
973
|
{
|
|
526
974
|
"name": "@octanejs/stylex",
|
|
527
|
-
"version": "0.1.
|
|
975
|
+
"version": "0.1.48",
|
|
528
976
|
"category": "Styling, tests, and devtools",
|
|
529
977
|
"upstream": { "package": "@stylexjs/stylex", "version": "0.19.0" },
|
|
530
978
|
"surface": "Full compile-time integration: re-exports the StyleX runtime API (`create`, `props`, `attrs`, `keyframes`, `defineVars`, `createTheme`) and registers as an import source; the `/vite` plugin runs the StyleX compiler over octane's compiled output and emits one static atomic stylesheet (`virtual:stylex.css`) with zero StyleX runtime in the bundle.",
|
|
@@ -535,9 +983,35 @@
|
|
|
535
983
|
"ssr": "Works under SSR — the stylesheet is static and server markup carries the final class names; no dedicated SSR test files.",
|
|
536
984
|
"verified": "2026-07-09"
|
|
537
985
|
},
|
|
986
|
+
{
|
|
987
|
+
"name": "@octanejs/swr",
|
|
988
|
+
"version": "0.0.15",
|
|
989
|
+
"category": "AI, data, and routing",
|
|
990
|
+
"upstream": { "package": "swr", "version": "2.4.2" },
|
|
991
|
+
"surface": "Mapped port of SWR 2.4.2: root useSWR/config/cache/mutate/preload, infinite, immutable, remote mutation, subscription, _internal, and the published react-server condition branches. The harness executes the pinned pristine React suite plus selected adapted Octane cases, repo-authored adapted type probes, and differential/export oracles. Provenance remains recorded-unverified until the exhaustive adapted crosswalk lands.",
|
|
992
|
+
"divergences": [
|
|
993
|
+
"The binding exposes window.__SWR_DEVTOOLS_OCTANE__ and deliberately does not claim React's window.__SWR_DEVTOOLS_REACT__ global; React-only devtools that require that identity are incompatible.",
|
|
994
|
+
"SWR 2.4.2 behavior is pinned exactly, including the absence of automatic request abortion on consumer unmount."
|
|
995
|
+
],
|
|
996
|
+
"ssr": "Supported and tested: browser-global-free server condition exports, deterministic fallback output, Octane streaming/hydration architecture gates, and pinned fallback/preload revalidation semantics.",
|
|
997
|
+
"verified": ""
|
|
998
|
+
},
|
|
999
|
+
{
|
|
1000
|
+
"name": "@octanejs/syntax-highlighter",
|
|
1001
|
+
"version": "0.0.15",
|
|
1002
|
+
"category": "Forms and content",
|
|
1003
|
+
"upstream": { "package": "react-syntax-highlighter", "version": "16.1.1" },
|
|
1004
|
+
"surface": "Complete against react-syntax-highlighter 16.1.1: default, Light, Prism, async and async-light components; static registration and language lists; custom renderers and tags; all pinned Highlight.js and Prism languages and styles; and all ESM/CJS deep-import aliases.",
|
|
1005
|
+
"divergences": [
|
|
1006
|
+
"PreTag and CodeTag accept native tag names or Octane function components. React class components require a function adapter because React instance identity is renderer-owned.",
|
|
1007
|
+
"In .tsrx, source text must use the explicit children={source} prop. Nested component children compile to an opaque renderer block that a text-inspecting component cannot unwrap."
|
|
1008
|
+
],
|
|
1009
|
+
"ssr": "Synchronous variants emit highlighted server HTML without DOM globals. Async variants emit the same deterministic plain-code fallback and hydrate by adopting the existing pre, code, and token nodes before live updates.",
|
|
1010
|
+
"verified": "2026-08-03"
|
|
1011
|
+
},
|
|
538
1012
|
{
|
|
539
1013
|
"name": "@octanejs/tanstack-ai",
|
|
540
|
-
"version": "0.0.
|
|
1014
|
+
"version": "0.0.43",
|
|
541
1015
|
"category": "AI, data, and routing",
|
|
542
1016
|
"upstream": { "package": "@tanstack/ai-react", "version": "0.17.0" },
|
|
543
1017
|
"surface": "Ports the @tanstack/ai-react 0.17.0 hook surface (useChat, useRealtimeChat, useGeneration, useGenerateImage/Audio/Speech/Video, useTranscription, useSummarize, useAudioRecorder, useMcpAppBridge) while reusing @tanstack/ai 0.41.0 and @tanstack/ai-client 0.21.0 unchanged and mirroring all 30 @tanstack/ai-client convenience re-exports from the upstream index.",
|
|
@@ -552,14 +1026,29 @@
|
|
|
552
1026
|
"One upstream `useChat` test case (\"auto-resume on mount / when the browser comes back online\") is omitted: it targets `ChatClient.prototype.maybeAutoResume`, an API absent from the pinned (and latest published) `@tanstack/ai-client@0.21.0` and never invoked by `useChat`. It is untestable in this binding until that dependency ships the method."
|
|
553
1027
|
],
|
|
554
1028
|
"ssr": "Supported and tested: useChat renders its initial message snapshot through octane/server without a DOM.",
|
|
555
|
-
"verified": "2026-
|
|
1029
|
+
"verified": "2026-08-09"
|
|
1030
|
+
},
|
|
1031
|
+
{
|
|
1032
|
+
"name": "@octanejs/tanstack-db",
|
|
1033
|
+
"version": "0.0.12",
|
|
1034
|
+
"category": "AI, data, and routing",
|
|
1035
|
+
"upstream": { "package": "@tanstack/db", "version": "0.7.0" },
|
|
1036
|
+
"surface": "Re-exports `@tanstack/db@0.7.0` unchanged and ports the React live-query binding surface of `@tanstack/react-db@0.1.96` (`useLiveQuery`, `useLiveInfiniteQuery`, `useLiveSuspenseQuery`, `useLiveQueryEffect`, `usePacedMutations`) onto Octane hooks. `useLiveQuery`/`useLiveSuspenseQuery` are driven by db's shared `createLiveQueryObserver`; `useLiveInfiniteQuery` by the coordinated `createLiveQueryWindowController`.",
|
|
1037
|
+
"divergences": [
|
|
1038
|
+
"`useLiveSuspenseQuery` consumes the preload promise through Octane's `use(thenable)` instead of throwing it, although Octane supports both forms. Because Octane keys `use()` by dynamic call-order index (not compiler slot), this binding calls `use()` unconditionally — exactly once per render, handing it an already-resolved thenable on the ready/stale paths — so a sibling `use()` or a second `useLiveSuspenseQuery` in the same component keeps a stable thenable index. Observable behavior (fallback then data) matches.",
|
|
1039
|
+
"`useLiveQuery`/`useLiveInfiniteQuery` subscribe wrappers defer an initial `onStoreChange` to a microtask so an already-ready collection (or a synchronous subscribe-time window growth) is reflected in the first committed snapshot. Octane's `useSyncExternalStore` re-checks the store snapshot before, not after, the subscribe call (React re-checks after), so this nudge stands in for React's post-subscribe reconciliation. Pinned by the `eager-onstorechange` test.",
|
|
1040
|
+
"`useLiveInfiniteQuery` rejects a pre-created collection that lacks an `orderBy` synchronously during render (detected via `getWindow()` returning a window object), so the error is observable to the caller, rather than letting `setWindow()` throw later inside a passive subscribe effect that Octane swallows.",
|
|
1041
|
+
"StrictMode double-invocation is not applicable: Octane has no development double-invoke of component setup/cleanup."
|
|
1042
|
+
],
|
|
1043
|
+
"ssr": "Not yet exercised: no server-render tests are included for the live-query hooks.",
|
|
1044
|
+
"verified": "2026-08-13"
|
|
556
1045
|
},
|
|
557
1046
|
{
|
|
558
1047
|
"name": "@octanejs/tanstack-devtools",
|
|
559
|
-
"version": "0.0.
|
|
1048
|
+
"version": "0.0.43",
|
|
560
1049
|
"category": "Styling, tests, and devtools",
|
|
561
1050
|
"upstream": { "package": "@tanstack/react-devtools", "version": "0.10.7" },
|
|
562
|
-
"surface": "
|
|
1051
|
+
"surface": "Surface-present for the pinned adapter's runtime entrypoint, with additive framework-neutral core re-exports. A same-fixture differential covers mount, config synchronization, plugin/title/trigger portals, and teardown. Upstream has no runtime suite; its test:types source compile is recorded as present type evidence with required pristine/adapted type lanes. Provenance is verified; core-version drift and Octane-specific type names/core re-exports stay as explicit divergences.",
|
|
563
1052
|
"divergences": [
|
|
564
1053
|
"Public adapter types use Octane-prefixed names: `TanStackDevtoolsOctanePlugin` and `TanStackDevtoolsOctaneInit` (upstream: `TanStackDevtoolsReactPlugin` / `TanStackDevtoolsReactInit`).",
|
|
565
1054
|
"`ref` is the normal React-19-style ref prop and events are native (no synthetic layer), consistent with the rest of the Octane bindings.",
|
|
@@ -567,11 +1056,11 @@
|
|
|
567
1056
|
"Plugin/title/trigger content is rendered through a tiny `DevtoolsPortal` component (a createPortal VALUE), because Octane renders a returned portal at any position rather than only as a direct JSX child."
|
|
568
1057
|
],
|
|
569
1058
|
"ssr": "Supported and tested: the component renders its absolutely-positioned anchor element through octane/server without a DOM; the core is constructed but never mounted server-side (mount is a client-only effect).",
|
|
570
|
-
"verified": "2026-
|
|
1059
|
+
"verified": "2026-08-03"
|
|
571
1060
|
},
|
|
572
1061
|
{
|
|
573
1062
|
"name": "@octanejs/tanstack-form",
|
|
574
|
-
"version": "0.0.
|
|
1063
|
+
"version": "0.0.43",
|
|
575
1064
|
"category": "Forms and content",
|
|
576
1065
|
"upstream": { "package": "@tanstack/react-form", "version": "1.33.2" },
|
|
577
1066
|
"surface": "Ports the complete @tanstack/react-form 1.33.2 adapter surface (`useForm`, `useField`, form and field groups, hook contexts and component composition) while re-exporting @tanstack/form-core 1.33.2 unchanged and using @octanejs/tanstack-store for subscriptions.",
|
|
@@ -581,47 +1070,47 @@
|
|
|
581
1070
|
"Component registration accepts Octane function components; class components are not supported by Octane."
|
|
582
1071
|
],
|
|
583
1072
|
"ssr": "Supported and tested: fields and form subscriptions render their initial snapshots through octane/server without a DOM.",
|
|
584
|
-
"verified": "2026-
|
|
1073
|
+
"verified": "2026-08-09"
|
|
585
1074
|
},
|
|
586
1075
|
{
|
|
587
1076
|
"name": "@octanejs/tanstack-hotkeys",
|
|
588
|
-
"version": "0.0.
|
|
1077
|
+
"version": "0.0.38",
|
|
589
1078
|
"category": "UI and interaction",
|
|
590
1079
|
"upstream": { "package": "@tanstack/react-hotkeys", "version": "0.10.0" },
|
|
591
|
-
"surface": "
|
|
1080
|
+
"surface": "Surface-present for all 22 `@tanstack/react-hotkeys@0.10.0` adapter exports plus the byte-identical `@tanstack/hotkeys@0.8.0` core re-export. The pinned 41-case upstream runtime suite runs pristine and adapted as verified vitest-full lanes; type suites compile upstream source with tsc and the Octane surface with tsrx-tsc.",
|
|
592
1081
|
"divergences": [
|
|
593
1082
|
"`target` refs are plain `{ current }` objects (Octane has no `React.RefObject`); the `isRef` guard and behavior are otherwise identical."
|
|
594
1083
|
],
|
|
595
1084
|
"ssr": "Supported: every hook registers listeners in effects and resolves `document` lazily, so server rendering produces no registrations and no browser access (matching upstream's `typeof document` guards).",
|
|
596
|
-
"verified": "2026-
|
|
1085
|
+
"verified": "2026-08-03"
|
|
597
1086
|
},
|
|
598
1087
|
{
|
|
599
1088
|
"name": "@octanejs/tanstack-pacer",
|
|
600
|
-
"version": "0.0.
|
|
1089
|
+
"version": "0.0.38",
|
|
601
1090
|
"category": "UI and interaction",
|
|
602
1091
|
"upstream": { "package": "@tanstack/react-pacer", "version": "0.22.1" },
|
|
603
|
-
"surface": "
|
|
1092
|
+
"surface": "Surface-present for all 15 runtime/type entrypoints from `@tanstack/react-pacer@0.22.1`, plus the byte-identical `@tanstack/pacer@0.21.1` core re-export. Repo-authored adapted-octane and differential lanes cover a representative debounce/throttle/batching/teardown lifecycle; upstream has no runtime suite and insufficient type evidence, so provenance remains `recorded-unverified` with nearly every export still `surface-present-unverified`.",
|
|
604
1093
|
"divergences": [
|
|
605
1094
|
"Upstream types spelled with `React.Dispatch<React.SetStateAction<T>>` use structurally identical local aliases (Octane state setters have the same shape)."
|
|
606
1095
|
],
|
|
607
1096
|
"ssr": "Supported: instances are created lazily in `useState` initializers, cleanup runs in effects, and no browser globals are touched during render, so server rendering produces the initial (non-pending) state exactly like upstream.",
|
|
608
|
-
"verified": "2026-
|
|
1097
|
+
"verified": "2026-08-03"
|
|
609
1098
|
},
|
|
610
1099
|
{
|
|
611
1100
|
"name": "@octanejs/tanstack-query",
|
|
612
|
-
"version": "0.1.
|
|
1101
|
+
"version": "0.1.48",
|
|
613
1102
|
"category": "AI, data, and routing",
|
|
614
1103
|
"upstream": { "package": "@tanstack/react-query", "version": "5.101.3" },
|
|
615
1104
|
"surface": "Complete: 58/58 runtime exports plus the full TypeScript surface; the export surface is byte-identical to upstream in both directions (locked by test), and `@tanstack/query-core` is re-exported verbatim.",
|
|
616
1105
|
"divergences": [
|
|
617
1106
|
"Suspense integrates via octane's `use(thenable)` rather than throwing a promise (observable behavior matches)."
|
|
618
1107
|
],
|
|
619
|
-
"ssr": "`HydrationBoundary` fully ported (
|
|
620
|
-
"verified": "2026-
|
|
1108
|
+
"ssr": "`HydrationBoundary` is fully ported (including streaming `promise`/`dehydratedAt` re-hydration), and initial query data is covered by a DOM-free Octane server-render test; dedicated streaming server entries remain open.",
|
|
1109
|
+
"verified": "2026-08-02"
|
|
621
1110
|
},
|
|
622
1111
|
{
|
|
623
1112
|
"name": "@octanejs/tanstack-router",
|
|
624
|
-
"version": "0.1.
|
|
1113
|
+
"version": "0.1.48",
|
|
625
1114
|
"category": "AI, data, and routing",
|
|
626
1115
|
"upstream": { "package": "@tanstack/react-router", "version": "1.170.18" },
|
|
627
1116
|
"surface": "Octane's TanStack Router binding: typed route factories and hooks, the full Match pipeline and lifecycle, file routes with TSRX-aware generator integration, full Link navigation/preloading/masking behavior, blocking, Await/deferred hydration, scroll restoration, lazy routes, not-found handling, document/head assets, and client/server SSR entries.",
|
|
@@ -630,22 +1119,22 @@
|
|
|
630
1119
|
"Link callbacks receive native DOM events rather than React synthetic events.",
|
|
631
1120
|
"Router devtools are distributed separately."
|
|
632
1121
|
],
|
|
633
|
-
"ssr": "Full-document buffered and readable-stream SSR through `./ssr/server`, client hydration through `./ssr/client`, route-owned head/scripts, CSP nonce propagation, per-route SSR modes, and native Octane stream injection; covered by
|
|
634
|
-
"verified": "2026-
|
|
1122
|
+
"ssr": "Full-document buffered and readable-stream SSR through `./ssr/server`, client hydration through `./ssr/client`, route-owned head/scripts, CSP nonce propagation, per-route SSR modes, and native Octane stream injection; covered by Octane-only framework-contract tests in ordinary shards (not a React SSR oracle).",
|
|
1123
|
+
"verified": "2026-08-02"
|
|
635
1124
|
},
|
|
636
1125
|
{
|
|
637
1126
|
"name": "@octanejs/tanstack-router-ssr-query",
|
|
638
|
-
"version": "0.0.
|
|
1127
|
+
"version": "0.0.38",
|
|
639
1128
|
"category": "AI, data, and routing",
|
|
640
1129
|
"upstream": { "package": "@tanstack/react-router-ssr-query", "version": "1.167.1" },
|
|
641
|
-
"surface": "
|
|
1130
|
+
"surface": "Surface-present for the pinned adapter's only runtime entrypoint (`Options` and `setupRouterSsrQueryIntegration`). The metadata-only `./package.json` subpath is intentionally omitted. A representative differential covers provider-backed SSR, existing-wrapper preservation, setup mutations, and the wrapping control; upstream has no runtime suite, and type evidence is the upstream source compile plus the adapted Octane compile, so verification remains recorded-unverified.",
|
|
642
1131
|
"divergences": [],
|
|
643
1132
|
"ssr": "Supported — this package IS the SSR integration (dehydrates query state into the router stream and wraps the app in the query provider).",
|
|
644
|
-
"verified": "2026-
|
|
1133
|
+
"verified": "2026-08-03"
|
|
645
1134
|
},
|
|
646
1135
|
{
|
|
647
1136
|
"name": "@octanejs/tanstack-store",
|
|
648
|
-
"version": "0.0.
|
|
1137
|
+
"version": "0.0.43",
|
|
649
1138
|
"category": "Shared state",
|
|
650
1139
|
"upstream": { "package": "@tanstack/react-store", "version": "0.11.0" },
|
|
651
1140
|
"surface": "Re-exports `@tanstack/store@0.11.0` unchanged and implements the stable React binding surface (`useSelector`, `useAtom`, `useCreateAtom`, `useCreateStore`, `createStoreContext`, and deprecated `useStore`) on Octane hooks.",
|
|
@@ -653,11 +1142,11 @@
|
|
|
653
1142
|
"The upstream experimental `_useStore` hook is intentionally omitted; use `useSelector` with `store.actions` or `store.setState` instead."
|
|
654
1143
|
],
|
|
655
1144
|
"ssr": "Supported: selectors, writable atoms, and store context read their current snapshots during server rendering; the adapter has no browser-only initialization.",
|
|
656
|
-
"verified": "2026-
|
|
1145
|
+
"verified": "2026-08-09"
|
|
657
1146
|
},
|
|
658
1147
|
{
|
|
659
1148
|
"name": "@octanejs/tanstack-table",
|
|
660
|
-
"version": "0.1.
|
|
1149
|
+
"version": "0.1.46",
|
|
661
1150
|
"category": "Data-heavy screens",
|
|
662
1151
|
"upstream": { "package": "@tanstack/react-table", "version": "9.0.0-beta.58" },
|
|
663
1152
|
"surface": "Complete port of the v9 adapter: the framework-agnostic `@tanstack/table-core` (constructTable + every tree-shakeable feature and row model) is reused verbatim, and the adapter — `useTable`, `Subscribe`, `flexRender`/`FlexRender`, `createTableHook`, `createTableHookContexts` — is transcribed onto octane hooks. Table state lives in TanStack Store atoms via the `coreReactivityFeature` bindings, and `useSelector` drives re-renders from the selected slice. Every store primitive (hooks, `createAtom`, `batch`, `shallow`, and the atom/store types) is imported from @octanejs/tanstack-store, which re-exports all of @tanstack/store — the binding takes no direct dependency on the store core, so there is only one path to it and atom identity cannot be split across duplicate copies.",
|
|
@@ -666,11 +1155,11 @@
|
|
|
666
1155
|
"Upstream's `useLegacyTable` entry (the v8-compat `get*RowModel` shim, its marker factories, and the `Legacy*` type aliases) is NOT ported. It exists to migrate existing React v8 codebases; octane has none, so octane code targets the v9 `useTable` API directly."
|
|
667
1156
|
],
|
|
668
1157
|
"ssr": "No SSR-specific surface; table-core is pure computation.",
|
|
669
|
-
"verified": "2026-
|
|
1158
|
+
"verified": "2026-08-02"
|
|
670
1159
|
},
|
|
671
1160
|
{
|
|
672
1161
|
"name": "@octanejs/tanstack-virtual",
|
|
673
|
-
"version": "0.1.
|
|
1162
|
+
"version": "0.1.46",
|
|
674
1163
|
"category": "Data-heavy screens",
|
|
675
1164
|
"upstream": { "package": "@tanstack/react-virtual", "version": "3.14.5" },
|
|
676
1165
|
"surface": "Complete 1:1 port: the framework-agnostic `@tanstack/virtual-core` (Virtualizer + observers + windowing math) is reused verbatim; the React adapter (`useVirtualizer`, `useWindowVirtualizer`, incl. `useFlushSync` and the experimental `directDomUpdates` surface) is transcribed onto octane hooks, preserving upstream's force-update + flushSync-on-sync-scroll wiring and layout-effect lifecycle.",
|
|
@@ -678,11 +1167,11 @@
|
|
|
678
1167
|
"octane's `flushSync` called while a flush is already on the stack degrades to a plain call drained by the ambient flush (re-entrancy guard) — sync scroll notifies dispatched from inside a discrete-event flush land at that flush's boundary instead of nested; consumer-invisible, pinned by a conformance test."
|
|
679
1168
|
],
|
|
680
1169
|
"ssr": "SSR-safe: `useIsomorphicLayoutEffect` degrades to `useEffect` without `document`; the first paint windows from `initialRect`/`initialOffset` exactly as upstream. No dedicated SSR tests.",
|
|
681
|
-
"verified": "2026-
|
|
1170
|
+
"verified": "2026-08-02"
|
|
682
1171
|
},
|
|
683
1172
|
{
|
|
684
1173
|
"name": "@octanejs/tauri",
|
|
685
|
-
"version": "0.0.
|
|
1174
|
+
"version": "0.0.32",
|
|
686
1175
|
"category": "Desktop",
|
|
687
1176
|
"upstream": { "package": "@tauri-apps/api", "version": "2.11.1" },
|
|
688
1177
|
"surface": "Octane hooks over the framework-neutral Tauri IPC surface: useInvoke (suspending command), useInvokeState (pending/success/error with refetch), and useTauriEvent (event subscription with lifecycle-safe teardown). The rest of @tauri-apps/api — window, webview, menu, tray, path, dpi, image, and the plugin packages — is already framework-neutral and is imported directly rather than re-exported here.",
|
|
@@ -700,41 +1189,54 @@
|
|
|
700
1189
|
},
|
|
701
1190
|
{
|
|
702
1191
|
"name": "@octanejs/testing-library",
|
|
703
|
-
"version": "0.1.
|
|
1192
|
+
"version": "0.1.46",
|
|
704
1193
|
"category": "Styling, tests, and devtools",
|
|
705
|
-
"upstream": { "package": "@testing-library/react", "version": "
|
|
1194
|
+
"upstream": { "package": "@testing-library/react", "version": "16.3.2" },
|
|
706
1195
|
"surface": "`render`/`rerender`/`cleanup`/`renderHook` + `act` over the verbatim `@testing-library/dom` (every query, `screen`, `within`, `waitFor`, `fireEvent`, `prettyDOM`, `configure`), with commit timing wired to octane's scheduler via the dom-library's `eventWrapper`/`asyncWrapper` config.",
|
|
707
1196
|
"divergences": [
|
|
708
1197
|
"`fireEvent` dispatches real native events — no React remappings (`fireEvent.change` fires an explicit native `change`, not text typing or checkbox click activation) and no enter/leave/focus double-dispatch.",
|
|
709
1198
|
"Not ported: the `ReactStrictMode` wrapper, `legacyRoot`, and the `onCaughtError`/`onRecoverableError` options."
|
|
710
1199
|
],
|
|
711
1200
|
"ssr": "`hydrate: true` adopts octane SSR output via `hydrateRoot`.",
|
|
712
|
-
"verified": "2026-
|
|
1201
|
+
"verified": "2026-08-02"
|
|
1202
|
+
},
|
|
1203
|
+
{
|
|
1204
|
+
"name": "@octanejs/textarea-autosize",
|
|
1205
|
+
"version": "0.0.15",
|
|
1206
|
+
"category": "UI and interaction",
|
|
1207
|
+
"upstream": { "package": "react-textarea-autosize", "version": "8.5.9" },
|
|
1208
|
+
"surface": "Complete against the published react-textarea-autosize 8.5.9 default component and named TextareaAutosizeProps and TextareaHeightChangeMeta types, including native textarea props, row clamps, measurement caching, height callbacks, refs, environmental listeners, form reset, SSR, and browser sizing.",
|
|
1209
|
+
"divergences": [
|
|
1210
|
+
"onChange and onChangeCapture receive the native InputEvent rather than a React SyntheticEvent; target and currentTarget are the textarea during dispatch.",
|
|
1211
|
+
"Programmatic value assignment does not synthesize a public change callback; dispatch a native input event when that behavior is required."
|
|
1212
|
+
],
|
|
1213
|
+
"ssr": "Server rendering emits one plain textarea without accessing browser measurement globals; Octane hydration adopts the existing host and preserves pre-hydration uncontrolled edits.",
|
|
1214
|
+
"verified": "2026-08-03"
|
|
713
1215
|
},
|
|
714
1216
|
{
|
|
715
1217
|
"name": "@octanejs/three",
|
|
716
|
-
"version": "0.1.
|
|
1218
|
+
"version": "0.1.42",
|
|
717
1219
|
"category": "Web 3D",
|
|
718
1220
|
"upstream": { "package": "@react-three/fiber", "version": "9.6.1 (2a528745)" },
|
|
719
1221
|
"surface": "Technical-preview Milestones 0–10 surface: renderer configuration and the DOM Canvas boundary, compiler ABI and renderer-local Three intrinsic types, catalogue and both extend forms, primitive/args construction, Three prop application, attachment, ordered placement/recreation, retained visibility, lifecycle/ref delivery, ownership-aware disposal, promise-returning HTMLCanvasElement and OffscreenCanvas roots, Octane act/flushSync scheduling, callback-aware unmountComponentAtNode, callable root state, scene/camera/raycaster and resize/DPR/viewport configuration, shadows/colors, one shared frame loop, controlled WebXR loop handoff, context-restore invalidation, compatible/reconstructing HMR, global effects, useStore/useThree/useFrame/useGraph and managed-instance helpers, the ray/pointer event system with DOM sources and custom managers, a keyed useLoader cache with preload/clear and GLTF graph augmentation, retained Suspense/Activity behavior, client Three-to-DOM pending/error projection, same-renderer createPortal targets with state/event enclaves and physical Three event bubbling, client-only Canvas shell streaming and production Vite/Rsbuild hydration adoption with the matching raw Rspack graph split, the explicit-target low-level DOMRegion boundary, a deterministic testing harness, an asynchronously acknowledged structured-clone transport proof, a checked public API/subpath matrix, Three r156/current compatibility lanes, a packed external consumer, real WebGL failure/recovery coverage, and semantic-checksummed renderer and shipped-size benchmarks.",
|
|
720
1222
|
"divergences": [
|
|
721
|
-
"Octane owns
|
|
722
|
-
"
|
|
723
|
-
"
|
|
724
|
-
"buildGraph
|
|
725
|
-
"
|
|
726
|
-
"
|
|
727
|
-
"Hidden retained Activity subtrees are excluded from recursive raycasts
|
|
728
|
-
"
|
|
729
|
-
"Root teardown and
|
|
730
|
-
"DOMRegion is an Octane-specific explicit-target Three-to-DOM primitive
|
|
1223
|
+
"`octane-renderer-ownership`: Octane owns execution, hooks, scheduling, Suspense, refs, and effects instead of React Reconciler.",
|
|
1224
|
+
"`component-props-root-api`: Programmatic roots render an Octane component plus props rather than a React element descriptor.",
|
|
1225
|
+
"`order-based-callable-selector`: Dynamic callable store selectors remain order-based outside compiler-visible hook calls.",
|
|
1226
|
+
"`build-graph-named-only`: buildGraph publishes named mesh and material entries only.",
|
|
1227
|
+
"`pierced-prop-reset-target`: Removed pierced props reset the original nested target rather than a root leaf key.",
|
|
1228
|
+
"`reconstructed-intersection-rewrite`: Reconstruction rewrites nested captured and hovered intersections to the replacement.",
|
|
1229
|
+
"`hidden-activity-raycast`: Hidden retained Activity subtrees are excluded from recursive raycasts.",
|
|
1230
|
+
"`root-scoped-portal-targets`: Portal target handles are root-scoped and cross-root placement is rejected before mutation.",
|
|
1231
|
+
"`synchronous-root-teardown`: Root teardown and callback delivery are synchronous instead of delayed by 500ms.",
|
|
1232
|
+
"`octane-dom-region`: DOMRegion is an Octane-specific explicit-target Three-to-DOM primitive."
|
|
731
1233
|
],
|
|
732
1234
|
"ssr": "Three scene modules are client-only and Canvas.children is omitted from the server graph. Canvas streams its DOM shell and native fallback, then production Vite and Rsbuild hydration adopt those nodes and create one Three root on the client; raw Rspack proves the equivalent client/server graph split without claiming an application SSR lifecycle. DOMRegion and its reverse-DOM content remain inside the omitted client-only Three scene.",
|
|
733
1235
|
"verified": "2026-07-17"
|
|
734
1236
|
},
|
|
735
1237
|
{
|
|
736
1238
|
"name": "@octanejs/tiptap",
|
|
737
|
-
"version": "0.0.
|
|
1239
|
+
"version": "0.0.43",
|
|
738
1240
|
"category": "Forms and content",
|
|
739
1241
|
"upstream": { "package": "@tiptap/react", "version": "3.28.0" },
|
|
740
1242
|
"surface": "Complete @tiptap/react 3.28.0 adapter surface across the root and ./menus entries: @tiptap/core re-exports, editor hooks and contexts, the EditorContent portal bridge, compound Tiptap API, ReactRenderer, custom NodeView/MarkView renderers and helpers, BubbleMenu, and FloatingMenu.",
|
|
@@ -747,11 +1249,49 @@
|
|
|
747
1249
|
"ReactMarkView tears down its portal when ProseMirror destroys the mark view, closing a renderer leak present in @tiptap/react 3.28.0."
|
|
748
1250
|
],
|
|
749
1251
|
"ssr": "Covered across the complete surface: hooks use null server snapshots and suppress editor construction without a DOM, static NodeView/MarkView helpers render without a DOM renderer, detached menu targets are client-only, and hydration adopts deferred server shells before mounting live custom views and menus.",
|
|
750
|
-
"verified": "2026-
|
|
1252
|
+
"verified": "2026-08-02"
|
|
1253
|
+
},
|
|
1254
|
+
{
|
|
1255
|
+
"name": "@octanejs/to-print",
|
|
1256
|
+
"version": "0.0.5",
|
|
1257
|
+
"category": "UI and interaction",
|
|
1258
|
+
"upstream": {
|
|
1259
|
+
"package": "react-to-print",
|
|
1260
|
+
"version": "3.3.0",
|
|
1261
|
+
"source": "https://github.com/MatthewHerbst/react-to-print/tree/853666f180006b68b533f216e58f974cc791a97f",
|
|
1262
|
+
"license": "MIT"
|
|
1263
|
+
},
|
|
1264
|
+
"surface": "Public runtime surface at react-to-print 3.3.0: useReactToPrint and its option/content/fn types. Print pipeline utilities are ported unchanged aside from Octane ref and event types.",
|
|
1265
|
+
"divergences": [
|
|
1266
|
+
"Consumers import from @octanejs/to-print instead of react-to-print.",
|
|
1267
|
+
"contentRef is a structural { current } ref object rather than React.RefObject.",
|
|
1268
|
+
"The print callback accepts a native Event or a content getter; React.UIEvent is not used.",
|
|
1269
|
+
"The plain TypeScript useReactToPrint hook forwards compiler-injected slots; a symbol in the options position is treated as empty options."
|
|
1270
|
+
],
|
|
1271
|
+
"ssr": "The hook is client-only: it constructs an iframe and calls window.print (or a custom print function). Calling it during SSR has no DOM target.",
|
|
1272
|
+
"verified": "2026-08-20"
|
|
1273
|
+
},
|
|
1274
|
+
{
|
|
1275
|
+
"name": "@octanejs/transition-group",
|
|
1276
|
+
"version": "0.0.15",
|
|
1277
|
+
"category": "UI and interaction",
|
|
1278
|
+
"upstream": {
|
|
1279
|
+
"package": "react-transition-group",
|
|
1280
|
+
"version": "4.4.5",
|
|
1281
|
+
"commit": "4cb51a9be0ebf508cb8f6506452097f7ebb874fe"
|
|
1282
|
+
},
|
|
1283
|
+
"surface": "Transition, CSSTransition, TransitionGroup, SwitchTransition, ReplaceTransition, config, and their documented subpath exports.",
|
|
1284
|
+
"divergences": [
|
|
1285
|
+
"Octane does not implement ReactDOM.findDOMNode; DOM-aware callbacks and CSSTransition require nodeRef.",
|
|
1286
|
+
"TransitionGroup collections must be supplied as inspectable descriptor values, normally with children={items.map(...)}; compiler-generated opaque children blocks cannot be enumerated.",
|
|
1287
|
+
"The complete pinned upstream suite runs unchanged as the pristine Jest oracle; adapted Octane lanes cover the public export surface, DOM transition behavior, switch and replacement sequencing, keyed groups, nodeRef semantics, mount-on-enter sequencing, and server rendering, and are not yet a one-for-one port of every upstream case."
|
|
1288
|
+
],
|
|
1289
|
+
"ssr": "Transition state and wrapper markup render on the server; DOM class mutation begins only after client mount and requires nodeRef.",
|
|
1290
|
+
"verified": "2026-08-09"
|
|
751
1291
|
},
|
|
752
1292
|
{
|
|
753
1293
|
"name": "@octanejs/usehooks-ts",
|
|
754
|
-
"version": "0.0.
|
|
1294
|
+
"version": "0.0.30",
|
|
755
1295
|
"category": "UI and interaction",
|
|
756
1296
|
"upstream": {
|
|
757
1297
|
"package": "usehooks-ts",
|
|
@@ -765,11 +1305,11 @@
|
|
|
765
1305
|
"Public setter types are structurally equivalent to React Dispatch/SetStateAction without importing React types."
|
|
766
1306
|
],
|
|
767
1307
|
"ssr": "Supported for the listed cohort. Effects and timers do not run during server rendering; hydration activates lifecycle and timing work without requiring browser reads during render.",
|
|
768
|
-
"verified": "2026-
|
|
1308
|
+
"verified": "2026-08-02"
|
|
769
1309
|
},
|
|
770
1310
|
{
|
|
771
1311
|
"name": "@octanejs/valtio",
|
|
772
|
-
"version": "0.1.
|
|
1312
|
+
"version": "0.1.32",
|
|
773
1313
|
"category": "Shared state",
|
|
774
1314
|
"upstream": { "package": "valtio", "version": "2.3.2" },
|
|
775
1315
|
"surface": "The framework-agnostic `valtio/vanilla` core and `valtio/vanilla/utils` are re-exported verbatim; `useSnapshot` and the `useProxy` utility are ported to Octane.",
|
|
@@ -777,11 +1317,27 @@
|
|
|
777
1317
|
"React DevTools affected-path debug labels are omitted because Octane's `useDebugValue` is currently a no-op."
|
|
778
1318
|
],
|
|
779
1319
|
"ssr": "The server snapshot path uses `snapshot(proxyObject)`; no dedicated SSR rendering test is included yet.",
|
|
780
|
-
"verified": "2026-
|
|
1320
|
+
"verified": "2026-08-02"
|
|
1321
|
+
},
|
|
1322
|
+
{
|
|
1323
|
+
"name": "@octanejs/vaul",
|
|
1324
|
+
"version": "0.0.15",
|
|
1325
|
+
"category": "UI and interaction",
|
|
1326
|
+
"upstream": {
|
|
1327
|
+
"package": "vaul",
|
|
1328
|
+
"version": "1.1.2",
|
|
1329
|
+
"commit": "73d06cdd3fd990bf4b83214cfe240c246908af0d"
|
|
1330
|
+
},
|
|
1331
|
+
"surface": "Drawer, Root, NestedRoot, Portal, Overlay, Content, Handle, public props, and style.css.",
|
|
1332
|
+
"divergences": [
|
|
1333
|
+
"React DOM prop types are preserved publicly and normalized at Octane render boundaries."
|
|
1334
|
+
],
|
|
1335
|
+
"ssr": "Closed drawer roots and triggers render without browser globals; portaled content remains absent while closed.",
|
|
1336
|
+
"verified": "2026-08-02"
|
|
781
1337
|
},
|
|
782
1338
|
{
|
|
783
1339
|
"name": "@octanejs/visx",
|
|
784
|
-
"version": "0.1.
|
|
1340
|
+
"version": "0.1.43",
|
|
785
1341
|
"category": "Data-heavy screens",
|
|
786
1342
|
"upstream": { "package": "@visx/visx", "version": "4.0.0 + master@485c035" },
|
|
787
1343
|
"surface": "Complete current Visx 4.x web runtime surface: the exact 35-namespace aggregate, all 40 feature entry points, and the eight public a11y/react, a11y/server, axis/react, scale/react, shape/react, theme/react, tooltip/floating, and voronoi/react subpaths. Released-only packages chord, delaunay, react-spring, sankey, and stats remain directly importable exactly as upstream specifies.",
|
|
@@ -793,11 +1349,11 @@
|
|
|
793
1349
|
"Props upstream types as React.ReactNode are octane renderables (octane's OctaneNode = unknown): octane elements are nominal, so ReactNode-typed props would reject them. Render-prop signatures keep their parameters and return octane renderables."
|
|
794
1350
|
],
|
|
795
1351
|
"ssr": "Fixed-dimension primitives, wrapped XYChart series, annotations, text, and wordclouds emit complete deterministic SVG on the server. Real hydrateRoot adoption preserves the same SVG/definition/axis/text/series/annotation/wordcloud nodes without warnings, replacement, or post-effect markup changes; generated IDs, measurement fallbacks, portals, and responsive initial sizes are covered.",
|
|
796
|
-
"verified": "2026-
|
|
1352
|
+
"verified": "2026-08-02"
|
|
797
1353
|
},
|
|
798
1354
|
{
|
|
799
1355
|
"name": "@octanejs/wagmi",
|
|
800
|
-
"version": "0.0.
|
|
1356
|
+
"version": "0.0.29",
|
|
801
1357
|
"category": "Web3",
|
|
802
1358
|
"upstream": { "package": "wagmi", "version": "3.7.4" },
|
|
803
1359
|
"surface": "WagmiProvider and createConfig over @wagmi/core 3.6.4, with config, connection, connect, disconnect, switch-connection, switch-chain, connectors, connections, chains, balance, contract read/simulate/write, transaction send/wait, and message-signing hooks.",
|
|
@@ -809,11 +1365,107 @@
|
|
|
809
1365
|
"EIP-1193 event validation, duplicate coalescing, and connector-generation invalidation are delegated unchanged to @wagmi/core 3.6.4. This binding does not add a second provider-event layer or claim independent normalization behavior."
|
|
810
1366
|
],
|
|
811
1367
|
"ssr": "WagmiProvider supports ssr:true and initialState through @wagmi/core hydrate. parseHydratedState accepts only a versioned, 16 KiB-bounded public-state hint and rejects malformed or privileged material; a hydrated connection is never authority for signing or submission.",
|
|
812
|
-
"verified": "2026-
|
|
1368
|
+
"verified": "2026-08-02"
|
|
1369
|
+
},
|
|
1370
|
+
{
|
|
1371
|
+
"name": "@octanejs/waypoint",
|
|
1372
|
+
"version": "0.0.4",
|
|
1373
|
+
"category": "UI and interaction",
|
|
1374
|
+
"upstream": {
|
|
1375
|
+
"package": "react-waypoint",
|
|
1376
|
+
"version": "6.0.0",
|
|
1377
|
+
"source": "https://github.com/brigade/react-waypoint/tree/v6.0.0",
|
|
1378
|
+
"license": "MIT"
|
|
1379
|
+
},
|
|
1380
|
+
"surface": "Waypoint component and position constants at react-waypoint 6.0.0, with vertical/horizontal geometry, offsets, ancestor selection, rapid-crossing callbacks, refs, SSR, and hydration behavior.",
|
|
1381
|
+
"divergences": [
|
|
1382
|
+
"Public node and prop types use Octane structural types and do not import React.",
|
|
1383
|
+
"The upstream class lifecycle is expressed with Octane hooks and refs-as-props.",
|
|
1384
|
+
"A custom child must be supplied through the children prop so it remains an inspectable descriptor; nested TSRX children compile to an opaque render block."
|
|
1385
|
+
],
|
|
1386
|
+
"ssr": "Supported. The marker renders on the server and measurement/listeners begin after client mount.",
|
|
1387
|
+
"verified": "2026-08-24"
|
|
1388
|
+
},
|
|
1389
|
+
{
|
|
1390
|
+
"name": "@octanejs/window",
|
|
1391
|
+
"version": "0.0.15",
|
|
1392
|
+
"category": "Data-heavy screens",
|
|
1393
|
+
"upstream": { "package": "react-window", "version": "2.3.0" },
|
|
1394
|
+
"surface": "Provisional complete exact port of the react-window 2.3.0 root surface: List, Grid, getScrollbarSize, useDynamicRowHeight, four imperative-ref hooks, and all eight public types. The byte-locked pristine React suite and generated Octane adaptation each execute all 14 upstream files and all 117 cases; shared differential, SSR, hydration, and assertion-level public type lanes are required by the React parity manifest. Final Chromium/Firefox browser and executable CommonJS package-condition evidence remain pending shared infrastructure PRs #548 and #550.",
|
|
1395
|
+
"divergences": [
|
|
1396
|
+
"Octane reserves the second raw function-component invocation argument for its internal block ABI; public props and rendered behavior match, so instrumentation should not assert React's undocumented undefined second argument.",
|
|
1397
|
+
"Keyed state and DOM identity are preserved, but sibling effect-log order and equal-prop rerender counts may differ after reordering because Octane schedules moved blocks and memoizes unchanged children differently."
|
|
1398
|
+
],
|
|
1399
|
+
"ssr": "Supported and tested — defaultHeight/defaultWidth produce deterministic bounded List and Grid markup without browser globals, and hydration adopts the server nodes before live scrolling and measurement.",
|
|
1400
|
+
"verified": "2026-08-03"
|
|
1401
|
+
},
|
|
1402
|
+
{
|
|
1403
|
+
"name": "@octanejs/wouter",
|
|
1404
|
+
"version": "0.0.5",
|
|
1405
|
+
"category": "AI, data, and routing",
|
|
1406
|
+
"upstream": {
|
|
1407
|
+
"package": "wouter",
|
|
1408
|
+
"version": "3.10.0",
|
|
1409
|
+
"source": "https://github.com/molefrog/wouter/tree/708c23639d4174ba7deda06c40c8208118899da7",
|
|
1410
|
+
"license": "Unlicense"
|
|
1411
|
+
},
|
|
1412
|
+
"surface": "Wouter 3.10.0 main router surface plus browser, hash, and memory location subpaths, ported to Octane with manual trailing hook-slot forwarding.",
|
|
1413
|
+
"divergences": [
|
|
1414
|
+
"Link accepts ref as an ordinary Octane prop; forwardRef is not used.",
|
|
1415
|
+
"Switch inspects explicit element descriptors, while nested TSRX children are opaque and must be supplied as descriptor arrays or createElement results.",
|
|
1416
|
+
"Octane useSyncExternalStore replaces the upstream shim and requires forwarded compiler hook slots.",
|
|
1417
|
+
"The React Native use-sync-external-store shim and Wouter's separate Preact package are not exported."
|
|
1418
|
+
],
|
|
1419
|
+
"ssr": "Router ssrPath, ssrSearch, and redirect context behavior is ported and covered by tests/ssr.test.ts.",
|
|
1420
|
+
"verified": "2026-08-20"
|
|
1421
|
+
},
|
|
1422
|
+
{
|
|
1423
|
+
"name": "@octanejs/xstate",
|
|
1424
|
+
"version": "0.0.7",
|
|
1425
|
+
"category": "Shared state",
|
|
1426
|
+
"upstream": { "package": "@xstate/react", "version": "6.1.0" },
|
|
1427
|
+
"surface": "Complete @xstate/react 6.1.0 export surface — `useActor`, `useActorRef`, `useSelector`, `createActorContext`, `shallowEqual`, and the deprecated `useMachine` alias — ported onto Octane hooks. The framework-agnostic `xstate` actor core is reused unchanged as a peer dependency and is not re-exported, exactly as upstream. Upstream's two npm-only dependencies are replaced by in-repo ports: `use-sync-external-store/shim/with-selector` by a local port of React's selector shim, and `use-isomorphic-layout-effect` by a slot-forwarding equivalent.",
|
|
1428
|
+
"divergences": [
|
|
1429
|
+
"`useSyncExternalStore` does not re-read `getSnapshot` at commit when the rendered value was unchanged. Octane's synchronous renderer closes the concurrent-interleaving window React guards there, so a store that mutates without notifying between render and commit is not re-caught. Any actor that notifies — which xstate always does — is unaffected.",
|
|
1430
|
+
"During server rendering `getServerSnapshot` is optional and falls back to `getSnapshot`, where React throws. `useSelector` and `useActor` always supply one, so this is only reachable through a hand-rolled actor-like object.",
|
|
1431
|
+
"Upstream's suite runs every `useActor`, `useActorRef`, and `useSelector` case twice, once under `StrictMode`. Octane has no StrictMode double-invoke, so the non-strict render, effect, and observer counts are the ported expectations; the strict pass is not applicable.",
|
|
1432
|
+
"`stopRootWithRehydration` is retained verbatim even though its motivating case (React Strict Effects double-invoking the start/stop effect) cannot occur on Octane, because it also governs unmount-then-remount, which stays observable."
|
|
1433
|
+
],
|
|
1434
|
+
"ssr": "Supported: `useSelector` and `useActor` read their actor snapshot through `getServerSnapshot` during server rendering and the first hydration read, so server markup matches the initial actor snapshot. Effects never run on the server, so actors are not started there.",
|
|
1435
|
+
"verified": "2026-08-15"
|
|
1436
|
+
},
|
|
1437
|
+
{
|
|
1438
|
+
"name": "@octanejs/xstate-store",
|
|
1439
|
+
"version": "0.0.7",
|
|
1440
|
+
"category": "Shared state",
|
|
1441
|
+
"upstream": { "package": "@xstate/store-react", "version": "2.0.0" },
|
|
1442
|
+
"surface": "Complete @xstate/store-react 2.0.0 export surface — `useSelector`, `useStore`, `useAtom`, `useAtomState`, and `createStoreHook` — ported onto Octane hooks, plus the full `@xstate/store@4.2.3` core re-exported unchanged (`createStore`, `createAtom`, `fromStore`, `shallowEqual`, and every type), exactly as upstream re-exports it.",
|
|
1443
|
+
"divergences": [
|
|
1444
|
+
"Upstream calls hooks inside `if` branches in `useSelector` and `useAtom`, which React tolerates only because the branch is stable per call site. Octane keys hooks by call site rather than call order, so the shape is legal here; if a call site does flip branches, Octane keeps independent hook cells per branch and unsubscribes the abandoned one instead of corrupting hook order.",
|
|
1445
|
+
"`useSyncExternalStore` does not re-read `getSnapshot` at commit when the rendered value was unchanged. Octane's synchronous renderer closes the concurrent-interleaving window React guards there; any store that notifies is unaffected.",
|
|
1446
|
+
"During server rendering `getServerSnapshot` is optional and falls back to `getSnapshot`, where React throws. Every hook here supplies one."
|
|
1447
|
+
],
|
|
1448
|
+
"ssr": "Supported: selectors, stores, and atoms read their current snapshot during server rendering through `getServerSnapshot`, and the binding has no browser-only initialization.",
|
|
1449
|
+
"verified": "2026-08-15"
|
|
1450
|
+
},
|
|
1451
|
+
{
|
|
1452
|
+
"name": "@octanejs/zag",
|
|
1453
|
+
"version": "0.0.15",
|
|
1454
|
+
"category": "UI and interaction",
|
|
1455
|
+
"upstream": { "package": "@zag-js/react", "version": "1.42.0" },
|
|
1456
|
+
"surface": "Complete port of the @zag-js/react@1.42.0 public adapter surface: useMachine, normalizeProps, Portal, the @zag-js/core mergeProps re-export, and the framework useSyncExternalStore re-export. The framework-agnostic @zag-js/core, @zag-js/store, @zag-js/types, and @zag-js/utils packages are reused unchanged.",
|
|
1457
|
+
"divergences": [
|
|
1458
|
+
"normalizeProps rewrites React-style text-entry onChange to native onInput for input (non-checkbox/radio) and textarea hosts; select and checkbox/radio keep native onChange. Upstream normalizeProps is an identity transform and has no suite coverage for this export.",
|
|
1459
|
+
"Portal container refs use Octane's structural `{ current: HTMLElement | null }` ref shape rather than React.RefObject; runtime behavior is unchanged.",
|
|
1460
|
+
"Compiled Octane children are portalled as one lazy children block so their component scope is preserved; ordinary value children retain upstream's per-child portal behavior.",
|
|
1461
|
+
"React StrictMode double-invoke suite cases stay pristine-only; Octane does not double-invoke effects, so those identities are not adapted one-for-one."
|
|
1462
|
+
],
|
|
1463
|
+
"ssr": "Supported and tested: useMachine exposes its initial state and bindable context during server rendering, effects remain deferred, and Portal renders children in place without browser globals.",
|
|
1464
|
+
"verified": "2026-08-09"
|
|
813
1465
|
},
|
|
814
1466
|
{
|
|
815
1467
|
"name": "@octanejs/zustand",
|
|
816
|
-
"version": "0.1.
|
|
1468
|
+
"version": "0.1.48",
|
|
817
1469
|
"category": "Shared state",
|
|
818
1470
|
"upstream": { "package": "zustand", "version": "5.0.14" },
|
|
819
1471
|
"surface": "Complete 1:1 port: the framework-agnostic vanilla store is reused verbatim; `create`/`useStore`, `shallow`/`useShallow`, the traditional equality-fn variants, and all middleware (persist, devtools, subscribeWithSelector, combine, redux).",
|
|
@@ -821,7 +1473,7 @@
|
|
|
821
1473
|
"Unstable selectors (a new reference every render) settle after a bounded number of re-renders instead of hitting React's `useSyncExternalStore` warning loop — still prefer `useShallow`."
|
|
822
1474
|
],
|
|
823
1475
|
"ssr": "No SSR-specific surface; no dedicated SSR tests.",
|
|
824
|
-
"verified": "2026-
|
|
1476
|
+
"verified": "2026-08-02"
|
|
825
1477
|
}
|
|
826
1478
|
],
|
|
827
1479
|
"reactPackages": {
|
|
@@ -829,22 +1481,33 @@
|
|
|
829
1481
|
"@base-ui-components/react": "@octanejs/base-ui",
|
|
830
1482
|
"@dnd-kit/react": "@octanejs/dnd-kit",
|
|
831
1483
|
"@floating-ui/react": "@octanejs/floating-ui",
|
|
1484
|
+
"@formisch/react": "@octanejs/formisch",
|
|
1485
|
+
"@formkit/auto-animate": "@octanejs/auto-animate",
|
|
1486
|
+
"@gsap/react": "@octanejs/gsap",
|
|
1487
|
+
"@inertiajs/react": "@octanejs/inertia",
|
|
832
1488
|
"@lexical/react": "@octanejs/lexical",
|
|
833
1489
|
"@livestore/react": "@octanejs/livestore",
|
|
834
1490
|
"@mantine/hooks": "@octanejs/mantine-hooks",
|
|
835
1491
|
"@mdx-js/react": "@octanejs/mdx",
|
|
1492
|
+
"@monaco-editor/react": "@octanejs/monaco-editor",
|
|
1493
|
+
"@opentui/react": "@octanejs/opentui",
|
|
836
1494
|
"@phosphor-icons/react": "@octanejs/phosphor-icons",
|
|
837
1495
|
"@rainbow-me/rainbowkit": "@octanejs/rainbowkit",
|
|
838
1496
|
"@react-rxjs/core": "@octanejs/rxjs",
|
|
839
1497
|
"@react-rxjs/utils": "@octanejs/rxjs",
|
|
1498
|
+
"@react-spring/parallax": "@octanejs/spring",
|
|
1499
|
+
"@react-spring/web": "@octanejs/spring",
|
|
1500
|
+
"@react-three/drei": "@octanejs/drei",
|
|
840
1501
|
"@react-three/fiber": "@octanejs/three",
|
|
841
1502
|
"@reduxjs/toolkit": "@octanejs/redux-toolkit",
|
|
1503
|
+
"@solana/react": "@octanejs/solana-kit",
|
|
842
1504
|
"@streamdown/cjk": "@octanejs/streamdown",
|
|
843
1505
|
"@streamdown/code": "@octanejs/streamdown",
|
|
844
1506
|
"@streamdown/math": "@octanejs/streamdown",
|
|
845
1507
|
"@streamdown/mermaid": "@octanejs/streamdown",
|
|
846
1508
|
"@stylexjs/stylex": "@octanejs/stylex",
|
|
847
1509
|
"@tanstack/ai-react": "@octanejs/tanstack-ai",
|
|
1510
|
+
"@tanstack/react-db": "@octanejs/tanstack-db",
|
|
848
1511
|
"@tanstack/react-devtools": "@octanejs/tanstack-devtools",
|
|
849
1512
|
"@tanstack/react-form": "@octanejs/tanstack-form",
|
|
850
1513
|
"@tanstack/react-hotkeys": "@octanejs/tanstack-hotkeys",
|
|
@@ -907,10 +1570,17 @@
|
|
|
907
1570
|
"@visx/wordcloud": "@octanejs/visx",
|
|
908
1571
|
"@visx/xychart": "@octanejs/visx",
|
|
909
1572
|
"@visx/zoom": "@octanejs/visx",
|
|
1573
|
+
"@xstate/react": "@octanejs/xstate",
|
|
1574
|
+
"@xstate/store-react": "@octanejs/xstate-store",
|
|
1575
|
+
"@zag-js/react": "@octanejs/zag",
|
|
910
1576
|
"animejs": "@octanejs/animejs",
|
|
911
1577
|
"cmdk": "@octanejs/cmdk",
|
|
912
1578
|
"dexie-react-hooks": "@octanejs/dexie",
|
|
1579
|
+
"embla-carousel-react": "@octanejs/embla-carousel",
|
|
913
1580
|
"framer-motion": "@octanejs/motion",
|
|
1581
|
+
"html-react-parser": "@octanejs/html-react-parser",
|
|
1582
|
+
"ink": "@octanejs/ink",
|
|
1583
|
+
"input-otp": "@octanejs/input-otp",
|
|
914
1584
|
"jotai": "@octanejs/jotai",
|
|
915
1585
|
"lucide-react": "@octanejs/lucide",
|
|
916
1586
|
"mobx-react": "@octanejs/mobx",
|
|
@@ -918,25 +1588,48 @@
|
|
|
918
1588
|
"motion": "@octanejs/motion",
|
|
919
1589
|
"nuqs": "@octanejs/nuqs",
|
|
920
1590
|
"radix-ui": "@octanejs/radix",
|
|
1591
|
+
"react-alien-signals": "@octanejs/alien-signals",
|
|
921
1592
|
"react-aria": "@octanejs/aria",
|
|
922
1593
|
"react-aria-components": "@octanejs/aria",
|
|
1594
|
+
"react-calendar": "@octanejs/calendar",
|
|
1595
|
+
"react-colorful": "@octanejs/colorful",
|
|
1596
|
+
"react-content-loader": "@octanejs/content-loader",
|
|
1597
|
+
"react-day-picker": "@octanejs/day-picker",
|
|
1598
|
+
"react-draggable": "@octanejs/draggable",
|
|
1599
|
+
"react-dropzone": "@octanejs/dropzone",
|
|
923
1600
|
"react-error-boundary": "@octanejs/react-error-boundary",
|
|
924
1601
|
"react-hook-form": "@octanejs/hook-form",
|
|
925
1602
|
"react-i18next": "@octanejs/i18next",
|
|
1603
|
+
"react-image-crop": "@octanejs/image-crop",
|
|
1604
|
+
"react-intersection-observer": "@octanejs/intersection-observer",
|
|
926
1605
|
"react-map-gl": "@octanejs/react-map-gl",
|
|
927
1606
|
"react-map-gl/mapbox": "@octanejs/react-map-gl",
|
|
1607
|
+
"react-markdown": "@octanejs/markdown",
|
|
1608
|
+
"react-pdf": "@octanejs/pdf",
|
|
1609
|
+
"react-popper": "@octanejs/popper",
|
|
928
1610
|
"react-redux": "@octanejs/redux",
|
|
1611
|
+
"react-resizable-panels": "@octanejs/resizable-panels",
|
|
929
1612
|
"react-router": "@octanejs/remix-router",
|
|
930
1613
|
"react-router-dom": "@octanejs/remix-router",
|
|
931
1614
|
"react-stately": "@octanejs/aria",
|
|
1615
|
+
"react-syntax-highlighter": "@octanejs/syntax-highlighter",
|
|
1616
|
+
"react-textarea-autosize": "@octanejs/textarea-autosize",
|
|
1617
|
+
"react-to-print": "@octanejs/to-print",
|
|
1618
|
+
"react-transition-group": "@octanejs/transition-group",
|
|
1619
|
+
"react-waypoint": "@octanejs/waypoint",
|
|
1620
|
+
"react-window": "@octanejs/window",
|
|
932
1621
|
"recharts": "@octanejs/recharts",
|
|
933
1622
|
"shadcn": "@octanejs/shadcn",
|
|
934
1623
|
"sonner": "@octanejs/sonner",
|
|
935
1624
|
"streamdown": "@octanejs/streamdown",
|
|
936
1625
|
"styled-components": "@octanejs/styled-components",
|
|
1626
|
+
"swr": "@octanejs/swr",
|
|
1627
|
+
"use-stick-to-bottom": "@octanejs/stick-to-bottom",
|
|
937
1628
|
"usehooks-ts": "@octanejs/usehooks-ts",
|
|
938
1629
|
"valtio": "@octanejs/valtio",
|
|
1630
|
+
"vaul": "@octanejs/vaul",
|
|
939
1631
|
"wagmi": "@octanejs/wagmi",
|
|
1632
|
+
"wouter": "@octanejs/wouter",
|
|
940
1633
|
"zustand": "@octanejs/zustand"
|
|
941
1634
|
},
|
|
942
1635
|
"errorCodes": {
|
|
@@ -1171,6 +1864,61 @@
|
|
|
1171
1864
|
"message": "octane SSR: %s consecutive streaming passes completed no boundary — a use(thenable) never resolved. If promises are re-created on every render pass (e.g. created in an ancestor render and passed down through props), create them at their use() site or hoist them out of render.",
|
|
1172
1865
|
"runtime": ["server"],
|
|
1173
1866
|
"status": "active"
|
|
1867
|
+
},
|
|
1868
|
+
"49": {
|
|
1869
|
+
"message": "FragmentInstance.scrollIntoView() does not support scrollIntoViewOptions. Use the alignToTop boolean instead.",
|
|
1870
|
+
"runtime": ["client"],
|
|
1871
|
+
"status": "active"
|
|
1872
|
+
},
|
|
1873
|
+
"50": {
|
|
1874
|
+
"message": "Unclosed server-rendered Fragment descriptor.",
|
|
1875
|
+
"runtime": ["client"],
|
|
1876
|
+
"status": "active"
|
|
1877
|
+
},
|
|
1878
|
+
"51": {
|
|
1879
|
+
"message": "Hydration mismatch: the server-rendered node did not match the client render; the mismatched subtree was rebuilt on the client.",
|
|
1880
|
+
"runtime": ["client"],
|
|
1881
|
+
"status": "active"
|
|
1882
|
+
},
|
|
1883
|
+
"52": {
|
|
1884
|
+
"message": "Hydration mismatch: root adoption was abandoned after a server/client shape divergence; the root was rebuilt on the client.",
|
|
1885
|
+
"runtime": ["client"],
|
|
1886
|
+
"status": "active"
|
|
1887
|
+
},
|
|
1888
|
+
"53": {
|
|
1889
|
+
"message": "Hydration mismatch: the server rendered more root content than the client; the stale remainder was discarded.",
|
|
1890
|
+
"runtime": ["client"],
|
|
1891
|
+
"status": "active"
|
|
1892
|
+
},
|
|
1893
|
+
"54": {
|
|
1894
|
+
"message": "Hydration mismatch: the client rendered text where the server rendered none; the client text was built fresh.",
|
|
1895
|
+
"runtime": ["client"],
|
|
1896
|
+
"status": "active"
|
|
1897
|
+
},
|
|
1898
|
+
"55": {
|
|
1899
|
+
"message": "Hydration mismatch: the server rendered a different child shape where the client renders a component; the stale range was discarded and the component was built on the client.",
|
|
1900
|
+
"runtime": ["client"],
|
|
1901
|
+
"status": "active"
|
|
1902
|
+
},
|
|
1903
|
+
"56": {
|
|
1904
|
+
"message": "Hydration mismatch: the server rendered more list items than the client; the extra server items were discarded.",
|
|
1905
|
+
"runtime": ["client"],
|
|
1906
|
+
"status": "active"
|
|
1907
|
+
},
|
|
1908
|
+
"57": {
|
|
1909
|
+
"message": "prerenderToNodeStream requires a Node.js runtime with process.getBuiltinModule; use prerender() in non-Node environments.",
|
|
1910
|
+
"runtime": ["server"],
|
|
1911
|
+
"status": "active"
|
|
1912
|
+
},
|
|
1913
|
+
"58": {
|
|
1914
|
+
"message": "Unsupported native-read compiler/runtime version.",
|
|
1915
|
+
"runtime": ["client", "server"],
|
|
1916
|
+
"status": "active"
|
|
1917
|
+
},
|
|
1918
|
+
"59": {
|
|
1919
|
+
"message": "%s requires an active server component.",
|
|
1920
|
+
"runtime": ["server"],
|
|
1921
|
+
"status": "active"
|
|
1174
1922
|
}
|
|
1175
1923
|
}
|
|
1176
1924
|
}
|