@octanejs/cli 0.0.6 → 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/commands/init/templates.js +2 -2
- package/src/data/octane-data.json +628 -141
|
@@ -1,8 +1,45 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bindings": [
|
|
3
|
+
{
|
|
4
|
+
"name": "@octanejs/alien-signals",
|
|
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",
|
|
24
|
+
"category": "UI and interaction",
|
|
25
|
+
"upstream": {
|
|
26
|
+
"package": "animejs",
|
|
27
|
+
"version": "4.5.0",
|
|
28
|
+
"source": "https://github.com/juliangarnier/anime/tree/v4.5.0",
|
|
29
|
+
"license": "MIT"
|
|
30
|
+
},
|
|
31
|
+
"surface": "Anime.js is re-exported unchanged; `useAnimeScope` binds scoped DOM animation setup, refresh, dependency recreation, and cleanup to Octane, and `@octanejs/animejs/adapters/three` exposes Anime.js's official Three adapter.",
|
|
32
|
+
"divergences": [
|
|
33
|
+
"`useAnimeScope` is an Octane-native lifecycle helper; it is not an upstream Anime.js API.",
|
|
34
|
+
"Only the root and `adapters/three` entry points are re-exported; other Anime.js subpaths are explicit gaps whose APIs remain available from the supported root where upstream exposes them there.",
|
|
35
|
+
"The Three adapter mutates raw objects while `@octanejs/three` retains frame-loop ownership; demand and never loops require explicit invalidation or advancement."
|
|
36
|
+
],
|
|
37
|
+
"ssr": "Supported. The hook returns inert refs during server rendering and creates no Anime.js scope until its client effect runs.",
|
|
38
|
+
"verified": "2026-07-30"
|
|
39
|
+
},
|
|
3
40
|
{
|
|
4
41
|
"name": "@octanejs/apollo-client",
|
|
5
|
-
"version": "0.1.
|
|
42
|
+
"version": "0.1.31",
|
|
6
43
|
"category": "AI, data, and routing",
|
|
7
44
|
"upstream": { "package": "@apollo/client", "version": "4.2.6" },
|
|
8
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.",
|
|
@@ -12,49 +49,48 @@
|
|
|
12
49
|
"React Server Components and Apollo's React Compiler-generated entry are intentionally not exposed."
|
|
13
50
|
],
|
|
14
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.",
|
|
15
|
-
"verified": "2026-
|
|
52
|
+
"verified": "2026-08-02"
|
|
16
53
|
},
|
|
17
54
|
{
|
|
18
55
|
"name": "@octanejs/aria",
|
|
19
|
-
"version": "0.0.
|
|
56
|
+
"version": "0.0.30",
|
|
20
57
|
"category": "UI and interaction",
|
|
21
58
|
"upstream": { "package": "react-aria", "version": "3.50.0" },
|
|
22
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.",
|
|
23
60
|
"divergences": [
|
|
24
|
-
"Text-input DOM wiring uses
|
|
25
|
-
"`forwardRef`
|
|
26
|
-
"i18n server serializer
|
|
27
|
-
"
|
|
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`."
|
|
28
65
|
],
|
|
29
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.",
|
|
30
|
-
"verified": "2026-
|
|
67
|
+
"verified": "2026-08-02"
|
|
31
68
|
},
|
|
32
69
|
{
|
|
33
70
|
"name": "@octanejs/base-ui",
|
|
34
|
-
"version": "0.1.
|
|
71
|
+
"version": "0.1.34",
|
|
35
72
|
"category": "UI and interaction",
|
|
36
73
|
"upstream": { "package": "@base-ui/react", "version": "1.6.0" },
|
|
37
|
-
"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.",
|
|
38
75
|
"divergences": [
|
|
39
|
-
"
|
|
40
|
-
"`
|
|
41
|
-
"The
|
|
42
|
-
"
|
|
43
|
-
"`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."
|
|
44
80
|
],
|
|
45
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.",
|
|
46
82
|
"verified": "2026-08-01"
|
|
47
83
|
},
|
|
48
84
|
{
|
|
49
85
|
"name": "@octanejs/cmdk",
|
|
50
|
-
"version": "0.1.
|
|
86
|
+
"version": "0.1.19",
|
|
51
87
|
"category": "UI and interaction",
|
|
52
88
|
"upstream": { "package": "cmdk", "version": "1.1.1" },
|
|
53
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).",
|
|
54
90
|
"divergences": [
|
|
55
91
|
"No forwardRef: components take `ref` as a normal prop; multi-ref uses octane's `ref={[a, b]}` instead of composeRefs.",
|
|
56
92
|
"`Command.Input` drives search from the native `onInput` event; the public `onValueChange(search)` API is unchanged (no synthetic `onChange`).",
|
|
57
|
-
"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.",
|
|
58
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.",
|
|
59
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.",
|
|
60
96
|
"Ids are `radix-` prefixed to match upstream, which takes them from `@radix-ui/react-id`.",
|
|
@@ -62,23 +98,51 @@
|
|
|
62
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.",
|
|
63
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.",
|
|
64
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.",
|
|
65
|
-
"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.",
|
|
66
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.",
|
|
67
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.",
|
|
68
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.",
|
|
69
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.",
|
|
70
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.",
|
|
71
|
-
"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.",
|
|
72
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.",
|
|
73
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.",
|
|
74
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."
|
|
75
111
|
],
|
|
76
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.",
|
|
77
|
-
"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"
|
|
78
142
|
},
|
|
79
143
|
{
|
|
80
144
|
"name": "@octanejs/devtools",
|
|
81
|
-
"version": "0.0.
|
|
145
|
+
"version": "0.0.24",
|
|
82
146
|
"category": "Styling, tests, and devtools",
|
|
83
147
|
"upstream": { "package": "octane", "version": "workspace" },
|
|
84
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.",
|
|
@@ -88,7 +152,7 @@
|
|
|
88
152
|
},
|
|
89
153
|
{
|
|
90
154
|
"name": "@octanejs/dexie",
|
|
91
|
-
"version": "0.1.
|
|
155
|
+
"version": "0.1.29",
|
|
92
156
|
"category": "AI, data, and routing",
|
|
93
157
|
"upstream": { "package": "dexie-react-hooks", "version": "4.4.0" },
|
|
94
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.",
|
|
@@ -98,11 +162,11 @@
|
|
|
98
162
|
"useDocument requires consumers to install and import y-dexie and yjs before using the hook; those integrations remain optional."
|
|
99
163
|
],
|
|
100
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.",
|
|
101
|
-
"verified": "2026-
|
|
165
|
+
"verified": "2026-08-02"
|
|
102
166
|
},
|
|
103
167
|
{
|
|
104
168
|
"name": "@octanejs/dnd-kit",
|
|
105
|
-
"version": "0.1.
|
|
169
|
+
"version": "0.1.31",
|
|
106
170
|
"category": "UI and interaction",
|
|
107
171
|
"upstream": { "package": "@dnd-kit/react", "version": "0.5.0" },
|
|
108
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.",
|
|
@@ -111,11 +175,49 @@
|
|
|
111
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."
|
|
112
176
|
],
|
|
113
177
|
"ssr": "Static SSR and hydration are covered; DOM plugins initialize only after client refs register.",
|
|
114
|
-
"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"
|
|
115
217
|
},
|
|
116
218
|
{
|
|
117
219
|
"name": "@octanejs/electron",
|
|
118
|
-
"version": "0.0.
|
|
220
|
+
"version": "0.0.14",
|
|
119
221
|
"category": "Desktop",
|
|
120
222
|
"upstream": { "package": "electron", "version": "43.2.0" },
|
|
121
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.",
|
|
@@ -131,9 +233,23 @@
|
|
|
131
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.",
|
|
132
234
|
"verified": "2026-08-02"
|
|
133
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
|
+
},
|
|
134
250
|
{
|
|
135
251
|
"name": "@octanejs/floating-ui",
|
|
136
|
-
"version": "0.1.
|
|
252
|
+
"version": "0.1.35",
|
|
137
253
|
"category": "UI and interaction",
|
|
138
254
|
"upstream": { "package": "@floating-ui/react", "version": "0.27.19" },
|
|
139
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`.",
|
|
@@ -141,9 +257,28 @@
|
|
|
141
257
|
"ssr": "No dedicated SSR/hydration tests.",
|
|
142
258
|
"verified": "2026-07-05"
|
|
143
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
|
+
},
|
|
144
279
|
{
|
|
145
280
|
"name": "@octanejs/hook-form",
|
|
146
|
-
"version": "0.1.
|
|
281
|
+
"version": "0.1.33",
|
|
147
282
|
"category": "Forms and content",
|
|
148
283
|
"upstream": { "package": "react-hook-form", "version": "7.81.0" },
|
|
149
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.",
|
|
@@ -156,7 +291,7 @@
|
|
|
156
291
|
},
|
|
157
292
|
{
|
|
158
293
|
"name": "@octanejs/i18next",
|
|
159
|
-
"version": "0.1.
|
|
294
|
+
"version": "0.1.31",
|
|
160
295
|
"category": "Forms and content",
|
|
161
296
|
"upstream": { "package": "react-i18next", "version": "17.0.9" },
|
|
162
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.",
|
|
@@ -167,34 +302,95 @@
|
|
|
167
302
|
"The React/Babel-specific `icu.macro` subpath is not shipped; the runtime IcuTrans APIs are fully supported."
|
|
168
303
|
],
|
|
169
304
|
"ssr": "Preloaded renderToString output and namespace collection are covered; useSSR, withSSR, getInitialProps, and composeInitialProps are ported. A dedicated hydration differential is still open.",
|
|
170
|
-
"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"
|
|
171
353
|
},
|
|
172
354
|
{
|
|
173
355
|
"name": "@octanejs/jotai",
|
|
174
|
-
"version": "0.1.
|
|
356
|
+
"version": "0.1.33",
|
|
175
357
|
"category": "Shared state",
|
|
176
358
|
"upstream": { "package": "jotai", "version": "2.20.2" },
|
|
177
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()`.",
|
|
178
|
-
"divergences": [
|
|
360
|
+
"divergences": [],
|
|
179
361
|
"ssr": "No SSR-specific surface; `useHydrateAtoms` is ported and usable for hydration seeding; no dedicated SSR tests.",
|
|
180
|
-
"verified": "2026-
|
|
362
|
+
"verified": "2026-08-02"
|
|
181
363
|
},
|
|
182
364
|
{
|
|
183
365
|
"name": "@octanejs/lexical",
|
|
184
|
-
"version": "0.1.
|
|
366
|
+
"version": "0.1.35",
|
|
185
367
|
"category": "Forms and content",
|
|
186
368
|
"upstream": { "package": "@lexical/react", "version": "0.46.0" },
|
|
187
|
-
"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.",
|
|
188
370
|
"divergences": [
|
|
189
371
|
"Positioning uses `@floating-ui/dom` instead of `@floating-ui/react`.",
|
|
190
|
-
"The class-based `LexicalErrorBoundary` becomes an
|
|
372
|
+
"The class-based `LexicalErrorBoundary` becomes an Octane error boundary; `forwardRef` becomes ref-as-prop."
|
|
191
373
|
],
|
|
192
374
|
"ssr": "No dedicated SSR/hydration tests.",
|
|
193
|
-
"verified": "2026-
|
|
375
|
+
"verified": "2026-08-02"
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"name": "@octanejs/livestore",
|
|
379
|
+
"version": "0.0.6",
|
|
380
|
+
"category": "AI, data, and routing",
|
|
381
|
+
"upstream": { "package": "@livestore/react", "version": "0.4.0" },
|
|
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.",
|
|
383
|
+
"divergences": [
|
|
384
|
+
"ReactApi and withReactApi retain their historical upstream names but attach Octane hooks.",
|
|
385
|
+
"The public query error label identifies octane; LiveStore framework-toolkit 0.4.0 still records its internal refresh-reason renderer tag as react.",
|
|
386
|
+
"React Strict Mode double invocation is not emulated."
|
|
387
|
+
],
|
|
388
|
+
"ssr": "Supported at the binding boundary: server rendering reads existing synchronous state without running passive subscriptions or browser-only store work; client Suspense and hydration are covered separately.",
|
|
389
|
+
"verified": "2026-08-02"
|
|
194
390
|
},
|
|
195
391
|
{
|
|
196
392
|
"name": "@octanejs/lucide",
|
|
197
|
-
"version": "0.1.
|
|
393
|
+
"version": "0.1.31",
|
|
198
394
|
"category": "UI and interaction",
|
|
199
395
|
"upstream": { "package": "lucide-react", "version": "1.24.0" },
|
|
200
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.",
|
|
@@ -203,11 +399,11 @@
|
|
|
203
399
|
"Event callbacks receive native DOM events rather than React synthetic events."
|
|
204
400
|
],
|
|
205
401
|
"ssr": "Supported and tested: icons and provider defaults render through `octane/server`, and client hydration adopts the server-rendered SVG element.",
|
|
206
|
-
"verified": "2026-
|
|
402
|
+
"verified": "2026-08-02"
|
|
207
403
|
},
|
|
208
404
|
{
|
|
209
405
|
"name": "@octanejs/mantine-hooks",
|
|
210
|
-
"version": "0.1.
|
|
406
|
+
"version": "0.1.17",
|
|
211
407
|
"category": "UI and interaction",
|
|
212
408
|
"upstream": { "package": "@mantine/hooks", "version": "9.5.0" },
|
|
213
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.",
|
|
@@ -217,11 +413,25 @@
|
|
|
217
413
|
"React is retained only as a source-compatibility type vocabulary for refs, events, actions, and CSS properties; it is not loaded at runtime."
|
|
218
414
|
],
|
|
219
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.",
|
|
220
|
-
"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"
|
|
221
431
|
},
|
|
222
432
|
{
|
|
223
433
|
"name": "@octanejs/mdx",
|
|
224
|
-
"version": "0.1.
|
|
434
|
+
"version": "0.1.33",
|
|
225
435
|
"category": "Forms and content",
|
|
226
436
|
"upstream": { "package": "@mdx-js/mdx", "version": "3.1.1" },
|
|
227
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.",
|
|
@@ -233,7 +443,7 @@
|
|
|
233
443
|
},
|
|
234
444
|
{
|
|
235
445
|
"name": "@octanejs/mobx",
|
|
236
|
-
"version": "0.1.
|
|
446
|
+
"version": "0.1.17",
|
|
237
447
|
"category": "Shared state",
|
|
238
448
|
"upstream": { "package": "mobx-react-lite", "version": "4.1.1", "core": "mobx@6.16.1" },
|
|
239
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.",
|
|
@@ -243,39 +453,73 @@
|
|
|
243
453
|
"React-specific batching, prop-types validation, React DevTools integration, and useDebugValue output are omitted."
|
|
244
454
|
],
|
|
245
455
|
"ssr": "enableStaticRendering(true) renders observed components without creating a Reaction or retaining observable subscriptions.",
|
|
246
|
-
"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"
|
|
247
477
|
},
|
|
248
478
|
{
|
|
249
479
|
"name": "@octanejs/motion",
|
|
250
|
-
"version": "0.1.
|
|
480
|
+
"version": "0.1.35",
|
|
251
481
|
"category": "UI and interaction",
|
|
252
482
|
"upstream": { "package": "motion", "version": "12.42.2" },
|
|
253
|
-
"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.",
|
|
254
484
|
"divergences": [
|
|
255
485
|
"Exit animations run via cleanup-before-detach instead of React's deferred-deletion machinery.",
|
|
256
|
-
"`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."
|
|
257
488
|
],
|
|
258
489
|
"ssr": "No SSR-specific surface; no dedicated SSR tests.",
|
|
259
|
-
"verified": "2026-
|
|
490
|
+
"verified": "2026-08-02"
|
|
260
491
|
},
|
|
261
492
|
{
|
|
262
493
|
"name": "@octanejs/nuqs",
|
|
263
|
-
"version": "0.1.
|
|
494
|
+
"version": "0.1.25",
|
|
264
495
|
"category": "AI, data, and routing",
|
|
265
496
|
"upstream": { "package": "nuqs", "version": "2.9.1" },
|
|
266
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`.",
|
|
267
498
|
"divergences": [
|
|
268
|
-
"
|
|
269
|
-
"
|
|
270
|
-
"
|
|
271
|
-
"
|
|
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."
|
|
272
503
|
],
|
|
273
|
-
"ssr": "The server entry
|
|
274
|
-
"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"
|
|
275
519
|
},
|
|
276
520
|
{
|
|
277
521
|
"name": "@octanejs/phosphor-icons",
|
|
278
|
-
"version": "0.0.
|
|
522
|
+
"version": "0.0.16",
|
|
279
523
|
"category": "UI and interaction",
|
|
280
524
|
"upstream": { "package": "@phosphor-icons/react", "version": "2.1.10" },
|
|
281
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.",
|
|
@@ -285,24 +529,37 @@
|
|
|
285
529
|
"The React package's SSR namespace is unnecessary because Octane icons use the same components on client and server."
|
|
286
530
|
],
|
|
287
531
|
"ssr": "Supported and tested against @phosphor-icons/react/ssr for every weight; hydration adopts and updates server-rendered SVG hosts.",
|
|
288
|
-
"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"
|
|
289
546
|
},
|
|
290
547
|
{
|
|
291
548
|
"name": "@octanejs/radix",
|
|
292
|
-
"version": "0.1.
|
|
549
|
+
"version": "0.1.35",
|
|
293
550
|
"category": "UI and interaction",
|
|
294
551
|
"upstream": { "package": "radix-ui", "version": "1.6.4" },
|
|
295
|
-
"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.",
|
|
296
553
|
"divergences": [
|
|
297
554
|
"`Slot`/`asChild` compose element descriptors (prop-position JSX, `createElement`, `.map()` returns), not children-position JSX.",
|
|
298
555
|
"`forwardRef` becomes octane's ref-as-prop."
|
|
299
556
|
],
|
|
300
557
|
"ssr": "SSR/hydration coverage for the overlay/portal components is still open (tracked in the migration plan).",
|
|
301
|
-
"verified": "2026-
|
|
558
|
+
"verified": "2026-08-03"
|
|
302
559
|
},
|
|
303
560
|
{
|
|
304
561
|
"name": "@octanejs/rainbowkit",
|
|
305
|
-
"version": "0.0.
|
|
562
|
+
"version": "0.0.16",
|
|
306
563
|
"category": "Web3",
|
|
307
564
|
"upstream": { "package": "@rainbow-me/rainbowkit", "version": "2.2.11" },
|
|
308
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.",
|
|
@@ -314,11 +571,11 @@
|
|
|
314
571
|
"rainbowTheme is an explicitly documented Octane-only purple/rounded preset; it is not an upstream RainbowKit export."
|
|
315
572
|
],
|
|
316
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.",
|
|
317
|
-
"verified": "2026-
|
|
574
|
+
"verified": "2026-08-02"
|
|
318
575
|
},
|
|
319
576
|
{
|
|
320
577
|
"name": "@octanejs/react-error-boundary",
|
|
321
|
-
"version": "0.1.
|
|
578
|
+
"version": "0.1.17",
|
|
322
579
|
"category": "UI and interaction",
|
|
323
580
|
"upstream": { "package": "react-error-boundary", "version": "6.1.2" },
|
|
324
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.",
|
|
@@ -328,11 +585,27 @@
|
|
|
328
585
|
"Server rendering that must match upstream error propagation uses the explicit @octanejs/react-error-boundary/server entry."
|
|
329
586
|
],
|
|
330
587
|
"ssr": "The explicit server entry renders children without a boundary so descendant errors propagate, matching react-error-boundary 6.1.2.",
|
|
331
|
-
"verified": "2026-
|
|
588
|
+
"verified": "2026-08-02"
|
|
589
|
+
},
|
|
590
|
+
{
|
|
591
|
+
"name": "@octanejs/react-map-gl",
|
|
592
|
+
"version": "0.0.8",
|
|
593
|
+
"category": "Data-heavy screens",
|
|
594
|
+
"upstream": { "package": "@vis.gl/react-mapbox", "version": "8.1.2 (b1e46fcf)" },
|
|
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.",
|
|
596
|
+
"divergences": [
|
|
597
|
+
"<Source> delivers its generated id to child layers through context rather than cloneElement, so the id reaches any descendant <Layer> rather than only direct children. It still overrides an explicitly set source, as cloneElement did.",
|
|
598
|
+
"Map, Marker, Popup and GeolocateControl take their ref as an ordinary prop; Octane has no forwardRef. `<Map ref={mapRef} />` is unchanged.",
|
|
599
|
+
"Effect cleanups run on the passive drain after root.unmount() rather than inside it, so the map's WebGL context and worker pool are released one drain later.",
|
|
600
|
+
"Marker picks between its own element and Mapbox's default pin from what its children actually rendered, because a compiled children block cannot be inspected the way React.Children.forEach inspects descriptors. Children that render something, render nothing, or first render after mount all match upstream; a child that stays truthy while rendering nothing forever gets the default pin here and an empty, invisible element upstream.",
|
|
601
|
+
"react-map-gl/mapbox-legacy (mapbox-gl v1) and @vis.gl/react-maplibre are out of scope."
|
|
602
|
+
],
|
|
603
|
+
"ssr": "Supported and tested: Map server-renders its container with the merged style and omits every child, because mapbox-gl is only imported inside an effect. Nothing in the tree reads a browser global on the server. hydrateRoot adopts that container rather than replacing it, and the map is created inside the server's own node once the library resolves.",
|
|
604
|
+
"verified": "2026-08-06"
|
|
332
605
|
},
|
|
333
606
|
{
|
|
334
607
|
"name": "@octanejs/recharts",
|
|
335
|
-
"version": "0.1.
|
|
608
|
+
"version": "0.1.33",
|
|
336
609
|
"category": "Data-heavy screens",
|
|
337
610
|
"upstream": { "package": "recharts", "version": "3.9.2" },
|
|
338
611
|
"surface": "Broad runtime support across cartesian, polar, hierarchical, tooltip, legend, responsive-container, shape, and chart-state surfaces. `Brush` and `Treemap` remain intentionally unsupported.",
|
|
@@ -340,24 +613,25 @@
|
|
|
340
613
|
"Chart events coordinate through octane's native delegated events rather than React's synthetic layer."
|
|
341
614
|
],
|
|
342
615
|
"ssr": "Untested; text measurement (`getStringSize`) returns 0×0 under SSR.",
|
|
343
|
-
"verified": "2026-
|
|
616
|
+
"verified": "2026-08-02"
|
|
344
617
|
},
|
|
345
618
|
{
|
|
346
619
|
"name": "@octanejs/redux",
|
|
347
|
-
"version": "0.1.
|
|
620
|
+
"version": "0.1.33",
|
|
348
621
|
"category": "Shared state",
|
|
349
622
|
"upstream": { "package": "react-redux", "version": "9.3.0" },
|
|
350
|
-
"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.",
|
|
351
624
|
"divergences": [
|
|
352
625
|
"`connect()` (the legacy HOC surface) intentionally throws — the hooks API is the supported surface.",
|
|
353
|
-
"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."
|
|
354
628
|
],
|
|
355
629
|
"ssr": "No SSR-specific surface; no dedicated SSR tests.",
|
|
356
|
-
"verified": "2026-
|
|
630
|
+
"verified": "2026-08-02"
|
|
357
631
|
},
|
|
358
632
|
{
|
|
359
633
|
"name": "@octanejs/redux-toolkit",
|
|
360
|
-
"version": "0.1.
|
|
634
|
+
"version": "0.1.31",
|
|
361
635
|
"category": "Shared state",
|
|
362
636
|
"upstream": { "package": "@reduxjs/toolkit", "version": "2.12.0" },
|
|
363
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.",
|
|
@@ -366,14 +640,14 @@
|
|
|
366
640
|
"`useDebugValue` is octane's no-op compatibility hook; observable query behavior is unchanged."
|
|
367
641
|
],
|
|
368
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.",
|
|
369
|
-
"verified": "2026-
|
|
643
|
+
"verified": "2026-08-02"
|
|
370
644
|
},
|
|
371
645
|
{
|
|
372
646
|
"name": "@octanejs/remix-router",
|
|
373
|
-
"version": "0.1.
|
|
647
|
+
"version": "0.1.32",
|
|
374
648
|
"category": "AI, data, and routing",
|
|
375
649
|
"upstream": { "package": "react-router", "version": "8.2.0" },
|
|
376
|
-
"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.",
|
|
377
651
|
"divergences": [
|
|
378
652
|
"Refs are props (octane has no forwardRef) — Link's forwardRef becomes a `ref` prop.",
|
|
379
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.",
|
|
@@ -382,11 +656,11 @@
|
|
|
382
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."
|
|
383
657
|
],
|
|
384
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.",
|
|
385
|
-
"verified": "2026-
|
|
659
|
+
"verified": "2026-08-02"
|
|
386
660
|
},
|
|
387
661
|
{
|
|
388
662
|
"name": "@octanejs/rxjs",
|
|
389
|
-
"version": "0.1.
|
|
663
|
+
"version": "0.1.15",
|
|
390
664
|
"category": "Shared state",
|
|
391
665
|
"upstream": {
|
|
392
666
|
"package": "@react-rxjs/core + @react-rxjs/utils",
|
|
@@ -398,11 +672,11 @@
|
|
|
398
672
|
"@react-rxjs/dom is omitted because octane batches updates without ReactDOM.unstable_batchedUpdates."
|
|
399
673
|
],
|
|
400
674
|
"ssr": "useSyncExternalStore supplies the state snapshot during server rendering; browser-only ReactDOM batching helpers are intentionally absent.",
|
|
401
|
-
"verified": "2026-
|
|
675
|
+
"verified": "2026-08-02"
|
|
402
676
|
},
|
|
403
677
|
{
|
|
404
678
|
"name": "@octanejs/shadcn",
|
|
405
|
-
"version": "0.0.
|
|
679
|
+
"version": "0.0.21",
|
|
406
680
|
"category": "UI and interaction",
|
|
407
681
|
"upstream": {
|
|
408
682
|
"package": "shadcn-ui/ui (radix base)",
|
|
@@ -427,9 +701,30 @@
|
|
|
427
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.",
|
|
428
702
|
"verified": "2026-08-02"
|
|
429
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
|
+
},
|
|
430
725
|
{
|
|
431
726
|
"name": "@octanejs/sonner",
|
|
432
|
-
"version": "0.1.
|
|
727
|
+
"version": "0.1.31",
|
|
433
728
|
"category": "UI and interaction",
|
|
434
729
|
"upstream": { "package": "sonner", "version": "2.0.7" },
|
|
435
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.",
|
|
@@ -439,24 +734,40 @@
|
|
|
439
734
|
"The document-visibility hook is guarded during SSR; upstream 2.0.7 reads `document.hidden` during render."
|
|
440
735
|
],
|
|
441
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.",
|
|
442
|
-
"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"
|
|
443
751
|
},
|
|
444
752
|
{
|
|
445
753
|
"name": "@octanejs/streamdown",
|
|
446
|
-
"version": "0.1.
|
|
754
|
+
"version": "0.1.15",
|
|
447
755
|
"category": "Forms and content",
|
|
448
756
|
"upstream": { "package": "streamdown", "version": "2.5.0" },
|
|
449
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.",
|
|
450
758
|
"divergences": [
|
|
451
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.",
|
|
452
|
-
"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."
|
|
453
764
|
],
|
|
454
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.",
|
|
455
|
-
"verified": "2026-
|
|
766
|
+
"verified": "2026-08-02"
|
|
456
767
|
},
|
|
457
768
|
{
|
|
458
769
|
"name": "@octanejs/styled-components",
|
|
459
|
-
"version": "0.1.
|
|
770
|
+
"version": "0.1.28",
|
|
460
771
|
"category": "Styling, tests, and devtools",
|
|
461
772
|
"upstream": { "package": "styled-components", "version": "6.4.3" },
|
|
462
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.",
|
|
@@ -471,11 +782,11 @@
|
|
|
471
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)."
|
|
472
783
|
],
|
|
473
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.",
|
|
474
|
-
"verified": "2026-
|
|
785
|
+
"verified": "2026-08-02"
|
|
475
786
|
},
|
|
476
787
|
{
|
|
477
788
|
"name": "@octanejs/stylex",
|
|
478
|
-
"version": "0.1.
|
|
789
|
+
"version": "0.1.35",
|
|
479
790
|
"category": "Styling, tests, and devtools",
|
|
480
791
|
"upstream": { "package": "@stylexjs/stylex", "version": "0.19.0" },
|
|
481
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.",
|
|
@@ -486,9 +797,35 @@
|
|
|
486
797
|
"ssr": "Works under SSR — the stylesheet is static and server markup carries the final class names; no dedicated SSR test files.",
|
|
487
798
|
"verified": "2026-07-09"
|
|
488
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
|
+
},
|
|
489
826
|
{
|
|
490
827
|
"name": "@octanejs/tanstack-ai",
|
|
491
|
-
"version": "0.0.
|
|
828
|
+
"version": "0.0.30",
|
|
492
829
|
"category": "AI, data, and routing",
|
|
493
830
|
"upstream": { "package": "@tanstack/ai-react", "version": "0.17.0" },
|
|
494
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.",
|
|
@@ -503,14 +840,14 @@
|
|
|
503
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."
|
|
504
841
|
],
|
|
505
842
|
"ssr": "Supported and tested: useChat renders its initial message snapshot through octane/server without a DOM.",
|
|
506
|
-
"verified": "2026-
|
|
843
|
+
"verified": "2026-08-09"
|
|
507
844
|
},
|
|
508
845
|
{
|
|
509
846
|
"name": "@octanejs/tanstack-devtools",
|
|
510
|
-
"version": "0.0.
|
|
847
|
+
"version": "0.0.30",
|
|
511
848
|
"category": "Styling, tests, and devtools",
|
|
512
849
|
"upstream": { "package": "@tanstack/react-devtools", "version": "0.10.7" },
|
|
513
|
-
"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.",
|
|
514
851
|
"divergences": [
|
|
515
852
|
"Public adapter types use Octane-prefixed names: `TanStackDevtoolsOctanePlugin` and `TanStackDevtoolsOctaneInit` (upstream: `TanStackDevtoolsReactPlugin` / `TanStackDevtoolsReactInit`).",
|
|
516
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.",
|
|
@@ -518,11 +855,11 @@
|
|
|
518
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."
|
|
519
856
|
],
|
|
520
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).",
|
|
521
|
-
"verified": "2026-
|
|
858
|
+
"verified": "2026-08-03"
|
|
522
859
|
},
|
|
523
860
|
{
|
|
524
861
|
"name": "@octanejs/tanstack-form",
|
|
525
|
-
"version": "0.0.
|
|
862
|
+
"version": "0.0.30",
|
|
526
863
|
"category": "Forms and content",
|
|
527
864
|
"upstream": { "package": "@tanstack/react-form", "version": "1.33.2" },
|
|
528
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.",
|
|
@@ -532,47 +869,47 @@
|
|
|
532
869
|
"Component registration accepts Octane function components; class components are not supported by Octane."
|
|
533
870
|
],
|
|
534
871
|
"ssr": "Supported and tested: fields and form subscriptions render their initial snapshots through octane/server without a DOM.",
|
|
535
|
-
"verified": "2026-
|
|
872
|
+
"verified": "2026-08-09"
|
|
536
873
|
},
|
|
537
874
|
{
|
|
538
875
|
"name": "@octanejs/tanstack-hotkeys",
|
|
539
|
-
"version": "0.0.
|
|
876
|
+
"version": "0.0.25",
|
|
540
877
|
"category": "UI and interaction",
|
|
541
878
|
"upstream": { "package": "@tanstack/react-hotkeys", "version": "0.10.0" },
|
|
542
|
-
"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.",
|
|
543
880
|
"divergences": [
|
|
544
881
|
"`target` refs are plain `{ current }` objects (Octane has no `React.RefObject`); the `isRef` guard and behavior are otherwise identical."
|
|
545
882
|
],
|
|
546
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).",
|
|
547
|
-
"verified": "2026-
|
|
884
|
+
"verified": "2026-08-03"
|
|
548
885
|
},
|
|
549
886
|
{
|
|
550
887
|
"name": "@octanejs/tanstack-pacer",
|
|
551
|
-
"version": "0.0.
|
|
888
|
+
"version": "0.0.25",
|
|
552
889
|
"category": "UI and interaction",
|
|
553
890
|
"upstream": { "package": "@tanstack/react-pacer", "version": "0.22.1" },
|
|
554
|
-
"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`.",
|
|
555
892
|
"divergences": [
|
|
556
893
|
"Upstream types spelled with `React.Dispatch<React.SetStateAction<T>>` use structurally identical local aliases (Octane state setters have the same shape)."
|
|
557
894
|
],
|
|
558
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.",
|
|
559
|
-
"verified": "2026-
|
|
896
|
+
"verified": "2026-08-03"
|
|
560
897
|
},
|
|
561
898
|
{
|
|
562
899
|
"name": "@octanejs/tanstack-query",
|
|
563
|
-
"version": "0.1.
|
|
900
|
+
"version": "0.1.35",
|
|
564
901
|
"category": "AI, data, and routing",
|
|
565
902
|
"upstream": { "package": "@tanstack/react-query", "version": "5.101.3" },
|
|
566
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.",
|
|
567
904
|
"divergences": [
|
|
568
905
|
"Suspense integrates via octane's `use(thenable)` rather than throwing a promise (observable behavior matches)."
|
|
569
906
|
],
|
|
570
|
-
"ssr": "`HydrationBoundary` fully ported (
|
|
571
|
-
"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"
|
|
572
909
|
},
|
|
573
910
|
{
|
|
574
911
|
"name": "@octanejs/tanstack-router",
|
|
575
|
-
"version": "0.1.
|
|
912
|
+
"version": "0.1.35",
|
|
576
913
|
"category": "AI, data, and routing",
|
|
577
914
|
"upstream": { "package": "@tanstack/react-router", "version": "1.170.18" },
|
|
578
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.",
|
|
@@ -581,22 +918,22 @@
|
|
|
581
918
|
"Link callbacks receive native DOM events rather than React synthetic events.",
|
|
582
919
|
"Router devtools are distributed separately."
|
|
583
920
|
],
|
|
584
|
-
"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
|
|
585
|
-
"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"
|
|
586
923
|
},
|
|
587
924
|
{
|
|
588
925
|
"name": "@octanejs/tanstack-router-ssr-query",
|
|
589
|
-
"version": "0.0.
|
|
926
|
+
"version": "0.0.25",
|
|
590
927
|
"category": "AI, data, and routing",
|
|
591
928
|
"upstream": { "package": "@tanstack/react-router-ssr-query", "version": "1.167.1" },
|
|
592
|
-
"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.",
|
|
593
930
|
"divergences": [],
|
|
594
931
|
"ssr": "Supported — this package IS the SSR integration (dehydrates query state into the router stream and wraps the app in the query provider).",
|
|
595
|
-
"verified": "2026-
|
|
932
|
+
"verified": "2026-08-03"
|
|
596
933
|
},
|
|
597
934
|
{
|
|
598
935
|
"name": "@octanejs/tanstack-store",
|
|
599
|
-
"version": "0.0.
|
|
936
|
+
"version": "0.0.30",
|
|
600
937
|
"category": "Shared state",
|
|
601
938
|
"upstream": { "package": "@tanstack/react-store", "version": "0.11.0" },
|
|
602
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.",
|
|
@@ -604,11 +941,11 @@
|
|
|
604
941
|
"The upstream experimental `_useStore` hook is intentionally omitted; use `useSelector` with `store.actions` or `store.setState` instead."
|
|
605
942
|
],
|
|
606
943
|
"ssr": "Supported: selectors, writable atoms, and store context read their current snapshots during server rendering; the adapter has no browser-only initialization.",
|
|
607
|
-
"verified": "2026-
|
|
944
|
+
"verified": "2026-08-09"
|
|
608
945
|
},
|
|
609
946
|
{
|
|
610
947
|
"name": "@octanejs/tanstack-table",
|
|
611
|
-
"version": "0.1.
|
|
948
|
+
"version": "0.1.33",
|
|
612
949
|
"category": "Data-heavy screens",
|
|
613
950
|
"upstream": { "package": "@tanstack/react-table", "version": "9.0.0-beta.58" },
|
|
614
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.",
|
|
@@ -617,11 +954,11 @@
|
|
|
617
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."
|
|
618
955
|
],
|
|
619
956
|
"ssr": "No SSR-specific surface; table-core is pure computation.",
|
|
620
|
-
"verified": "2026-
|
|
957
|
+
"verified": "2026-08-02"
|
|
621
958
|
},
|
|
622
959
|
{
|
|
623
960
|
"name": "@octanejs/tanstack-virtual",
|
|
624
|
-
"version": "0.1.
|
|
961
|
+
"version": "0.1.33",
|
|
625
962
|
"category": "Data-heavy screens",
|
|
626
963
|
"upstream": { "package": "@tanstack/react-virtual", "version": "3.14.5" },
|
|
627
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.",
|
|
@@ -629,11 +966,11 @@
|
|
|
629
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."
|
|
630
967
|
],
|
|
631
968
|
"ssr": "SSR-safe: `useIsomorphicLayoutEffect` degrades to `useEffect` without `document`; the first paint windows from `initialRect`/`initialOffset` exactly as upstream. No dedicated SSR tests.",
|
|
632
|
-
"verified": "2026-
|
|
969
|
+
"verified": "2026-08-02"
|
|
633
970
|
},
|
|
634
971
|
{
|
|
635
972
|
"name": "@octanejs/tauri",
|
|
636
|
-
"version": "0.0.
|
|
973
|
+
"version": "0.0.19",
|
|
637
974
|
"category": "Desktop",
|
|
638
975
|
"upstream": { "package": "@tauri-apps/api", "version": "2.11.1" },
|
|
639
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.",
|
|
@@ -651,41 +988,54 @@
|
|
|
651
988
|
},
|
|
652
989
|
{
|
|
653
990
|
"name": "@octanejs/testing-library",
|
|
654
|
-
"version": "0.1.
|
|
991
|
+
"version": "0.1.33",
|
|
655
992
|
"category": "Styling, tests, and devtools",
|
|
656
|
-
"upstream": { "package": "@testing-library/react", "version": "
|
|
993
|
+
"upstream": { "package": "@testing-library/react", "version": "16.3.2" },
|
|
657
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.",
|
|
658
995
|
"divergences": [
|
|
659
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.",
|
|
660
997
|
"Not ported: the `ReactStrictMode` wrapper, `legacyRoot`, and the `onCaughtError`/`onRecoverableError` options."
|
|
661
998
|
],
|
|
662
999
|
"ssr": "`hydrate: true` adopts octane SSR output via `hydrateRoot`.",
|
|
663
|
-
"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"
|
|
664
1014
|
},
|
|
665
1015
|
{
|
|
666
1016
|
"name": "@octanejs/three",
|
|
667
|
-
"version": "0.1.
|
|
1017
|
+
"version": "0.1.29",
|
|
668
1018
|
"category": "Web 3D",
|
|
669
1019
|
"upstream": { "package": "@react-three/fiber", "version": "9.6.1 (2a528745)" },
|
|
670
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.",
|
|
671
1021
|
"divergences": [
|
|
672
|
-
"Octane owns
|
|
673
|
-
"
|
|
674
|
-
"
|
|
675
|
-
"buildGraph
|
|
676
|
-
"
|
|
677
|
-
"
|
|
678
|
-
"Hidden retained Activity subtrees are excluded from recursive raycasts
|
|
679
|
-
"
|
|
680
|
-
"Root teardown and
|
|
681
|
-
"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."
|
|
682
1032
|
],
|
|
683
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.",
|
|
684
1034
|
"verified": "2026-07-17"
|
|
685
1035
|
},
|
|
686
1036
|
{
|
|
687
1037
|
"name": "@octanejs/tiptap",
|
|
688
|
-
"version": "0.0.
|
|
1038
|
+
"version": "0.0.30",
|
|
689
1039
|
"category": "Forms and content",
|
|
690
1040
|
"upstream": { "package": "@tiptap/react", "version": "3.28.0" },
|
|
691
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.",
|
|
@@ -698,11 +1048,29 @@
|
|
|
698
1048
|
"ReactMarkView tears down its portal when ProseMirror destroys the mark view, closing a renderer leak present in @tiptap/react 3.28.0."
|
|
699
1049
|
],
|
|
700
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.",
|
|
701
|
-
"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"
|
|
702
1070
|
},
|
|
703
1071
|
{
|
|
704
1072
|
"name": "@octanejs/usehooks-ts",
|
|
705
|
-
"version": "0.0.
|
|
1073
|
+
"version": "0.0.17",
|
|
706
1074
|
"category": "UI and interaction",
|
|
707
1075
|
"upstream": {
|
|
708
1076
|
"package": "usehooks-ts",
|
|
@@ -716,11 +1084,11 @@
|
|
|
716
1084
|
"Public setter types are structurally equivalent to React Dispatch/SetStateAction without importing React types."
|
|
717
1085
|
],
|
|
718
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.",
|
|
719
|
-
"verified": "2026-
|
|
1087
|
+
"verified": "2026-08-02"
|
|
720
1088
|
},
|
|
721
1089
|
{
|
|
722
1090
|
"name": "@octanejs/valtio",
|
|
723
|
-
"version": "0.1.
|
|
1091
|
+
"version": "0.1.19",
|
|
724
1092
|
"category": "Shared state",
|
|
725
1093
|
"upstream": { "package": "valtio", "version": "2.3.2" },
|
|
726
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.",
|
|
@@ -728,11 +1096,27 @@
|
|
|
728
1096
|
"React DevTools affected-path debug labels are omitted because Octane's `useDebugValue` is currently a no-op."
|
|
729
1097
|
],
|
|
730
1098
|
"ssr": "The server snapshot path uses `snapshot(proxyObject)`; no dedicated SSR rendering test is included yet.",
|
|
731
|
-
"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"
|
|
732
1116
|
},
|
|
733
1117
|
{
|
|
734
1118
|
"name": "@octanejs/visx",
|
|
735
|
-
"version": "0.1.
|
|
1119
|
+
"version": "0.1.30",
|
|
736
1120
|
"category": "Data-heavy screens",
|
|
737
1121
|
"upstream": { "package": "@visx/visx", "version": "4.0.0 + master@485c035" },
|
|
738
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.",
|
|
@@ -744,11 +1128,11 @@
|
|
|
744
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."
|
|
745
1129
|
],
|
|
746
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.",
|
|
747
|
-
"verified": "2026-
|
|
1131
|
+
"verified": "2026-08-02"
|
|
748
1132
|
},
|
|
749
1133
|
{
|
|
750
1134
|
"name": "@octanejs/wagmi",
|
|
751
|
-
"version": "0.0.
|
|
1135
|
+
"version": "0.0.16",
|
|
752
1136
|
"category": "Web3",
|
|
753
1137
|
"upstream": { "package": "wagmi", "version": "3.7.4" },
|
|
754
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.",
|
|
@@ -760,11 +1144,39 @@
|
|
|
760
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."
|
|
761
1145
|
],
|
|
762
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.",
|
|
763
|
-
"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"
|
|
764
1176
|
},
|
|
765
1177
|
{
|
|
766
1178
|
"name": "@octanejs/zustand",
|
|
767
|
-
"version": "0.1.
|
|
1179
|
+
"version": "0.1.35",
|
|
768
1180
|
"category": "Shared state",
|
|
769
1181
|
"upstream": { "package": "zustand", "version": "5.0.14" },
|
|
770
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).",
|
|
@@ -772,7 +1184,7 @@
|
|
|
772
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`."
|
|
773
1185
|
],
|
|
774
1186
|
"ssr": "No SSR-specific surface; no dedicated SSR tests.",
|
|
775
|
-
"verified": "2026-
|
|
1187
|
+
"verified": "2026-08-02"
|
|
776
1188
|
}
|
|
777
1189
|
],
|
|
778
1190
|
"reactPackages": {
|
|
@@ -780,15 +1192,23 @@
|
|
|
780
1192
|
"@base-ui-components/react": "@octanejs/base-ui",
|
|
781
1193
|
"@dnd-kit/react": "@octanejs/dnd-kit",
|
|
782
1194
|
"@floating-ui/react": "@octanejs/floating-ui",
|
|
1195
|
+
"@gsap/react": "@octanejs/gsap",
|
|
1196
|
+
"@inertiajs/react": "@octanejs/inertia",
|
|
783
1197
|
"@lexical/react": "@octanejs/lexical",
|
|
1198
|
+
"@livestore/react": "@octanejs/livestore",
|
|
784
1199
|
"@mantine/hooks": "@octanejs/mantine-hooks",
|
|
785
1200
|
"@mdx-js/react": "@octanejs/mdx",
|
|
1201
|
+
"@monaco-editor/react": "@octanejs/monaco-editor",
|
|
786
1202
|
"@phosphor-icons/react": "@octanejs/phosphor-icons",
|
|
787
1203
|
"@rainbow-me/rainbowkit": "@octanejs/rainbowkit",
|
|
788
1204
|
"@react-rxjs/core": "@octanejs/rxjs",
|
|
789
1205
|
"@react-rxjs/utils": "@octanejs/rxjs",
|
|
1206
|
+
"@react-spring/parallax": "@octanejs/spring",
|
|
1207
|
+
"@react-spring/web": "@octanejs/spring",
|
|
1208
|
+
"@react-three/drei": "@octanejs/drei",
|
|
790
1209
|
"@react-three/fiber": "@octanejs/three",
|
|
791
1210
|
"@reduxjs/toolkit": "@octanejs/redux-toolkit",
|
|
1211
|
+
"@solana/react": "@octanejs/solana-react",
|
|
792
1212
|
"@streamdown/cjk": "@octanejs/streamdown",
|
|
793
1213
|
"@streamdown/code": "@octanejs/streamdown",
|
|
794
1214
|
"@streamdown/math": "@octanejs/streamdown",
|
|
@@ -807,6 +1227,7 @@
|
|
|
807
1227
|
"@tanstack/react-virtual": "@octanejs/tanstack-virtual",
|
|
808
1228
|
"@testing-library/react": "@octanejs/testing-library",
|
|
809
1229
|
"@tiptap/react": "@octanejs/tiptap",
|
|
1230
|
+
"@vis.gl/react-mapbox": "@octanejs/react-map-gl",
|
|
810
1231
|
"@visx/a11y": "@octanejs/visx",
|
|
811
1232
|
"@visx/a11y/react": "@octanejs/visx",
|
|
812
1233
|
"@visx/a11y/server": "@octanejs/visx",
|
|
@@ -856,9 +1277,13 @@
|
|
|
856
1277
|
"@visx/wordcloud": "@octanejs/visx",
|
|
857
1278
|
"@visx/xychart": "@octanejs/visx",
|
|
858
1279
|
"@visx/zoom": "@octanejs/visx",
|
|
1280
|
+
"@zag-js/react": "@octanejs/zag",
|
|
1281
|
+
"animejs": "@octanejs/animejs",
|
|
859
1282
|
"cmdk": "@octanejs/cmdk",
|
|
860
1283
|
"dexie-react-hooks": "@octanejs/dexie",
|
|
1284
|
+
"embla-carousel-react": "@octanejs/embla-carousel",
|
|
861
1285
|
"framer-motion": "@octanejs/motion",
|
|
1286
|
+
"input-otp": "@octanejs/input-otp",
|
|
862
1287
|
"jotai": "@octanejs/jotai",
|
|
863
1288
|
"lucide-react": "@octanejs/lucide",
|
|
864
1289
|
"mobx-react": "@octanejs/mobx",
|
|
@@ -866,22 +1291,39 @@
|
|
|
866
1291
|
"motion": "@octanejs/motion",
|
|
867
1292
|
"nuqs": "@octanejs/nuqs",
|
|
868
1293
|
"radix-ui": "@octanejs/radix",
|
|
1294
|
+
"react-alien-signals": "@octanejs/alien-signals",
|
|
869
1295
|
"react-aria": "@octanejs/aria",
|
|
870
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",
|
|
871
1301
|
"react-error-boundary": "@octanejs/react-error-boundary",
|
|
872
1302
|
"react-hook-form": "@octanejs/hook-form",
|
|
873
1303
|
"react-i18next": "@octanejs/i18next",
|
|
1304
|
+
"react-intersection-observer": "@octanejs/intersection-observer",
|
|
1305
|
+
"react-map-gl": "@octanejs/react-map-gl",
|
|
1306
|
+
"react-map-gl/mapbox": "@octanejs/react-map-gl",
|
|
1307
|
+
"react-markdown": "@octanejs/markdown",
|
|
1308
|
+
"react-pdf": "@octanejs/pdf",
|
|
1309
|
+
"react-popper": "@octanejs/popper",
|
|
874
1310
|
"react-redux": "@octanejs/redux",
|
|
875
1311
|
"react-router": "@octanejs/remix-router",
|
|
876
1312
|
"react-router-dom": "@octanejs/remix-router",
|
|
877
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",
|
|
878
1318
|
"recharts": "@octanejs/recharts",
|
|
879
1319
|
"shadcn": "@octanejs/shadcn",
|
|
880
1320
|
"sonner": "@octanejs/sonner",
|
|
881
1321
|
"streamdown": "@octanejs/streamdown",
|
|
882
1322
|
"styled-components": "@octanejs/styled-components",
|
|
1323
|
+
"swr": "@octanejs/swr",
|
|
883
1324
|
"usehooks-ts": "@octanejs/usehooks-ts",
|
|
884
1325
|
"valtio": "@octanejs/valtio",
|
|
1326
|
+
"vaul": "@octanejs/vaul",
|
|
885
1327
|
"wagmi": "@octanejs/wagmi",
|
|
886
1328
|
"zustand": "@octanejs/zustand"
|
|
887
1329
|
},
|
|
@@ -1117,6 +1559,51 @@
|
|
|
1117
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.",
|
|
1118
1560
|
"runtime": ["server"],
|
|
1119
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"
|
|
1120
1607
|
}
|
|
1121
1608
|
}
|
|
1122
1609
|
}
|