@octanejs/cli 0.0.8 → 0.0.10
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/commands/analyze.js +18 -6
- package/src/commands/init/templates.js +137 -116
- package/src/data/octane-data.json +741 -196
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"bindings": [
|
|
3
3
|
{
|
|
4
4
|
"name": "@octanejs/alien-signals",
|
|
5
|
-
"version": "0.0.
|
|
6
|
-
"category": "
|
|
5
|
+
"version": "0.0.18",
|
|
6
|
+
"category": "State Management",
|
|
7
7
|
"upstream": {
|
|
8
8
|
"package": "react-alien-signals",
|
|
9
9
|
"version": "0.3.0",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"name": "@octanejs/animejs",
|
|
23
|
-
"version": "0.0.
|
|
24
|
-
"category": "
|
|
23
|
+
"version": "0.0.23",
|
|
24
|
+
"category": "Animation",
|
|
25
25
|
"upstream": {
|
|
26
26
|
"package": "animejs",
|
|
27
27
|
"version": "4.5.0",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"surface": "Anime.js is re-exported unchanged; `useAnimeScope` binds scoped DOM animation setup, refresh, dependency recreation, and cleanup to Octane, and `@octanejs/animejs/adapters/three` exposes Anime.js's official Three adapter.",
|
|
32
32
|
"divergences": [
|
|
33
33
|
"`useAnimeScope` is an Octane-native lifecycle helper; it is not an upstream Anime.js API.",
|
|
34
|
-
"
|
|
34
|
+
"Use additional Anime.js subpaths directly from animejs; the root and adapters/three convenience exports remain supported.",
|
|
35
35
|
"The Three adapter mutates raw objects while `@octanejs/three` retains frame-loop ownership; demand and never loops require explicit invalidation or advancement."
|
|
36
36
|
],
|
|
37
37
|
"ssr": "Supported. The hook returns inert refs during server rendering and creates no Anime.js scope until its client effect runs.",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"name": "@octanejs/apollo-client",
|
|
42
|
-
"version": "0.1.
|
|
43
|
-
"category": "
|
|
42
|
+
"version": "0.1.47",
|
|
43
|
+
"category": "Data",
|
|
44
44
|
"upstream": { "package": "@apollo/client", "version": "4.2.6" },
|
|
45
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.",
|
|
46
46
|
"divergences": [
|
|
@@ -53,38 +53,108 @@
|
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
"name": "@octanejs/aria",
|
|
56
|
-
"version": "0.0.
|
|
57
|
-
"category": "UI
|
|
58
|
-
"upstream": { "package": "react-aria", "version": "3.
|
|
59
|
-
"surface": "
|
|
56
|
+
"version": "0.0.48",
|
|
57
|
+
"category": "UI Libraries",
|
|
58
|
+
"upstream": { "package": "react-aria", "version": "3.51.0" },
|
|
59
|
+
"surface": "The `@octanejs/aria/components` entry point matches the complete named public surface of `react-aria-components@1.20.0`: 286 runtime exports and 327 type exports, checked in both directions with no missing or extra names. This includes TokenField, PreviewTrigger, 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.51.0 / React Stately 3.49.0 surfaces rather than separate full-export claims.",
|
|
60
60
|
"divergences": [
|
|
61
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
62
|
"`ref-as-prop`: React `forwardRef` wrappers become Octane ref-as-prop components.",
|
|
63
|
+
"React Server Components are not part of the Octane binding.",
|
|
63
64
|
"`valid-hoisted-identifiers`: The i18n server serializer keeps hoisted-string identifiers valid past 26 entries instead of emitting invalid JavaScript identifiers.",
|
|
64
65
|
"`server-rtl-direction`: The SSR locale direction derives from the injected locale via `isRTL` rather than being hard-coded to `ltr`."
|
|
65
66
|
],
|
|
66
|
-
"ssr": "Dedicated Node
|
|
67
|
-
"verified": "2026-
|
|
67
|
+
"ssr": "Dedicated Node coverage verifies SSRProvider, labelled relationships, snapshots, LTR/RTL locales, TokenField markup, and a closed PreviewTrigger. Vite-compiled server markup hydrates in place with interactive state updates. Other advanced families retain client and type/export coverage.",
|
|
68
|
+
"verified": "2026-09-07"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "@octanejs/auto-animate",
|
|
72
|
+
"version": "0.0.8",
|
|
73
|
+
"category": "Animation",
|
|
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.",
|
|
81
|
+
"divergences": [
|
|
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."
|
|
85
|
+
],
|
|
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"
|
|
68
88
|
},
|
|
69
89
|
{
|
|
70
90
|
"name": "@octanejs/base-ui",
|
|
71
|
-
"version": "0.1.
|
|
72
|
-
"category": "UI
|
|
73
|
-
"upstream": {
|
|
74
|
-
|
|
91
|
+
"version": "0.1.53",
|
|
92
|
+
"category": "UI Libraries",
|
|
93
|
+
"upstream": {
|
|
94
|
+
"package": "@base-ui/react",
|
|
95
|
+
"version": "1.8.0",
|
|
96
|
+
"commit": "47b40521eab921c2756bf9bdb0b0f07fbfdb8c8c",
|
|
97
|
+
"license": "MIT"
|
|
98
|
+
},
|
|
99
|
+
"surface": "All 79 upstream export entries are implemented, including Select, Combobox, Autocomplete, Drawer, Navigation Menu, OTP Field, Scroll Area, Toolbar, and the remaining parts of existing components.",
|
|
75
100
|
"divergences": [
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"`number-field-interaction-gaps`: `NumberField.ScrubArea` and hold-to-repeat stepping remain unported; steppers respond to single presses only."
|
|
101
|
+
"Host handlers receive native DOM events; text edits use onInput. Refs are ordinary props and class values use Octane composition.",
|
|
102
|
+
"Octane does not replay renders or mount effects in Strict Mode and does not support the React Server Components Flight format.",
|
|
103
|
+
"Base UI style composition accepts object styles, including functions returning objects."
|
|
80
104
|
],
|
|
81
|
-
"ssr": "
|
|
82
|
-
"verified": "2026-
|
|
105
|
+
"ssr": "Native SSR/hydration, initial suspended hydration, focus and portal regressions pass, including installed Select/Combobox server form rendering.",
|
|
106
|
+
"verified": "2026-09-06"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"name": "@octanejs/base-ui-utils",
|
|
110
|
+
"version": "0.1.1",
|
|
111
|
+
"category": "UI Utilities",
|
|
112
|
+
"upstream": {
|
|
113
|
+
"package": "@base-ui/utils",
|
|
114
|
+
"version": "0.4.0",
|
|
115
|
+
"commit": "47b40521eab921c2756bf9bdb0b0f07fbfdb8c8c",
|
|
116
|
+
"license": "MIT"
|
|
117
|
+
},
|
|
118
|
+
"surface": "All 45 published Base UI utility entries and 85 entry/export pairs match the pinned 0.4.0 release.",
|
|
119
|
+
"divergences": ["Refs are ordinary props and host callbacks receive native DOM events."],
|
|
120
|
+
"ssr": "Server and hydration behavior is verified through native Base UI integration and installed-consumer checks.",
|
|
121
|
+
"verified": "2026-09-06"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"name": "@octanejs/better-auth",
|
|
125
|
+
"version": "0.0.4",
|
|
126
|
+
"category": "Data",
|
|
127
|
+
"upstream": { "package": "better-auth", "version": "1.6.29" },
|
|
128
|
+
"surface": "The public framework-agnostic Better Auth client is reused unchanged. `createAuthClient` converts the built-in session atom and plugin-provided atoms into Octane hooks while preserving endpoint actions, `$fetch`, `$store`, `$ERROR_CODES`, `$Infer`, and plugin inference. The upstream-compatible `useStore` helper is also included.",
|
|
129
|
+
"divergences": [
|
|
130
|
+
"React-framework server helpers such as `better-auth/tanstack-start` are not re-exported; use Better Auth's standard Fetch API handler or an Octane-specific server integration."
|
|
131
|
+
],
|
|
132
|
+
"ssr": "`useStore` supplies the current Nanostore value as the server snapshot. Better Auth's session atom does not start browser refresh or network activity while rendering on the server.",
|
|
133
|
+
"verified": "2026-08-17"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"name": "@octanejs/calendar",
|
|
137
|
+
"version": "0.0.9",
|
|
138
|
+
"category": "UI Libraries",
|
|
139
|
+
"upstream": {
|
|
140
|
+
"package": "react-calendar",
|
|
141
|
+
"version": "6.0.1",
|
|
142
|
+
"source": "https://github.com/wojtekmaj/react-calendar/tree/dc73f86f68239cb694650b66e0795a2f7f9323ed/packages/react-calendar",
|
|
143
|
+
"license": "MIT"
|
|
144
|
+
},
|
|
145
|
+
"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.",
|
|
146
|
+
"divergences": [
|
|
147
|
+
"Component refs are ordinary Octane props. Calendar ref exposes the upstream imperative handle; inputRef remains the DOM wrapper ref.",
|
|
148
|
+
"Callbacks receive native MouseEvent objects, which persist without React's synthetic event.persist() method.",
|
|
149
|
+
"Renderable public types use OctaneNode instead of React.ReactNode."
|
|
150
|
+
],
|
|
151
|
+
"ssr": "Supported. Pass locale explicitly when server and browser locale defaults may differ.",
|
|
152
|
+
"verified": "2026-08-20"
|
|
83
153
|
},
|
|
84
154
|
{
|
|
85
155
|
"name": "@octanejs/cmdk",
|
|
86
|
-
"version": "0.1.
|
|
87
|
-
"category": "UI
|
|
156
|
+
"version": "0.1.37",
|
|
157
|
+
"category": "UI Libraries",
|
|
88
158
|
"upstream": { "package": "cmdk", "version": "1.1.1" },
|
|
89
159
|
"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).",
|
|
90
160
|
"divergences": [
|
|
@@ -114,8 +184,8 @@
|
|
|
114
184
|
},
|
|
115
185
|
{
|
|
116
186
|
"name": "@octanejs/colorful",
|
|
117
|
-
"version": "0.0.
|
|
118
|
-
"category": "UI
|
|
187
|
+
"version": "0.0.18",
|
|
188
|
+
"category": "UI Libraries",
|
|
119
189
|
"upstream": { "package": "react-colorful", "version": "5.8.0" },
|
|
120
190
|
"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.",
|
|
121
191
|
"divergences": [
|
|
@@ -124,10 +194,35 @@
|
|
|
124
194
|
"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.",
|
|
125
195
|
"verified": "2026-08-03"
|
|
126
196
|
},
|
|
197
|
+
{
|
|
198
|
+
"name": "@octanejs/content-loader",
|
|
199
|
+
"version": "0.0.8",
|
|
200
|
+
"category": "UI Libraries",
|
|
201
|
+
"upstream": {
|
|
202
|
+
"package": "react-content-loader",
|
|
203
|
+
"version": "7.1.2",
|
|
204
|
+
"source": "https://github.com/danilowoz/react-content-loader/tree/c8a6b6c6669d7e663f9d7e1efecec08e876b0e5d",
|
|
205
|
+
"license": "MIT"
|
|
206
|
+
},
|
|
207
|
+
"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.",
|
|
208
|
+
"divergences": [
|
|
209
|
+
"Consumers import from @octanejs/content-loader instead of react-content-loader.",
|
|
210
|
+
"The React Native ./native entry is not published because Octane has no React Native renderer.",
|
|
211
|
+
"React test-renderer and shallow-renderer observations are asserted through mounted SVG DOM without changing their numeric expectations.",
|
|
212
|
+
"useId values use Octane's opaque identifier format.",
|
|
213
|
+
"Octane serializes SVG/CSS url() functions with quotes while React's test renderer reports the unquoted form; uniqueKey/baseUrl relationships are unchanged.",
|
|
214
|
+
"Octane inserts empty comment holes between children; snapshots compare the public SVG tree after stripping those markers.",
|
|
215
|
+
"rtl=false uses an empty style object instead of null so the style spread typechecks.",
|
|
216
|
+
"IContentLoaderProps.style is an object map rather than Octane's string-or-object SVG style union, matching React SVGAttributes.",
|
|
217
|
+
"Git package.json at the pin SHA advertises 6.2.1; npm published 7.1.2 from that SHA."
|
|
218
|
+
],
|
|
219
|
+
"ssr": "Supported. uniqueKey pins clip and gradient identifiers; otherwise useId remains opaque and request-local.",
|
|
220
|
+
"verified": "2026-08-20"
|
|
221
|
+
},
|
|
127
222
|
{
|
|
128
223
|
"name": "@octanejs/day-picker",
|
|
129
|
-
"version": "0.0.
|
|
130
|
-
"category": "UI
|
|
224
|
+
"version": "0.0.19",
|
|
225
|
+
"category": "UI Libraries",
|
|
131
226
|
"upstream": {
|
|
132
227
|
"package": "react-day-picker",
|
|
133
228
|
"version": "10.0.1",
|
|
@@ -142,8 +237,8 @@
|
|
|
142
237
|
},
|
|
143
238
|
{
|
|
144
239
|
"name": "@octanejs/devtools",
|
|
145
|
-
"version": "0.0.
|
|
146
|
-
"category": "
|
|
240
|
+
"version": "0.0.40",
|
|
241
|
+
"category": "Developer Tools",
|
|
147
242
|
"upstream": { "package": "octane", "version": "workspace" },
|
|
148
243
|
"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.",
|
|
149
244
|
"divergences": [],
|
|
@@ -152,8 +247,8 @@
|
|
|
152
247
|
},
|
|
153
248
|
{
|
|
154
249
|
"name": "@octanejs/dexie",
|
|
155
|
-
"version": "0.1.
|
|
156
|
-
"category": "
|
|
250
|
+
"version": "0.1.46",
|
|
251
|
+
"category": "Data",
|
|
157
252
|
"upstream": { "package": "dexie-react-hooks", "version": "4.4.0" },
|
|
158
253
|
"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.",
|
|
159
254
|
"divergences": [
|
|
@@ -166,8 +261,8 @@
|
|
|
166
261
|
},
|
|
167
262
|
{
|
|
168
263
|
"name": "@octanejs/dnd-kit",
|
|
169
|
-
"version": "0.1.
|
|
170
|
-
"category": "UI
|
|
264
|
+
"version": "0.1.47",
|
|
265
|
+
"category": "UI Utilities",
|
|
171
266
|
"upstream": { "package": "@dnd-kit/react", "version": "0.5.0" },
|
|
172
267
|
"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.",
|
|
173
268
|
"divergences": [
|
|
@@ -179,8 +274,8 @@
|
|
|
179
274
|
},
|
|
180
275
|
{
|
|
181
276
|
"name": "@octanejs/draggable",
|
|
182
|
-
"version": "0.0.
|
|
183
|
-
"category": "UI
|
|
277
|
+
"version": "0.0.18",
|
|
278
|
+
"category": "UI Utilities",
|
|
184
279
|
"upstream": { "package": "react-draggable", "version": "4.7.1" },
|
|
185
280
|
"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.",
|
|
186
281
|
"divergences": [
|
|
@@ -192,8 +287,8 @@
|
|
|
192
287
|
},
|
|
193
288
|
{
|
|
194
289
|
"name": "@octanejs/drei",
|
|
195
|
-
"version": "0.0.
|
|
196
|
-
"category": "
|
|
290
|
+
"version": "0.0.20",
|
|
291
|
+
"category": "3D",
|
|
197
292
|
"upstream": { "package": "@react-three/drei", "version": "10.7.7" },
|
|
198
293
|
"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.",
|
|
199
294
|
"divergences": [
|
|
@@ -204,8 +299,8 @@
|
|
|
204
299
|
},
|
|
205
300
|
{
|
|
206
301
|
"name": "@octanejs/dropzone",
|
|
207
|
-
"version": "0.0.
|
|
208
|
-
"category": "Forms
|
|
302
|
+
"version": "0.0.18",
|
|
303
|
+
"category": "Forms",
|
|
209
304
|
"upstream": { "package": "react-dropzone", "version": "20.0.0" },
|
|
210
305
|
"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.",
|
|
211
306
|
"divergences": [
|
|
@@ -217,8 +312,8 @@
|
|
|
217
312
|
},
|
|
218
313
|
{
|
|
219
314
|
"name": "@octanejs/electron",
|
|
220
|
-
"version": "0.0.
|
|
221
|
-
"category": "Desktop",
|
|
315
|
+
"version": "0.0.30",
|
|
316
|
+
"category": "Desktop Apps",
|
|
222
317
|
"upstream": { "package": "electron", "version": "43.2.0" },
|
|
223
318
|
"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.",
|
|
224
319
|
"divergences": [
|
|
@@ -233,10 +328,40 @@
|
|
|
233
328
|
"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.",
|
|
234
329
|
"verified": "2026-08-02"
|
|
235
330
|
},
|
|
331
|
+
{
|
|
332
|
+
"name": "@octanejs/email",
|
|
333
|
+
"version": "0.0.4",
|
|
334
|
+
"category": "Content",
|
|
335
|
+
"upstream": { "package": "react-email", "version": "6.9.2" },
|
|
336
|
+
"surface": "Email component surface: Body, Button, CodeBlock, CodeInline, Column, Container, Font, Head, Heading, Hr, Html, Img, Link, Markdown, Preview, Row, Section, Tailwind, Text, Prism themes, the pixel-based Tailwind preset, and an Octane-native static render helper.",
|
|
337
|
+
"divergences": [
|
|
338
|
+
"render accepts an Octane component plus props rather than a pre-created React node, matching octane/server's entry-point API.",
|
|
339
|
+
"Preview accepts its inspectable preview copy through the text prop; natural .tsrx children are opaque render blocks.",
|
|
340
|
+
"Markdown accepts its source through a string children prop; JSX children compile to children blocks and are rejected rather than invoked as render props.",
|
|
341
|
+
"Refs are ordinary Octane ref props rather than forwardRef components.",
|
|
342
|
+
"Head uses Octane's metadata-hoisting channel; render reconstructs the consumer-visible document head around hoisted tags.",
|
|
343
|
+
"Tailwind transforms fully rendered static HTML rather than cloning a React element tree, allowing natural .tsrx children and nested compiled components."
|
|
344
|
+
],
|
|
345
|
+
"ssr": "Supported and tested through renderToStaticMarkup: output has the React Email XHTML Transitional doctype and no hydration markers.",
|
|
346
|
+
"verified": "2026-08-10"
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"name": "@octanejs/email-cli",
|
|
350
|
+
"version": "0.0.4",
|
|
351
|
+
"category": "Content",
|
|
352
|
+
"upstream": { "package": "react-email", "version": "6.9.2" },
|
|
353
|
+
"surface": "Octane-native `export` and `dev` commands: recursive .tsrx template discovery, static HTML export, nested output paths, static assets, development template index and previews, Vite live reload, and compile/render error pages.",
|
|
354
|
+
"divergences": [
|
|
355
|
+
"The preview application is a lightweight Octane/Vite server rather than upstream's bundled React/Next application.",
|
|
356
|
+
"The executable is named octane-email to avoid colliding with upstream's email binary."
|
|
357
|
+
],
|
|
358
|
+
"ssr": "Templates compile with the Octane Vite plugin in SSR mode and render through @octanejs/email.",
|
|
359
|
+
"verified": "2026-08-10"
|
|
360
|
+
},
|
|
236
361
|
{
|
|
237
362
|
"name": "@octanejs/embla-carousel",
|
|
238
|
-
"version": "0.0.
|
|
239
|
-
"category": "UI
|
|
363
|
+
"version": "0.0.18",
|
|
364
|
+
"category": "UI Libraries",
|
|
240
365
|
"upstream": {
|
|
241
366
|
"package": "embla-carousel-react",
|
|
242
367
|
"version": "8.6.0",
|
|
@@ -249,18 +374,40 @@
|
|
|
249
374
|
},
|
|
250
375
|
{
|
|
251
376
|
"name": "@octanejs/floating-ui",
|
|
252
|
-
"version": "0.1.
|
|
253
|
-
"category": "UI
|
|
377
|
+
"version": "0.1.53",
|
|
378
|
+
"category": "UI Utilities",
|
|
254
379
|
"upstream": { "package": "@floating-ui/react", "version": "0.27.19" },
|
|
255
|
-
"surface": "
|
|
256
|
-
"divergences": [
|
|
257
|
-
|
|
258
|
-
|
|
380
|
+
"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: 276 adapted assertions pass compatibly, 25 remain executable expected-failure negative controls, and 6 upstream-declared skips are non-evidence.",
|
|
381
|
+
"divergences": [
|
|
382
|
+
"`ref-as-prop`: React forwardRef component APIs become Octane ref-as-prop APIs.",
|
|
383
|
+
"Twenty-five 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.",
|
|
384
|
+
"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."
|
|
385
|
+
],
|
|
386
|
+
"ssr": "No dedicated SSR/hydration lane; the supported claims are client positioning and interactions.",
|
|
387
|
+
"verified": "2026-08-26"
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"name": "@octanejs/formisch",
|
|
391
|
+
"version": "0.0.7",
|
|
392
|
+
"category": "Forms",
|
|
393
|
+
"upstream": {
|
|
394
|
+
"package": "@formisch/react",
|
|
395
|
+
"version": "1.0.0-rc.0",
|
|
396
|
+
"commit": "4c494fd8cf105efd04a4b179e9c090595a0bf041"
|
|
397
|
+
},
|
|
398
|
+
"surface": "Ports the Formisch React adapter surface while vendoring its React-selected core and modular methods into one React-free Octane package.",
|
|
399
|
+
"divergences": [
|
|
400
|
+
"Octane native text controls use `onInput`; selects, checkboxes, and radios use native `onChange`.",
|
|
401
|
+
"React synthetic event and renderable types are replaced with native DOM events and OctaneNode.",
|
|
402
|
+
"React StrictMode-specific delayed signal cleanup is omitted in favor of Octane lifecycle cleanup."
|
|
403
|
+
],
|
|
404
|
+
"ssr": "Supported and tested: sequential requests stay isolated, hydration adopts existing form controls, and native input updates activate after hydration.",
|
|
405
|
+
"verified": "2026-07-30"
|
|
259
406
|
},
|
|
260
407
|
{
|
|
261
408
|
"name": "@octanejs/gsap",
|
|
262
|
-
"version": "0.0.
|
|
263
|
-
"category": "
|
|
409
|
+
"version": "0.0.21",
|
|
410
|
+
"category": "Animation",
|
|
264
411
|
"upstream": {
|
|
265
412
|
"package": "@gsap/react",
|
|
266
413
|
"version": "2.1.2",
|
|
@@ -278,8 +425,8 @@
|
|
|
278
425
|
},
|
|
279
426
|
{
|
|
280
427
|
"name": "@octanejs/hook-form",
|
|
281
|
-
"version": "0.1.
|
|
282
|
-
"category": "Forms
|
|
428
|
+
"version": "0.1.49",
|
|
429
|
+
"category": "Forms",
|
|
283
430
|
"upstream": { "package": "react-hook-form", "version": "7.81.0" },
|
|
284
431
|
"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.",
|
|
285
432
|
"divergences": [
|
|
@@ -289,10 +436,31 @@
|
|
|
289
436
|
"ssr": "Supported and tested — the upstream `*.server.test.tsx` suite runs via `octane/server` with byte-identical markup.",
|
|
290
437
|
"verified": "2026-08-01"
|
|
291
438
|
},
|
|
439
|
+
{
|
|
440
|
+
"name": "@octanejs/html-react-parser",
|
|
441
|
+
"version": "0.0.8",
|
|
442
|
+
"category": "Content",
|
|
443
|
+
"upstream": {
|
|
444
|
+
"package": "html-react-parser",
|
|
445
|
+
"version": "6.1.7",
|
|
446
|
+
"source": "https://github.com/remarkablemark/html-react-parser/tree/v6.1.7",
|
|
447
|
+
"license": "MIT"
|
|
448
|
+
},
|
|
449
|
+
"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.",
|
|
450
|
+
"divergences": [
|
|
451
|
+
"Consumers import from @octanejs/html-react-parser instead of html-react-parser.",
|
|
452
|
+
"Default element library is Octane, not React.",
|
|
453
|
+
"PRESERVE_CUSTOM_ATTRIBUTES is hardcoded true because Octane matches React 16+ DOM attributes while octane.version is 0.x.",
|
|
454
|
+
"Public types use ElementDescriptor/OctaneNode instead of React JSX.Element/ReactNode.",
|
|
455
|
+
"Octane serializes style objects through CSSOM, so custom-element style attribute spelling can differ from React snapshots while the parsed style object stays identical."
|
|
456
|
+
],
|
|
457
|
+
"ssr": "Parsing is string-to-element-tree and is SSR-safe. Rendering the tree uses Octane server renderToStaticMarkup.",
|
|
458
|
+
"verified": "2026-08-20"
|
|
459
|
+
},
|
|
292
460
|
{
|
|
293
461
|
"name": "@octanejs/i18next",
|
|
294
|
-
"version": "0.1.
|
|
295
|
-
"category": "
|
|
462
|
+
"version": "0.1.47",
|
|
463
|
+
"category": "Content",
|
|
296
464
|
"upstream": { "package": "react-i18next", "version": "17.0.9" },
|
|
297
465
|
"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.",
|
|
298
466
|
"divergences": [
|
|
@@ -304,10 +472,27 @@
|
|
|
304
472
|
"ssr": "Preloaded renderToString output and namespace collection are covered; useSSR, withSSR, getInitialProps, and composeInitialProps are ported. A dedicated hydration differential is still open.",
|
|
305
473
|
"verified": "2026-08-02"
|
|
306
474
|
},
|
|
475
|
+
{
|
|
476
|
+
"name": "@octanejs/image-crop",
|
|
477
|
+
"version": "0.0.9",
|
|
478
|
+
"category": "UI Utilities",
|
|
479
|
+
"upstream": {
|
|
480
|
+
"package": "react-image-crop",
|
|
481
|
+
"version": "11.1.2",
|
|
482
|
+
"commit": "2cd4d49b36ec9a29a63b27394ec29ade5646dc99"
|
|
483
|
+
},
|
|
484
|
+
"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.",
|
|
485
|
+
"divergences": [
|
|
486
|
+
"Event callbacks receive native DOM PointerEvent objects because Octane has no synthetic event layer.",
|
|
487
|
+
"The upstream Sass source compatibility path resolves to the precompiled CSS artifact."
|
|
488
|
+
],
|
|
489
|
+
"ssr": "ReactCrop renders its static wrapper, media child, mask, and selection markup without reading browser globals during render; crop interaction remains client-only.",
|
|
490
|
+
"verified": "2026-08-20"
|
|
491
|
+
},
|
|
307
492
|
{
|
|
308
493
|
"name": "@octanejs/inertia",
|
|
309
|
-
"version": "0.0.
|
|
310
|
-
"category": "
|
|
494
|
+
"version": "0.0.21",
|
|
495
|
+
"category": "Routing",
|
|
311
496
|
"upstream": { "package": "@inertiajs/react", "version": "3.6.1" },
|
|
312
497
|
"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.",
|
|
313
498
|
"divergences": [
|
|
@@ -316,23 +501,37 @@
|
|
|
316
501
|
"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.",
|
|
317
502
|
"verified": "2026-07-30"
|
|
318
503
|
},
|
|
504
|
+
{
|
|
505
|
+
"name": "@octanejs/ink",
|
|
506
|
+
"version": "0.0.15",
|
|
507
|
+
"category": "Terminal Apps",
|
|
508
|
+
"upstream": { "package": "ink", "version": "7.1.1" },
|
|
509
|
+
"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.",
|
|
510
|
+
"divergences": [
|
|
511
|
+
"Octane programmatic roots accept a component and props separately instead of a pre-created React element.",
|
|
512
|
+
"The concurrent render option remains accepted for source compatibility, but scheduling is owned by Octane rather than React Concurrent Mode.",
|
|
513
|
+
"Components are authored as .ink.tsrx and require @octanejs/ink's renderer configuration and JSX intrinsics."
|
|
514
|
+
],
|
|
515
|
+
"ssr": "Ink is a native terminal renderer. renderToString uses the same Octane universal host driver and Yoga/ANSI renderer without a terminal session.",
|
|
516
|
+
"verified": "2026-08-10"
|
|
517
|
+
},
|
|
319
518
|
{
|
|
320
519
|
"name": "@octanejs/input-otp",
|
|
321
|
-
"version": "0.0.
|
|
322
|
-
"category": "Forms
|
|
323
|
-
"upstream": { "package": "input-otp", "version": "1.
|
|
324
|
-
"surface": "Complete against input-otp@1.
|
|
520
|
+
"version": "0.0.19",
|
|
521
|
+
"category": "Forms",
|
|
522
|
+
"upstream": { "package": "input-otp", "version": "1.5.0" },
|
|
523
|
+
"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.",
|
|
325
524
|
"divergences": [
|
|
326
525
|
"Octane's native per-edit `input` event drives the hidden text input internally; the public callback remains the source-compatible `onChange(newValue)`.",
|
|
327
526
|
"Refs are ordinary Octane ref props rather than React `forwardRef`; consumer ref behavior is unchanged."
|
|
328
527
|
],
|
|
329
528
|
"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.",
|
|
330
|
-
"verified": "2026-08-
|
|
529
|
+
"verified": "2026-08-20"
|
|
331
530
|
},
|
|
332
531
|
{
|
|
333
532
|
"name": "@octanejs/intersection-observer",
|
|
334
|
-
"version": "0.0.
|
|
335
|
-
"category": "UI
|
|
533
|
+
"version": "0.0.18",
|
|
534
|
+
"category": "UI Utilities",
|
|
336
535
|
"upstream": {
|
|
337
536
|
"package": "react-intersection-observer",
|
|
338
537
|
"version": "10.1.0",
|
|
@@ -353,18 +552,22 @@
|
|
|
353
552
|
},
|
|
354
553
|
{
|
|
355
554
|
"name": "@octanejs/jotai",
|
|
356
|
-
"version": "0.1.
|
|
357
|
-
"category": "
|
|
358
|
-
"upstream": { "package": "jotai", "version": "
|
|
359
|
-
"surface": "
|
|
360
|
-
"divergences": [
|
|
361
|
-
|
|
362
|
-
|
|
555
|
+
"version": "0.1.50",
|
|
556
|
+
"category": "State Management",
|
|
557
|
+
"upstream": { "package": "jotai", "version": "3.0.0" },
|
|
558
|
+
"surface": "Jotai 3 runtime surface: imported vanilla atoms, stores, utilities and internals; ported Provider, useStore, useAtom, useSetAtom, useAtomValue, useAtomValueRaw, useAtomValueRawSync and four hook utilities.",
|
|
559
|
+
"divergences": [
|
|
560
|
+
"Octane hook call-site slots are forwarded through composed hooks.",
|
|
561
|
+
"React class error-boundary test fixtures use Octane functional ErrorBoundary components.",
|
|
562
|
+
"Commit-count test hooks run in component setup and use explicit every-render effects to preserve the upstream observation boundary."
|
|
563
|
+
],
|
|
564
|
+
"ssr": "Server rendering and hydration are tested for both raw hooks with request-local stores, no server subscriptions, adopted DOM, client updates and teardown.",
|
|
565
|
+
"verified": "2026-09-12"
|
|
363
566
|
},
|
|
364
567
|
{
|
|
365
568
|
"name": "@octanejs/lexical",
|
|
366
|
-
"version": "0.1.
|
|
367
|
-
"category": "
|
|
569
|
+
"version": "0.1.53",
|
|
570
|
+
"category": "Content",
|
|
368
571
|
"upstream": { "package": "@lexical/react", "version": "0.46.0" },
|
|
369
572
|
"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.",
|
|
370
573
|
"divergences": [
|
|
@@ -376,8 +579,8 @@
|
|
|
376
579
|
},
|
|
377
580
|
{
|
|
378
581
|
"name": "@octanejs/livestore",
|
|
379
|
-
"version": "0.0.
|
|
380
|
-
"category": "
|
|
582
|
+
"version": "0.0.22",
|
|
583
|
+
"category": "Data",
|
|
381
584
|
"upstream": { "package": "@livestore/react", "version": "0.4.0" },
|
|
382
585
|
"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.",
|
|
383
586
|
"divergences": [
|
|
@@ -390,8 +593,8 @@
|
|
|
390
593
|
},
|
|
391
594
|
{
|
|
392
595
|
"name": "@octanejs/lucide",
|
|
393
|
-
"version": "0.1.
|
|
394
|
-
"category": "
|
|
596
|
+
"version": "0.1.47",
|
|
597
|
+
"category": "Icons",
|
|
395
598
|
"upstream": { "package": "lucide-react", "version": "1.24.0" },
|
|
396
599
|
"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.",
|
|
397
600
|
"divergences": [
|
|
@@ -403,8 +606,8 @@
|
|
|
403
606
|
},
|
|
404
607
|
{
|
|
405
608
|
"name": "@octanejs/mantine-hooks",
|
|
406
|
-
"version": "0.1.
|
|
407
|
-
"category": "UI
|
|
609
|
+
"version": "0.1.33",
|
|
610
|
+
"category": "UI Utilities",
|
|
408
611
|
"upstream": { "package": "@mantine/hooks", "version": "9.5.0" },
|
|
409
612
|
"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.",
|
|
410
613
|
"divergences": [
|
|
@@ -417,8 +620,8 @@
|
|
|
417
620
|
},
|
|
418
621
|
{
|
|
419
622
|
"name": "@octanejs/markdown",
|
|
420
|
-
"version": "0.0.
|
|
421
|
-
"category": "
|
|
623
|
+
"version": "0.0.18",
|
|
624
|
+
"category": "Content",
|
|
422
625
|
"upstream": { "package": "react-markdown", "version": "10.1.0" },
|
|
423
626
|
"surface": "Complete react-markdown 10.1.0 root runtime and public type surface: Markdown, MarkdownAsync, MarkdownHooks, defaultUrlTransform, and all six exported type families.",
|
|
424
627
|
"divergences": [
|
|
@@ -431,8 +634,8 @@
|
|
|
431
634
|
},
|
|
432
635
|
{
|
|
433
636
|
"name": "@octanejs/mdx",
|
|
434
|
-
"version": "0.1.
|
|
435
|
-
"category": "
|
|
637
|
+
"version": "0.1.50",
|
|
638
|
+
"category": "Content",
|
|
436
639
|
"upstream": { "package": "@mdx-js/mdx", "version": "3.1.1" },
|
|
437
640
|
"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.",
|
|
438
641
|
"divergences": [
|
|
@@ -443,8 +646,8 @@
|
|
|
443
646
|
},
|
|
444
647
|
{
|
|
445
648
|
"name": "@octanejs/mobx",
|
|
446
|
-
"version": "0.1.
|
|
447
|
-
"category": "
|
|
649
|
+
"version": "0.1.33",
|
|
650
|
+
"category": "State Management",
|
|
448
651
|
"upstream": { "package": "mobx-react-lite", "version": "4.1.1", "core": "mobx@6.16.1" },
|
|
449
652
|
"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.",
|
|
450
653
|
"divergences": [
|
|
@@ -457,8 +660,8 @@
|
|
|
457
660
|
},
|
|
458
661
|
{
|
|
459
662
|
"name": "@octanejs/monaco-editor",
|
|
460
|
-
"version": "0.0.
|
|
461
|
-
"category": "
|
|
663
|
+
"version": "0.0.20",
|
|
664
|
+
"category": "Content",
|
|
462
665
|
"upstream": {
|
|
463
666
|
"package": "@monaco-editor/react",
|
|
464
667
|
"version": "4.7.0",
|
|
@@ -477,8 +680,8 @@
|
|
|
477
680
|
},
|
|
478
681
|
{
|
|
479
682
|
"name": "@octanejs/motion",
|
|
480
|
-
"version": "0.1.
|
|
481
|
-
"category": "
|
|
683
|
+
"version": "0.1.52",
|
|
684
|
+
"category": "Animation",
|
|
482
685
|
"upstream": { "package": "motion", "version": "12.42.2" },
|
|
483
686
|
"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.",
|
|
484
687
|
"divergences": [
|
|
@@ -491,8 +694,8 @@
|
|
|
491
694
|
},
|
|
492
695
|
{
|
|
493
696
|
"name": "@octanejs/nuqs",
|
|
494
|
-
"version": "0.1.
|
|
495
|
-
"category": "
|
|
697
|
+
"version": "0.1.41",
|
|
698
|
+
"category": "Routing",
|
|
496
699
|
"upstream": { "package": "nuqs", "version": "2.9.1" },
|
|
497
700
|
"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`.",
|
|
498
701
|
"divergences": [
|
|
@@ -504,10 +707,42 @@
|
|
|
504
707
|
"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.",
|
|
505
708
|
"verified": "2026-08-02"
|
|
506
709
|
},
|
|
710
|
+
{
|
|
711
|
+
"name": "@octanejs/octane-is",
|
|
712
|
+
"version": "0.0.1",
|
|
713
|
+
"category": "Developer Tools",
|
|
714
|
+
"upstream": { "package": "react-is", "version": "19.2.7" },
|
|
715
|
+
"surface": "All 26 published react-is 19.2.7 exports over Octane element descriptors and callable component metadata.",
|
|
716
|
+
"divergences": [
|
|
717
|
+
"Kind labels use Octane symbols and reject React elements.",
|
|
718
|
+
"Context.Consumer, forwardRef, Profiler and SuspenseList have no Octane kind; their predicates return false.",
|
|
719
|
+
"StrictMode identifies Octane's pass-through wrapper without double invocation.",
|
|
720
|
+
"React Server Component references are not valid Octane types."
|
|
721
|
+
],
|
|
722
|
+
"ssr": "Predicates are pure; they never render a component or start a lazy loader.",
|
|
723
|
+
"verified": "2026-09-03"
|
|
724
|
+
},
|
|
725
|
+
{
|
|
726
|
+
"name": "@octanejs/opentui",
|
|
727
|
+
"version": "0.0.7",
|
|
728
|
+
"category": "Terminal Apps",
|
|
729
|
+
"upstream": { "package": "@opentui/react", "version": "0.5.8" },
|
|
730
|
+
"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.",
|
|
731
|
+
"divergences": [
|
|
732
|
+
"Octane owns reconciliation, components, hooks, context, scheduling, errors, refs, and effects instead of embedding React Reconciler.",
|
|
733
|
+
"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.",
|
|
734
|
+
"Refs are ordinary Octane props and may be composed with `ref={[a, b]}`; there is no `forwardRef` layer.",
|
|
735
|
+
"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.",
|
|
736
|
+
"React DevTools and OpenTUI's React runtime-plugin bundling subpaths are not ported. Applications configure the Octane compiler with `opentuiRenderers`.",
|
|
737
|
+
"Portal targets are explicitly limited to borrowed `RootRenderable` instances from the same `CliRenderer` context and are never destroyed by the binding."
|
|
738
|
+
],
|
|
739
|
+
"ssr": "Unsupported. OpenTUI is a native terminal renderer; `.opentui.tsrx` modules are rejected from server graphs and have no HTML hydration contract.",
|
|
740
|
+
"verified": "2026-08-25"
|
|
741
|
+
},
|
|
507
742
|
{
|
|
508
743
|
"name": "@octanejs/pdf",
|
|
509
|
-
"version": "0.0.
|
|
510
|
-
"category": "
|
|
744
|
+
"version": "0.0.18",
|
|
745
|
+
"category": "Content",
|
|
511
746
|
"upstream": { "package": "react-pdf", "version": "10.4.1" },
|
|
512
747
|
"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.",
|
|
513
748
|
"divergences": [
|
|
@@ -519,8 +754,8 @@
|
|
|
519
754
|
},
|
|
520
755
|
{
|
|
521
756
|
"name": "@octanejs/phosphor-icons",
|
|
522
|
-
"version": "0.0.
|
|
523
|
-
"category": "
|
|
757
|
+
"version": "0.0.32",
|
|
758
|
+
"category": "Icons",
|
|
524
759
|
"upstream": { "package": "@phosphor-icons/react", "version": "2.1.10" },
|
|
525
760
|
"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.",
|
|
526
761
|
"divergences": [
|
|
@@ -533,8 +768,8 @@
|
|
|
533
768
|
},
|
|
534
769
|
{
|
|
535
770
|
"name": "@octanejs/popper",
|
|
536
|
-
"version": "0.0.
|
|
537
|
-
"category": "UI
|
|
771
|
+
"version": "0.0.18",
|
|
772
|
+
"category": "UI Utilities",
|
|
538
773
|
"upstream": { "package": "react-popper", "version": "2.3.0" },
|
|
539
774
|
"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.",
|
|
540
775
|
"divergences": [
|
|
@@ -544,10 +779,28 @@
|
|
|
544
779
|
"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.",
|
|
545
780
|
"verified": "2026-08-03"
|
|
546
781
|
},
|
|
782
|
+
{
|
|
783
|
+
"name": "@octanejs/portabletext",
|
|
784
|
+
"version": "0.1.2",
|
|
785
|
+
"category": "Sanity Content",
|
|
786
|
+
"upstream": {
|
|
787
|
+
"package": "@portabletext/react",
|
|
788
|
+
"version": "8.0.1",
|
|
789
|
+
"commit": "52770c934266773c0b52ae3a8e3bc2a0c8137985"
|
|
790
|
+
},
|
|
791
|
+
"surface": "Complete runtime surface: PortableText, defaultComponents, mergeComponents, toPlainText, PortableTextBlock and ListNestMode, plus renderer component and TypeGen helper types.",
|
|
792
|
+
"divergences": [
|
|
793
|
+
"Renderer callbacks return OctaneNode rather than ReactNode.",
|
|
794
|
+
"Custom component refs and events use Octane's normal ref prop and native DOM events.",
|
|
795
|
+
"PortableTextReactComponents and ReactPortableTextList are compatibility aliases; Octane-named equivalents are preferred."
|
|
796
|
+
],
|
|
797
|
+
"ssr": "Supported and differential-tested against @portabletext/react@8.0.1 static markup.",
|
|
798
|
+
"verified": "2026-08-24"
|
|
799
|
+
},
|
|
547
800
|
{
|
|
548
801
|
"name": "@octanejs/radix",
|
|
549
|
-
"version": "0.1.
|
|
550
|
-
"category": "UI
|
|
802
|
+
"version": "0.1.53",
|
|
803
|
+
"category": "UI Libraries",
|
|
551
804
|
"upstream": { "package": "radix-ui", "version": "1.6.4" },
|
|
552
805
|
"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.",
|
|
553
806
|
"divergences": [
|
|
@@ -559,7 +812,7 @@
|
|
|
559
812
|
},
|
|
560
813
|
{
|
|
561
814
|
"name": "@octanejs/rainbowkit",
|
|
562
|
-
"version": "0.0.
|
|
815
|
+
"version": "0.0.33",
|
|
563
816
|
"category": "Web3",
|
|
564
817
|
"upstream": { "package": "@rainbow-me/rainbowkit", "version": "2.2.11" },
|
|
565
818
|
"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.",
|
|
@@ -575,8 +828,8 @@
|
|
|
575
828
|
},
|
|
576
829
|
{
|
|
577
830
|
"name": "@octanejs/react-error-boundary",
|
|
578
|
-
"version": "0.1.
|
|
579
|
-
"category": "UI
|
|
831
|
+
"version": "0.1.33",
|
|
832
|
+
"category": "UI Utilities",
|
|
580
833
|
"upstream": { "package": "react-error-boundary", "version": "6.1.2" },
|
|
581
834
|
"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.",
|
|
582
835
|
"divergences": [
|
|
@@ -589,14 +842,13 @@
|
|
|
589
842
|
},
|
|
590
843
|
{
|
|
591
844
|
"name": "@octanejs/react-map-gl",
|
|
592
|
-
"version": "0.0.
|
|
593
|
-
"category": "
|
|
845
|
+
"version": "0.0.24",
|
|
846
|
+
"category": "Visualization",
|
|
594
847
|
"upstream": { "package": "@vis.gl/react-mapbox", "version": "8.1.2 (b1e46fcf)" },
|
|
595
848
|
"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.",
|
|
596
849
|
"divergences": [
|
|
597
850
|
"<Source> delivers its generated id to child layers through context rather than cloneElement, so the id reaches any descendant <Layer> rather than only direct children. It still overrides an explicitly set source, as cloneElement did.",
|
|
598
851
|
"Map, Marker, Popup and GeolocateControl take their ref as an ordinary prop; Octane has no forwardRef. `<Map ref={mapRef} />` is unchanged.",
|
|
599
|
-
"Effect cleanups run on the passive drain after root.unmount() rather than inside it, so the map's WebGL context and worker pool are released one drain later.",
|
|
600
852
|
"Marker picks between its own element and Mapbox's default pin from what its children actually rendered, because a compiled children block cannot be inspected the way React.Children.forEach inspects descriptors. Children that render something, render nothing, or first render after mount all match upstream; a child that stays truthy while rendering nothing forever gets the default pin here and an empty, invisible element upstream.",
|
|
601
853
|
"react-map-gl/mapbox-legacy (mapbox-gl v1) and @vis.gl/react-maplibre are out of scope."
|
|
602
854
|
],
|
|
@@ -605,8 +857,8 @@
|
|
|
605
857
|
},
|
|
606
858
|
{
|
|
607
859
|
"name": "@octanejs/recharts",
|
|
608
|
-
"version": "0.1.
|
|
609
|
-
"category": "
|
|
860
|
+
"version": "0.1.51",
|
|
861
|
+
"category": "Visualization",
|
|
610
862
|
"upstream": { "package": "recharts", "version": "3.9.2" },
|
|
611
863
|
"surface": "Broad runtime support across cartesian, polar, hierarchical, tooltip, legend, responsive-container, shape, and chart-state surfaces. `Brush` and `Treemap` remain intentionally unsupported.",
|
|
612
864
|
"divergences": [
|
|
@@ -617,8 +869,8 @@
|
|
|
617
869
|
},
|
|
618
870
|
{
|
|
619
871
|
"name": "@octanejs/redux",
|
|
620
|
-
"version": "0.1.
|
|
621
|
-
"category": "
|
|
872
|
+
"version": "0.1.50",
|
|
873
|
+
"category": "State Management",
|
|
622
874
|
"upstream": { "package": "react-redux", "version": "9.3.0" },
|
|
623
875
|
"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.",
|
|
624
876
|
"divergences": [
|
|
@@ -631,8 +883,8 @@
|
|
|
631
883
|
},
|
|
632
884
|
{
|
|
633
885
|
"name": "@octanejs/redux-toolkit",
|
|
634
|
-
"version": "0.1.
|
|
635
|
-
"category": "
|
|
886
|
+
"version": "0.1.48",
|
|
887
|
+
"category": "State Management",
|
|
636
888
|
"upstream": { "package": "@reduxjs/toolkit", "version": "2.12.0" },
|
|
637
889
|
"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.",
|
|
638
890
|
"divergences": [
|
|
@@ -644,8 +896,8 @@
|
|
|
644
896
|
},
|
|
645
897
|
{
|
|
646
898
|
"name": "@octanejs/remix-router",
|
|
647
|
-
"version": "0.1.
|
|
648
|
-
"category": "
|
|
899
|
+
"version": "0.1.48",
|
|
900
|
+
"category": "Routing",
|
|
649
901
|
"upstream": { "package": "react-router", "version": "8.2.0" },
|
|
650
902
|
"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.",
|
|
651
903
|
"divergences": [
|
|
@@ -658,10 +910,22 @@
|
|
|
658
910
|
"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.",
|
|
659
911
|
"verified": "2026-08-02"
|
|
660
912
|
},
|
|
913
|
+
{
|
|
914
|
+
"name": "@octanejs/resizable-panels",
|
|
915
|
+
"version": "0.0.11",
|
|
916
|
+
"category": "UI Utilities",
|
|
917
|
+
"upstream": { "package": "react-resizable-panels", "version": "4.12.2" },
|
|
918
|
+
"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.",
|
|
919
|
+
"divergences": [
|
|
920
|
+
"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."
|
|
921
|
+
],
|
|
922
|
+
"ssr": "Deterministic server rendering and live hydration adoption are covered by dedicated executable projects.",
|
|
923
|
+
"verified": "2026-08-02"
|
|
924
|
+
},
|
|
661
925
|
{
|
|
662
926
|
"name": "@octanejs/rxjs",
|
|
663
|
-
"version": "0.1.
|
|
664
|
-
"category": "
|
|
927
|
+
"version": "0.1.32",
|
|
928
|
+
"category": "State Management",
|
|
665
929
|
"upstream": {
|
|
666
930
|
"package": "@react-rxjs/core + @react-rxjs/utils",
|
|
667
931
|
"version": "0.10.8 / 0.9.7"
|
|
@@ -674,15 +938,85 @@
|
|
|
674
938
|
"ssr": "useSyncExternalStore supplies the state snapshot during server rendering; browser-only ReactDOM batching helpers are intentionally absent.",
|
|
675
939
|
"verified": "2026-08-02"
|
|
676
940
|
},
|
|
941
|
+
{
|
|
942
|
+
"name": "@octanejs/sanity-icons",
|
|
943
|
+
"version": "0.1.2",
|
|
944
|
+
"category": "Sanity Content",
|
|
945
|
+
"upstream": {
|
|
946
|
+
"package": "@sanity/icons",
|
|
947
|
+
"version": "5.2.1",
|
|
948
|
+
"commit": "e6c37d2d4f7f121254c077b3ae83e199ec0aec9c"
|
|
949
|
+
},
|
|
950
|
+
"surface": "Complete @sanity/icons@5.2.1 surface: all generated per-icon subpaths, named and default exports, Icon, icons, IconMap, IconSymbol and IconComponent.",
|
|
951
|
+
"divergences": [
|
|
952
|
+
"Refs are normal Octane ref props rather than React forwardRef wrappers.",
|
|
953
|
+
"Event callbacks receive native DOM events rather than React synthetic events."
|
|
954
|
+
],
|
|
955
|
+
"ssr": "Supported and tested against representative @sanity/icons static SVG markup.",
|
|
956
|
+
"verified": "2026-08-24"
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
"name": "@octanejs/sanity-loader",
|
|
960
|
+
"version": "0.1.2",
|
|
961
|
+
"category": "Sanity Content",
|
|
962
|
+
"upstream": {
|
|
963
|
+
"package": "@sanity/react-loader",
|
|
964
|
+
"version": "2.2.1",
|
|
965
|
+
"commit": "2e3f5720173acfe67a771d92bb7fc5b51e6ac014"
|
|
966
|
+
},
|
|
967
|
+
"surface": "Query-store milestone: createQueryStore, loadQuery, setServerClient, useQuery, useLiveMode, useEncodeDataAttribute, create-data-attribute exports, browser conditions, and the server-only rsc entry.",
|
|
968
|
+
"divergences": [
|
|
969
|
+
"Hooks use Octane hook slots and return Octane-compatible values rather than React hooks.",
|
|
970
|
+
"The experimental upstream ./jsx wrapped-data element factory is deferred to a separate milestone.",
|
|
971
|
+
"The ./rsc entry models a server-only Octane environment rather than React Server Component conditions."
|
|
972
|
+
],
|
|
973
|
+
"ssr": "Supported through loadQuery/setServerClient and the server-only rsc entry; initial query state is SSR-tested.",
|
|
974
|
+
"verified": "2026-08-24"
|
|
975
|
+
},
|
|
976
|
+
{
|
|
977
|
+
"name": "@octanejs/sanity-logos",
|
|
978
|
+
"version": "0.1.2",
|
|
979
|
+
"category": "Sanity Content",
|
|
980
|
+
"upstream": {
|
|
981
|
+
"package": "@sanity/logos",
|
|
982
|
+
"version": "2.2.5",
|
|
983
|
+
"commit": "e6c37d2d4f7f121254c077b3ae83e199ec0aec9c"
|
|
984
|
+
},
|
|
985
|
+
"surface": "Complete @sanity/logos@2.2.5 runtime surface: SanityLogo, SanityMonogram, GroqLogo and GroqMonogram, including dark/scheme/custom-color variants.",
|
|
986
|
+
"divergences": [
|
|
987
|
+
"Refs are normal Octane ref props rather than React forwardRef wrappers.",
|
|
988
|
+
"Event callbacks receive native DOM events rather than React synthetic events."
|
|
989
|
+
],
|
|
990
|
+
"ssr": "Supported and differential-tested against @sanity/logos@2.2.5 static SVG markup.",
|
|
991
|
+
"verified": "2026-08-24"
|
|
992
|
+
},
|
|
993
|
+
{
|
|
994
|
+
"name": "@octanejs/select",
|
|
995
|
+
"version": "0.1.3",
|
|
996
|
+
"category": "UI Libraries",
|
|
997
|
+
"upstream": {
|
|
998
|
+
"package": "react-select",
|
|
999
|
+
"version": "5.10.2",
|
|
1000
|
+
"commit": "052e864b4990a67c4ee416851c34d1eb7b58267b"
|
|
1001
|
+
},
|
|
1002
|
+
"surface": "All six JavaScript entry points and all 20 runtime exports. Public TypeScript contracts are consumer-compiled across every entry point. Framework-neutral declarations and every entry-point Props member are checked fail-closed; renderer-owned component, instance, event, node, and style contracts are explicitly tracked as the adaptations below.",
|
|
1003
|
+
"divergences": [
|
|
1004
|
+
"Renderable callback and component contracts use OctaneNode instead of ReactNode.",
|
|
1005
|
+
"Event-bearing contracts use native DOM events instead of React synthetic events.",
|
|
1006
|
+
"Renderer-owned style contracts use Octane style objects instead of Emotion CSSObjectWithLabel."
|
|
1007
|
+
],
|
|
1008
|
+
"ssr": "Default, styled, unstyled, asynchronous, creatable, state-managed, animated, nonce-bearing, static, string, and streaming server output is covered by executable React-oracle evidence.",
|
|
1009
|
+
"verified": "2026-08-03"
|
|
1010
|
+
},
|
|
677
1011
|
{
|
|
678
1012
|
"name": "@octanejs/shadcn",
|
|
679
|
-
"version": "0.0.
|
|
680
|
-
"category": "UI
|
|
1013
|
+
"version": "0.0.41",
|
|
1014
|
+
"category": "UI Libraries",
|
|
681
1015
|
"upstream": {
|
|
682
|
-
"package": "shadcn-ui/ui (
|
|
683
|
-
"version": "
|
|
1016
|
+
"package": "shadcn-ui/ui (component registry)",
|
|
1017
|
+
"version": "7c9eaba1c0a6404c990c144a654792e3313c650d + shadcn@4.21.0"
|
|
684
1018
|
},
|
|
685
|
-
"surface": "
|
|
1019
|
+
"surface": "Registry-first source binding with Radix (44 families, bare subpaths), React Aria (33, react-aria/<Family>), and Base UI (43, base-ui/<Family>) implementations. The registry emits base-nova (default), radix-nova, and aria-nova styles. The 4.21.0 update migrates class merging to cn@0.2.6 across all existing families while preserving tested Octane adaptations and local style choices. Base UI Select, Navigation Menu, and Scroll Area are transcribed from the release registry, resolved with its Nova style and Lucide icons, and target Base UI 1.8.0. The 44-family inventory is the current Octane scope, not the complete upstream registry: Base UI Sonner and additional upstream families such as Combobox remain outside it. Existing derived styles retain their unverified upstream-fidelity status.",
|
|
686
1020
|
"divergences": [
|
|
687
1021
|
"No `\"use client\"` directives anywhere: octane has no Server Components, so the RSC axis does not exist here.",
|
|
688
1022
|
"Refs are props (octane has no forwardRef) — upstream v4 already dropped forwardRef, so component shapes match.",
|
|
@@ -698,12 +1032,12 @@
|
|
|
698
1032
|
"The packaged theme.css omits the upstream site-only tokens (--surface, --code-*, --selection*) and inlines concrete oklch values for --chart-1..5 (upstream references Tailwind palette variables, which require a Tailwind build this standalone file cannot assume).",
|
|
699
1033
|
"The Base UI base's derived components carry unverified class strings. This is tracked rather than assumed safe: the bases genuinely diverge (the radix base's Skeleton is `bg-accent` where react-aria's is `bg-muted`), so identity is verified per component. `badge` was deliberately NOT derived — the react-aria version takes `render` as a function while Base UI's takes an element, so deriving it would ship the wrong API."
|
|
700
1034
|
],
|
|
701
|
-
"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.",
|
|
702
|
-
"verified": "2026-
|
|
1035
|
+
"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. The added Base UI Select, Navigation Menu, and Scroll Area wrappers have dedicated no-browser-globals SSR coverage; Select additionally proves hydration adoption and controlled updates. Base UI global scrollbar CSS is hoisted through a native template.",
|
|
1036
|
+
"verified": "2026-09-06"
|
|
703
1037
|
},
|
|
704
1038
|
{
|
|
705
|
-
"name": "@octanejs/solana-
|
|
706
|
-
"version": "0.0.
|
|
1039
|
+
"name": "@octanejs/solana-kit",
|
|
1040
|
+
"version": "0.0.22",
|
|
707
1041
|
"category": "Web3",
|
|
708
1042
|
"upstream": {
|
|
709
1043
|
"package": "@solana/react",
|
|
@@ -724,8 +1058,8 @@
|
|
|
724
1058
|
},
|
|
725
1059
|
{
|
|
726
1060
|
"name": "@octanejs/sonner",
|
|
727
|
-
"version": "0.1.
|
|
728
|
-
"category": "UI
|
|
1061
|
+
"version": "0.1.48",
|
|
1062
|
+
"category": "UI Libraries",
|
|
729
1063
|
"upstream": { "package": "sonner", "version": "2.0.7" },
|
|
730
1064
|
"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.",
|
|
731
1065
|
"divergences": [
|
|
@@ -738,8 +1072,8 @@
|
|
|
738
1072
|
},
|
|
739
1073
|
{
|
|
740
1074
|
"name": "@octanejs/spring",
|
|
741
|
-
"version": "0.0.
|
|
742
|
-
"category": "
|
|
1075
|
+
"version": "0.0.18",
|
|
1076
|
+
"category": "Animation",
|
|
743
1077
|
"upstream": { "package": "@react-spring/web", "version": "10.1.2" },
|
|
744
1078
|
"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.",
|
|
745
1079
|
"divergences": [
|
|
@@ -749,10 +1083,29 @@
|
|
|
749
1083
|
"ssr": "Initial and immediate values render on the server; browser observers and frame work start after client commit.",
|
|
750
1084
|
"verified": "2026-08-02"
|
|
751
1085
|
},
|
|
1086
|
+
{
|
|
1087
|
+
"name": "@octanejs/stick-to-bottom",
|
|
1088
|
+
"version": "0.0.8",
|
|
1089
|
+
"category": "UI Utilities",
|
|
1090
|
+
"upstream": {
|
|
1091
|
+
"package": "use-stick-to-bottom",
|
|
1092
|
+
"version": "1.1.6",
|
|
1093
|
+
"source": "https://github.com/stackblitz/use-stick-to-bottom/tree/8d6a19a0ca6ab632830588073e6a29312a06a088",
|
|
1094
|
+
"license": "MIT"
|
|
1095
|
+
},
|
|
1096
|
+
"surface": "Public runtime surface at use-stick-to-bottom 1.1.6: useStickToBottom, StickToBottom, StickToBottom.Content, useStickToBottomContext, and related types.",
|
|
1097
|
+
"divergences": [
|
|
1098
|
+
"Consumers import from @octanejs/stick-to-bottom instead of use-stick-to-bottom.",
|
|
1099
|
+
"Ref objects are structural { current } / callback refs rather than React.RefObject.",
|
|
1100
|
+
"The plain TypeScript useStickToBottom hook forwards compiler-injected slots; a symbol in the options position is treated as empty options."
|
|
1101
|
+
],
|
|
1102
|
+
"ssr": "Scroll/resize listeners attach in ref callbacks. Initial isAtBottom follows options.initial. Overflow auto is applied in a layout/effect.",
|
|
1103
|
+
"verified": "2026-08-20"
|
|
1104
|
+
},
|
|
752
1105
|
{
|
|
753
1106
|
"name": "@octanejs/streamdown",
|
|
754
|
-
"version": "0.1.
|
|
755
|
-
"category": "
|
|
1107
|
+
"version": "0.1.31",
|
|
1108
|
+
"category": "Content",
|
|
756
1109
|
"upstream": { "package": "streamdown", "version": "2.5.0" },
|
|
757
1110
|
"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.",
|
|
758
1111
|
"divergences": [
|
|
@@ -767,8 +1120,8 @@
|
|
|
767
1120
|
},
|
|
768
1121
|
{
|
|
769
1122
|
"name": "@octanejs/styled-components",
|
|
770
|
-
"version": "0.1.
|
|
771
|
-
"category": "Styling
|
|
1123
|
+
"version": "0.1.44",
|
|
1124
|
+
"category": "Styling",
|
|
772
1125
|
"upstream": { "package": "styled-components", "version": "6.4.3" },
|
|
773
1126
|
"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.",
|
|
774
1127
|
"divergences": [
|
|
@@ -786,8 +1139,8 @@
|
|
|
786
1139
|
},
|
|
787
1140
|
{
|
|
788
1141
|
"name": "@octanejs/stylex",
|
|
789
|
-
"version": "0.1.
|
|
790
|
-
"category": "Styling
|
|
1142
|
+
"version": "0.1.51",
|
|
1143
|
+
"category": "Styling",
|
|
791
1144
|
"upstream": { "package": "@stylexjs/stylex", "version": "0.19.0" },
|
|
792
1145
|
"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.",
|
|
793
1146
|
"divergences": [
|
|
@@ -799,8 +1152,8 @@
|
|
|
799
1152
|
},
|
|
800
1153
|
{
|
|
801
1154
|
"name": "@octanejs/swr",
|
|
802
|
-
"version": "0.0.
|
|
803
|
-
"category": "
|
|
1155
|
+
"version": "0.0.18",
|
|
1156
|
+
"category": "Data",
|
|
804
1157
|
"upstream": { "package": "swr", "version": "2.4.2" },
|
|
805
1158
|
"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.",
|
|
806
1159
|
"divergences": [
|
|
@@ -812,8 +1165,8 @@
|
|
|
812
1165
|
},
|
|
813
1166
|
{
|
|
814
1167
|
"name": "@octanejs/syntax-highlighter",
|
|
815
|
-
"version": "0.0.
|
|
816
|
-
"category": "
|
|
1168
|
+
"version": "0.0.18",
|
|
1169
|
+
"category": "Content",
|
|
817
1170
|
"upstream": { "package": "react-syntax-highlighter", "version": "16.1.1" },
|
|
818
1171
|
"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.",
|
|
819
1172
|
"divergences": [
|
|
@@ -825,8 +1178,8 @@
|
|
|
825
1178
|
},
|
|
826
1179
|
{
|
|
827
1180
|
"name": "@octanejs/tanstack-ai",
|
|
828
|
-
"version": "0.0.
|
|
829
|
-
"category": "
|
|
1181
|
+
"version": "0.0.46",
|
|
1182
|
+
"category": "Data",
|
|
830
1183
|
"upstream": { "package": "@tanstack/ai-react", "version": "0.17.0" },
|
|
831
1184
|
"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.",
|
|
832
1185
|
"divergences": [
|
|
@@ -842,10 +1195,25 @@
|
|
|
842
1195
|
"ssr": "Supported and tested: useChat renders its initial message snapshot through octane/server without a DOM.",
|
|
843
1196
|
"verified": "2026-08-09"
|
|
844
1197
|
},
|
|
1198
|
+
{
|
|
1199
|
+
"name": "@octanejs/tanstack-db",
|
|
1200
|
+
"version": "0.0.15",
|
|
1201
|
+
"category": "Data",
|
|
1202
|
+
"upstream": { "package": "@tanstack/db", "version": "0.7.0" },
|
|
1203
|
+
"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`.",
|
|
1204
|
+
"divergences": [
|
|
1205
|
+
"`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.",
|
|
1206
|
+
"`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.",
|
|
1207
|
+
"`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.",
|
|
1208
|
+
"StrictMode double-invocation is not applicable: Octane has no development double-invoke of component setup/cleanup."
|
|
1209
|
+
],
|
|
1210
|
+
"ssr": "Not yet exercised: no server-render tests are included for the live-query hooks.",
|
|
1211
|
+
"verified": "2026-08-13"
|
|
1212
|
+
},
|
|
845
1213
|
{
|
|
846
1214
|
"name": "@octanejs/tanstack-devtools",
|
|
847
|
-
"version": "0.0.
|
|
848
|
-
"category": "
|
|
1215
|
+
"version": "0.0.46",
|
|
1216
|
+
"category": "Developer Tools",
|
|
849
1217
|
"upstream": { "package": "@tanstack/react-devtools", "version": "0.10.7" },
|
|
850
1218
|
"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.",
|
|
851
1219
|
"divergences": [
|
|
@@ -859,8 +1227,8 @@
|
|
|
859
1227
|
},
|
|
860
1228
|
{
|
|
861
1229
|
"name": "@octanejs/tanstack-form",
|
|
862
|
-
"version": "0.0.
|
|
863
|
-
"category": "Forms
|
|
1230
|
+
"version": "0.0.48",
|
|
1231
|
+
"category": "Forms",
|
|
864
1232
|
"upstream": { "package": "@tanstack/react-form", "version": "1.33.2" },
|
|
865
1233
|
"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.",
|
|
866
1234
|
"divergences": [
|
|
@@ -873,8 +1241,8 @@
|
|
|
873
1241
|
},
|
|
874
1242
|
{
|
|
875
1243
|
"name": "@octanejs/tanstack-hotkeys",
|
|
876
|
-
"version": "0.0.
|
|
877
|
-
"category": "UI
|
|
1244
|
+
"version": "0.0.43",
|
|
1245
|
+
"category": "UI Utilities",
|
|
878
1246
|
"upstream": { "package": "@tanstack/react-hotkeys", "version": "0.10.0" },
|
|
879
1247
|
"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.",
|
|
880
1248
|
"divergences": [
|
|
@@ -885,8 +1253,8 @@
|
|
|
885
1253
|
},
|
|
886
1254
|
{
|
|
887
1255
|
"name": "@octanejs/tanstack-pacer",
|
|
888
|
-
"version": "0.0.
|
|
889
|
-
"category": "UI
|
|
1256
|
+
"version": "0.0.43",
|
|
1257
|
+
"category": "UI Utilities",
|
|
890
1258
|
"upstream": { "package": "@tanstack/react-pacer", "version": "0.22.1" },
|
|
891
1259
|
"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`.",
|
|
892
1260
|
"divergences": [
|
|
@@ -897,8 +1265,8 @@
|
|
|
897
1265
|
},
|
|
898
1266
|
{
|
|
899
1267
|
"name": "@octanejs/tanstack-query",
|
|
900
|
-
"version": "0.1.
|
|
901
|
-
"category": "
|
|
1268
|
+
"version": "0.1.52",
|
|
1269
|
+
"category": "Data",
|
|
902
1270
|
"upstream": { "package": "@tanstack/react-query", "version": "5.101.3" },
|
|
903
1271
|
"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.",
|
|
904
1272
|
"divergences": [
|
|
@@ -909,8 +1277,8 @@
|
|
|
909
1277
|
},
|
|
910
1278
|
{
|
|
911
1279
|
"name": "@octanejs/tanstack-router",
|
|
912
|
-
"version": "0.1.
|
|
913
|
-
"category": "
|
|
1280
|
+
"version": "0.1.53",
|
|
1281
|
+
"category": "Routing",
|
|
914
1282
|
"upstream": { "package": "@tanstack/react-router", "version": "1.170.18" },
|
|
915
1283
|
"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.",
|
|
916
1284
|
"divergences": [
|
|
@@ -923,8 +1291,8 @@
|
|
|
923
1291
|
},
|
|
924
1292
|
{
|
|
925
1293
|
"name": "@octanejs/tanstack-router-ssr-query",
|
|
926
|
-
"version": "0.0.
|
|
927
|
-
"category": "
|
|
1294
|
+
"version": "0.0.43",
|
|
1295
|
+
"category": "Routing",
|
|
928
1296
|
"upstream": { "package": "@tanstack/react-router-ssr-query", "version": "1.167.1" },
|
|
929
1297
|
"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.",
|
|
930
1298
|
"divergences": [],
|
|
@@ -933,8 +1301,8 @@
|
|
|
933
1301
|
},
|
|
934
1302
|
{
|
|
935
1303
|
"name": "@octanejs/tanstack-store",
|
|
936
|
-
"version": "0.0.
|
|
937
|
-
"category": "
|
|
1304
|
+
"version": "0.0.48",
|
|
1305
|
+
"category": "State Management",
|
|
938
1306
|
"upstream": { "package": "@tanstack/react-store", "version": "0.11.0" },
|
|
939
1307
|
"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.",
|
|
940
1308
|
"divergences": [
|
|
@@ -945,8 +1313,8 @@
|
|
|
945
1313
|
},
|
|
946
1314
|
{
|
|
947
1315
|
"name": "@octanejs/tanstack-table",
|
|
948
|
-
"version": "0.1.
|
|
949
|
-
"category": "
|
|
1316
|
+
"version": "0.1.51",
|
|
1317
|
+
"category": "Tables",
|
|
950
1318
|
"upstream": { "package": "@tanstack/react-table", "version": "9.0.0-beta.58" },
|
|
951
1319
|
"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.",
|
|
952
1320
|
"divergences": [
|
|
@@ -958,8 +1326,8 @@
|
|
|
958
1326
|
},
|
|
959
1327
|
{
|
|
960
1328
|
"name": "@octanejs/tanstack-virtual",
|
|
961
|
-
"version": "0.1.
|
|
962
|
-
"category": "
|
|
1329
|
+
"version": "0.1.49",
|
|
1330
|
+
"category": "Tables",
|
|
963
1331
|
"upstream": { "package": "@tanstack/react-virtual", "version": "3.14.5" },
|
|
964
1332
|
"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.",
|
|
965
1333
|
"divergences": [
|
|
@@ -970,8 +1338,8 @@
|
|
|
970
1338
|
},
|
|
971
1339
|
{
|
|
972
1340
|
"name": "@octanejs/tauri",
|
|
973
|
-
"version": "0.0.
|
|
974
|
-
"category": "Desktop",
|
|
1341
|
+
"version": "0.0.35",
|
|
1342
|
+
"category": "Desktop Apps",
|
|
975
1343
|
"upstream": { "package": "@tauri-apps/api", "version": "2.11.1" },
|
|
976
1344
|
"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.",
|
|
977
1345
|
"divergences": [
|
|
@@ -988,12 +1356,12 @@
|
|
|
988
1356
|
},
|
|
989
1357
|
{
|
|
990
1358
|
"name": "@octanejs/testing-library",
|
|
991
|
-
"version": "0.1.
|
|
992
|
-
"category": "
|
|
1359
|
+
"version": "0.1.51",
|
|
1360
|
+
"category": "Testing",
|
|
993
1361
|
"upstream": { "package": "@testing-library/react", "version": "16.3.2" },
|
|
994
|
-
"surface": "`render`/`rerender`/`cleanup`/`renderHook` + `act` over the verbatim `@testing-library/dom` (every query, `screen`, `within`, `waitFor`, `
|
|
1362
|
+
"surface": "`render`/`rerender`/`cleanup`/`renderHook` + `act` over the verbatim `@testing-library/dom` (every query, `screen`, `within`, `waitFor`, `prettyDOM`, `configure`), with commit timing wired to octane's scheduler via the dom-library's `eventWrapper`/`asyncWrapper` config. Focus and blur helpers additionally emit their bubbling native counterparts.",
|
|
995
1363
|
"divergences": [
|
|
996
|
-
"`fireEvent` dispatches
|
|
1364
|
+
"`fireEvent` dispatches native events: change remains an explicit native change and mouseEnter does not also dispatch mouseover. Focus/blur helpers emit focusin/focusout as well, for Octane delegated focus handlers.",
|
|
997
1365
|
"Not ported: the `ReactStrictMode` wrapper, `legacyRoot`, and the `onCaughtError`/`onRecoverableError` options."
|
|
998
1366
|
],
|
|
999
1367
|
"ssr": "`hydrate: true` adopts octane SSR output via `hydrateRoot`.",
|
|
@@ -1001,8 +1369,8 @@
|
|
|
1001
1369
|
},
|
|
1002
1370
|
{
|
|
1003
1371
|
"name": "@octanejs/textarea-autosize",
|
|
1004
|
-
"version": "0.0.
|
|
1005
|
-
"category": "UI
|
|
1372
|
+
"version": "0.0.19",
|
|
1373
|
+
"category": "UI Libraries",
|
|
1006
1374
|
"upstream": { "package": "react-textarea-autosize", "version": "8.5.9" },
|
|
1007
1375
|
"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.",
|
|
1008
1376
|
"divergences": [
|
|
@@ -1012,10 +1380,20 @@
|
|
|
1012
1380
|
"ssr": "Server rendering emits one plain textarea without accessing browser measurement globals; Octane hydration adopts the existing host and preserves pre-hydration uncontrolled edits.",
|
|
1013
1381
|
"verified": "2026-08-03"
|
|
1014
1382
|
},
|
|
1383
|
+
{
|
|
1384
|
+
"name": "@octanejs/thinking-orbs",
|
|
1385
|
+
"version": "0.1.2",
|
|
1386
|
+
"category": "Animation",
|
|
1387
|
+
"upstream": { "package": "thinking-orbs", "version": "0.2.0" },
|
|
1388
|
+
"surface": "ThinkingOrb component, resolvePreset, MODE_DRAWS, and public types — nine animation states, two tuned size presets, auto/dark/light theme, reduced-motion static frame.",
|
|
1389
|
+
"divergences": [],
|
|
1390
|
+
"ssr": "Canvas is client-only; server render emits the canvas element without animation.",
|
|
1391
|
+
"verified": "2026-08-07"
|
|
1392
|
+
},
|
|
1015
1393
|
{
|
|
1016
1394
|
"name": "@octanejs/three",
|
|
1017
|
-
"version": "0.1.
|
|
1018
|
-
"category": "
|
|
1395
|
+
"version": "0.1.46",
|
|
1396
|
+
"category": "3D",
|
|
1019
1397
|
"upstream": { "package": "@react-three/fiber", "version": "9.6.1 (2a528745)" },
|
|
1020
1398
|
"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.",
|
|
1021
1399
|
"divergences": [
|
|
@@ -1035,8 +1413,8 @@
|
|
|
1035
1413
|
},
|
|
1036
1414
|
{
|
|
1037
1415
|
"name": "@octanejs/tiptap",
|
|
1038
|
-
"version": "0.0.
|
|
1039
|
-
"category": "
|
|
1416
|
+
"version": "0.0.46",
|
|
1417
|
+
"category": "Content",
|
|
1040
1418
|
"upstream": { "package": "@tiptap/react", "version": "3.28.0" },
|
|
1041
1419
|
"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.",
|
|
1042
1420
|
"divergences": [
|
|
@@ -1050,10 +1428,30 @@
|
|
|
1050
1428
|
"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.",
|
|
1051
1429
|
"verified": "2026-08-02"
|
|
1052
1430
|
},
|
|
1431
|
+
{
|
|
1432
|
+
"name": "@octanejs/to-print",
|
|
1433
|
+
"version": "0.0.8",
|
|
1434
|
+
"category": "UI Utilities",
|
|
1435
|
+
"upstream": {
|
|
1436
|
+
"package": "react-to-print",
|
|
1437
|
+
"version": "3.3.0",
|
|
1438
|
+
"source": "https://github.com/MatthewHerbst/react-to-print/tree/853666f180006b68b533f216e58f974cc791a97f",
|
|
1439
|
+
"license": "MIT"
|
|
1440
|
+
},
|
|
1441
|
+
"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.",
|
|
1442
|
+
"divergences": [
|
|
1443
|
+
"Consumers import from @octanejs/to-print instead of react-to-print.",
|
|
1444
|
+
"contentRef is a structural { current } ref object rather than React.RefObject.",
|
|
1445
|
+
"The print callback accepts a native Event or a content getter; React.UIEvent is not used.",
|
|
1446
|
+
"The plain TypeScript useReactToPrint hook forwards compiler-injected slots; a symbol in the options position is treated as empty options."
|
|
1447
|
+
],
|
|
1448
|
+
"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.",
|
|
1449
|
+
"verified": "2026-08-20"
|
|
1450
|
+
},
|
|
1053
1451
|
{
|
|
1054
1452
|
"name": "@octanejs/transition-group",
|
|
1055
|
-
"version": "0.0.
|
|
1056
|
-
"category": "
|
|
1453
|
+
"version": "0.0.18",
|
|
1454
|
+
"category": "Animation",
|
|
1057
1455
|
"upstream": {
|
|
1058
1456
|
"package": "react-transition-group",
|
|
1059
1457
|
"version": "4.4.5",
|
|
@@ -1070,8 +1468,8 @@
|
|
|
1070
1468
|
},
|
|
1071
1469
|
{
|
|
1072
1470
|
"name": "@octanejs/usehooks-ts",
|
|
1073
|
-
"version": "0.0.
|
|
1074
|
-
"category": "UI
|
|
1471
|
+
"version": "0.0.34",
|
|
1472
|
+
"category": "UI Utilities",
|
|
1075
1473
|
"upstream": {
|
|
1076
1474
|
"package": "usehooks-ts",
|
|
1077
1475
|
"version": "3.1.1",
|
|
@@ -1088,8 +1486,8 @@
|
|
|
1088
1486
|
},
|
|
1089
1487
|
{
|
|
1090
1488
|
"name": "@octanejs/valtio",
|
|
1091
|
-
"version": "0.1.
|
|
1092
|
-
"category": "
|
|
1489
|
+
"version": "0.1.35",
|
|
1490
|
+
"category": "State Management",
|
|
1093
1491
|
"upstream": { "package": "valtio", "version": "2.3.2" },
|
|
1094
1492
|
"surface": "The framework-agnostic `valtio/vanilla` core and `valtio/vanilla/utils` are re-exported verbatim; `useSnapshot` and the `useProxy` utility are ported to Octane.",
|
|
1095
1493
|
"divergences": [
|
|
@@ -1100,8 +1498,8 @@
|
|
|
1100
1498
|
},
|
|
1101
1499
|
{
|
|
1102
1500
|
"name": "@octanejs/vaul",
|
|
1103
|
-
"version": "0.0.
|
|
1104
|
-
"category": "UI
|
|
1501
|
+
"version": "0.0.20",
|
|
1502
|
+
"category": "UI Libraries",
|
|
1105
1503
|
"upstream": {
|
|
1106
1504
|
"package": "vaul",
|
|
1107
1505
|
"version": "1.1.2",
|
|
@@ -1116,8 +1514,8 @@
|
|
|
1116
1514
|
},
|
|
1117
1515
|
{
|
|
1118
1516
|
"name": "@octanejs/visx",
|
|
1119
|
-
"version": "0.1.
|
|
1120
|
-
"category": "
|
|
1517
|
+
"version": "0.1.49",
|
|
1518
|
+
"category": "Visualization",
|
|
1121
1519
|
"upstream": { "package": "@visx/visx", "version": "4.0.0 + master@485c035" },
|
|
1122
1520
|
"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.",
|
|
1123
1521
|
"divergences": [
|
|
@@ -1132,7 +1530,7 @@
|
|
|
1132
1530
|
},
|
|
1133
1531
|
{
|
|
1134
1532
|
"name": "@octanejs/wagmi",
|
|
1135
|
-
"version": "0.0.
|
|
1533
|
+
"version": "0.0.33",
|
|
1136
1534
|
"category": "Web3",
|
|
1137
1535
|
"upstream": { "package": "wagmi", "version": "3.7.4" },
|
|
1138
1536
|
"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.",
|
|
@@ -1146,10 +1544,29 @@
|
|
|
1146
1544
|
"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.",
|
|
1147
1545
|
"verified": "2026-08-02"
|
|
1148
1546
|
},
|
|
1547
|
+
{
|
|
1548
|
+
"name": "@octanejs/waypoint",
|
|
1549
|
+
"version": "0.0.7",
|
|
1550
|
+
"category": "UI Utilities",
|
|
1551
|
+
"upstream": {
|
|
1552
|
+
"package": "react-waypoint",
|
|
1553
|
+
"version": "6.0.0",
|
|
1554
|
+
"source": "https://github.com/brigade/react-waypoint/tree/v6.0.0",
|
|
1555
|
+
"license": "MIT"
|
|
1556
|
+
},
|
|
1557
|
+
"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.",
|
|
1558
|
+
"divergences": [
|
|
1559
|
+
"Public node and prop types use Octane structural types and do not import React.",
|
|
1560
|
+
"The upstream class lifecycle is expressed with Octane hooks and refs-as-props.",
|
|
1561
|
+
"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."
|
|
1562
|
+
],
|
|
1563
|
+
"ssr": "Supported. The marker renders on the server and measurement/listeners begin after client mount.",
|
|
1564
|
+
"verified": "2026-08-24"
|
|
1565
|
+
},
|
|
1149
1566
|
{
|
|
1150
1567
|
"name": "@octanejs/window",
|
|
1151
|
-
"version": "0.0.
|
|
1152
|
-
"category": "
|
|
1568
|
+
"version": "0.0.19",
|
|
1569
|
+
"category": "Tables",
|
|
1153
1570
|
"upstream": { "package": "react-window", "version": "2.3.0" },
|
|
1154
1571
|
"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.",
|
|
1155
1572
|
"divergences": [
|
|
@@ -1159,10 +1576,71 @@
|
|
|
1159
1576
|
"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.",
|
|
1160
1577
|
"verified": "2026-08-03"
|
|
1161
1578
|
},
|
|
1579
|
+
{
|
|
1580
|
+
"name": "@octanejs/wouter",
|
|
1581
|
+
"version": "0.0.8",
|
|
1582
|
+
"category": "Routing",
|
|
1583
|
+
"upstream": {
|
|
1584
|
+
"package": "wouter",
|
|
1585
|
+
"version": "3.10.0",
|
|
1586
|
+
"source": "https://github.com/molefrog/wouter/tree/708c23639d4174ba7deda06c40c8208118899da7",
|
|
1587
|
+
"license": "Unlicense"
|
|
1588
|
+
},
|
|
1589
|
+
"surface": "Wouter 3.10.0 main router surface plus browser, hash, and memory location subpaths, ported to Octane with manual trailing hook-slot forwarding.",
|
|
1590
|
+
"divergences": [
|
|
1591
|
+
"Link accepts ref as an ordinary Octane prop; forwardRef is not used.",
|
|
1592
|
+
"Switch inspects explicit element descriptors, while nested TSRX children are opaque and must be supplied as descriptor arrays or createElement results.",
|
|
1593
|
+
"Octane useSyncExternalStore replaces the upstream shim and requires forwarded compiler hook slots.",
|
|
1594
|
+
"The React Native use-sync-external-store shim and Wouter's separate Preact package are not exported."
|
|
1595
|
+
],
|
|
1596
|
+
"ssr": "Router ssrPath, ssrSearch, and redirect context behavior is ported and covered by tests/ssr.test.ts.",
|
|
1597
|
+
"verified": "2026-08-20"
|
|
1598
|
+
},
|
|
1599
|
+
{
|
|
1600
|
+
"name": "@octanejs/xstate",
|
|
1601
|
+
"version": "0.0.10",
|
|
1602
|
+
"category": "State Management",
|
|
1603
|
+
"upstream": { "package": "@xstate/react", "version": "6.1.0" },
|
|
1604
|
+
"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.",
|
|
1605
|
+
"divergences": [
|
|
1606
|
+
"`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.",
|
|
1607
|
+
"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.",
|
|
1608
|
+
"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.",
|
|
1609
|
+
"`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."
|
|
1610
|
+
],
|
|
1611
|
+
"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.",
|
|
1612
|
+
"verified": "2026-08-15"
|
|
1613
|
+
},
|
|
1614
|
+
{
|
|
1615
|
+
"name": "@octanejs/xstate-store",
|
|
1616
|
+
"version": "0.0.10",
|
|
1617
|
+
"category": "State Management",
|
|
1618
|
+
"upstream": { "package": "@xstate/store-react", "version": "2.0.0" },
|
|
1619
|
+
"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.",
|
|
1620
|
+
"divergences": [
|
|
1621
|
+
"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.",
|
|
1622
|
+
"`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.",
|
|
1623
|
+
"During server rendering `getServerSnapshot` is optional and falls back to `getSnapshot`, where React throws. Every hook here supplies one."
|
|
1624
|
+
],
|
|
1625
|
+
"ssr": "Supported: selectors, stores, and atoms read their current snapshot during server rendering through `getServerSnapshot`, and the binding has no browser-only initialization.",
|
|
1626
|
+
"verified": "2026-08-15"
|
|
1627
|
+
},
|
|
1628
|
+
{
|
|
1629
|
+
"name": "@octanejs/xyflow",
|
|
1630
|
+
"version": "0.1.5",
|
|
1631
|
+
"category": "Visualization",
|
|
1632
|
+
"upstream": { "package": "@xyflow/react", "version": "12.11.2" },
|
|
1633
|
+
"surface": "ReactFlow, ReactFlowProvider, Handle, hooks (useReactFlow, useNodes, useEdges, …), change helpers, and node/edge utilities from @xyflow/react@12.11.2.",
|
|
1634
|
+
"divergences": [
|
|
1635
|
+
"Octane components are functions rather than forwardRef objects (ReactFlow, ReactFlowProvider, Handle)."
|
|
1636
|
+
],
|
|
1637
|
+
"ssr": "Store/provider render on server; canvas interactions are client-driven like upstream.",
|
|
1638
|
+
"verified": "2026-08-07"
|
|
1639
|
+
},
|
|
1162
1640
|
{
|
|
1163
1641
|
"name": "@octanejs/zag",
|
|
1164
|
-
"version": "0.0.
|
|
1165
|
-
"category": "UI
|
|
1642
|
+
"version": "0.0.18",
|
|
1643
|
+
"category": "UI Libraries",
|
|
1166
1644
|
"upstream": { "package": "@zag-js/react", "version": "1.42.0" },
|
|
1167
1645
|
"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.",
|
|
1168
1646
|
"divergences": [
|
|
@@ -1176,13 +1654,11 @@
|
|
|
1176
1654
|
},
|
|
1177
1655
|
{
|
|
1178
1656
|
"name": "@octanejs/zustand",
|
|
1179
|
-
"version": "0.1.
|
|
1180
|
-
"category": "
|
|
1657
|
+
"version": "0.1.52",
|
|
1658
|
+
"category": "State Management",
|
|
1181
1659
|
"upstream": { "package": "zustand", "version": "5.0.14" },
|
|
1182
1660
|
"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).",
|
|
1183
|
-
"divergences": [
|
|
1184
|
-
"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`."
|
|
1185
|
-
],
|
|
1661
|
+
"divergences": [],
|
|
1186
1662
|
"ssr": "No SSR-specific surface; no dedicated SSR tests.",
|
|
1187
1663
|
"verified": "2026-08-02"
|
|
1188
1664
|
}
|
|
@@ -1190,8 +1666,12 @@
|
|
|
1190
1666
|
"reactPackages": {
|
|
1191
1667
|
"@apollo/client": "@octanejs/apollo-client",
|
|
1192
1668
|
"@base-ui-components/react": "@octanejs/base-ui",
|
|
1669
|
+
"@base-ui/react": "@octanejs/base-ui",
|
|
1670
|
+
"@base-ui/utils": "@octanejs/base-ui-utils",
|
|
1193
1671
|
"@dnd-kit/react": "@octanejs/dnd-kit",
|
|
1194
1672
|
"@floating-ui/react": "@octanejs/floating-ui",
|
|
1673
|
+
"@formisch/react": "@octanejs/formisch",
|
|
1674
|
+
"@formkit/auto-animate": "@octanejs/auto-animate",
|
|
1195
1675
|
"@gsap/react": "@octanejs/gsap",
|
|
1196
1676
|
"@inertiajs/react": "@octanejs/inertia",
|
|
1197
1677
|
"@lexical/react": "@octanejs/lexical",
|
|
@@ -1199,8 +1679,11 @@
|
|
|
1199
1679
|
"@mantine/hooks": "@octanejs/mantine-hooks",
|
|
1200
1680
|
"@mdx-js/react": "@octanejs/mdx",
|
|
1201
1681
|
"@monaco-editor/react": "@octanejs/monaco-editor",
|
|
1682
|
+
"@opentui/react": "@octanejs/opentui",
|
|
1202
1683
|
"@phosphor-icons/react": "@octanejs/phosphor-icons",
|
|
1684
|
+
"@portabletext/react": "@octanejs/portabletext",
|
|
1203
1685
|
"@rainbow-me/rainbowkit": "@octanejs/rainbowkit",
|
|
1686
|
+
"@react-email/components": "@octanejs/email",
|
|
1204
1687
|
"@react-rxjs/core": "@octanejs/rxjs",
|
|
1205
1688
|
"@react-rxjs/utils": "@octanejs/rxjs",
|
|
1206
1689
|
"@react-spring/parallax": "@octanejs/spring",
|
|
@@ -1208,13 +1691,17 @@
|
|
|
1208
1691
|
"@react-three/drei": "@octanejs/drei",
|
|
1209
1692
|
"@react-three/fiber": "@octanejs/three",
|
|
1210
1693
|
"@reduxjs/toolkit": "@octanejs/redux-toolkit",
|
|
1211
|
-
"@
|
|
1694
|
+
"@sanity/icons": "@octanejs/sanity-icons",
|
|
1695
|
+
"@sanity/logos": "@octanejs/sanity-logos",
|
|
1696
|
+
"@sanity/react-loader": "@octanejs/sanity-loader",
|
|
1697
|
+
"@solana/react": "@octanejs/solana-kit",
|
|
1212
1698
|
"@streamdown/cjk": "@octanejs/streamdown",
|
|
1213
1699
|
"@streamdown/code": "@octanejs/streamdown",
|
|
1214
1700
|
"@streamdown/math": "@octanejs/streamdown",
|
|
1215
1701
|
"@streamdown/mermaid": "@octanejs/streamdown",
|
|
1216
1702
|
"@stylexjs/stylex": "@octanejs/stylex",
|
|
1217
1703
|
"@tanstack/ai-react": "@octanejs/tanstack-ai",
|
|
1704
|
+
"@tanstack/react-db": "@octanejs/tanstack-db",
|
|
1218
1705
|
"@tanstack/react-devtools": "@octanejs/tanstack-devtools",
|
|
1219
1706
|
"@tanstack/react-form": "@octanejs/tanstack-form",
|
|
1220
1707
|
"@tanstack/react-hotkeys": "@octanejs/tanstack-hotkeys",
|
|
@@ -1277,12 +1764,18 @@
|
|
|
1277
1764
|
"@visx/wordcloud": "@octanejs/visx",
|
|
1278
1765
|
"@visx/xychart": "@octanejs/visx",
|
|
1279
1766
|
"@visx/zoom": "@octanejs/visx",
|
|
1767
|
+
"@xstate/react": "@octanejs/xstate",
|
|
1768
|
+
"@xstate/store-react": "@octanejs/xstate-store",
|
|
1769
|
+
"@xyflow/react": "@octanejs/xyflow",
|
|
1280
1770
|
"@zag-js/react": "@octanejs/zag",
|
|
1281
1771
|
"animejs": "@octanejs/animejs",
|
|
1772
|
+
"better-auth/react": "@octanejs/better-auth",
|
|
1282
1773
|
"cmdk": "@octanejs/cmdk",
|
|
1283
1774
|
"dexie-react-hooks": "@octanejs/dexie",
|
|
1284
1775
|
"embla-carousel-react": "@octanejs/embla-carousel",
|
|
1285
1776
|
"framer-motion": "@octanejs/motion",
|
|
1777
|
+
"html-react-parser": "@octanejs/html-react-parser",
|
|
1778
|
+
"ink": "@octanejs/ink",
|
|
1286
1779
|
"input-otp": "@octanejs/input-otp",
|
|
1287
1780
|
"jotai": "@octanejs/jotai",
|
|
1288
1781
|
"lucide-react": "@octanejs/lucide",
|
|
@@ -1294,26 +1787,35 @@
|
|
|
1294
1787
|
"react-alien-signals": "@octanejs/alien-signals",
|
|
1295
1788
|
"react-aria": "@octanejs/aria",
|
|
1296
1789
|
"react-aria-components": "@octanejs/aria",
|
|
1790
|
+
"react-calendar": "@octanejs/calendar",
|
|
1297
1791
|
"react-colorful": "@octanejs/colorful",
|
|
1792
|
+
"react-content-loader": "@octanejs/content-loader",
|
|
1298
1793
|
"react-day-picker": "@octanejs/day-picker",
|
|
1299
1794
|
"react-draggable": "@octanejs/draggable",
|
|
1300
1795
|
"react-dropzone": "@octanejs/dropzone",
|
|
1796
|
+
"react-email": "@octanejs/email",
|
|
1301
1797
|
"react-error-boundary": "@octanejs/react-error-boundary",
|
|
1302
1798
|
"react-hook-form": "@octanejs/hook-form",
|
|
1303
1799
|
"react-i18next": "@octanejs/i18next",
|
|
1800
|
+
"react-image-crop": "@octanejs/image-crop",
|
|
1304
1801
|
"react-intersection-observer": "@octanejs/intersection-observer",
|
|
1802
|
+
"react-is": "@octanejs/octane-is",
|
|
1305
1803
|
"react-map-gl": "@octanejs/react-map-gl",
|
|
1306
1804
|
"react-map-gl/mapbox": "@octanejs/react-map-gl",
|
|
1307
1805
|
"react-markdown": "@octanejs/markdown",
|
|
1308
1806
|
"react-pdf": "@octanejs/pdf",
|
|
1309
1807
|
"react-popper": "@octanejs/popper",
|
|
1310
1808
|
"react-redux": "@octanejs/redux",
|
|
1809
|
+
"react-resizable-panels": "@octanejs/resizable-panels",
|
|
1311
1810
|
"react-router": "@octanejs/remix-router",
|
|
1312
1811
|
"react-router-dom": "@octanejs/remix-router",
|
|
1812
|
+
"react-select": "@octanejs/select",
|
|
1313
1813
|
"react-stately": "@octanejs/aria",
|
|
1314
1814
|
"react-syntax-highlighter": "@octanejs/syntax-highlighter",
|
|
1315
1815
|
"react-textarea-autosize": "@octanejs/textarea-autosize",
|
|
1816
|
+
"react-to-print": "@octanejs/to-print",
|
|
1316
1817
|
"react-transition-group": "@octanejs/transition-group",
|
|
1818
|
+
"react-waypoint": "@octanejs/waypoint",
|
|
1317
1819
|
"react-window": "@octanejs/window",
|
|
1318
1820
|
"recharts": "@octanejs/recharts",
|
|
1319
1821
|
"shadcn": "@octanejs/shadcn",
|
|
@@ -1321,10 +1823,13 @@
|
|
|
1321
1823
|
"streamdown": "@octanejs/streamdown",
|
|
1322
1824
|
"styled-components": "@octanejs/styled-components",
|
|
1323
1825
|
"swr": "@octanejs/swr",
|
|
1826
|
+
"thinking-orbs": "@octanejs/thinking-orbs",
|
|
1827
|
+
"use-stick-to-bottom": "@octanejs/stick-to-bottom",
|
|
1324
1828
|
"usehooks-ts": "@octanejs/usehooks-ts",
|
|
1325
1829
|
"valtio": "@octanejs/valtio",
|
|
1326
1830
|
"vaul": "@octanejs/vaul",
|
|
1327
1831
|
"wagmi": "@octanejs/wagmi",
|
|
1832
|
+
"wouter": "@octanejs/wouter",
|
|
1328
1833
|
"zustand": "@octanejs/zustand"
|
|
1329
1834
|
},
|
|
1330
1835
|
"errorCodes": {
|
|
@@ -1466,7 +1971,7 @@
|
|
|
1466
1971
|
"28": {
|
|
1467
1972
|
"message": "Target container is not a DOM element.",
|
|
1468
1973
|
"runtime": ["client"],
|
|
1469
|
-
"status": "
|
|
1974
|
+
"status": "retired"
|
|
1470
1975
|
},
|
|
1471
1976
|
"29": {
|
|
1472
1977
|
"message": "Cannot update an unmounted root.",
|
|
@@ -1604,6 +2109,46 @@
|
|
|
1604
2109
|
"message": "prerenderToNodeStream requires a Node.js runtime with process.getBuiltinModule; use prerender() in non-Node environments.",
|
|
1605
2110
|
"runtime": ["server"],
|
|
1606
2111
|
"status": "active"
|
|
2112
|
+
},
|
|
2113
|
+
"58": {
|
|
2114
|
+
"message": "Unsupported native-read compiler/runtime version.",
|
|
2115
|
+
"runtime": ["client", "server"],
|
|
2116
|
+
"status": "active"
|
|
2117
|
+
},
|
|
2118
|
+
"59": {
|
|
2119
|
+
"message": "%s requires an active server component.",
|
|
2120
|
+
"runtime": ["server"],
|
|
2121
|
+
"status": "active"
|
|
2122
|
+
},
|
|
2123
|
+
"60": {
|
|
2124
|
+
"message": "A component suspended without a Suspense boundary during synchronous server rendering. Use prerender() or a streaming renderer to await it.",
|
|
2125
|
+
"runtime": ["server"],
|
|
2126
|
+
"status": "active"
|
|
2127
|
+
},
|
|
2128
|
+
"61": {
|
|
2129
|
+
"message": "Hydration mismatch: the server-rendered text differed from the client; the text was updated to the client value.",
|
|
2130
|
+
"runtime": ["client"],
|
|
2131
|
+
"status": "active"
|
|
2132
|
+
},
|
|
2133
|
+
"62": {
|
|
2134
|
+
"message": "Hydration mismatch: the server rendered extra children in a text element; the stale children were discarded.",
|
|
2135
|
+
"runtime": ["client"],
|
|
2136
|
+
"status": "active"
|
|
2137
|
+
},
|
|
2138
|
+
"63": {
|
|
2139
|
+
"message": "Target container is not a DOM element. Pass an Element, Document, or DocumentFragment. If document.body is null after document hydration, update the existing document root or render a document shell containing <body>.",
|
|
2140
|
+
"runtime": ["client"],
|
|
2141
|
+
"status": "active"
|
|
2142
|
+
},
|
|
2143
|
+
"64": {
|
|
2144
|
+
"message": "Multiple errors were thrown during act.",
|
|
2145
|
+
"runtime": ["client"],
|
|
2146
|
+
"status": "active"
|
|
2147
|
+
},
|
|
2148
|
+
"65": {
|
|
2149
|
+
"message": "Internal SSR invariant violated: ASYNC_SCOPE is not an extension of the active frame's async scope. Please file an Octane issue.",
|
|
2150
|
+
"runtime": ["server"],
|
|
2151
|
+
"status": "active"
|
|
1607
2152
|
}
|
|
1608
2153
|
}
|
|
1609
2154
|
}
|