@octanejs/cli 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/data/octane-data.json +577 -144
|
@@ -1,8 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bindings": [
|
|
3
3
|
{
|
|
4
|
-
"name": "@octanejs/
|
|
4
|
+
"name": "@octanejs/alien-signals",
|
|
5
5
|
"version": "0.0.2",
|
|
6
|
+
"category": "Shared state",
|
|
7
|
+
"upstream": {
|
|
8
|
+
"package": "react-alien-signals",
|
|
9
|
+
"version": "0.3.0",
|
|
10
|
+
"source": "https://github.com/Rajaniraiyn/react-alien-signals/tree/6d883959ddf25a3f486451ff8abff60eb989671c",
|
|
11
|
+
"license": "MIT"
|
|
12
|
+
},
|
|
13
|
+
"surface": "Complete react-alien-signals hook and helper surface over the unchanged alien-signals@1.0.4 core, with Octane-native subscriptions and lifecycle ownership.",
|
|
14
|
+
"divergences": [
|
|
15
|
+
"`useSignalValue` accepts any readable signal, including computed signals, correcting the upstream declaration to match its documented behavior.",
|
|
16
|
+
"`useSignalScope` starts its scope after client commit and returns a cancellation-safe controller, avoiding render-phase effects."
|
|
17
|
+
],
|
|
18
|
+
"ssr": "Supported and hydration-tested. Reads use the same server snapshot; effects and scopes begin only after client commit and stop on unmount.",
|
|
19
|
+
"verified": "2026-07-30"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "@octanejs/animejs",
|
|
23
|
+
"version": "0.0.6",
|
|
6
24
|
"category": "UI and interaction",
|
|
7
25
|
"upstream": {
|
|
8
26
|
"package": "animejs",
|
|
@@ -21,7 +39,7 @@
|
|
|
21
39
|
},
|
|
22
40
|
{
|
|
23
41
|
"name": "@octanejs/apollo-client",
|
|
24
|
-
"version": "0.1.
|
|
42
|
+
"version": "0.1.31",
|
|
25
43
|
"category": "AI, data, and routing",
|
|
26
44
|
"upstream": { "package": "@apollo/client", "version": "4.2.6" },
|
|
27
45
|
"surface": "Complete published client adapter surface: all 18 @apollo/client/react runtime exports and their Apollo 4.2.6 TypeScript declarations, framework-neutral root/testing exports, an Octane MockedProvider, and the Octane-native /react/ssr prerenderStatic entry.",
|
|
@@ -31,49 +49,48 @@
|
|
|
31
49
|
"React Server Components and Apollo's React Compiler-generated entry are intentionally not exposed."
|
|
32
50
|
],
|
|
33
51
|
"ssr": "Dedicated Node-mode tests cover multi-pass useQuery, nested query waterfalls, per-request cache isolation, ssr:false/no-cache, render limits, and scoped CSS; client hydration verifies cache restoration, in-place adoption, and no duplicate fetch. Streaming cache patches remain open.",
|
|
34
|
-
"verified": "2026-
|
|
52
|
+
"verified": "2026-08-02"
|
|
35
53
|
},
|
|
36
54
|
{
|
|
37
55
|
"name": "@octanejs/aria",
|
|
38
|
-
"version": "0.0.
|
|
56
|
+
"version": "0.0.30",
|
|
39
57
|
"category": "UI and interaction",
|
|
40
58
|
"upstream": { "package": "react-aria", "version": "3.50.0" },
|
|
41
59
|
"surface": "Phases 0-5 + the Tree/Table follow-up complete. Phases 0-1: the utils foundation, SSR utilities, the complete interactions area (usePress, useHover, focus/keyboard family, useLongPress, useMove, Pressable/PressResponder), the focus area (FocusScope with containment/restore/focus managers, FocusRing, useFocusRing, useHasTabbableChild), the i18n area (I18nProvider, locale/collator/formatter/filter hooks), form validation (useFormValidation + stately useFormValidationState), and the leaf hooks: useButton/useToggleButton(+Group), useLabel/useField, useCheckbox(+Group/+Item), useRadio/useRadioGroup, useSwitch, useTextField, useSearchField, useProgressBar, useMeter, useSeparator, useLink, useDisclosure, useToolbar, VisuallyHidden. Phase 2 adds the collections + selection tier: the stately collections engine (CollectionBuilder/Item/Section/useCollection) and selection core (Selection/SelectionManager/useMultipleSelectionState), the stately state hooks (useListState/useSingleSelectListState, useTreeState, useMenuTriggerState/useSubmenuTriggerState, useOverlayTriggerState, useSelectState, useComboBoxState, useTabListState, useNumberFieldState, useSliderState), the aria selection area (useSelectableCollection/-Item/-List, useTypeSelect, ListKeyboardDelegate, DOMLayoutDelegate), and the aria hooks useListBox/useOption/useListBoxSection, useMenu/useMenuItem/useMenuSection/useMenuTrigger/useSubmenuTrigger, useTab/useTabList/useTabPanel, useSlider/useSliderThumb, useNumberField, useGridList(+Item/+Section/+SelectionCheckbox), useTag/useTagGroup, useBreadcrumbs/useBreadcrumbItem — plus the matching react-stately state hooks under `@octanejs/aria/stately`. Phase 3 adds the overlays hooks tier: the stately `useTooltipTriggerState` and the whole aria overlays area (usePreventScroll, ariaHideOutside, DismissButton, PortalProvider, useOverlay, useOverlayTrigger, useOverlayPosition + calculatePosition, Overlay/useOverlayFocusContain, useModal/ModalProvider/OverlayProvider/OverlayContainer, useModalOverlay, usePopover), plus the consumers useDialog, useTooltip/useTooltipTrigger, useSelect/useHiddenSelect/HiddenSelect, and useComboBox. Differential-verified byte-identical against the real react-aria (interactions + button/toggle/checkbox/switch/radio/textfield/progress + tabs + listbox + select + combobox fixtures); dialog/tooltip/overlay focus-trap/dismiss/scroll-lock paths are covered by behavioral tests (the differential rig shares one document, so focus/portal/positioning aren't rig-driveable). Autocomplete (useAutocomplete/useSearchAutocomplete) is deferred — useComboBox does not depend on it in 3.50.0. Phase 4 adds the react-aria-components foundation under `@octanejs/aria/components`: the collections engine re-hosted on a detached real-DOM store (BaseCollection/CollectionBuilder/createLeafComponent/createBranchComponent/Hidden/useCachedChildren + Collection/Section), the RAC plumbing (Provider, useContextProps, slotted contexts, useRenderProps/composeRenderProps with data-* state attributes), and the non-collection components: Button, ToggleButton(+Group), Checkbox(+Group/Field/Button), Switch(+Field/Button), RadioGroup(+Radio/Field/Button), TextField, SearchField, NumberField, Form, Label/Input/TextArea/FieldError, Group, Toolbar, Separator, Header, Heading, Link, ProgressBar, Meter, Slider(+Output/Track/Thumb/Fill), Disclosure(+Group/Panel), DialogTrigger/Dialog, Modal/ModalOverlay, Popover, TooltipTrigger/Tooltip, OverlayArrow, Text, Keyboard, SelectionIndicator, SharedElementTransition. Phase-4 differentials drive the REAL components on both sides byte-identical (Button hover+mid-press, ToggleButton, Checkbox, TextField typing, Disclosure expand/collapse). Phase 5 adds the RAC collection components over that engine: Autocomplete (full — aria useAutocomplete + stately useAutocompleteState now ported), ListBox(+Item/Section/LoadMoreItem), Menu(+MenuTrigger/SubmenuTrigger/MenuItem/MenuSection), Select(+SelectValue), ComboBox(+ComboBoxValue), Tabs(+TabList/Tab/TabPanels/TabPanel), TagGroup(+TagList/Tag), GridList(+Item/Section/Header/LoadMoreItem), Breadcrumbs(+Breadcrumb), and the DragAndDrop context layer (DropIndicator/contexts/DragAndDropHooks type; components' dnd branches are inert — the dnd engine and useDragAndDrop() itself arrive in a later phase, the stub throws). Phase-5 differentials drive the REAL react-aria-components byte-identical (ListBox selection + keyed reverse, Tabs switch, TagGroup multi-select, GridList row selection, Breadcrumbs, ComboBox typing); Menu/Select open-state (portal'd) carries behavioral coverage incl. keyboard-driven submenus. The Tree/Table follow-up adds the remaining collection verticals: stately grid (GridCollection/useGridState) + the full stately table area (TableCollection/useTableState/column-resize state/UNSTABLE_useTreeGridState), the aria tree hooks (useTree/useTreeItem) and the full aria table hook area (useTable family, TableKeyboardDelegate, useTableColumnResize, grid hooks it rides on), RAC Tree(+TreeItem/TreeItemContent/TreeSection/TreeHeader/TreeLoadMoreItem) and RAC Table(+TableHeader/TableBody/Column/Row/Cell/ColumnResizer/ResizableTableContainer/TableFooter/TableLoadMoreItem). Tree structure states and the interactive Table (sort cycling, row selection) are differential-verified byte-identical vs the real react-aria-components; chevron-driven Tree interaction carries behavioral coverage (the rig's virtual clicks cannot faithfully reproduce the focus-effect interplay on the React side). TableLayout lands with the Virtualizer; date/color families and the drag-and-drop engine are not started — see the migration plan.",
|
|
42
60
|
"divergences": [
|
|
43
|
-
"Text-input DOM wiring uses
|
|
44
|
-
"`forwardRef`
|
|
45
|
-
"i18n server serializer
|
|
46
|
-
"
|
|
61
|
+
"`native-input-event-wiring`: Text-input DOM wiring uses Octane's native `onInput` per keystroke instead of React's synthetic `onChange`; public value-level callbacks are unchanged.",
|
|
62
|
+
"`ref-as-prop`: React `forwardRef` wrappers become Octane ref-as-prop components.",
|
|
63
|
+
"`valid-hoisted-identifiers`: The i18n server serializer keeps hoisted-string identifiers valid past 26 entries instead of emitting invalid JavaScript identifiers.",
|
|
64
|
+
"`server-rtl-direction`: The SSR locale direction derives from the injected locale via `isRTL` rather than being hard-coded to `ltr`."
|
|
47
65
|
],
|
|
48
66
|
"ssr": "Dedicated Node-mode coverage verifies SSRProvider, hydration-safe labelled relationships, server snapshots, and injected LTR/RTL locales; real Vite-compiled Octane server markup is hydrated in place and remains interactive. Overlay and collection SSR registration remain planned for Phase 8.",
|
|
49
|
-
"verified": "2026-
|
|
67
|
+
"verified": "2026-08-02"
|
|
50
68
|
},
|
|
51
69
|
{
|
|
52
70
|
"name": "@octanejs/base-ui",
|
|
53
|
-
"version": "0.1.
|
|
71
|
+
"version": "0.1.34",
|
|
54
72
|
"category": "UI and interaction",
|
|
55
73
|
"upstream": { "package": "@base-ui/react", "version": "1.6.0" },
|
|
56
|
-
"surface": "Alpha, in progress:
|
|
74
|
+
"surface": "Alpha, in progress: 35 of 43 upstream subpaths. The implemented surface has a complete byte-exact upstream inventory, 98 same-fixture React/Octane differential cases, and 49 Accordion, Collapsible, and Tabs adapted cases. This is bounded evidence and remains recorded-unverified because eight public subpaths and most of the canonical runtime/type suite are not yet adapted. Menu covers all 20 upstream parts, Toast all 11 parts, Collapsible all 3 parts, Accordion all 5 parts, and Tabs 4 of 5 parts (Indicator unported); their detailed gaps and evidence are recorded in UPSTREAM.md and audit/react-parity.json.",
|
|
57
75
|
"divergences": [
|
|
58
|
-
"
|
|
59
|
-
"`
|
|
60
|
-
"The
|
|
61
|
-
"
|
|
62
|
-
"`NumberField.ScrubArea` and hold-to-repeat stepping remain unported; the steppers respond to single presses only."
|
|
76
|
+
"`native-event-semantics`: Host handlers receive native DOM events rather than React synthetic events; text edits use native `input`, form-facing NumberField commits use native `change`, and propagation reads `cancelBubble`.",
|
|
77
|
+
"`ref-as-prop-class-composition`: React `forwardRef` wrappers become ref-as-prop, and class values use Octane's composition rules.",
|
|
78
|
+
"`unported-internal-hover`: The internal standalone floating-ui-react `useHover` combiner is not republished because no ported Base UI component consumes it.",
|
|
79
|
+
"`number-field-interaction-gaps`: `NumberField.ScrubArea` and hold-to-repeat stepping remain unported; steppers respond to single presses only."
|
|
63
80
|
],
|
|
64
81
|
"ssr": "Dedicated Node-mode tests cover server snapshots, accessible separators, edge-aligned slider visibility, and closed dialogs; hydration adopts Vite-compiled Octane server markup, transitions to the client snapshot, and preserves interaction. Open overlays and remaining components are not yet covered.",
|
|
65
82
|
"verified": "2026-08-01"
|
|
66
83
|
},
|
|
67
84
|
{
|
|
68
85
|
"name": "@octanejs/cmdk",
|
|
69
|
-
"version": "0.1.
|
|
86
|
+
"version": "0.1.19",
|
|
70
87
|
"category": "UI and interaction",
|
|
71
88
|
"upstream": { "package": "cmdk", "version": "1.1.1" },
|
|
72
89
|
"surface": "Complete against the published `cmdk@1.1.1` public surface: `Command` (the root itself) and the `CommandRoot` named export, `Command.Input`, `Command.List`, `Command.Item`, `Command.Group`, `Command.Separator`, `Command.Dialog`, `Command.Empty`, `Command.Loading`, the flat `CommandX` aliases, `useCommandState`, and `defaultFilter` — with the DOM-authoritative store and item/group registration, `useValue` text-content inference, `onInput`-driven search, score filtering plus item and group DOM sorting, keyboard navigation (arrows/Home/End/vim/Enter), controlled `value`/`onValueChange`/`loop`/`shouldFilter`/custom `filter`/`forceMount`, the `--cmdk-list-height` ResizeObserver, and a Radix-backed `Command.Dialog`. `asChild` is the one unsupported prop (see divergences).",
|
|
73
90
|
"divergences": [
|
|
74
91
|
"No forwardRef: components take `ref` as a normal prop; multi-ref uses octane's `ref={[a, b]}` instead of composeRefs.",
|
|
75
92
|
"`Command.Input` drives search from the native `onInput` event; the public `onValueChange(search)` API is unchanged (no synthetic `onChange`).",
|
|
76
|
-
"Item value is inferred from the provided `value` prop or the rendered `textContent`; cmdk's string-child inspection is dropped because octane's compiled children are opaque. An item that has never been scored therefore renders once so the inference can read its text — treating unscored as score zero deadlocks it
|
|
93
|
+
"Item value is inferred from the provided `value` prop or the rendered `textContent`; cmdk's string-child inspection is dropped because octane's compiled children are opaque. An item that has never been scored therefore renders once so the inference can read its text — treating unscored as score zero deadlocks it. Consumer-visible mid-search arrivals match upstream.",
|
|
77
94
|
"Score ranking is expressed as CSS `order` inside a flex container, not by relocating DOM nodes. Upstream's sort() is DOM-authoritative: it appendChild's matching items into the list sizer. Octane fences every component's DOM with comment markers and tracks the range between them, and a template construct like `@for` or `@if` wraps each item in a SECOND, outer range — so relocating an item carries it out of every range at once, and the loop later clears an empty range while the real node is orphaned in the list forever. Carrying the flanking markers along only repairs the innermost range, so it breaks again at each new nesting construct. Ranking declaratively removes the class of bug: no node moves, no range is violated, and clearing the search restores true source order because the styles are simply dropped. The cost is that the list sizer and each group's item container are flex columns WHILE a filter is active, so a consumer relying on physical DOM order (`:nth-child` styling, drag handles) or on a custom container `display` diverges from upstream. Selection, arrow-key navigation and alt+arrow group navigation all read the ranked order, not DOM order, so what is selected always matches what is on screen. Every valid item is ranked rather than only the matches: an unranked flex child keeps the initial `order` of 0, which sorts it AHEAD of every match, so a force-mounted non-match would jump to the top of its container. Ranking everything puts zero-scoring items last, which is where upstream's append-in-score-order leaves them too. Ranks land on the child the container actually lays out, resolved at any nesting depth, because `order` applies to a flex CHILD — upstream resolves a single wrapper level, which its appendChild model tolerates but this one does not. Ungrouped items and group hosts share the sizer's rank space, so the former are numbered densely and the latter continue past them, matching upstream's order of appending items before groups.",
|
|
78
95
|
"`aria-activedescendant` is wired on the initial auto-select and after every filter; upstream queues that work from inside its own layout-effect flush and its batcher discards it, so upstream only sets the attribute after a directly user-driven selection. The runtimes agree on which item is selected.",
|
|
79
96
|
"Ids are `radix-` prefixed to match upstream, which takes them from `@radix-ui/react-id`.",
|
|
@@ -81,23 +98,51 @@
|
|
|
81
98
|
"Re-registering an item value during an active search re-derives the whole filter aggregate (match count and matching groups), not just that item's score. Upstream only re-sorts, leaving `filtered.count`/`filtered.groups` describing the previous values — so an item that starts matching renders while `Command.Empty` still shows \"no results\" (and its group can stay hidden). Upstream's own item-registration path already re-derives the aggregate the same way, so the omission reads as an oversight rather than intent.",
|
|
82
99
|
"Force-mounted items are counted so `Command.Empty` can see them. Upstream skips registration entirely for a `forceMount` item, so it never reaches `filtered.count` — with a search that matches nothing, upstream renders the force-mounted item and \"no results\" on top of each other. The port tracks the live force-mounted count separately (`filtered.count` keeps its upstream meaning for `useCommandState`) and Empty consults both.",
|
|
83
100
|
"Removing the selected force-mounted item moves the selection on. Because upstream never registers a `forceMount` item it has no teardown for one either, so the selected value keeps pointing at a node that is gone: nothing renders `aria-selected`, `aria-activedescendant` dangles at a removed id, and Enter does nothing until the user arrows away. The port re-selects from the force-mount teardown, the same way the plain item teardown does.",
|
|
84
|
-
"Every registration path releases the value it registered. Items, force-mounted items and groups all register through the same `useValue`,
|
|
101
|
+
"Every registration path releases the value it registered. Items, force-mounted items and groups all register through the same `useValue`, so remount cycles stay quiet and the dev-only duplicate-value report stays honest.",
|
|
85
102
|
"Registration teardowns hop a microtask before scheduling their follow-up work. Octane runs a removed child's effect cleanups during the PARENT's render, so scheduling straight from a teardown lands its state update mid-render and the runtime reports \"Cannot update a component (`CommandRoot`) while rendering a different component\" — advice a teardown cannot act on, since it does not choose when it runs. The queued work is unchanged and still runs before paint; only the teardown paths defer, because every other caller schedules from a layout effect where the synchronous update is load-bearing. React has no equivalent problem: it runs cleanups in the commit phase.",
|
|
86
103
|
"`Command.Empty` renders nothing during SSR. Items register in layout effects, which never run on the server, so the match count is unavoidably 0 there and upstream ships \"no results\" above a fully-populated list on every server-rendered page — permanently so for readers without JavaScript. The port supplies a server snapshot of \"not empty\" instead, and the empty state appears on the client once the count is real.",
|
|
87
104
|
"An item leaving a group is removed from that group's member set. Upstream deletes the item from `ids`/`allItems` but never from `allGroups`, so a group accumulates dead item ids for the lifetime of the Command — unbounded growth in a menu whose results churn, plus wasted work in every filter pass.",
|
|
88
105
|
"`Command.Dialog` additionally forwards `defaultOpen` and `modal` to the underlying Radix `Dialog.Root`. Upstream cmdk forwards only `open`/`onOpenChange`, so it has no uncontrolled open state and is always modal.",
|
|
89
106
|
"Duplicate item values are reported in development. Selection is keyed by value, so two items sharing one both render `aria-selected=\"true\"` while only the first responds to Enter — an invalid single-select listbox. The runtime cannot pick a winner (cmdk requires unique values), so the port warns instead of failing silently; upstream neither warns nor resolves it.",
|
|
90
|
-
"The layout-effect batcher
|
|
107
|
+
"The layout-effect batcher reports a throwing queued callback through `console.error` (as octane reports effect exceptions) instead of rethrowing out of the flush. Upstream's batcher has no such isolation, so a throwing `onValueChange` reached from that flush rethrows there.",
|
|
91
108
|
"`asChild` is not supported: cmdk's SlottableWithNestedChildren clones a child element and re-parents the component's own content into it, which has no faithful equivalent over octane's opaque compiled children. Components always render their own host element.",
|
|
92
109
|
"`Command.Dialog` builds on @octanejs/radix's Dialog (composed via createElement descriptors, since radix's Portal iterates children) instead of @radix-ui/react-dialog.",
|
|
93
110
|
"The vendored scorer gained explicit parameter type annotations for strict typecheck and repo-style formatting; the algorithm and score constants are unchanged from cmdk@1.1.1."
|
|
94
111
|
],
|
|
95
112
|
"ssr": "Supported and tested: the menu server-renders all items in source order without browser globals (the DOM-authoritative filter/selection is post-hydration work), and no empty state — items cannot register on the server, so `Command.Empty` renders nothing there rather than claiming \"no results\" over a full list. `hydrateRoot` adopts the server nodes without a mismatch, then activates — values infer from textContent, the first item selects, and typing filters live.",
|
|
96
|
-
"verified": "2026-
|
|
113
|
+
"verified": "2026-08-03"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"name": "@octanejs/colorful",
|
|
117
|
+
"version": "0.0.2",
|
|
118
|
+
"category": "UI and interaction",
|
|
119
|
+
"upstream": { "package": "react-colorful", "version": "5.8.0" },
|
|
120
|
+
"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
|
+
"divergences": [
|
|
122
|
+
"React synthetic event attribute types are represented by Octane native DOM event attributes; observable DOM events and callback values retain the upstream contract."
|
|
123
|
+
],
|
|
124
|
+
"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
|
+
"verified": "2026-08-03"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"name": "@octanejs/day-picker",
|
|
129
|
+
"version": "0.0.2",
|
|
130
|
+
"category": "UI and interaction",
|
|
131
|
+
"upstream": {
|
|
132
|
+
"package": "react-day-picker",
|
|
133
|
+
"version": "10.0.1",
|
|
134
|
+
"commit": "6d3929d655779d178638d8f80171597a579468e8"
|
|
135
|
+
},
|
|
136
|
+
"surface": "DayPicker, public components, hooks, date classes, helpers, labels, formatters, locales, styles, and public types.",
|
|
137
|
+
"divergences": [
|
|
138
|
+
"React DOM prop types are preserved publicly and normalized at Octane render boundaries."
|
|
139
|
+
],
|
|
140
|
+
"ssr": "Calendar markup and accessibility attributes render without browser globals.",
|
|
141
|
+
"verified": "2026-08-02"
|
|
97
142
|
},
|
|
98
143
|
{
|
|
99
144
|
"name": "@octanejs/devtools",
|
|
100
|
-
"version": "0.0.
|
|
145
|
+
"version": "0.0.24",
|
|
101
146
|
"category": "Styling, tests, and devtools",
|
|
102
147
|
"upstream": { "package": "octane", "version": "workspace" },
|
|
103
148
|
"surface": "Octane-native DevTools plugin (not an upstream port): renders live runtime diagnostics into a TanStack Devtools host via @tanstack/devtools-event-client. P1 ships the Components tree + state inspector.",
|
|
@@ -107,7 +152,7 @@
|
|
|
107
152
|
},
|
|
108
153
|
{
|
|
109
154
|
"name": "@octanejs/dexie",
|
|
110
|
-
"version": "0.1.
|
|
155
|
+
"version": "0.1.29",
|
|
111
156
|
"category": "AI, data, and routing",
|
|
112
157
|
"upstream": { "package": "dexie-react-hooks", "version": "4.4.0" },
|
|
113
158
|
"surface": "Port of the public dexie-react-hooks surface: useObservable, useLiveQuery, useSuspendingObservable, useSuspendingLiveQuery, usePermissions, and useDocument, with Dexie's framework-neutral API re-exported from the package root.",
|
|
@@ -117,11 +162,11 @@
|
|
|
117
162
|
"useDocument requires consumers to install and import y-dexie and yjs before using the hook; those integrations remain optional."
|
|
118
163
|
],
|
|
119
164
|
"ssr": "Supported for non-suspending live queries: SSR returns the configured default without opening IndexedDB, and hydration adopts the server host before replacing the default with live data. Suspending live queries remain client-oriented and do not claim server data loading.",
|
|
120
|
-
"verified": "2026-
|
|
165
|
+
"verified": "2026-08-02"
|
|
121
166
|
},
|
|
122
167
|
{
|
|
123
168
|
"name": "@octanejs/dnd-kit",
|
|
124
|
-
"version": "0.1.
|
|
169
|
+
"version": "0.1.31",
|
|
125
170
|
"category": "UI and interaction",
|
|
126
171
|
"upstream": { "package": "@dnd-kit/react", "version": "0.5.0" },
|
|
127
172
|
"surface": "Complete modern dnd-kit React-adapter surface: DragDropProvider, DragOverlay, useDraggable/useDroppable, manager/monitor/operation hooks, PointerSensor/KeyboardSensor re-exports, the public signal-hook utilities, useSortable, and all four upstream entry points.",
|
|
@@ -130,11 +175,49 @@
|
|
|
130
175
|
"useSortable retains the upstream keyboard plugin by default but omits OptimisticSortingPlugin because moving one host element before application state commits can split an Octane keyed DOM range; explicit plugin arrays remain authoritative."
|
|
131
176
|
],
|
|
132
177
|
"ssr": "Static SSR and hydration are covered; DOM plugins initialize only after client refs register.",
|
|
133
|
-
"verified": "2026-
|
|
178
|
+
"verified": "2026-08-03"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"name": "@octanejs/draggable",
|
|
182
|
+
"version": "0.0.2",
|
|
183
|
+
"category": "UI and interaction",
|
|
184
|
+
"upstream": { "package": "react-draggable", "version": "4.7.1" },
|
|
185
|
+
"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
|
+
"divergences": [
|
|
187
|
+
"React component instance, lifecycle, React.Component assignability, findDOMNode fallback, and instance refs are unavailable; use the structural nodeRef prop with an Octane host ref.",
|
|
188
|
+
"React-specific node and synthetic-event types are represented by OctaneNode and native mouse/touch events while retaining the observable callback and data contract."
|
|
189
|
+
],
|
|
190
|
+
"ssr": "Draggable and DraggableCore render deterministically without browser globals, adopt their existing HTML or SVG child during hydration, and become interactive after hydration.",
|
|
191
|
+
"verified": "2026-08-03"
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"name": "@octanejs/drei",
|
|
195
|
+
"version": "0.0.2",
|
|
196
|
+
"category": "Web 3D",
|
|
197
|
+
"upstream": { "package": "@react-three/drei", "version": "10.7.7" },
|
|
198
|
+
"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
|
+
"divergences": [
|
|
200
|
+
"View: inline Canvas views are ported. Calling View from an Octane DOM root fails with the universal renderer-boundary diagnostic, and View.Port is a callable no-op. Octane components are statically renderer-owned, so one component cannot switch between DOM and Three renderers or transport authored Three children between independent roots as React Drei does with tunnel-rat."
|
|
201
|
+
],
|
|
202
|
+
"ssr": "Browser-dependent helpers remain client-only; server-safe behavior is verified per export.",
|
|
203
|
+
"verified": "2026-08-02"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"name": "@octanejs/dropzone",
|
|
207
|
+
"version": "0.0.2",
|
|
208
|
+
"category": "Forms and content",
|
|
209
|
+
"upstream": { "package": "react-dropzone", "version": "20.0.0" },
|
|
210
|
+
"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
|
+
"divergences": [
|
|
212
|
+
"Consumers import from @octanejs/dropzone and author TSRX instead of importing react-dropzone and authoring React JSX; option names and observable file-acquisition behavior remain mapped to the pinned upstream contract.",
|
|
213
|
+
"The package points its types/import/require conditions at authored Octane source under repository policy; packed-consumer checks prove equivalent ESM, CommonJS, TypeScript, package-json, and public-namespace resolution without React runtime leakage."
|
|
214
|
+
],
|
|
215
|
+
"ssr": "Supported and tested — server rendering and hydration preserve the hidden input and getter-provided root contract without browser-global access during render.",
|
|
216
|
+
"verified": "2026-08-02"
|
|
134
217
|
},
|
|
135
218
|
{
|
|
136
219
|
"name": "@octanejs/electron",
|
|
137
|
-
"version": "0.0.
|
|
220
|
+
"version": "0.0.14",
|
|
138
221
|
"category": "Desktop",
|
|
139
222
|
"upstream": { "package": "electron", "version": "43.2.0" },
|
|
140
223
|
"surface": "Process-split Electron bindings: ./main registers ipcMain handlers, ./main/native re-exports main-only Electron APIs (Menu, Tray, session, protocol, BrowserWindow, …), ./preload exposes Electron IPC and desktop helpers via contextBridge, and the renderer entry provides Octane hooks (useInvoke, useInvokeState, useIpcEvent, useNativeTheme, useWindowState) plus promise helpers for app/window/dialog/shell/clipboard/screen. Menu/Tray/session/protocol stay intentional main-only under contextIsolation.",
|
|
@@ -150,9 +233,23 @@
|
|
|
150
233
|
"ssr": "Server rendering performs no IPC. useInvokeState renders pending and issues the command on the client after hydration; useIpcEvent and reactive desktop hooks subscribe only on the client. useInvoke without a host rejects with ElectronUnavailableError.",
|
|
151
234
|
"verified": "2026-08-02"
|
|
152
235
|
},
|
|
236
|
+
{
|
|
237
|
+
"name": "@octanejs/embla-carousel",
|
|
238
|
+
"version": "0.0.2",
|
|
239
|
+
"category": "UI and interaction",
|
|
240
|
+
"upstream": {
|
|
241
|
+
"package": "embla-carousel-react",
|
|
242
|
+
"version": "8.6.0",
|
|
243
|
+
"core": "embla-carousel@8.6.0"
|
|
244
|
+
},
|
|
245
|
+
"surface": "Complete package-root adapter: default useEmblaCarousel hook, its viewport-ref and tuple types, and globalOptions; the framework-neutral Embla core and reactive equality utilities are reused unchanged.",
|
|
246
|
+
"divergences": [],
|
|
247
|
+
"ssr": "The hook constructs no carousel without DOM globals; client attachment initializes the core.",
|
|
248
|
+
"verified": "2026-08-02"
|
|
249
|
+
},
|
|
153
250
|
{
|
|
154
251
|
"name": "@octanejs/floating-ui",
|
|
155
|
-
"version": "0.1.
|
|
252
|
+
"version": "0.1.35",
|
|
156
253
|
"category": "UI and interaction",
|
|
157
254
|
"upstream": { "package": "@floating-ui/react", "version": "0.27.19" },
|
|
158
255
|
"surface": "Positioning (`useFloating`, ref-aware `arrow`, the `@floating-ui/dom` middleware re-exports, the floating tree), the full interaction-hook set (`useInteractions`, `useHover` + `safePolygon`, `useClick`, `useFocus`, `useDismiss`, `useRole`, `useClientPoint`, `useListNavigation`, `useTypeahead`), the component layer (`FloatingPortal`, `FloatingOverlay`, `FloatingFocusManager`, `FloatingArrow`, `FloatingList`, `Composite`), and transitions + `FloatingDelayGroup`.",
|
|
@@ -160,9 +257,28 @@
|
|
|
160
257
|
"ssr": "No dedicated SSR/hydration tests.",
|
|
161
258
|
"verified": "2026-07-05"
|
|
162
259
|
},
|
|
260
|
+
{
|
|
261
|
+
"name": "@octanejs/gsap",
|
|
262
|
+
"version": "0.0.5",
|
|
263
|
+
"category": "UI and interaction",
|
|
264
|
+
"upstream": {
|
|
265
|
+
"package": "@gsap/react",
|
|
266
|
+
"version": "2.1.2",
|
|
267
|
+
"source": "https://github.com/greensock/react/tree/2.1.2",
|
|
268
|
+
"tagCommit": "b7f44ca767eb93390f965d6f19679e2b77be7966",
|
|
269
|
+
"license": "GSAP Standard License"
|
|
270
|
+
},
|
|
271
|
+
"surface": "Full useGSAP hook contract: callback, dependency-array and config signatures; scoped contexts; contextSafe; revertOnUpdate; register; and headless.",
|
|
272
|
+
"divergences": [
|
|
273
|
+
"The adapter imports Octane hooks and uses compiler-selected manual hook slots instead of React hooks.",
|
|
274
|
+
"GSAP remains an external peer dependency and is not redistributed by this MIT-licensed adapter."
|
|
275
|
+
],
|
|
276
|
+
"ssr": "Server rendering creates stable context helpers without running GSAP effects. Client hydration activates the standard lifecycle.",
|
|
277
|
+
"verified": "2026-08-02"
|
|
278
|
+
},
|
|
163
279
|
{
|
|
164
280
|
"name": "@octanejs/hook-form",
|
|
165
|
-
"version": "0.1.
|
|
281
|
+
"version": "0.1.33",
|
|
166
282
|
"category": "Forms and content",
|
|
167
283
|
"upstream": { "package": "react-hook-form", "version": "7.81.0" },
|
|
168
284
|
"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.",
|
|
@@ -175,7 +291,7 @@
|
|
|
175
291
|
},
|
|
176
292
|
{
|
|
177
293
|
"name": "@octanejs/i18next",
|
|
178
|
-
"version": "0.1.
|
|
294
|
+
"version": "0.1.31",
|
|
179
295
|
"category": "Forms and content",
|
|
180
296
|
"upstream": { "package": "react-i18next", "version": "17.0.9" },
|
|
181
297
|
"surface": "Complete runtime port of react-i18next 17.0.9: useTranslation, I18nextProvider/context, Trans/TransWithoutContext, IcuTrans/IcuTransWithoutContext, Translation, the withTranslation/withSSR HOCs, useSSR, namespace reporting, initialization/default helpers, and the root ICU helper exports over the unchanged i18next core.",
|
|
@@ -186,34 +302,81 @@
|
|
|
186
302
|
"The React/Babel-specific `icu.macro` subpath is not shipped; the runtime IcuTrans APIs are fully supported."
|
|
187
303
|
],
|
|
188
304
|
"ssr": "Preloaded renderToString output and namespace collection are covered; useSSR, withSSR, getInitialProps, and composeInitialProps are ported. A dedicated hydration differential is still open.",
|
|
189
|
-
"verified": "2026-
|
|
305
|
+
"verified": "2026-08-02"
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
"name": "@octanejs/inertia",
|
|
309
|
+
"version": "0.0.5",
|
|
310
|
+
"category": "AI, data, and routing",
|
|
311
|
+
"upstream": { "package": "@inertiajs/react", "version": "3.6.1" },
|
|
312
|
+
"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
|
+
"divergences": [
|
|
314
|
+
"React, ReactDOM, StrictMode, forwardRef, and synthetic events are not runtime dependencies; the Octane adapter uses Octane roots, refs-as-props, and native events."
|
|
315
|
+
],
|
|
316
|
+
"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
|
+
"verified": "2026-07-30"
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"name": "@octanejs/input-otp",
|
|
321
|
+
"version": "0.0.2",
|
|
322
|
+
"category": "Forms and content",
|
|
323
|
+
"upstream": { "package": "input-otp", "version": "1.4.2" },
|
|
324
|
+
"surface": "Complete against input-otp@1.4.2: OTPInput, OTPInputContext, the three exported regexp patterns, public props and slot types, controlled and uncontrolled values, one-input accessibility and mobile-autofill markup, render/context projection, keyboard selection and deletion, paste transformation, completion callbacks, password-manager displacement, SSR, and hydration.",
|
|
325
|
+
"divergences": [
|
|
326
|
+
"Octane's native per-edit `input` event drives the hidden text input internally; the public callback remains the source-compatible `onChange(newValue)`.",
|
|
327
|
+
"Refs are ordinary Octane ref props rather than React `forwardRef`; consumer ref behavior is unchanged."
|
|
328
|
+
],
|
|
329
|
+
"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-02"
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"name": "@octanejs/intersection-observer",
|
|
334
|
+
"version": "0.0.2",
|
|
335
|
+
"category": "UI and interaction",
|
|
336
|
+
"upstream": {
|
|
337
|
+
"package": "react-intersection-observer",
|
|
338
|
+
"version": "10.1.0",
|
|
339
|
+
"source": "https://github.com/thebuilder/react-intersection-observer/tree/v10.1.0",
|
|
340
|
+
"license": "MIT"
|
|
341
|
+
},
|
|
342
|
+
"surface": "Public runtime surface at react-intersection-observer 10.1.0: useInView, useOnInView, InView, observe, defaultFallbackInView, and test utilities. Pinned upstream unit and browser suites plus one-for-one adapted runtime/type probes are registered with react-parity:check.",
|
|
343
|
+
"divergences": [
|
|
344
|
+
"Public node and prop types use Octane structural types and do not import React.",
|
|
345
|
+
"InView is implemented as a function component while preserving the upstream render-prop and wrapper behavior.",
|
|
346
|
+
"In TSRX, an InView render function must be supplied through the children prop; nested children compile to an opaque render block.",
|
|
347
|
+
"Unsupported false fallback (`fallbackInView={false}` / `defaultFallbackInView(false)`) does not emit `onChange(false)` on mount under Octane (`intersection-observer-initial-false-onchange`): treat the default hidden state as authoritative rather than waiting for that callback.",
|
|
348
|
+
"Unsupported IntersectionObserver without a fallback surfaces as a passive-effect `console.error` under Octane rather than a synchronous mount throw (`intersection-observer-unsupported-mount-error-surface`); wrap with an error boundary/`tryBlock` or supply `fallbackInView`/`defaultFallbackInView` instead of try/catch around render.",
|
|
349
|
+
"`@octanejs/intersection-observer/test-utils` does not auto-register Vitest/Jest beforeEach/afterEach (`intersection-observer-test-utils-manual-setup`); call `setupIntersectionMocking`/`resetIntersectionMocking` in the test setup file."
|
|
350
|
+
],
|
|
351
|
+
"ssr": "Supported. Observation begins in an effect; initialInView controls deterministic server output.",
|
|
352
|
+
"verified": "2026-07-30"
|
|
190
353
|
},
|
|
191
354
|
{
|
|
192
355
|
"name": "@octanejs/jotai",
|
|
193
|
-
"version": "0.1.
|
|
356
|
+
"version": "0.1.33",
|
|
194
357
|
"category": "Shared state",
|
|
195
358
|
"upstream": { "package": "jotai", "version": "2.20.2" },
|
|
196
359
|
"surface": "Complete 1:1 port: the framework-agnostic vanilla core (`jotai/vanilla`, `/vanilla/utils`, `/vanilla/internals`) is reused verbatim; the React layer (`Provider`, `useStore`, `useAtom`, `useAtomValue`, `useSetAtom`) and `react/utils` (`useResetAtom`, `useReducerAtom`, `useAtomCallback`, `useHydrateAtoms`) are ported onto octane hooks, preserving upstream's useReducer force-update + effect-subscription implementation, async atoms via octane's `use()`.",
|
|
197
|
-
"divergences": [
|
|
360
|
+
"divergences": [],
|
|
198
361
|
"ssr": "No SSR-specific surface; `useHydrateAtoms` is ported and usable for hydration seeding; no dedicated SSR tests.",
|
|
199
|
-
"verified": "2026-
|
|
362
|
+
"verified": "2026-08-02"
|
|
200
363
|
},
|
|
201
364
|
{
|
|
202
365
|
"name": "@octanejs/lexical",
|
|
203
|
-
"version": "0.1.
|
|
366
|
+
"version": "0.1.35",
|
|
204
367
|
"category": "Forms and content",
|
|
205
368
|
"upstream": { "package": "@lexical/react", "version": "0.46.0" },
|
|
206
|
-
"surface": "35
|
|
369
|
+
"surface": "The 35 legacy `@lexical/react` modules represented by this port cover composer + contexts, the editable surface, plain/rich text, the plugin/menu set, and the `useLexical*` hooks. The 0.46.0 extension subsystem, collaboration plugin, and tree view remain excluded as itemized in UPSTREAM.md.",
|
|
207
370
|
"divergences": [
|
|
208
371
|
"Positioning uses `@floating-ui/dom` instead of `@floating-ui/react`.",
|
|
209
|
-
"The class-based `LexicalErrorBoundary` becomes an
|
|
372
|
+
"The class-based `LexicalErrorBoundary` becomes an Octane error boundary; `forwardRef` becomes ref-as-prop."
|
|
210
373
|
],
|
|
211
374
|
"ssr": "No dedicated SSR/hydration tests.",
|
|
212
|
-
"verified": "2026-
|
|
375
|
+
"verified": "2026-08-02"
|
|
213
376
|
},
|
|
214
377
|
{
|
|
215
378
|
"name": "@octanejs/livestore",
|
|
216
|
-
"version": "0.0.
|
|
379
|
+
"version": "0.0.6",
|
|
217
380
|
"category": "AI, data, and routing",
|
|
218
381
|
"upstream": { "package": "@livestore/react", "version": "0.4.0" },
|
|
219
382
|
"surface": "Ports the complete stable renderer surface (registry provider/access, Suspense store loading and augmentation, reactive queries, client documents, and sync status) plus the exported experimental LiveList over LiveStore's unchanged 0.4.0 framework-neutral packages.",
|
|
@@ -227,7 +390,7 @@
|
|
|
227
390
|
},
|
|
228
391
|
{
|
|
229
392
|
"name": "@octanejs/lucide",
|
|
230
|
-
"version": "0.1.
|
|
393
|
+
"version": "0.1.31",
|
|
231
394
|
"category": "UI and interaction",
|
|
232
395
|
"upstream": { "package": "lucide-react", "version": "1.24.0" },
|
|
233
396
|
"surface": "Complete against the published `lucide-react@1.24.0` runtime surface: every canonical icon and alias, the `icons` namespace, `Icon`, `createLucideIcon`, `LucideProvider`, `useLucideContext`, `DynamicIcon`, `iconNames`, `dynamicIconImports`, and per-icon subpath imports.",
|
|
@@ -236,11 +399,11 @@
|
|
|
236
399
|
"Event callbacks receive native DOM events rather than React synthetic events."
|
|
237
400
|
],
|
|
238
401
|
"ssr": "Supported and tested: icons and provider defaults render through `octane/server`, and client hydration adopts the server-rendered SVG element.",
|
|
239
|
-
"verified": "2026-
|
|
402
|
+
"verified": "2026-08-02"
|
|
240
403
|
},
|
|
241
404
|
{
|
|
242
405
|
"name": "@octanejs/mantine-hooks",
|
|
243
|
-
"version": "0.1.
|
|
406
|
+
"version": "0.1.17",
|
|
244
407
|
"category": "UI and interaction",
|
|
245
408
|
"upstream": { "package": "@mantine/hooks", "version": "9.5.0" },
|
|
246
409
|
"surface": "Complete @mantine/hooks 9.5.0 runtime export surface: state, timing, storage, viewport, input, focus, pointer, observer, hotkey, scrolling, collapse, drag, splitter, mask, and utility hooks.",
|
|
@@ -250,11 +413,25 @@
|
|
|
250
413
|
"React is retained only as a source-compatibility type vocabulary for refs, events, actions, and CSS properties; it is not loaded at runtime."
|
|
251
414
|
],
|
|
252
415
|
"ssr": "Dedicated Node-mode coverage verifies deterministic state-hook output and guarded media-query initial values without a browser. DOM-only effects remain inert during server rendering.",
|
|
253
|
-
"verified": "2026-
|
|
416
|
+
"verified": "2026-08-02"
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"name": "@octanejs/markdown",
|
|
420
|
+
"version": "0.0.2",
|
|
421
|
+
"category": "Forms and content",
|
|
422
|
+
"upstream": { "package": "react-markdown", "version": "10.1.0" },
|
|
423
|
+
"surface": "Complete react-markdown 10.1.0 root runtime and public type surface: Markdown, MarkdownAsync, MarkdownHooks, defaultUrlTransform, and all six exported type families.",
|
|
424
|
+
"divergences": [
|
|
425
|
+
"Rendered elements, component mappings, hooks, and public renderable types target Octane instead of React.",
|
|
426
|
+
"React 19 may emit automatic image preload hints during server rendering; Octane preserves the Markdown image output without that renderer-specific hint.",
|
|
427
|
+
"React's synchronous renderer throws when MarkdownAsync suspends; Octane's MarkdownAsync returns an awaitable ElementDescriptor."
|
|
428
|
+
],
|
|
429
|
+
"ssr": "Synchronous and awaited asynchronous Markdown are deterministic and browser-global-free; hydration adoption and updates are covered for default output, plugins, filtering, URLs, and component mappings. MarkdownHooks preserves its fallback and resolves on the client.",
|
|
430
|
+
"verified": "2026-08-02"
|
|
254
431
|
},
|
|
255
432
|
{
|
|
256
433
|
"name": "@octanejs/mdx",
|
|
257
|
-
"version": "0.1.
|
|
434
|
+
"version": "0.1.33",
|
|
258
435
|
"category": "Forms and content",
|
|
259
436
|
"upstream": { "package": "@mdx-js/mdx", "version": "3.1.1" },
|
|
260
437
|
"surface": "The full compile-don't-interpret pipeline: `.mdx`/`.md` → `@mdx-js/mdx` (reused verbatim) → octane compiler, via the `octaneMdx()` Vite plugin plus the `./compile` and `./server` entries; compiler warnings propagate through direct and Vite compile surfaces with authored `.mdx` ranges; `@mdx-js/react`'s provider layer (`MDXProvider`/`useMDXComponents`) is ported onto octane context. The octane website runs on it.",
|
|
@@ -266,7 +443,7 @@
|
|
|
266
443
|
},
|
|
267
444
|
{
|
|
268
445
|
"name": "@octanejs/mobx",
|
|
269
|
-
"version": "0.1.
|
|
446
|
+
"version": "0.1.17",
|
|
270
447
|
"category": "Shared state",
|
|
271
448
|
"upstream": { "package": "mobx-react-lite", "version": "4.1.1", "core": "mobx@6.16.1" },
|
|
272
449
|
"surface": "The framework-independent MobX core is re-exported verbatim. The function-component binding includes observer, Observer, useObserver, useLocalObservable, enableStaticRendering, isUsingStaticRendering, and the deprecated useStaticRendering alias.",
|
|
@@ -276,39 +453,73 @@
|
|
|
276
453
|
"React-specific batching, prop-types validation, React DevTools integration, and useDebugValue output are omitted."
|
|
277
454
|
],
|
|
278
455
|
"ssr": "enableStaticRendering(true) renders observed components without creating a Reaction or retaining observable subscriptions.",
|
|
279
|
-
"verified": "2026-
|
|
456
|
+
"verified": "2026-08-02"
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
"name": "@octanejs/monaco-editor",
|
|
460
|
+
"version": "0.0.4",
|
|
461
|
+
"category": "Forms and content",
|
|
462
|
+
"upstream": {
|
|
463
|
+
"package": "@monaco-editor/react",
|
|
464
|
+
"version": "4.7.0",
|
|
465
|
+
"commit": "eb120e66378471315620fe5339b73ba003f199ad"
|
|
466
|
+
},
|
|
467
|
+
"surface": "Editor (default), DiffEditor, loader, useMonaco, and the complete upstream 4.7.0 prop and callback type surface, including controlled values, model paths, languages, themes, options, view-state restoration, validation, and model ownership.",
|
|
468
|
+
"divergences": [
|
|
469
|
+
"Components are compiled Octane `.tsrx` modules and accept OctaneNode for loading content; they do not depend on React.",
|
|
470
|
+
"MonacoContainer uses Octane ref as an ordinary prop instead of upstream private _ref.",
|
|
471
|
+
"Model disposal is ownership-aware: binding-owned models are tracked in a WeakSet with lease counts in a WeakMap, so externally created or shared models are not disposed by the wrong owner; superseded owned path models are cleaned up on unmount.",
|
|
472
|
+
"View state is stored in a WeakMap keyed by model identity rather than upstream path-string Map.",
|
|
473
|
+
"CSS style modules use plain records instead of React CSSProperties."
|
|
474
|
+
],
|
|
475
|
+
"ssr": "Editor and DiffEditor render a deterministic loading shell without touching browser globals; live Monaco construction begins in a client effect. Hydration adopts server DOM (section, slot nodes) and reaches a ready editor without mismatch warnings.",
|
|
476
|
+
"verified": "2026-08-10"
|
|
280
477
|
},
|
|
281
478
|
{
|
|
282
479
|
"name": "@octanejs/motion",
|
|
283
|
-
"version": "0.1.
|
|
480
|
+
"version": "0.1.35",
|
|
284
481
|
"category": "UI and interaction",
|
|
285
482
|
"upstream": { "package": "motion", "version": "12.42.2" },
|
|
286
|
-
"surface": "Core surface: `motion.<tag>` (animate, gestures, variants with propagation/stagger, drag, layout basics), `AnimatePresence`, `MotionConfig`, and the motion-value hooks (`useMotionValue`, `useScroll`, `useTransform`, `useSpring`, `useAnimate`, `useMotionValueEvent`); motion-dom's animation engine and gesture primitives are reused verbatim.",
|
|
483
|
+
"surface": "Core surface: `motion.<tag>` (animate, gestures, variants with propagation/stagger, drag, layout basics), `AnimatePresence`, `MotionConfig`, live `useReducedMotion`, reduced-motion enforcement, `LayoutGroup` layoutId namespaces, `LazyMotion` with `domAnimation`/`domMax`, the `m` proxy and complete `./react-m` named host entry, plus the motion-value hooks (`useMotionValue`, `useScroll`, `useTransform`, `useSpring`, `useAnimate`, `useMotionValueEvent`); motion-dom's animation engine and gesture primitives are reused verbatim.",
|
|
287
484
|
"divergences": [
|
|
288
485
|
"Exit animations run via cleanup-before-detach instead of React's deferred-deletion machinery.",
|
|
289
|
-
"`layout`/`layoutId` use single-element FLIP, not the full projection tree."
|
|
486
|
+
"`layout`/`layoutId` use single-element FLIP, not the full projection tree.",
|
|
487
|
+
"An `initial` target without an `animate` target does not materialize inline initial styles; set the starting style explicitly or provide an animation target."
|
|
290
488
|
],
|
|
291
489
|
"ssr": "No SSR-specific surface; no dedicated SSR tests.",
|
|
292
|
-
"verified": "2026-
|
|
490
|
+
"verified": "2026-08-02"
|
|
293
491
|
},
|
|
294
492
|
{
|
|
295
493
|
"name": "@octanejs/nuqs",
|
|
296
|
-
"version": "0.1.
|
|
494
|
+
"version": "0.1.25",
|
|
297
495
|
"category": "AI, data, and routing",
|
|
298
496
|
"upstream": { "package": "nuqs", "version": "2.9.1" },
|
|
299
497
|
"surface": "Full vendored port: the framework-agnostic core (`parsers`/`parseAs*`/`createParser`, `createSerializer`, `createLoader`, `createStandardSchemaV1`, the throttle/debounce update queues, sync emitter and URL encoding) is vendored verbatim from nuqs 2.9.1; the React layer (`useQueryState`, `useQueryStates`, the `useSyncExternalStores` helper and the adapter context) is ported onto octane's hooks — same `useState`/`useEffect`/`useSyncExternalStore` implementation shape as upstream, so re-render and URL-reconciliation behaviour matches nuqs on React. Adapters ported: `@octanejs/nuqs/adapters/react` (`NuqsAdapter`, `enableHistorySync`), `/adapters/custom` (`unstable_createAdapterProvider`), `/adapters/testing` (`NuqsTestingAdapter`, `withNuqsTestingAdapter`). Server surface (`@octanejs/nuqs/server`) exposes `createLoader`/`createSerializer`/parsers/`createStandardSchemaV1`.",
|
|
300
498
|
"divergences": [
|
|
301
|
-
"
|
|
302
|
-
"
|
|
303
|
-
"
|
|
304
|
-
"
|
|
499
|
+
"Router-specific React adapters are not shipped; use the standalone or custom adapter.",
|
|
500
|
+
"createSearchParamsCache is unavailable because Octane does not implement React.cache.",
|
|
501
|
+
"TransitionStartFunction is declared locally instead of importing React types.",
|
|
502
|
+
"NuqsTestingAdapter resets the shared update queue once per mount instead of every render."
|
|
305
503
|
],
|
|
306
|
-
"ssr": "The server entry
|
|
307
|
-
"verified": "2026-
|
|
504
|
+
"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
|
+
"verified": "2026-08-02"
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
"name": "@octanejs/pdf",
|
|
509
|
+
"version": "0.0.2",
|
|
510
|
+
"category": "Forms and content",
|
|
511
|
+
"upstream": { "package": "react-pdf", "version": "10.4.1" },
|
|
512
|
+
"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
|
+
"divergences": [
|
|
514
|
+
"React nodes, refs, DOM events, and CSS property types are represented by Octane nodes, refs-as-props, native DOM events, and Octane class/style values while preserving observable behavior.",
|
|
515
|
+
"The permissive upstream ./* export exposes React implementation and source artifacts; these are pinned framework-private evidence rather than supported Octane entry points. Root imports and the two documented CSS paths are exact public support."
|
|
516
|
+
],
|
|
517
|
+
"ssr": "Document renders deterministic loading, no-data, and error shells without browser globals or workers. The browser build adopts the server shell before starting PDF.js and uses the modern worker-backed build; Node resolves the legacy PDF.js build.",
|
|
518
|
+
"verified": "2026-08-04"
|
|
308
519
|
},
|
|
309
520
|
{
|
|
310
521
|
"name": "@octanejs/phosphor-icons",
|
|
311
|
-
"version": "0.0.
|
|
522
|
+
"version": "0.0.16",
|
|
312
523
|
"category": "UI and interaction",
|
|
313
524
|
"upstream": { "package": "@phosphor-icons/react", "version": "2.1.10" },
|
|
314
525
|
"surface": "All 1,512 canonical icons from @phosphor-icons/core@2.1.1, including the upstream deprecated Icon-suffixed aliases, six weights, IconContext, IconBase, root exports, and per-icon imports.",
|
|
@@ -318,24 +529,37 @@
|
|
|
318
529
|
"The React package's SSR namespace is unnecessary because Octane icons use the same components on client and server."
|
|
319
530
|
],
|
|
320
531
|
"ssr": "Supported and tested against @phosphor-icons/react/ssr for every weight; hydration adopts and updates server-rendered SVG hosts.",
|
|
321
|
-
"verified": "2026-
|
|
532
|
+
"verified": "2026-08-02"
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
"name": "@octanejs/popper",
|
|
536
|
+
"version": "0.0.2",
|
|
537
|
+
"category": "UI and interaction",
|
|
538
|
+
"upstream": { "package": "react-popper", "version": "2.3.0" },
|
|
539
|
+
"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
|
+
"divergences": [
|
|
541
|
+
"React component classes are Octane function components; React node, ref, and CSS property types are represented by OctaneNode and native structural equivalents while preserving observable render-function values.",
|
|
542
|
+
"Development misuse warnings are emitted directly through console.error instead of React Popper's warning helper."
|
|
543
|
+
],
|
|
544
|
+
"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
|
+
"verified": "2026-08-03"
|
|
322
546
|
},
|
|
323
547
|
{
|
|
324
548
|
"name": "@octanejs/radix",
|
|
325
|
-
"version": "0.1.
|
|
549
|
+
"version": "0.1.35",
|
|
326
550
|
"category": "UI and interaction",
|
|
327
551
|
"upstream": { "package": "radix-ui", "version": "1.6.4" },
|
|
328
|
-
"surface": "
|
|
552
|
+
"surface": "Surface-present against the unified `radix-ui@1.6.4` component exports. Sixteen repo-authored differential cases compare representative primitives and interactions against the real package; the complete 38-file canonical upstream suite is preserved but not adapted, so the binding remains recorded-unverified.",
|
|
329
553
|
"divergences": [
|
|
330
554
|
"`Slot`/`asChild` compose element descriptors (prop-position JSX, `createElement`, `.map()` returns), not children-position JSX.",
|
|
331
555
|
"`forwardRef` becomes octane's ref-as-prop."
|
|
332
556
|
],
|
|
333
557
|
"ssr": "SSR/hydration coverage for the overlay/portal components is still open (tracked in the migration plan).",
|
|
334
|
-
"verified": "2026-
|
|
558
|
+
"verified": "2026-08-03"
|
|
335
559
|
},
|
|
336
560
|
{
|
|
337
561
|
"name": "@octanejs/rainbowkit",
|
|
338
|
-
"version": "0.0.
|
|
562
|
+
"version": "0.0.16",
|
|
339
563
|
"category": "Web3",
|
|
340
564
|
"upstream": { "package": "@rainbow-me/rainbowkit", "version": "2.2.11" },
|
|
341
565
|
"surface": "Octane-native RainbowKitProvider, ConnectButton and ConnectButton.Custom, WalletButton, connect/account/chain modal hooks, connector selection, account/chain actions, native accessible dialogs, and light/dark/midnight themes.",
|
|
@@ -347,11 +571,11 @@
|
|
|
347
571
|
"rainbowTheme is an explicitly documented Octane-only purple/rounded preset; it is not an upstream RainbowKit export."
|
|
348
572
|
],
|
|
349
573
|
"ssr": "The provider and controls emit deterministic disconnected markup without browser wallet access. Connector discovery and live Wagmi state become authoritative after hydration; no hydrated UI state authorizes wallet actions.",
|
|
350
|
-
"verified": "2026-
|
|
574
|
+
"verified": "2026-08-02"
|
|
351
575
|
},
|
|
352
576
|
{
|
|
353
577
|
"name": "@octanejs/react-error-boundary",
|
|
354
|
-
"version": "0.1.
|
|
578
|
+
"version": "0.1.17",
|
|
355
579
|
"category": "UI and interaction",
|
|
356
580
|
"upstream": { "package": "react-error-boundary", "version": "6.1.2" },
|
|
357
581
|
"surface": "Complete against the published react-error-boundary 6.1.2 function/type surface adapted to Octane: ErrorBoundary, ErrorBoundaryContext, getErrorMessage, fallback variants, onError/onReset callbacks, resetKeys, useErrorBoundary (including error), withErrorBoundary, OnErrorCallback, and UseErrorBoundaryApi.",
|
|
@@ -361,11 +585,11 @@
|
|
|
361
585
|
"Server rendering that must match upstream error propagation uses the explicit @octanejs/react-error-boundary/server entry."
|
|
362
586
|
],
|
|
363
587
|
"ssr": "The explicit server entry renders children without a boundary so descendant errors propagate, matching react-error-boundary 6.1.2.",
|
|
364
|
-
"verified": "2026-
|
|
588
|
+
"verified": "2026-08-02"
|
|
365
589
|
},
|
|
366
590
|
{
|
|
367
591
|
"name": "@octanejs/react-map-gl",
|
|
368
|
-
"version": "0.0.
|
|
592
|
+
"version": "0.0.8",
|
|
369
593
|
"category": "Data-heavy screens",
|
|
370
594
|
"upstream": { "package": "@vis.gl/react-mapbox", "version": "8.1.2 (b1e46fcf)" },
|
|
371
595
|
"surface": "Complete against the pinned @vis.gl/react-mapbox 8.1.2 public surface — the package react-map-gl/mapbox re-exports: Map (and default), Marker, Popup, Source, Layer, AttributionControl, FullscreenControl, GeolocateControl, NavigationControl, ScaleControl, useControl, MapProvider, useMap, and every published type. The framework-neutral half of upstream (the Mapbox engine, proxy transform, map ref, and six utils) is reused byte-for-byte and validated by upstream's own specs run against both source trees.",
|
|
@@ -381,7 +605,7 @@
|
|
|
381
605
|
},
|
|
382
606
|
{
|
|
383
607
|
"name": "@octanejs/recharts",
|
|
384
|
-
"version": "0.1.
|
|
608
|
+
"version": "0.1.33",
|
|
385
609
|
"category": "Data-heavy screens",
|
|
386
610
|
"upstream": { "package": "recharts", "version": "3.9.2" },
|
|
387
611
|
"surface": "Broad runtime support across cartesian, polar, hierarchical, tooltip, legend, responsive-container, shape, and chart-state surfaces. `Brush` and `Treemap` remain intentionally unsupported.",
|
|
@@ -389,24 +613,25 @@
|
|
|
389
613
|
"Chart events coordinate through octane's native delegated events rather than React's synthetic layer."
|
|
390
614
|
],
|
|
391
615
|
"ssr": "Untested; text measurement (`getStringSize`) returns 0×0 under SSR.",
|
|
392
|
-
"verified": "2026-
|
|
616
|
+
"verified": "2026-08-02"
|
|
393
617
|
},
|
|
394
618
|
{
|
|
395
619
|
"name": "@octanejs/redux",
|
|
396
|
-
"version": "0.1.
|
|
620
|
+
"version": "0.1.33",
|
|
397
621
|
"category": "Shared state",
|
|
398
622
|
"upstream": { "package": "react-redux", "version": "9.3.0" },
|
|
399
|
-
"surface": "The hooks + `Provider` surface of react-redux 9.3.0 (`useSelector`, `useDispatch`, `useStore`, and the custom-context factory variants) on octane's `useSyncExternalStore`; works with any Redux 5 / Redux Toolkit store.
|
|
623
|
+
"surface": "The hooks + `Provider` surface of react-redux 9.3.0 (`useSelector`, `useDispatch`, `useStore`, and the custom-context factory variants) on octane's `useSyncExternalStore`; works with any Redux 5 / Redux Toolkit store. Upstream runtime-export completeness is pinned by test.",
|
|
400
624
|
"divergences": [
|
|
401
625
|
"`connect()` (the legacy HOC surface) intentionally throws — the hooks API is the supported surface.",
|
|
402
|
-
"Error messages are octane-branded."
|
|
626
|
+
"Error messages are octane-branded.",
|
|
627
|
+
"The root also exposes createReduxContextHook, useReduxContext, createSubscription, and useSyncExternalStoreWithSelector as Octane extension exports."
|
|
403
628
|
],
|
|
404
629
|
"ssr": "No SSR-specific surface; no dedicated SSR tests.",
|
|
405
|
-
"verified": "2026-
|
|
630
|
+
"verified": "2026-08-02"
|
|
406
631
|
},
|
|
407
632
|
{
|
|
408
633
|
"name": "@octanejs/redux-toolkit",
|
|
409
|
-
"version": "0.1.
|
|
634
|
+
"version": "0.1.31",
|
|
410
635
|
"category": "Shared state",
|
|
411
636
|
"upstream": { "package": "@reduxjs/toolkit", "version": "2.12.0" },
|
|
412
637
|
"surface": "Complete four-entry-point port: the framework-agnostic Toolkit and RTK Query core are re-exported verbatim; `/query/react` provides generated query, lazy-query, mutation, infinite-query, prefetch hooks and `ApiProvider`; `/react` provides the dynamic-middleware dispatch-hook integration.",
|
|
@@ -415,14 +640,14 @@
|
|
|
415
640
|
"`useDebugValue` is octane's no-op compatibility hook; observable query behavior is unchanged."
|
|
416
641
|
],
|
|
417
642
|
"ssr": "Preloaded RTK Query state renders through the traditional @octanejs/redux Provider; effects and browser listeners remain client-only. Dedicated SSR and hydration tests are included.",
|
|
418
|
-
"verified": "2026-
|
|
643
|
+
"verified": "2026-08-02"
|
|
419
644
|
},
|
|
420
645
|
{
|
|
421
646
|
"name": "@octanejs/remix-router",
|
|
422
|
-
"version": "0.1.
|
|
647
|
+
"version": "0.1.32",
|
|
423
648
|
"category": "AI, data, and routing",
|
|
424
649
|
"upstream": { "package": "react-router", "version": "8.2.0" },
|
|
425
|
-
"surface": "
|
|
650
|
+
"surface": "All planned port phases are shipped and the pinned runtime export namespace is complete: the framework-agnostic router core, data/declarative/DOM/mutation/guard layers, static SSR, and cookie/session runtime are implemented on Octane. Framework-mode and RSC names remain throwing scope stubs. Selected vendored-core suites, local conformance, and nine exact shared-fixture scenarios provide bounded evidence rather than exhaustive React parity.",
|
|
426
651
|
"divergences": [
|
|
427
652
|
"Refs are props (octane has no forwardRef) — Link's forwardRef becomes a `ref` prop.",
|
|
428
653
|
"Error-boundary reset on location change / revalidation-idle happens in a layout effect one commit after upstream's render-phase derivation — same observable outcome.",
|
|
@@ -431,11 +656,11 @@
|
|
|
431
656
|
"Block-children `<Routes>` collects `<Route>`s by registration (mount order) instead of upstream's element-children walk (source order) — a conditionally-mounted `<Route>` between static siblings registers after them, which only affects matchRoutes score TIES; conformance-pinned."
|
|
432
657
|
],
|
|
433
658
|
"ssr": "Shipped: StaticRouter/StaticRouterProvider/createStaticHandler/createStaticRouter render through octane/server (remix-router-ssr vitest project compiles the whole graph in server mode; markup matches react-dom/server byte-for-byte after framework-marker stripping). Block-children <Routes> is CLIENT-only (the registration collector runs in layout effects) — use descriptor children or route objects for SSR.",
|
|
434
|
-
"verified": "2026-
|
|
659
|
+
"verified": "2026-08-02"
|
|
435
660
|
},
|
|
436
661
|
{
|
|
437
662
|
"name": "@octanejs/rxjs",
|
|
438
|
-
"version": "0.1.
|
|
663
|
+
"version": "0.1.15",
|
|
439
664
|
"category": "Shared state",
|
|
440
665
|
"upstream": {
|
|
441
666
|
"package": "@react-rxjs/core + @react-rxjs/utils",
|
|
@@ -447,11 +672,11 @@
|
|
|
447
672
|
"@react-rxjs/dom is omitted because octane batches updates without ReactDOM.unstable_batchedUpdates."
|
|
448
673
|
],
|
|
449
674
|
"ssr": "useSyncExternalStore supplies the state snapshot during server rendering; browser-only ReactDOM batching helpers are intentionally absent.",
|
|
450
|
-
"verified": "2026-
|
|
675
|
+
"verified": "2026-08-02"
|
|
451
676
|
},
|
|
452
677
|
{
|
|
453
678
|
"name": "@octanejs/shadcn",
|
|
454
|
-
"version": "0.0.
|
|
679
|
+
"version": "0.0.21",
|
|
455
680
|
"category": "UI and interaction",
|
|
456
681
|
"upstream": {
|
|
457
682
|
"package": "shadcn-ui/ui (radix base)",
|
|
@@ -476,9 +701,30 @@
|
|
|
476
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.",
|
|
477
702
|
"verified": "2026-08-02"
|
|
478
703
|
},
|
|
704
|
+
{
|
|
705
|
+
"name": "@octanejs/solana-react",
|
|
706
|
+
"version": "0.0.5",
|
|
707
|
+
"category": "Web3",
|
|
708
|
+
"upstream": {
|
|
709
|
+
"package": "@solana/react",
|
|
710
|
+
"version": "7.0.0",
|
|
711
|
+
"source": "https://github.com/anza-xyz/kit",
|
|
712
|
+
"license": "MIT"
|
|
713
|
+
},
|
|
714
|
+
"surface": "Octane-native client provider/store hooks, a validated private Wallet Standard adapter, explicit-action transaction orchestration, and a TanStack Query-backed request hook. Applications import framework-neutral operations directly from @solana/kit@7.0.0.",
|
|
715
|
+
"divergences": [
|
|
716
|
+
"@solana/react/swr is excluded because Octane has no SWR binding.",
|
|
717
|
+
"Wallet APIs are deliberately structural and narrower because upstream selected-wallet exports leak React and @wallet-standard/react public types.",
|
|
718
|
+
"useSubscriptionQuery and useTrackedDataQuery are deferred pending streamed-query lifecycle characterization.",
|
|
719
|
+
"Upstream sign-in/message/transaction hooks are represented by a generation-safe explicit transaction executor rather than hidden React runtime code.",
|
|
720
|
+
"ClientProvider accepts only a resolved client; thenables throw at mount rather than suspending."
|
|
721
|
+
],
|
|
722
|
+
"ssr": "Client state is server-readable. Wallet discovery is inert during SSR and activates only when a browser registry is explicitly attached after hydration.",
|
|
723
|
+
"verified": "2026-07-29"
|
|
724
|
+
},
|
|
479
725
|
{
|
|
480
726
|
"name": "@octanejs/sonner",
|
|
481
|
-
"version": "0.1.
|
|
727
|
+
"version": "0.1.31",
|
|
482
728
|
"category": "UI and interaction",
|
|
483
729
|
"upstream": { "package": "sonner", "version": "2.0.7" },
|
|
484
730
|
"surface": "Complete against the published `sonner@2.0.7` public surface: `Toaster`, the callable `toast` API and all methods, `useSonner`, promise lifecycle, multiple toaster targeting, stacked layout, themes, styling, focus management, timers, and swipe dismissal.",
|
|
@@ -488,24 +734,40 @@
|
|
|
488
734
|
"The document-visibility hook is guarded during SSR; upstream 2.0.7 reads `document.hidden` during render."
|
|
489
735
|
],
|
|
490
736
|
"ssr": "Supported and tested: `Toaster` server-renders without browser globals, hydrates by adopting the server host, and can show the first client-created toast without replacing it.",
|
|
491
|
-
"verified": "2026-
|
|
737
|
+
"verified": "2026-08-02"
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
"name": "@octanejs/spring",
|
|
741
|
+
"version": "0.0.2",
|
|
742
|
+
"category": "UI and interaction",
|
|
743
|
+
"upstream": { "package": "@react-spring/web", "version": "10.1.2" },
|
|
744
|
+
"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
|
+
"divergences": [
|
|
746
|
+
"React renderables and refs are represented by Octane renderables and refs-as-props.",
|
|
747
|
+
"The all-renderer react-spring meta-package is intentionally not mapped."
|
|
748
|
+
],
|
|
749
|
+
"ssr": "Initial and immediate values render on the server; browser observers and frame work start after client commit.",
|
|
750
|
+
"verified": "2026-08-02"
|
|
492
751
|
},
|
|
493
752
|
{
|
|
494
753
|
"name": "@octanejs/streamdown",
|
|
495
|
-
"version": "0.1.
|
|
754
|
+
"version": "0.1.15",
|
|
496
755
|
"category": "Forms and content",
|
|
497
756
|
"upstream": { "package": "streamdown", "version": "2.5.0" },
|
|
498
757
|
"surface": "Complete Streamdown 2.5.0 root runtime and public type surface, plus the official code 1.1.1, math 1.0.2, Mermaid 1.0.2, and CJK 1.0.3 plugins exposed through ./code, ./math, ./mermaid, and ./cjk.",
|
|
499
758
|
"divergences": [
|
|
500
759
|
"Components, hooks, contexts, lazy boundaries, portals, element inspection, and the HAST JSX runtime target Octane; callbacks receive native DOM events instead of React synthetic events.",
|
|
501
|
-
"The four official plugins are consolidated as subpath exports of @octanejs/streamdown instead of separate packages."
|
|
760
|
+
"The four official plugins are consolidated as subpath exports of @octanejs/streamdown instead of separate packages.",
|
|
761
|
+
"Animation progress is isolated per streaming block instead of sharing upstream 2.5.0's sibling progress, so new sibling text receives its own duration and delay.",
|
|
762
|
+
"Code-block background arbitrary-value classes have balanced parentheses instead of the malformed class strings published by upstream 2.5.0.",
|
|
763
|
+
"Built-in icon size props set SVG width and height; upstream 2.5.0 leaves the size attribute inert and renders the default 16x16 dimensions."
|
|
502
764
|
],
|
|
503
765
|
"ssr": "Static and streaming Markdown, custom components, code blocks, math markup, and hydration are covered by dedicated server and hydration tests. Browser-only controls and deferred Mermaid rendering remain inert until mounted.",
|
|
504
|
-
"verified": "2026-
|
|
766
|
+
"verified": "2026-08-02"
|
|
505
767
|
},
|
|
506
768
|
{
|
|
507
769
|
"name": "@octanejs/styled-components",
|
|
508
|
-
"version": "0.1.
|
|
770
|
+
"version": "0.1.28",
|
|
509
771
|
"category": "Styling, tests, and devtools",
|
|
510
772
|
"upstream": { "package": "styled-components", "version": "6.4.3" },
|
|
511
773
|
"surface": "Full v6 web API, ported from the upstream 6.4.3 sources: `styled` with every HTML/SVG tag shortcut, `.attrs`/`.withConfig` chaining, `css`, `keyframes`, `createGlobalStyle`, `createTheme`, `ThemeProvider`/`ThemeContext`/`ThemeConsumer`/`useTheme`/`withTheme`, `StyleSheetManager`/`StyleSheetContext`/`StyleSheetConsumer` (targets, namespaces, vendor prefixing, stylis plugins, `shouldForwardProp`), `ServerStyleSheet`, `isStyledComponent`, `version`, and `__PRIVATE__`. Component selectors, folding (`styled(Styled)`), transient `$` props, `as`/`forwardedAs`, and the grouped CSSOM sheet engine (with upstream `data-styled` rehydration) all behave as upstream. The React Native surface and the RSC-only `stylisPluginRSC` are not ported.",
|
|
@@ -520,11 +782,11 @@
|
|
|
520
782
|
"Interpolation-position styled components are recognized by an octane brand symbol rather than React's forward-ref `$$typeof` (octane styled components are plain functions)."
|
|
521
783
|
],
|
|
522
784
|
"ssr": "Supported and tested: zero-config collection into `RenderResult.css` via octane's `injectStyle` channel (styled rules, keyframes, and globals, with content-derived immutable chunk ids that make streaming dedup sound), repeat-render and dynamic-global request isolation through a stateless server output backend, hydration adoption of server chunks (removed after adoption, no duplicate rules), and the `ServerStyleSheet` compat surface.",
|
|
523
|
-
"verified": "2026-
|
|
785
|
+
"verified": "2026-08-02"
|
|
524
786
|
},
|
|
525
787
|
{
|
|
526
788
|
"name": "@octanejs/stylex",
|
|
527
|
-
"version": "0.1.
|
|
789
|
+
"version": "0.1.35",
|
|
528
790
|
"category": "Styling, tests, and devtools",
|
|
529
791
|
"upstream": { "package": "@stylexjs/stylex", "version": "0.19.0" },
|
|
530
792
|
"surface": "Full compile-time integration: re-exports the StyleX runtime API (`create`, `props`, `attrs`, `keyframes`, `defineVars`, `createTheme`) and registers as an import source; the `/vite` plugin runs the StyleX compiler over octane's compiled output and emits one static atomic stylesheet (`virtual:stylex.css`) with zero StyleX runtime in the bundle.",
|
|
@@ -535,9 +797,35 @@
|
|
|
535
797
|
"ssr": "Works under SSR — the stylesheet is static and server markup carries the final class names; no dedicated SSR test files.",
|
|
536
798
|
"verified": "2026-07-09"
|
|
537
799
|
},
|
|
800
|
+
{
|
|
801
|
+
"name": "@octanejs/swr",
|
|
802
|
+
"version": "0.0.2",
|
|
803
|
+
"category": "AI, data, and routing",
|
|
804
|
+
"upstream": { "package": "swr", "version": "2.4.2" },
|
|
805
|
+
"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
|
+
"divergences": [
|
|
807
|
+
"The binding exposes window.__SWR_DEVTOOLS_OCTANE__ and deliberately does not claim React's window.__SWR_DEVTOOLS_REACT__ global; React-only devtools that require that identity are incompatible.",
|
|
808
|
+
"SWR 2.4.2 behavior is pinned exactly, including the absence of automatic request abortion on consumer unmount."
|
|
809
|
+
],
|
|
810
|
+
"ssr": "Supported and tested: browser-global-free server condition exports, deterministic fallback output, Octane streaming/hydration architecture gates, and pinned fallback/preload revalidation semantics.",
|
|
811
|
+
"verified": ""
|
|
812
|
+
},
|
|
813
|
+
{
|
|
814
|
+
"name": "@octanejs/syntax-highlighter",
|
|
815
|
+
"version": "0.0.2",
|
|
816
|
+
"category": "Forms and content",
|
|
817
|
+
"upstream": { "package": "react-syntax-highlighter", "version": "16.1.1" },
|
|
818
|
+
"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
|
+
"divergences": [
|
|
820
|
+
"PreTag and CodeTag accept native tag names or Octane function components. React class components require a function adapter because React instance identity is renderer-owned.",
|
|
821
|
+
"In .tsrx, source text must use the explicit children={source} prop. Nested component children compile to an opaque renderer block that a text-inspecting component cannot unwrap."
|
|
822
|
+
],
|
|
823
|
+
"ssr": "Synchronous variants emit highlighted server HTML without DOM globals. Async variants emit the same deterministic plain-code fallback and hydrate by adopting the existing pre, code, and token nodes before live updates.",
|
|
824
|
+
"verified": "2026-08-03"
|
|
825
|
+
},
|
|
538
826
|
{
|
|
539
827
|
"name": "@octanejs/tanstack-ai",
|
|
540
|
-
"version": "0.0.
|
|
828
|
+
"version": "0.0.30",
|
|
541
829
|
"category": "AI, data, and routing",
|
|
542
830
|
"upstream": { "package": "@tanstack/ai-react", "version": "0.17.0" },
|
|
543
831
|
"surface": "Ports the @tanstack/ai-react 0.17.0 hook surface (useChat, useRealtimeChat, useGeneration, useGenerateImage/Audio/Speech/Video, useTranscription, useSummarize, useAudioRecorder, useMcpAppBridge) while reusing @tanstack/ai 0.41.0 and @tanstack/ai-client 0.21.0 unchanged and mirroring all 30 @tanstack/ai-client convenience re-exports from the upstream index.",
|
|
@@ -552,14 +840,14 @@
|
|
|
552
840
|
"One upstream `useChat` test case (\"auto-resume on mount / when the browser comes back online\") is omitted: it targets `ChatClient.prototype.maybeAutoResume`, an API absent from the pinned (and latest published) `@tanstack/ai-client@0.21.0` and never invoked by `useChat`. It is untestable in this binding until that dependency ships the method."
|
|
553
841
|
],
|
|
554
842
|
"ssr": "Supported and tested: useChat renders its initial message snapshot through octane/server without a DOM.",
|
|
555
|
-
"verified": "2026-
|
|
843
|
+
"verified": "2026-08-09"
|
|
556
844
|
},
|
|
557
845
|
{
|
|
558
846
|
"name": "@octanejs/tanstack-devtools",
|
|
559
|
-
"version": "0.0.
|
|
847
|
+
"version": "0.0.30",
|
|
560
848
|
"category": "Styling, tests, and devtools",
|
|
561
849
|
"upstream": { "package": "@tanstack/react-devtools", "version": "0.10.7" },
|
|
562
|
-
"surface": "
|
|
850
|
+
"surface": "Surface-present for the pinned adapter's runtime entrypoint, with additive framework-neutral core re-exports. A same-fixture differential covers mount, config synchronization, plugin/title/trigger portals, and teardown. Upstream has no runtime suite; its test:types source compile is recorded as present type evidence with required pristine/adapted type lanes. Provenance is verified; core-version drift and Octane-specific type names/core re-exports stay as explicit divergences.",
|
|
563
851
|
"divergences": [
|
|
564
852
|
"Public adapter types use Octane-prefixed names: `TanStackDevtoolsOctanePlugin` and `TanStackDevtoolsOctaneInit` (upstream: `TanStackDevtoolsReactPlugin` / `TanStackDevtoolsReactInit`).",
|
|
565
853
|
"`ref` is the normal React-19-style ref prop and events are native (no synthetic layer), consistent with the rest of the Octane bindings.",
|
|
@@ -567,11 +855,11 @@
|
|
|
567
855
|
"Plugin/title/trigger content is rendered through a tiny `DevtoolsPortal` component (a createPortal VALUE), because Octane renders a returned portal at any position rather than only as a direct JSX child."
|
|
568
856
|
],
|
|
569
857
|
"ssr": "Supported and tested: the component renders its absolutely-positioned anchor element through octane/server without a DOM; the core is constructed but never mounted server-side (mount is a client-only effect).",
|
|
570
|
-
"verified": "2026-
|
|
858
|
+
"verified": "2026-08-03"
|
|
571
859
|
},
|
|
572
860
|
{
|
|
573
861
|
"name": "@octanejs/tanstack-form",
|
|
574
|
-
"version": "0.0.
|
|
862
|
+
"version": "0.0.30",
|
|
575
863
|
"category": "Forms and content",
|
|
576
864
|
"upstream": { "package": "@tanstack/react-form", "version": "1.33.2" },
|
|
577
865
|
"surface": "Ports the complete @tanstack/react-form 1.33.2 adapter surface (`useForm`, `useField`, form and field groups, hook contexts and component composition) while re-exporting @tanstack/form-core 1.33.2 unchanged and using @octanejs/tanstack-store for subscriptions.",
|
|
@@ -581,47 +869,47 @@
|
|
|
581
869
|
"Component registration accepts Octane function components; class components are not supported by Octane."
|
|
582
870
|
],
|
|
583
871
|
"ssr": "Supported and tested: fields and form subscriptions render their initial snapshots through octane/server without a DOM.",
|
|
584
|
-
"verified": "2026-
|
|
872
|
+
"verified": "2026-08-09"
|
|
585
873
|
},
|
|
586
874
|
{
|
|
587
875
|
"name": "@octanejs/tanstack-hotkeys",
|
|
588
|
-
"version": "0.0.
|
|
876
|
+
"version": "0.0.25",
|
|
589
877
|
"category": "UI and interaction",
|
|
590
878
|
"upstream": { "package": "@tanstack/react-hotkeys", "version": "0.10.0" },
|
|
591
|
-
"surface": "
|
|
879
|
+
"surface": "Surface-present for all 22 `@tanstack/react-hotkeys@0.10.0` adapter exports plus the byte-identical `@tanstack/hotkeys@0.8.0` core re-export. The pinned 41-case upstream runtime suite runs pristine and adapted as verified vitest-full lanes; type suites compile upstream source with tsc and the Octane surface with tsrx-tsc.",
|
|
592
880
|
"divergences": [
|
|
593
881
|
"`target` refs are plain `{ current }` objects (Octane has no `React.RefObject`); the `isRef` guard and behavior are otherwise identical."
|
|
594
882
|
],
|
|
595
883
|
"ssr": "Supported: every hook registers listeners in effects and resolves `document` lazily, so server rendering produces no registrations and no browser access (matching upstream's `typeof document` guards).",
|
|
596
|
-
"verified": "2026-
|
|
884
|
+
"verified": "2026-08-03"
|
|
597
885
|
},
|
|
598
886
|
{
|
|
599
887
|
"name": "@octanejs/tanstack-pacer",
|
|
600
|
-
"version": "0.0.
|
|
888
|
+
"version": "0.0.25",
|
|
601
889
|
"category": "UI and interaction",
|
|
602
890
|
"upstream": { "package": "@tanstack/react-pacer", "version": "0.22.1" },
|
|
603
|
-
"surface": "
|
|
891
|
+
"surface": "Surface-present for all 15 runtime/type entrypoints from `@tanstack/react-pacer@0.22.1`, plus the byte-identical `@tanstack/pacer@0.21.1` core re-export. Repo-authored adapted-octane and differential lanes cover a representative debounce/throttle/batching/teardown lifecycle; upstream has no runtime suite and insufficient type evidence, so provenance remains `recorded-unverified` with nearly every export still `surface-present-unverified`.",
|
|
604
892
|
"divergences": [
|
|
605
893
|
"Upstream types spelled with `React.Dispatch<React.SetStateAction<T>>` use structurally identical local aliases (Octane state setters have the same shape)."
|
|
606
894
|
],
|
|
607
895
|
"ssr": "Supported: instances are created lazily in `useState` initializers, cleanup runs in effects, and no browser globals are touched during render, so server rendering produces the initial (non-pending) state exactly like upstream.",
|
|
608
|
-
"verified": "2026-
|
|
896
|
+
"verified": "2026-08-03"
|
|
609
897
|
},
|
|
610
898
|
{
|
|
611
899
|
"name": "@octanejs/tanstack-query",
|
|
612
|
-
"version": "0.1.
|
|
900
|
+
"version": "0.1.35",
|
|
613
901
|
"category": "AI, data, and routing",
|
|
614
902
|
"upstream": { "package": "@tanstack/react-query", "version": "5.101.3" },
|
|
615
903
|
"surface": "Complete: 58/58 runtime exports plus the full TypeScript surface; the export surface is byte-identical to upstream in both directions (locked by test), and `@tanstack/query-core` is re-exported verbatim.",
|
|
616
904
|
"divergences": [
|
|
617
905
|
"Suspense integrates via octane's `use(thenable)` rather than throwing a promise (observable behavior matches)."
|
|
618
906
|
],
|
|
619
|
-
"ssr": "`HydrationBoundary` fully ported (
|
|
620
|
-
"verified": "2026-
|
|
907
|
+
"ssr": "`HydrationBoundary` is fully ported (including streaming `promise`/`dehydratedAt` re-hydration), and initial query data is covered by a DOM-free Octane server-render test; dedicated streaming server entries remain open.",
|
|
908
|
+
"verified": "2026-08-02"
|
|
621
909
|
},
|
|
622
910
|
{
|
|
623
911
|
"name": "@octanejs/tanstack-router",
|
|
624
|
-
"version": "0.1.
|
|
912
|
+
"version": "0.1.35",
|
|
625
913
|
"category": "AI, data, and routing",
|
|
626
914
|
"upstream": { "package": "@tanstack/react-router", "version": "1.170.18" },
|
|
627
915
|
"surface": "Octane's TanStack Router binding: typed route factories and hooks, the full Match pipeline and lifecycle, file routes with TSRX-aware generator integration, full Link navigation/preloading/masking behavior, blocking, Await/deferred hydration, scroll restoration, lazy routes, not-found handling, document/head assets, and client/server SSR entries.",
|
|
@@ -630,22 +918,22 @@
|
|
|
630
918
|
"Link callbacks receive native DOM events rather than React synthetic events.",
|
|
631
919
|
"Router devtools are distributed separately."
|
|
632
920
|
],
|
|
633
|
-
"ssr": "Full-document buffered and readable-stream SSR through `./ssr/server`, client hydration through `./ssr/client`, route-owned head/scripts, CSP nonce propagation, per-route SSR modes, and native Octane stream injection; covered by
|
|
634
|
-
"verified": "2026-
|
|
921
|
+
"ssr": "Full-document buffered and readable-stream SSR through `./ssr/server`, client hydration through `./ssr/client`, route-owned head/scripts, CSP nonce propagation, per-route SSR modes, and native Octane stream injection; covered by Octane-only framework-contract tests in ordinary shards (not a React SSR oracle).",
|
|
922
|
+
"verified": "2026-08-02"
|
|
635
923
|
},
|
|
636
924
|
{
|
|
637
925
|
"name": "@octanejs/tanstack-router-ssr-query",
|
|
638
|
-
"version": "0.0.
|
|
926
|
+
"version": "0.0.25",
|
|
639
927
|
"category": "AI, data, and routing",
|
|
640
928
|
"upstream": { "package": "@tanstack/react-router-ssr-query", "version": "1.167.1" },
|
|
641
|
-
"surface": "
|
|
929
|
+
"surface": "Surface-present for the pinned adapter's only runtime entrypoint (`Options` and `setupRouterSsrQueryIntegration`). The metadata-only `./package.json` subpath is intentionally omitted. A representative differential covers provider-backed SSR, existing-wrapper preservation, setup mutations, and the wrapping control; upstream has no runtime suite, and type evidence is the upstream source compile plus the adapted Octane compile, so verification remains recorded-unverified.",
|
|
642
930
|
"divergences": [],
|
|
643
931
|
"ssr": "Supported — this package IS the SSR integration (dehydrates query state into the router stream and wraps the app in the query provider).",
|
|
644
|
-
"verified": "2026-
|
|
932
|
+
"verified": "2026-08-03"
|
|
645
933
|
},
|
|
646
934
|
{
|
|
647
935
|
"name": "@octanejs/tanstack-store",
|
|
648
|
-
"version": "0.0.
|
|
936
|
+
"version": "0.0.30",
|
|
649
937
|
"category": "Shared state",
|
|
650
938
|
"upstream": { "package": "@tanstack/react-store", "version": "0.11.0" },
|
|
651
939
|
"surface": "Re-exports `@tanstack/store@0.11.0` unchanged and implements the stable React binding surface (`useSelector`, `useAtom`, `useCreateAtom`, `useCreateStore`, `createStoreContext`, and deprecated `useStore`) on Octane hooks.",
|
|
@@ -653,11 +941,11 @@
|
|
|
653
941
|
"The upstream experimental `_useStore` hook is intentionally omitted; use `useSelector` with `store.actions` or `store.setState` instead."
|
|
654
942
|
],
|
|
655
943
|
"ssr": "Supported: selectors, writable atoms, and store context read their current snapshots during server rendering; the adapter has no browser-only initialization.",
|
|
656
|
-
"verified": "2026-
|
|
944
|
+
"verified": "2026-08-09"
|
|
657
945
|
},
|
|
658
946
|
{
|
|
659
947
|
"name": "@octanejs/tanstack-table",
|
|
660
|
-
"version": "0.1.
|
|
948
|
+
"version": "0.1.33",
|
|
661
949
|
"category": "Data-heavy screens",
|
|
662
950
|
"upstream": { "package": "@tanstack/react-table", "version": "9.0.0-beta.58" },
|
|
663
951
|
"surface": "Complete port of the v9 adapter: the framework-agnostic `@tanstack/table-core` (constructTable + every tree-shakeable feature and row model) is reused verbatim, and the adapter — `useTable`, `Subscribe`, `flexRender`/`FlexRender`, `createTableHook`, `createTableHookContexts` — is transcribed onto octane hooks. Table state lives in TanStack Store atoms via the `coreReactivityFeature` bindings, and `useSelector` drives re-renders from the selected slice. Every store primitive (hooks, `createAtom`, `batch`, `shallow`, and the atom/store types) is imported from @octanejs/tanstack-store, which re-exports all of @tanstack/store — the binding takes no direct dependency on the store core, so there is only one path to it and atom identity cannot be split across duplicate copies.",
|
|
@@ -666,11 +954,11 @@
|
|
|
666
954
|
"Upstream's `useLegacyTable` entry (the v8-compat `get*RowModel` shim, its marker factories, and the `Legacy*` type aliases) is NOT ported. It exists to migrate existing React v8 codebases; octane has none, so octane code targets the v9 `useTable` API directly."
|
|
667
955
|
],
|
|
668
956
|
"ssr": "No SSR-specific surface; table-core is pure computation.",
|
|
669
|
-
"verified": "2026-
|
|
957
|
+
"verified": "2026-08-02"
|
|
670
958
|
},
|
|
671
959
|
{
|
|
672
960
|
"name": "@octanejs/tanstack-virtual",
|
|
673
|
-
"version": "0.1.
|
|
961
|
+
"version": "0.1.33",
|
|
674
962
|
"category": "Data-heavy screens",
|
|
675
963
|
"upstream": { "package": "@tanstack/react-virtual", "version": "3.14.5" },
|
|
676
964
|
"surface": "Complete 1:1 port: the framework-agnostic `@tanstack/virtual-core` (Virtualizer + observers + windowing math) is reused verbatim; the React adapter (`useVirtualizer`, `useWindowVirtualizer`, incl. `useFlushSync` and the experimental `directDomUpdates` surface) is transcribed onto octane hooks, preserving upstream's force-update + flushSync-on-sync-scroll wiring and layout-effect lifecycle.",
|
|
@@ -678,11 +966,11 @@
|
|
|
678
966
|
"octane's `flushSync` called while a flush is already on the stack degrades to a plain call drained by the ambient flush (re-entrancy guard) — sync scroll notifies dispatched from inside a discrete-event flush land at that flush's boundary instead of nested; consumer-invisible, pinned by a conformance test."
|
|
679
967
|
],
|
|
680
968
|
"ssr": "SSR-safe: `useIsomorphicLayoutEffect` degrades to `useEffect` without `document`; the first paint windows from `initialRect`/`initialOffset` exactly as upstream. No dedicated SSR tests.",
|
|
681
|
-
"verified": "2026-
|
|
969
|
+
"verified": "2026-08-02"
|
|
682
970
|
},
|
|
683
971
|
{
|
|
684
972
|
"name": "@octanejs/tauri",
|
|
685
|
-
"version": "0.0.
|
|
973
|
+
"version": "0.0.19",
|
|
686
974
|
"category": "Desktop",
|
|
687
975
|
"upstream": { "package": "@tauri-apps/api", "version": "2.11.1" },
|
|
688
976
|
"surface": "Octane hooks over the framework-neutral Tauri IPC surface: useInvoke (suspending command), useInvokeState (pending/success/error with refetch), and useTauriEvent (event subscription with lifecycle-safe teardown). The rest of @tauri-apps/api — window, webview, menu, tray, path, dpi, image, and the plugin packages — is already framework-neutral and is imported directly rather than re-exported here.",
|
|
@@ -700,41 +988,54 @@
|
|
|
700
988
|
},
|
|
701
989
|
{
|
|
702
990
|
"name": "@octanejs/testing-library",
|
|
703
|
-
"version": "0.1.
|
|
991
|
+
"version": "0.1.33",
|
|
704
992
|
"category": "Styling, tests, and devtools",
|
|
705
|
-
"upstream": { "package": "@testing-library/react", "version": "
|
|
993
|
+
"upstream": { "package": "@testing-library/react", "version": "16.3.2" },
|
|
706
994
|
"surface": "`render`/`rerender`/`cleanup`/`renderHook` + `act` over the verbatim `@testing-library/dom` (every query, `screen`, `within`, `waitFor`, `fireEvent`, `prettyDOM`, `configure`), with commit timing wired to octane's scheduler via the dom-library's `eventWrapper`/`asyncWrapper` config.",
|
|
707
995
|
"divergences": [
|
|
708
996
|
"`fireEvent` dispatches real native events — no React remappings (`fireEvent.change` fires an explicit native `change`, not text typing or checkbox click activation) and no enter/leave/focus double-dispatch.",
|
|
709
997
|
"Not ported: the `ReactStrictMode` wrapper, `legacyRoot`, and the `onCaughtError`/`onRecoverableError` options."
|
|
710
998
|
],
|
|
711
999
|
"ssr": "`hydrate: true` adopts octane SSR output via `hydrateRoot`.",
|
|
712
|
-
"verified": "2026-
|
|
1000
|
+
"verified": "2026-08-02"
|
|
1001
|
+
},
|
|
1002
|
+
{
|
|
1003
|
+
"name": "@octanejs/textarea-autosize",
|
|
1004
|
+
"version": "0.0.2",
|
|
1005
|
+
"category": "UI and interaction",
|
|
1006
|
+
"upstream": { "package": "react-textarea-autosize", "version": "8.5.9" },
|
|
1007
|
+
"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
|
+
"divergences": [
|
|
1009
|
+
"onChange and onChangeCapture receive the native InputEvent rather than a React SyntheticEvent; target and currentTarget are the textarea during dispatch.",
|
|
1010
|
+
"Programmatic value assignment does not synthesize a public change callback; dispatch a native input event when that behavior is required."
|
|
1011
|
+
],
|
|
1012
|
+
"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
|
+
"verified": "2026-08-03"
|
|
713
1014
|
},
|
|
714
1015
|
{
|
|
715
1016
|
"name": "@octanejs/three",
|
|
716
|
-
"version": "0.1.
|
|
1017
|
+
"version": "0.1.29",
|
|
717
1018
|
"category": "Web 3D",
|
|
718
1019
|
"upstream": { "package": "@react-three/fiber", "version": "9.6.1 (2a528745)" },
|
|
719
1020
|
"surface": "Technical-preview Milestones 0–10 surface: renderer configuration and the DOM Canvas boundary, compiler ABI and renderer-local Three intrinsic types, catalogue and both extend forms, primitive/args construction, Three prop application, attachment, ordered placement/recreation, retained visibility, lifecycle/ref delivery, ownership-aware disposal, promise-returning HTMLCanvasElement and OffscreenCanvas roots, Octane act/flushSync scheduling, callback-aware unmountComponentAtNode, callable root state, scene/camera/raycaster and resize/DPR/viewport configuration, shadows/colors, one shared frame loop, controlled WebXR loop handoff, context-restore invalidation, compatible/reconstructing HMR, global effects, useStore/useThree/useFrame/useGraph and managed-instance helpers, the ray/pointer event system with DOM sources and custom managers, a keyed useLoader cache with preload/clear and GLTF graph augmentation, retained Suspense/Activity behavior, client Three-to-DOM pending/error projection, same-renderer createPortal targets with state/event enclaves and physical Three event bubbling, client-only Canvas shell streaming and production Vite/Rsbuild hydration adoption with the matching raw Rspack graph split, the explicit-target low-level DOMRegion boundary, a deterministic testing harness, an asynchronously acknowledged structured-clone transport proof, a checked public API/subpath matrix, Three r156/current compatibility lanes, a packed external consumer, real WebGL failure/recovery coverage, and semantic-checksummed renderer and shipped-size benchmarks.",
|
|
720
1021
|
"divergences": [
|
|
721
|
-
"Octane owns
|
|
722
|
-
"
|
|
723
|
-
"
|
|
724
|
-
"buildGraph
|
|
725
|
-
"
|
|
726
|
-
"
|
|
727
|
-
"Hidden retained Activity subtrees are excluded from recursive raycasts
|
|
728
|
-
"
|
|
729
|
-
"Root teardown and
|
|
730
|
-
"DOMRegion is an Octane-specific explicit-target Three-to-DOM primitive
|
|
1022
|
+
"`octane-renderer-ownership`: Octane owns execution, hooks, scheduling, Suspense, refs, and effects instead of React Reconciler.",
|
|
1023
|
+
"`component-props-root-api`: Programmatic roots render an Octane component plus props rather than a React element descriptor.",
|
|
1024
|
+
"`order-based-callable-selector`: Dynamic callable store selectors remain order-based outside compiler-visible hook calls.",
|
|
1025
|
+
"`build-graph-named-only`: buildGraph publishes named mesh and material entries only.",
|
|
1026
|
+
"`pierced-prop-reset-target`: Removed pierced props reset the original nested target rather than a root leaf key.",
|
|
1027
|
+
"`reconstructed-intersection-rewrite`: Reconstruction rewrites nested captured and hovered intersections to the replacement.",
|
|
1028
|
+
"`hidden-activity-raycast`: Hidden retained Activity subtrees are excluded from recursive raycasts.",
|
|
1029
|
+
"`root-scoped-portal-targets`: Portal target handles are root-scoped and cross-root placement is rejected before mutation.",
|
|
1030
|
+
"`synchronous-root-teardown`: Root teardown and callback delivery are synchronous instead of delayed by 500ms.",
|
|
1031
|
+
"`octane-dom-region`: DOMRegion is an Octane-specific explicit-target Three-to-DOM primitive."
|
|
731
1032
|
],
|
|
732
1033
|
"ssr": "Three scene modules are client-only and Canvas.children is omitted from the server graph. Canvas streams its DOM shell and native fallback, then production Vite and Rsbuild hydration adopt those nodes and create one Three root on the client; raw Rspack proves the equivalent client/server graph split without claiming an application SSR lifecycle. DOMRegion and its reverse-DOM content remain inside the omitted client-only Three scene.",
|
|
733
1034
|
"verified": "2026-07-17"
|
|
734
1035
|
},
|
|
735
1036
|
{
|
|
736
1037
|
"name": "@octanejs/tiptap",
|
|
737
|
-
"version": "0.0.
|
|
1038
|
+
"version": "0.0.30",
|
|
738
1039
|
"category": "Forms and content",
|
|
739
1040
|
"upstream": { "package": "@tiptap/react", "version": "3.28.0" },
|
|
740
1041
|
"surface": "Complete @tiptap/react 3.28.0 adapter surface across the root and ./menus entries: @tiptap/core re-exports, editor hooks and contexts, the EditorContent portal bridge, compound Tiptap API, ReactRenderer, custom NodeView/MarkView renderers and helpers, BubbleMenu, and FloatingMenu.",
|
|
@@ -747,11 +1048,29 @@
|
|
|
747
1048
|
"ReactMarkView tears down its portal when ProseMirror destroys the mark view, closing a renderer leak present in @tiptap/react 3.28.0."
|
|
748
1049
|
],
|
|
749
1050
|
"ssr": "Covered across the complete surface: hooks use null server snapshots and suppress editor construction without a DOM, static NodeView/MarkView helpers render without a DOM renderer, detached menu targets are client-only, and hydration adopts deferred server shells before mounting live custom views and menus.",
|
|
750
|
-
"verified": "2026-
|
|
1051
|
+
"verified": "2026-08-02"
|
|
1052
|
+
},
|
|
1053
|
+
{
|
|
1054
|
+
"name": "@octanejs/transition-group",
|
|
1055
|
+
"version": "0.0.2",
|
|
1056
|
+
"category": "UI and interaction",
|
|
1057
|
+
"upstream": {
|
|
1058
|
+
"package": "react-transition-group",
|
|
1059
|
+
"version": "4.4.5",
|
|
1060
|
+
"commit": "4cb51a9be0ebf508cb8f6506452097f7ebb874fe"
|
|
1061
|
+
},
|
|
1062
|
+
"surface": "Transition, CSSTransition, TransitionGroup, SwitchTransition, ReplaceTransition, config, and their documented subpath exports.",
|
|
1063
|
+
"divergences": [
|
|
1064
|
+
"Octane does not implement ReactDOM.findDOMNode; DOM-aware callbacks and CSSTransition require nodeRef.",
|
|
1065
|
+
"TransitionGroup collections must be supplied as inspectable descriptor values, normally with children={items.map(...)}; compiler-generated opaque children blocks cannot be enumerated.",
|
|
1066
|
+
"The complete pinned upstream suite runs unchanged as the pristine Jest oracle; adapted Octane lanes cover the public export surface, DOM transition behavior, switch and replacement sequencing, keyed groups, nodeRef semantics, mount-on-enter sequencing, and server rendering, and are not yet a one-for-one port of every upstream case."
|
|
1067
|
+
],
|
|
1068
|
+
"ssr": "Transition state and wrapper markup render on the server; DOM class mutation begins only after client mount and requires nodeRef.",
|
|
1069
|
+
"verified": "2026-08-09"
|
|
751
1070
|
},
|
|
752
1071
|
{
|
|
753
1072
|
"name": "@octanejs/usehooks-ts",
|
|
754
|
-
"version": "0.0.
|
|
1073
|
+
"version": "0.0.17",
|
|
755
1074
|
"category": "UI and interaction",
|
|
756
1075
|
"upstream": {
|
|
757
1076
|
"package": "usehooks-ts",
|
|
@@ -765,11 +1084,11 @@
|
|
|
765
1084
|
"Public setter types are structurally equivalent to React Dispatch/SetStateAction without importing React types."
|
|
766
1085
|
],
|
|
767
1086
|
"ssr": "Supported for the listed cohort. Effects and timers do not run during server rendering; hydration activates lifecycle and timing work without requiring browser reads during render.",
|
|
768
|
-
"verified": "2026-
|
|
1087
|
+
"verified": "2026-08-02"
|
|
769
1088
|
},
|
|
770
1089
|
{
|
|
771
1090
|
"name": "@octanejs/valtio",
|
|
772
|
-
"version": "0.1.
|
|
1091
|
+
"version": "0.1.19",
|
|
773
1092
|
"category": "Shared state",
|
|
774
1093
|
"upstream": { "package": "valtio", "version": "2.3.2" },
|
|
775
1094
|
"surface": "The framework-agnostic `valtio/vanilla` core and `valtio/vanilla/utils` are re-exported verbatim; `useSnapshot` and the `useProxy` utility are ported to Octane.",
|
|
@@ -777,11 +1096,27 @@
|
|
|
777
1096
|
"React DevTools affected-path debug labels are omitted because Octane's `useDebugValue` is currently a no-op."
|
|
778
1097
|
],
|
|
779
1098
|
"ssr": "The server snapshot path uses `snapshot(proxyObject)`; no dedicated SSR rendering test is included yet.",
|
|
780
|
-
"verified": "2026-
|
|
1099
|
+
"verified": "2026-08-02"
|
|
1100
|
+
},
|
|
1101
|
+
{
|
|
1102
|
+
"name": "@octanejs/vaul",
|
|
1103
|
+
"version": "0.0.2",
|
|
1104
|
+
"category": "UI and interaction",
|
|
1105
|
+
"upstream": {
|
|
1106
|
+
"package": "vaul",
|
|
1107
|
+
"version": "1.1.2",
|
|
1108
|
+
"commit": "73d06cdd3fd990bf4b83214cfe240c246908af0d"
|
|
1109
|
+
},
|
|
1110
|
+
"surface": "Drawer, Root, NestedRoot, Portal, Overlay, Content, Handle, public props, and style.css.",
|
|
1111
|
+
"divergences": [
|
|
1112
|
+
"React DOM prop types are preserved publicly and normalized at Octane render boundaries."
|
|
1113
|
+
],
|
|
1114
|
+
"ssr": "Closed drawer roots and triggers render without browser globals; portaled content remains absent while closed.",
|
|
1115
|
+
"verified": "2026-08-02"
|
|
781
1116
|
},
|
|
782
1117
|
{
|
|
783
1118
|
"name": "@octanejs/visx",
|
|
784
|
-
"version": "0.1.
|
|
1119
|
+
"version": "0.1.30",
|
|
785
1120
|
"category": "Data-heavy screens",
|
|
786
1121
|
"upstream": { "package": "@visx/visx", "version": "4.0.0 + master@485c035" },
|
|
787
1122
|
"surface": "Complete current Visx 4.x web runtime surface: the exact 35-namespace aggregate, all 40 feature entry points, and the eight public a11y/react, a11y/server, axis/react, scale/react, shape/react, theme/react, tooltip/floating, and voronoi/react subpaths. Released-only packages chord, delaunay, react-spring, sankey, and stats remain directly importable exactly as upstream specifies.",
|
|
@@ -793,11 +1128,11 @@
|
|
|
793
1128
|
"Props upstream types as React.ReactNode are octane renderables (octane's OctaneNode = unknown): octane elements are nominal, so ReactNode-typed props would reject them. Render-prop signatures keep their parameters and return octane renderables."
|
|
794
1129
|
],
|
|
795
1130
|
"ssr": "Fixed-dimension primitives, wrapped XYChart series, annotations, text, and wordclouds emit complete deterministic SVG on the server. Real hydrateRoot adoption preserves the same SVG/definition/axis/text/series/annotation/wordcloud nodes without warnings, replacement, or post-effect markup changes; generated IDs, measurement fallbacks, portals, and responsive initial sizes are covered.",
|
|
796
|
-
"verified": "2026-
|
|
1131
|
+
"verified": "2026-08-02"
|
|
797
1132
|
},
|
|
798
1133
|
{
|
|
799
1134
|
"name": "@octanejs/wagmi",
|
|
800
|
-
"version": "0.0.
|
|
1135
|
+
"version": "0.0.16",
|
|
801
1136
|
"category": "Web3",
|
|
802
1137
|
"upstream": { "package": "wagmi", "version": "3.7.4" },
|
|
803
1138
|
"surface": "WagmiProvider and createConfig over @wagmi/core 3.6.4, with config, connection, connect, disconnect, switch-connection, switch-chain, connectors, connections, chains, balance, contract read/simulate/write, transaction send/wait, and message-signing hooks.",
|
|
@@ -809,11 +1144,39 @@
|
|
|
809
1144
|
"EIP-1193 event validation, duplicate coalescing, and connector-generation invalidation are delegated unchanged to @wagmi/core 3.6.4. This binding does not add a second provider-event layer or claim independent normalization behavior."
|
|
810
1145
|
],
|
|
811
1146
|
"ssr": "WagmiProvider supports ssr:true and initialState through @wagmi/core hydrate. parseHydratedState accepts only a versioned, 16 KiB-bounded public-state hint and rejects malformed or privileged material; a hydrated connection is never authority for signing or submission.",
|
|
812
|
-
"verified": "2026-
|
|
1147
|
+
"verified": "2026-08-02"
|
|
1148
|
+
},
|
|
1149
|
+
{
|
|
1150
|
+
"name": "@octanejs/window",
|
|
1151
|
+
"version": "0.0.2",
|
|
1152
|
+
"category": "Data-heavy screens",
|
|
1153
|
+
"upstream": { "package": "react-window", "version": "2.3.0" },
|
|
1154
|
+
"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
|
+
"divergences": [
|
|
1156
|
+
"Octane reserves the second raw function-component invocation argument for its internal block ABI; public props and rendered behavior match, so instrumentation should not assert React's undocumented undefined second argument.",
|
|
1157
|
+
"Keyed state and DOM identity are preserved, but sibling effect-log order and equal-prop rerender counts may differ after reordering because Octane schedules moved blocks and memoizes unchanged children differently."
|
|
1158
|
+
],
|
|
1159
|
+
"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
|
+
"verified": "2026-08-03"
|
|
1161
|
+
},
|
|
1162
|
+
{
|
|
1163
|
+
"name": "@octanejs/zag",
|
|
1164
|
+
"version": "0.0.2",
|
|
1165
|
+
"category": "UI and interaction",
|
|
1166
|
+
"upstream": { "package": "@zag-js/react", "version": "1.42.0" },
|
|
1167
|
+
"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
|
+
"divergences": [
|
|
1169
|
+
"normalizeProps rewrites React-style text-entry onChange to native onInput for input (non-checkbox/radio) and textarea hosts; select and checkbox/radio keep native onChange. Upstream normalizeProps is an identity transform and has no suite coverage for this export.",
|
|
1170
|
+
"Portal container refs use Octane's structural `{ current: HTMLElement | null }` ref shape rather than React.RefObject; runtime behavior is unchanged.",
|
|
1171
|
+
"Compiled Octane children are portalled as one lazy children block so their component scope is preserved; ordinary value children retain upstream's per-child portal behavior.",
|
|
1172
|
+
"React StrictMode double-invoke suite cases stay pristine-only; Octane does not double-invoke effects, so those identities are not adapted one-for-one."
|
|
1173
|
+
],
|
|
1174
|
+
"ssr": "Supported and tested: useMachine exposes its initial state and bindable context during server rendering, effects remain deferred, and Portal renders children in place without browser globals.",
|
|
1175
|
+
"verified": "2026-08-09"
|
|
813
1176
|
},
|
|
814
1177
|
{
|
|
815
1178
|
"name": "@octanejs/zustand",
|
|
816
|
-
"version": "0.1.
|
|
1179
|
+
"version": "0.1.35",
|
|
817
1180
|
"category": "Shared state",
|
|
818
1181
|
"upstream": { "package": "zustand", "version": "5.0.14" },
|
|
819
1182
|
"surface": "Complete 1:1 port: the framework-agnostic vanilla store is reused verbatim; `create`/`useStore`, `shallow`/`useShallow`, the traditional equality-fn variants, and all middleware (persist, devtools, subscribeWithSelector, combine, redux).",
|
|
@@ -821,7 +1184,7 @@
|
|
|
821
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`."
|
|
822
1185
|
],
|
|
823
1186
|
"ssr": "No SSR-specific surface; no dedicated SSR tests.",
|
|
824
|
-
"verified": "2026-
|
|
1187
|
+
"verified": "2026-08-02"
|
|
825
1188
|
}
|
|
826
1189
|
],
|
|
827
1190
|
"reactPackages": {
|
|
@@ -829,16 +1192,23 @@
|
|
|
829
1192
|
"@base-ui-components/react": "@octanejs/base-ui",
|
|
830
1193
|
"@dnd-kit/react": "@octanejs/dnd-kit",
|
|
831
1194
|
"@floating-ui/react": "@octanejs/floating-ui",
|
|
1195
|
+
"@gsap/react": "@octanejs/gsap",
|
|
1196
|
+
"@inertiajs/react": "@octanejs/inertia",
|
|
832
1197
|
"@lexical/react": "@octanejs/lexical",
|
|
833
1198
|
"@livestore/react": "@octanejs/livestore",
|
|
834
1199
|
"@mantine/hooks": "@octanejs/mantine-hooks",
|
|
835
1200
|
"@mdx-js/react": "@octanejs/mdx",
|
|
1201
|
+
"@monaco-editor/react": "@octanejs/monaco-editor",
|
|
836
1202
|
"@phosphor-icons/react": "@octanejs/phosphor-icons",
|
|
837
1203
|
"@rainbow-me/rainbowkit": "@octanejs/rainbowkit",
|
|
838
1204
|
"@react-rxjs/core": "@octanejs/rxjs",
|
|
839
1205
|
"@react-rxjs/utils": "@octanejs/rxjs",
|
|
1206
|
+
"@react-spring/parallax": "@octanejs/spring",
|
|
1207
|
+
"@react-spring/web": "@octanejs/spring",
|
|
1208
|
+
"@react-three/drei": "@octanejs/drei",
|
|
840
1209
|
"@react-three/fiber": "@octanejs/three",
|
|
841
1210
|
"@reduxjs/toolkit": "@octanejs/redux-toolkit",
|
|
1211
|
+
"@solana/react": "@octanejs/solana-react",
|
|
842
1212
|
"@streamdown/cjk": "@octanejs/streamdown",
|
|
843
1213
|
"@streamdown/code": "@octanejs/streamdown",
|
|
844
1214
|
"@streamdown/math": "@octanejs/streamdown",
|
|
@@ -907,10 +1277,13 @@
|
|
|
907
1277
|
"@visx/wordcloud": "@octanejs/visx",
|
|
908
1278
|
"@visx/xychart": "@octanejs/visx",
|
|
909
1279
|
"@visx/zoom": "@octanejs/visx",
|
|
1280
|
+
"@zag-js/react": "@octanejs/zag",
|
|
910
1281
|
"animejs": "@octanejs/animejs",
|
|
911
1282
|
"cmdk": "@octanejs/cmdk",
|
|
912
1283
|
"dexie-react-hooks": "@octanejs/dexie",
|
|
1284
|
+
"embla-carousel-react": "@octanejs/embla-carousel",
|
|
913
1285
|
"framer-motion": "@octanejs/motion",
|
|
1286
|
+
"input-otp": "@octanejs/input-otp",
|
|
914
1287
|
"jotai": "@octanejs/jotai",
|
|
915
1288
|
"lucide-react": "@octanejs/lucide",
|
|
916
1289
|
"mobx-react": "@octanejs/mobx",
|
|
@@ -918,24 +1291,39 @@
|
|
|
918
1291
|
"motion": "@octanejs/motion",
|
|
919
1292
|
"nuqs": "@octanejs/nuqs",
|
|
920
1293
|
"radix-ui": "@octanejs/radix",
|
|
1294
|
+
"react-alien-signals": "@octanejs/alien-signals",
|
|
921
1295
|
"react-aria": "@octanejs/aria",
|
|
922
1296
|
"react-aria-components": "@octanejs/aria",
|
|
1297
|
+
"react-colorful": "@octanejs/colorful",
|
|
1298
|
+
"react-day-picker": "@octanejs/day-picker",
|
|
1299
|
+
"react-draggable": "@octanejs/draggable",
|
|
1300
|
+
"react-dropzone": "@octanejs/dropzone",
|
|
923
1301
|
"react-error-boundary": "@octanejs/react-error-boundary",
|
|
924
1302
|
"react-hook-form": "@octanejs/hook-form",
|
|
925
1303
|
"react-i18next": "@octanejs/i18next",
|
|
1304
|
+
"react-intersection-observer": "@octanejs/intersection-observer",
|
|
926
1305
|
"react-map-gl": "@octanejs/react-map-gl",
|
|
927
1306
|
"react-map-gl/mapbox": "@octanejs/react-map-gl",
|
|
1307
|
+
"react-markdown": "@octanejs/markdown",
|
|
1308
|
+
"react-pdf": "@octanejs/pdf",
|
|
1309
|
+
"react-popper": "@octanejs/popper",
|
|
928
1310
|
"react-redux": "@octanejs/redux",
|
|
929
1311
|
"react-router": "@octanejs/remix-router",
|
|
930
1312
|
"react-router-dom": "@octanejs/remix-router",
|
|
931
1313
|
"react-stately": "@octanejs/aria",
|
|
1314
|
+
"react-syntax-highlighter": "@octanejs/syntax-highlighter",
|
|
1315
|
+
"react-textarea-autosize": "@octanejs/textarea-autosize",
|
|
1316
|
+
"react-transition-group": "@octanejs/transition-group",
|
|
1317
|
+
"react-window": "@octanejs/window",
|
|
932
1318
|
"recharts": "@octanejs/recharts",
|
|
933
1319
|
"shadcn": "@octanejs/shadcn",
|
|
934
1320
|
"sonner": "@octanejs/sonner",
|
|
935
1321
|
"streamdown": "@octanejs/streamdown",
|
|
936
1322
|
"styled-components": "@octanejs/styled-components",
|
|
1323
|
+
"swr": "@octanejs/swr",
|
|
937
1324
|
"usehooks-ts": "@octanejs/usehooks-ts",
|
|
938
1325
|
"valtio": "@octanejs/valtio",
|
|
1326
|
+
"vaul": "@octanejs/vaul",
|
|
939
1327
|
"wagmi": "@octanejs/wagmi",
|
|
940
1328
|
"zustand": "@octanejs/zustand"
|
|
941
1329
|
},
|
|
@@ -1171,6 +1559,51 @@
|
|
|
1171
1559
|
"message": "octane SSR: %s consecutive streaming passes completed no boundary — a use(thenable) never resolved. If promises are re-created on every render pass (e.g. created in an ancestor render and passed down through props), create them at their use() site or hoist them out of render.",
|
|
1172
1560
|
"runtime": ["server"],
|
|
1173
1561
|
"status": "active"
|
|
1562
|
+
},
|
|
1563
|
+
"49": {
|
|
1564
|
+
"message": "FragmentInstance.scrollIntoView() does not support scrollIntoViewOptions. Use the alignToTop boolean instead.",
|
|
1565
|
+
"runtime": ["client"],
|
|
1566
|
+
"status": "active"
|
|
1567
|
+
},
|
|
1568
|
+
"50": {
|
|
1569
|
+
"message": "Unclosed server-rendered Fragment descriptor.",
|
|
1570
|
+
"runtime": ["client"],
|
|
1571
|
+
"status": "active"
|
|
1572
|
+
},
|
|
1573
|
+
"51": {
|
|
1574
|
+
"message": "Hydration mismatch: the server-rendered node did not match the client render; the mismatched subtree was rebuilt on the client.",
|
|
1575
|
+
"runtime": ["client"],
|
|
1576
|
+
"status": "active"
|
|
1577
|
+
},
|
|
1578
|
+
"52": {
|
|
1579
|
+
"message": "Hydration mismatch: root adoption was abandoned after a server/client shape divergence; the root was rebuilt on the client.",
|
|
1580
|
+
"runtime": ["client"],
|
|
1581
|
+
"status": "active"
|
|
1582
|
+
},
|
|
1583
|
+
"53": {
|
|
1584
|
+
"message": "Hydration mismatch: the server rendered more root content than the client; the stale remainder was discarded.",
|
|
1585
|
+
"runtime": ["client"],
|
|
1586
|
+
"status": "active"
|
|
1587
|
+
},
|
|
1588
|
+
"54": {
|
|
1589
|
+
"message": "Hydration mismatch: the client rendered text where the server rendered none; the client text was built fresh.",
|
|
1590
|
+
"runtime": ["client"],
|
|
1591
|
+
"status": "active"
|
|
1592
|
+
},
|
|
1593
|
+
"55": {
|
|
1594
|
+
"message": "Hydration mismatch: the server rendered a different child shape where the client renders a component; the stale range was discarded and the component was built on the client.",
|
|
1595
|
+
"runtime": ["client"],
|
|
1596
|
+
"status": "active"
|
|
1597
|
+
},
|
|
1598
|
+
"56": {
|
|
1599
|
+
"message": "Hydration mismatch: the server rendered more list items than the client; the extra server items were discarded.",
|
|
1600
|
+
"runtime": ["client"],
|
|
1601
|
+
"status": "active"
|
|
1602
|
+
},
|
|
1603
|
+
"57": {
|
|
1604
|
+
"message": "prerenderToNodeStream requires a Node.js runtime with process.getBuiltinModule; use prerender() in non-Node environments.",
|
|
1605
|
+
"runtime": ["server"],
|
|
1606
|
+
"status": "active"
|
|
1174
1607
|
}
|
|
1175
1608
|
}
|
|
1176
1609
|
}
|