@octanejs/cli 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/data/octane-data.json +58 -57
- package/src/kernel/command.js +3 -0
- package/src/kernel/main.js +14 -0
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"bindings": [
|
|
3
3
|
{
|
|
4
4
|
"name": "@octanejs/apollo-client",
|
|
5
|
-
"version": "0.1.
|
|
5
|
+
"version": "0.1.18",
|
|
6
6
|
"category": "AI, data, and routing",
|
|
7
7
|
"upstream": { "package": "@apollo/client", "version": "4.2.6" },
|
|
8
8
|
"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.",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"name": "@octanejs/aria",
|
|
19
|
-
"version": "0.0.
|
|
19
|
+
"version": "0.0.17",
|
|
20
20
|
"category": "UI and interaction",
|
|
21
21
|
"upstream": { "package": "react-aria", "version": "3.50.0" },
|
|
22
22
|
"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.",
|
|
@@ -31,10 +31,10 @@
|
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"name": "@octanejs/base-ui",
|
|
34
|
-
"version": "0.1.
|
|
34
|
+
"version": "0.1.21",
|
|
35
35
|
"category": "UI and interaction",
|
|
36
36
|
"upstream": { "package": "@base-ui/react", "version": "1.6.0" },
|
|
37
|
-
"surface": "Alpha, in progress:
|
|
37
|
+
"surface": "Alpha, in progress: 34 of 43 upstream subpaths. The foundation, overlay infrastructure, hover/focus interaction layer, list-navigation/typeahead layer and popup viewport have landed, along with Dialog, AlertDialog, Popover, Tooltip, PreviewCard, the full form-control set, and the standalone Button/DirectionProvider/CSPProvider/useMediaQuery utilities — ported at full fidelity and differential-verified against the real `@base-ui/react`. Menu is COMPLETE at all 20 upstream parts — Root/Trigger/Portal/Positioner/Popup, the full item family (Item, LinkItem, CheckboxItem, RadioGroup/RadioItem and their indicators, Group/GroupLabel, Separator), Arrow, Backdrop, Viewport, and SubmenuRoot/SubmenuTrigger. Menubar and ContextMenu have landed too, so the whole menu family is complete. Toast is complete at all 11 parts, including the imperative toast manager, auto-dismiss timers with hover/focus pausing, and promise toasts; swipe-to-dismiss is covered too. Collapsible is complete at all 3 upstream parts (Root/Trigger/Panel), including upstream's <Activity> animation-resume suppression — octane's Activity has React's contract (hidden subtrees keep state and DOM while effects tear down and re-fire on reveal), so that path is ported rather than skipped and is the first component carrying a port of Base UI's OWN test file, under tests/upstream/ — 16 of its 35 upstream cases, being every case that does not require real layout measurement, CSS transition/keyframe sequencing, React.Activity, or find-in-page `beforematch`. Accordion is complete at all 5 upstream parts (Root/Item/Header/Trigger/Panel), built directly on Collapsible — each Item runs its own useCollapsibleRoot and provides CollapsibleRootContext, exactly as upstream does. It carries 18 tests: 15 ported from upstream's own suite plus 3 written to close a real gap — upstream only exercises single-vs-multiple toggling inside jsdom-skipped blocks, so removing the single-mode collapse branch passed every ported case.",
|
|
38
38
|
"divergences": [
|
|
39
39
|
"Handlers receive native DOM events (no synthetic layer): visible text controls use per-edit `input`, while the NumberField form-facing number input intentionally observes native `change` commits. React's synthetic-only `event.isPropagationStopped()` (used by Menu's popup keyboard relay) becomes a native `event.cancelBubble` read.",
|
|
40
40
|
"`forwardRef` becomes ref-as-prop; `className` composes via octane's `normalizeClass` (the render-prop string merge matches Base UI exactly).",
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
"`NumberField.ScrubArea` and hold-to-repeat stepping remain unported; the steppers respond to single presses only."
|
|
44
44
|
],
|
|
45
45
|
"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
|
-
"verified": "2026-
|
|
46
|
+
"verified": "2026-08-01"
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
"name": "@octanejs/cmdk",
|
|
50
|
-
"version": "0.1.
|
|
50
|
+
"version": "0.1.6",
|
|
51
51
|
"category": "UI and interaction",
|
|
52
52
|
"upstream": { "package": "cmdk", "version": "1.1.1" },
|
|
53
53
|
"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).",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
"name": "@octanejs/devtools",
|
|
81
|
-
"version": "0.0.
|
|
81
|
+
"version": "0.0.11",
|
|
82
82
|
"category": "Styling, tests, and devtools",
|
|
83
83
|
"upstream": { "package": "octane", "version": "workspace" },
|
|
84
84
|
"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 +88,7 @@
|
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
90
|
"name": "@octanejs/dexie",
|
|
91
|
-
"version": "0.1.
|
|
91
|
+
"version": "0.1.16",
|
|
92
92
|
"category": "AI, data, and routing",
|
|
93
93
|
"upstream": { "package": "dexie-react-hooks", "version": "4.4.0" },
|
|
94
94
|
"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.",
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
},
|
|
103
103
|
{
|
|
104
104
|
"name": "@octanejs/dnd-kit",
|
|
105
|
-
"version": "0.1.
|
|
105
|
+
"version": "0.1.18",
|
|
106
106
|
"category": "UI and interaction",
|
|
107
107
|
"upstream": { "package": "@dnd-kit/react", "version": "0.5.0" },
|
|
108
108
|
"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.",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
},
|
|
116
116
|
{
|
|
117
117
|
"name": "@octanejs/floating-ui",
|
|
118
|
-
"version": "0.1.
|
|
118
|
+
"version": "0.1.22",
|
|
119
119
|
"category": "UI and interaction",
|
|
120
120
|
"upstream": { "package": "@floating-ui/react", "version": "0.27.19" },
|
|
121
121
|
"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`.",
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
},
|
|
126
126
|
{
|
|
127
127
|
"name": "@octanejs/hook-form",
|
|
128
|
-
"version": "0.1.
|
|
128
|
+
"version": "0.1.20",
|
|
129
129
|
"category": "Forms and content",
|
|
130
130
|
"upstream": { "package": "react-hook-form", "version": "7.81.0" },
|
|
131
131
|
"surface": "Complete port of react-hook-form 7.81.0 (upstream commit b7df98c2) with the upstream test suite ported: `useForm`, `useController`, `useFieldArray`, `useFormState`, `useWatch`, `useFormContext`/`FormProvider`, schema resolvers, and all validation modes.",
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
},
|
|
139
139
|
{
|
|
140
140
|
"name": "@octanejs/i18next",
|
|
141
|
-
"version": "0.1.
|
|
141
|
+
"version": "0.1.18",
|
|
142
142
|
"category": "Forms and content",
|
|
143
143
|
"upstream": { "package": "react-i18next", "version": "17.0.9" },
|
|
144
144
|
"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.",
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
},
|
|
154
154
|
{
|
|
155
155
|
"name": "@octanejs/jotai",
|
|
156
|
-
"version": "0.1.
|
|
156
|
+
"version": "0.1.20",
|
|
157
157
|
"category": "Shared state",
|
|
158
158
|
"upstream": { "package": "jotai", "version": "2.20.2" },
|
|
159
159
|
"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()`.",
|
|
@@ -163,7 +163,7 @@
|
|
|
163
163
|
},
|
|
164
164
|
{
|
|
165
165
|
"name": "@octanejs/lexical",
|
|
166
|
-
"version": "0.1.
|
|
166
|
+
"version": "0.1.22",
|
|
167
167
|
"category": "Forms and content",
|
|
168
168
|
"upstream": { "package": "@lexical/react", "version": "0.46.0" },
|
|
169
169
|
"surface": "35 of 39 `@lexical/react` modules ported: composer + contexts, the editable surface, plain/rich text, and the full plugin/menu set (history, lists + check-list, links, tables, markdown shortcuts, the typeahead/node-menu/context-menu family, draggable-block, character-limit, …) plus the `useLexical*` hooks.",
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
},
|
|
177
177
|
{
|
|
178
178
|
"name": "@octanejs/lucide",
|
|
179
|
-
"version": "0.1.
|
|
179
|
+
"version": "0.1.18",
|
|
180
180
|
"category": "UI and interaction",
|
|
181
181
|
"upstream": { "package": "lucide-react", "version": "1.24.0" },
|
|
182
182
|
"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.",
|
|
@@ -189,7 +189,7 @@
|
|
|
189
189
|
},
|
|
190
190
|
{
|
|
191
191
|
"name": "@octanejs/mantine-hooks",
|
|
192
|
-
"version": "0.1.
|
|
192
|
+
"version": "0.1.4",
|
|
193
193
|
"category": "UI and interaction",
|
|
194
194
|
"upstream": { "package": "@mantine/hooks", "version": "9.5.0" },
|
|
195
195
|
"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.",
|
|
@@ -203,7 +203,7 @@
|
|
|
203
203
|
},
|
|
204
204
|
{
|
|
205
205
|
"name": "@octanejs/mdx",
|
|
206
|
-
"version": "0.1.
|
|
206
|
+
"version": "0.1.20",
|
|
207
207
|
"category": "Forms and content",
|
|
208
208
|
"upstream": { "package": "@mdx-js/mdx", "version": "3.1.1" },
|
|
209
209
|
"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.",
|
|
@@ -215,7 +215,7 @@
|
|
|
215
215
|
},
|
|
216
216
|
{
|
|
217
217
|
"name": "@octanejs/mobx",
|
|
218
|
-
"version": "0.1.
|
|
218
|
+
"version": "0.1.4",
|
|
219
219
|
"category": "Shared state",
|
|
220
220
|
"upstream": { "package": "mobx-react-lite", "version": "4.1.1", "core": "mobx@6.16.1" },
|
|
221
221
|
"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.",
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
},
|
|
230
230
|
{
|
|
231
231
|
"name": "@octanejs/motion",
|
|
232
|
-
"version": "0.1.
|
|
232
|
+
"version": "0.1.22",
|
|
233
233
|
"category": "UI and interaction",
|
|
234
234
|
"upstream": { "package": "motion", "version": "12.42.2" },
|
|
235
235
|
"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.",
|
|
@@ -242,7 +242,7 @@
|
|
|
242
242
|
},
|
|
243
243
|
{
|
|
244
244
|
"name": "@octanejs/nuqs",
|
|
245
|
-
"version": "0.1.
|
|
245
|
+
"version": "0.1.12",
|
|
246
246
|
"category": "AI, data, and routing",
|
|
247
247
|
"upstream": { "package": "nuqs", "version": "2.9.1" },
|
|
248
248
|
"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`.",
|
|
@@ -257,7 +257,7 @@
|
|
|
257
257
|
},
|
|
258
258
|
{
|
|
259
259
|
"name": "@octanejs/phosphor-icons",
|
|
260
|
-
"version": "0.0.
|
|
260
|
+
"version": "0.0.3",
|
|
261
261
|
"category": "UI and interaction",
|
|
262
262
|
"upstream": { "package": "@phosphor-icons/react", "version": "2.1.10" },
|
|
263
263
|
"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.",
|
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
},
|
|
272
272
|
{
|
|
273
273
|
"name": "@octanejs/radix",
|
|
274
|
-
"version": "0.1.
|
|
274
|
+
"version": "0.1.22",
|
|
275
275
|
"category": "UI and interaction",
|
|
276
276
|
"upstream": { "package": "radix-ui", "version": "1.6.4" },
|
|
277
277
|
"surface": "Complete against the unified `radix-ui@1.6.4` component surface — all primitives (incl. Dialog, the Menu/DropdownMenu/ContextMenu family, Popover, Tooltip, Select, NavigationMenu, Toast, Menubar, Slider, the form controls, and OneTimePasswordField/PasswordToggleField) plus the composition/state/overlay foundations — verified by a differential suite (same fixtures through octane and the real radix-ui, byte-identical DOM).",
|
|
@@ -284,7 +284,7 @@
|
|
|
284
284
|
},
|
|
285
285
|
{
|
|
286
286
|
"name": "@octanejs/rainbowkit",
|
|
287
|
-
"version": "0.0.
|
|
287
|
+
"version": "0.0.3",
|
|
288
288
|
"category": "Web3",
|
|
289
289
|
"upstream": { "package": "@rainbow-me/rainbowkit", "version": "2.2.11" },
|
|
290
290
|
"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.",
|
|
@@ -300,7 +300,7 @@
|
|
|
300
300
|
},
|
|
301
301
|
{
|
|
302
302
|
"name": "@octanejs/react-error-boundary",
|
|
303
|
-
"version": "0.1.
|
|
303
|
+
"version": "0.1.4",
|
|
304
304
|
"category": "UI and interaction",
|
|
305
305
|
"upstream": { "package": "react-error-boundary", "version": "6.1.2" },
|
|
306
306
|
"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.",
|
|
@@ -314,7 +314,7 @@
|
|
|
314
314
|
},
|
|
315
315
|
{
|
|
316
316
|
"name": "@octanejs/recharts",
|
|
317
|
-
"version": "0.1.
|
|
317
|
+
"version": "0.1.20",
|
|
318
318
|
"category": "Data-heavy screens",
|
|
319
319
|
"upstream": { "package": "recharts", "version": "3.9.2" },
|
|
320
320
|
"surface": "Broad runtime support across cartesian, polar, hierarchical, tooltip, legend, responsive-container, shape, and chart-state surfaces. `Brush` and `Treemap` remain intentionally unsupported.",
|
|
@@ -326,7 +326,7 @@
|
|
|
326
326
|
},
|
|
327
327
|
{
|
|
328
328
|
"name": "@octanejs/redux",
|
|
329
|
-
"version": "0.1.
|
|
329
|
+
"version": "0.1.20",
|
|
330
330
|
"category": "Shared state",
|
|
331
331
|
"upstream": { "package": "react-redux", "version": "9.3.0" },
|
|
332
332
|
"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. Export parity is pinned by test.",
|
|
@@ -339,7 +339,7 @@
|
|
|
339
339
|
},
|
|
340
340
|
{
|
|
341
341
|
"name": "@octanejs/redux-toolkit",
|
|
342
|
-
"version": "0.1.
|
|
342
|
+
"version": "0.1.18",
|
|
343
343
|
"category": "Shared state",
|
|
344
344
|
"upstream": { "package": "@reduxjs/toolkit", "version": "2.12.0" },
|
|
345
345
|
"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.",
|
|
@@ -352,7 +352,7 @@
|
|
|
352
352
|
},
|
|
353
353
|
{
|
|
354
354
|
"name": "@octanejs/remix-router",
|
|
355
|
-
"version": "0.1.
|
|
355
|
+
"version": "0.1.19",
|
|
356
356
|
"category": "AI, data, and routing",
|
|
357
357
|
"upstream": { "package": "react-router", "version": "8.2.0" },
|
|
358
358
|
"surface": "COMPLETE port (all phases shipped — full export parity, EXPECTED_MISSING is empty): the framework-agnostic router core (lib/router/* + framework-free helpers, ~12k lines) is vendored byte-close and validated by 161 ported upstream router tests plus four focused v8.2 regression pins; the data-mode React layer (createMemoryRouter, RouterProvider incl. the /dom flushSync variant, Outlet, Await, RenderErrorBoundary/errorElement, Link + useLinkClickHandler, and the full read-hook family) and the declarative layer (MemoryRouter, Routes/Route in BOTH children forms — descriptor children walked upstream-style, .tsrx block children via a registration collector — Navigate, createRoutesFromChildren/Elements, the UNSAFE_With*Props wrappers) and the DOM layer (createBrowserRouter/createHashRouter with __staticRouterHydrationData parsing, BrowserRouter/HashRouter/unstable_HistoryRouter, Link + NavLink incl. the isActive/isPending render props, useLinkClickHandler, useSearchParams) and the mutation layer (Form on octane's native delegated submit event, useSubmit incl. JSON encTypes, useFormAction with ?index resolution, useFetcher/useFetchers incl. fetcher.Form/load/submit/reset and shared keys), the guard/scroll layer (useBlocker, unstable_usePrompt, ScrollRestoration/UNSAFE_useScrollRestoration, useBeforeUnload, useViewTransitionState, unstable_useRoute/unstable_useRouterState), static SSR (StaticRouter, StaticRouterProvider, createStaticHandler/createStaticRouter rendering through octane/server — markup byte-identical to react-dom/server after marker stripping, hydration payload identical), and the vendored cookie/session server runtime (createCookie/createSession/createCookieSessionStorage/createMemorySessionStorage) are transcribed onto octane and differential-verified against real react-router. Framework-mode + RSC names (Meta/Links/Scripts, createRequestHandler, UNSAFE_ internals) exist as THROWING STUBS so parity is honest.",
|
|
@@ -368,7 +368,7 @@
|
|
|
368
368
|
},
|
|
369
369
|
{
|
|
370
370
|
"name": "@octanejs/rxjs",
|
|
371
|
-
"version": "0.1.
|
|
371
|
+
"version": "0.1.2",
|
|
372
372
|
"category": "Shared state",
|
|
373
373
|
"upstream": {
|
|
374
374
|
"package": "@react-rxjs/core + @react-rxjs/utils",
|
|
@@ -384,13 +384,13 @@
|
|
|
384
384
|
},
|
|
385
385
|
{
|
|
386
386
|
"name": "@octanejs/shadcn",
|
|
387
|
-
"version": "0.0.
|
|
387
|
+
"version": "0.0.8",
|
|
388
388
|
"category": "UI and interaction",
|
|
389
389
|
"upstream": {
|
|
390
390
|
"package": "shadcn-ui/ui (radix base)",
|
|
391
391
|
"version": "4baadbc6517070ae8f8feb2c97037adc2b305544 + shadcn@4.14.1"
|
|
392
392
|
},
|
|
393
|
-
"surface": "Two primitive bases. RADIX base (default, reached at the bare subpaths): tiers 1-2 complete plus the first tier-3 composites — 40 component families. REACT ARIA base (@octanejs/shadcn/react-aria/<Family>): 33 families over @octanejs/aria/components, taken from upstream's aria-nova style and verified class-string identical to it; not ported are select and sonner (need input-group and next-themes), while hover-card, menubar and navigation-menu do not exist in upstream's aria base. Sources live at src/bases/<base>/ui/ with lib/hooks/styles shared. DISTRIBUTION is registry-first with per-family subpath exports; the monolithic root entry is removed. STYLING FLAVOR: the radix base is mid-migration from the pinned cn-* semantic-hook system to the default-Tailwind utilities-inlined flavor (user-directed); the react-aria base is uniformly the utilities-inlined aria-nova output. The shipped registry (packages/shadcn/registry) still emits the radix base only — the per-base registry namespace is decided when the first consumer needs it.",
|
|
393
|
+
"surface": "Two primitive bases. RADIX base (default, reached at the bare subpaths): tiers 1-2 complete plus the first tier-3 composites — 40 component families. REACT ARIA base (@octanejs/shadcn/react-aria/<Family>): 33 families over @octanejs/aria/components, taken from upstream's aria-nova style and verified class-string identical to it; not ported are select and sonner (need input-group and next-themes), while hover-card, menubar and navigation-menu do not exist in upstream's aria base. Sources live at src/bases/<base>/ui/ with lib/hooks/styles shared. DISTRIBUTION is registry-first with per-family subpath exports; the monolithic root entry is removed. STYLING FLAVOR: the radix base is mid-migration from the pinned cn-* semantic-hook system to the default-Tailwind utilities-inlined flavor (user-directed); the react-aria base is uniformly the utilities-inlined aria-nova output. The shipped registry (packages/shadcn/registry) still emits the radix base only — the per-base registry namespace is decided when the first consumer needs it. BASE UI base (@octanejs/shadcn/base-ui/<Family>): STARTED, 21 of 44 families and PARTIAL. `accordion` is transcribed from upstream and runs on the @octanejs/base-ui accordion primitive — the first primitive-backed family in this base. The rest are primitive-free: `alert` is transcribed from upstream's Base UI source and verified byte-identical to it; `aspect-ratio`, `card`, `empty`, `native-select`, `skeleton` and `spinner` are DERIVED from the react-aria base and are NOT yet verified against upstream, which each file's header records. Nothing primitive-backed is ported: Base UI's primitive API is structurally different from React Aria's, so it cannot be derived and needs transcribed upstream sources. The foundations now run on real Base UI primitives: `button` (Button), `input` (Field.Control), `label` (Field.Label) and `separator` (Separator), alongside plain-host `textarea` and `kbd` — Base UI ships no textarea or Keyboard primitive, so those match the radix base's shape rather than the aria base's. `separator` deliberately takes the ARIA base's class string, not the radix one: Base UI emits `aria-orientation`, so radix's `data-horizontal:` utilities would never match and the separator would render with no thickness. `button` omits the aria base's data-variant/data-size, which upstream's Base UI base also omits, and ships no LinkButton because Base UI has no Link primitive — which is why `pagination` remains unported. `alert-dialog` is transcribed from upstream and is the first portalled family here (Overlay->Backdrop, Content->Popup, Cancel->Close); it drops upstream's `cn-font-heading` on the title, matching the react-aria base, because this package ships the utilities-inlined flavor and nothing defines that semantic hook. The form controls (`checkbox`, `switch`, `radio-group`) adapt their conditional utilities rather than copying them: Base UI publishes bare `data-checked`/`data-unchecked` where radix publishes `data-state=\"checked\"`, and every Root renders a `<span role=…>` that is never `:disabled`, so `disabled:` variants become `data-disabled:`. Both dialects are pinned by tests asserting the rendered DOM carries the attributes the class strings target. The overlays (`dialog`, `popover`, `tooltip`, plus `alert-dialog`) adapt positioning: Base UI inserts a Positioner layer (Portal > Positioner > Popup) and names its transform origin `--transform-origin`, not radix's `--radix-<part>-content-transform-origin`, so a copied radix class would reference a variable nothing sets and the popup would scale from the wrong corner. Tooltip also drops radix's `data-[state=delayed-open]` utilities, which have no Base UI counterpart. `PopoverAnchor` is absent because Base UI positions via the Positioner's `anchor` prop rather than an Anchor element — recorded in tests/cross-base.test.ts.",
|
|
394
394
|
"divergences": [
|
|
395
395
|
"No `\"use client\"` directives anywhere: octane has no Server Components, so the RSC axis does not exist here.",
|
|
396
396
|
"Refs are props (octane has no forwardRef) — upstream v4 already dropped forwardRef, so component shapes match.",
|
|
@@ -403,14 +403,15 @@
|
|
|
403
403
|
"Accordion arrow-key navigation is collection-driven in the radix binding rather than RovingFocusGroup-wrapped; Home/End/Arrow focus movement between triggers is behaviorally equivalent and tested.",
|
|
404
404
|
"FieldError renders falsy error-list entries as null instead of React's skipped false children — identical output.",
|
|
405
405
|
"SidebarTrigger's click handling is the native delegated click event; behavior is otherwise identical to upstream. At this pin SidebarProvider does not mount a TooltipProvider, so consumers using SidebarMenuButton's tooltip prop must provide one (matches upstream).",
|
|
406
|
-
"The packaged theme.css omits the upstream site-only tokens (--surface, --code-*, --selection*) and inlines concrete oklch values for --chart-1..5 (upstream references Tailwind palette variables, which require a Tailwind build this standalone file cannot assume)."
|
|
406
|
+
"The packaged theme.css omits the upstream site-only tokens (--surface, --code-*, --selection*) and inlines concrete oklch values for --chart-1..5 (upstream references Tailwind palette variables, which require a Tailwind build this standalone file cannot assume).",
|
|
407
|
+
"The Base UI base's derived components carry unverified class strings. This is tracked rather than assumed safe: the bases genuinely diverge (the radix base's Skeleton is `bg-accent` where react-aria's is `bg-muted`), so identity is verified per component. `badge` was deliberately NOT derived — the react-aria version takes `render` as a function while Base UI's takes an element, so deriving it would ship the wrong API."
|
|
407
408
|
],
|
|
408
409
|
"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.",
|
|
409
|
-
"verified": "2026-
|
|
410
|
+
"verified": "2026-08-01"
|
|
410
411
|
},
|
|
411
412
|
{
|
|
412
413
|
"name": "@octanejs/sonner",
|
|
413
|
-
"version": "0.1.
|
|
414
|
+
"version": "0.1.18",
|
|
414
415
|
"category": "UI and interaction",
|
|
415
416
|
"upstream": { "package": "sonner", "version": "2.0.7" },
|
|
416
417
|
"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.",
|
|
@@ -424,7 +425,7 @@
|
|
|
424
425
|
},
|
|
425
426
|
{
|
|
426
427
|
"name": "@octanejs/streamdown",
|
|
427
|
-
"version": "0.1.
|
|
428
|
+
"version": "0.1.2",
|
|
428
429
|
"category": "Forms and content",
|
|
429
430
|
"upstream": { "package": "streamdown", "version": "2.5.0" },
|
|
430
431
|
"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.",
|
|
@@ -437,7 +438,7 @@
|
|
|
437
438
|
},
|
|
438
439
|
{
|
|
439
440
|
"name": "@octanejs/styled-components",
|
|
440
|
-
"version": "0.1.
|
|
441
|
+
"version": "0.1.15",
|
|
441
442
|
"category": "Styling, tests, and devtools",
|
|
442
443
|
"upstream": { "package": "styled-components", "version": "6.4.3" },
|
|
443
444
|
"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.",
|
|
@@ -456,7 +457,7 @@
|
|
|
456
457
|
},
|
|
457
458
|
{
|
|
458
459
|
"name": "@octanejs/stylex",
|
|
459
|
-
"version": "0.1.
|
|
460
|
+
"version": "0.1.22",
|
|
460
461
|
"category": "Styling, tests, and devtools",
|
|
461
462
|
"upstream": { "package": "@stylexjs/stylex", "version": "0.19.0" },
|
|
462
463
|
"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.",
|
|
@@ -469,7 +470,7 @@
|
|
|
469
470
|
},
|
|
470
471
|
{
|
|
471
472
|
"name": "@octanejs/tanstack-ai",
|
|
472
|
-
"version": "0.0.
|
|
473
|
+
"version": "0.0.17",
|
|
473
474
|
"category": "AI, data, and routing",
|
|
474
475
|
"upstream": { "package": "@tanstack/ai-react", "version": "0.17.0" },
|
|
475
476
|
"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.",
|
|
@@ -488,7 +489,7 @@
|
|
|
488
489
|
},
|
|
489
490
|
{
|
|
490
491
|
"name": "@octanejs/tanstack-devtools",
|
|
491
|
-
"version": "0.0.
|
|
492
|
+
"version": "0.0.17",
|
|
492
493
|
"category": "Styling, tests, and devtools",
|
|
493
494
|
"upstream": { "package": "@tanstack/react-devtools", "version": "0.10.7" },
|
|
494
495
|
"surface": "Ports the @tanstack/react-devtools 0.10.7 public surface (the `TanStackDevtools` component plus its plugin/init types) onto Octane while reusing the framework-agnostic `@tanstack/devtools` 0.12.5 core (`TanStackDevtoolsCore`) unchanged. Plugin, title, and custom-trigger content authored as Octane elements is portaled into the containers the core creates.",
|
|
@@ -503,7 +504,7 @@
|
|
|
503
504
|
},
|
|
504
505
|
{
|
|
505
506
|
"name": "@octanejs/tanstack-form",
|
|
506
|
-
"version": "0.0.
|
|
507
|
+
"version": "0.0.17",
|
|
507
508
|
"category": "Forms and content",
|
|
508
509
|
"upstream": { "package": "@tanstack/react-form", "version": "1.33.2" },
|
|
509
510
|
"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.",
|
|
@@ -517,7 +518,7 @@
|
|
|
517
518
|
},
|
|
518
519
|
{
|
|
519
520
|
"name": "@octanejs/tanstack-hotkeys",
|
|
520
|
-
"version": "0.0.
|
|
521
|
+
"version": "0.0.12",
|
|
521
522
|
"category": "UI and interaction",
|
|
522
523
|
"upstream": { "package": "@tanstack/react-hotkeys", "version": "0.10.0" },
|
|
523
524
|
"surface": "Complete: the full upstream hook surface (`useHotkey`, `useHotkeys`, `useHeldKeys`, `useHeldKeyCodes`, `useKeyHold`, `useHotkeySequence`, `useHotkeySequences`, `useHotkeyRecorder`, `useHotkeySequenceRecorder`, `useHotkeyRegistrations`) plus `HotkeysProvider`/`useHotkeysContext`/`useDefaultHotkeysOptions`, re-exporting the framework-agnostic `@tanstack/hotkeys@0.8.0` core unchanged; store subscriptions go through `@octanejs/tanstack-store`.",
|
|
@@ -529,7 +530,7 @@
|
|
|
529
530
|
},
|
|
530
531
|
{
|
|
531
532
|
"name": "@octanejs/tanstack-pacer",
|
|
532
|
-
"version": "0.0.
|
|
533
|
+
"version": "0.0.12",
|
|
533
534
|
"category": "UI and interaction",
|
|
534
535
|
"upstream": { "package": "@tanstack/react-pacer", "version": "0.22.1" },
|
|
535
536
|
"surface": "Complete: every upstream hook family — debouncer (`useDebouncer`, `useDebouncedState`, `useDebouncedValue`, `useDebouncedCallback`), throttler, rate-limiter, queuer, batcher, and their async variants (async-debouncer, async-throttler, async-rate-limiter, async-queuer, async-batcher) — plus `PacerProvider`/`usePacerContext`/`useDefaultPacerOptions`, the per-instance `Subscribe` render-prop component, and the upstream subpath exports (`/debouncer`, `/async-retryer`, `/types`, `/utils`, ...), re-exporting the framework-agnostic `@tanstack/pacer@0.21.1` core unchanged.",
|
|
@@ -541,7 +542,7 @@
|
|
|
541
542
|
},
|
|
542
543
|
{
|
|
543
544
|
"name": "@octanejs/tanstack-query",
|
|
544
|
-
"version": "0.1.
|
|
545
|
+
"version": "0.1.22",
|
|
545
546
|
"category": "AI, data, and routing",
|
|
546
547
|
"upstream": { "package": "@tanstack/react-query", "version": "5.101.3" },
|
|
547
548
|
"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.",
|
|
@@ -553,7 +554,7 @@
|
|
|
553
554
|
},
|
|
554
555
|
{
|
|
555
556
|
"name": "@octanejs/tanstack-router",
|
|
556
|
-
"version": "0.1.
|
|
557
|
+
"version": "0.1.22",
|
|
557
558
|
"category": "AI, data, and routing",
|
|
558
559
|
"upstream": { "package": "@tanstack/react-router", "version": "1.170.18" },
|
|
559
560
|
"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.",
|
|
@@ -567,7 +568,7 @@
|
|
|
567
568
|
},
|
|
568
569
|
{
|
|
569
570
|
"name": "@octanejs/tanstack-router-ssr-query",
|
|
570
|
-
"version": "0.0.
|
|
571
|
+
"version": "0.0.12",
|
|
571
572
|
"category": "AI, data, and routing",
|
|
572
573
|
"upstream": { "package": "@tanstack/react-router-ssr-query", "version": "1.167.1" },
|
|
573
574
|
"surface": "Complete: `setupRouterSsrQueryIntegration` (the package's only export) delegating to `@tanstack/router-ssr-query-core@1.169.1`, with the QueryClientProvider Wrap composition on Octane.",
|
|
@@ -577,7 +578,7 @@
|
|
|
577
578
|
},
|
|
578
579
|
{
|
|
579
580
|
"name": "@octanejs/tanstack-store",
|
|
580
|
-
"version": "0.0.
|
|
581
|
+
"version": "0.0.17",
|
|
581
582
|
"category": "Shared state",
|
|
582
583
|
"upstream": { "package": "@tanstack/react-store", "version": "0.11.0" },
|
|
583
584
|
"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.",
|
|
@@ -589,7 +590,7 @@
|
|
|
589
590
|
},
|
|
590
591
|
{
|
|
591
592
|
"name": "@octanejs/tanstack-table",
|
|
592
|
-
"version": "0.1.
|
|
593
|
+
"version": "0.1.20",
|
|
593
594
|
"category": "Data-heavy screens",
|
|
594
595
|
"upstream": { "package": "@tanstack/react-table", "version": "9.0.0-beta.58" },
|
|
595
596
|
"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.",
|
|
@@ -602,7 +603,7 @@
|
|
|
602
603
|
},
|
|
603
604
|
{
|
|
604
605
|
"name": "@octanejs/tanstack-virtual",
|
|
605
|
-
"version": "0.1.
|
|
606
|
+
"version": "0.1.20",
|
|
606
607
|
"category": "Data-heavy screens",
|
|
607
608
|
"upstream": { "package": "@tanstack/react-virtual", "version": "3.14.5" },
|
|
608
609
|
"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.",
|
|
@@ -614,7 +615,7 @@
|
|
|
614
615
|
},
|
|
615
616
|
{
|
|
616
617
|
"name": "@octanejs/tauri",
|
|
617
|
-
"version": "0.0.
|
|
618
|
+
"version": "0.0.6",
|
|
618
619
|
"category": "Desktop",
|
|
619
620
|
"upstream": { "package": "@tauri-apps/api", "version": "2.11.1" },
|
|
620
621
|
"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.",
|
|
@@ -632,7 +633,7 @@
|
|
|
632
633
|
},
|
|
633
634
|
{
|
|
634
635
|
"name": "@octanejs/testing-library",
|
|
635
|
-
"version": "0.1.
|
|
636
|
+
"version": "0.1.20",
|
|
636
637
|
"category": "Styling, tests, and devtools",
|
|
637
638
|
"upstream": { "package": "@testing-library/react", "version": "unpinned" },
|
|
638
639
|
"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.",
|
|
@@ -645,7 +646,7 @@
|
|
|
645
646
|
},
|
|
646
647
|
{
|
|
647
648
|
"name": "@octanejs/three",
|
|
648
|
-
"version": "0.1.
|
|
649
|
+
"version": "0.1.16",
|
|
649
650
|
"category": "Web 3D",
|
|
650
651
|
"upstream": { "package": "@react-three/fiber", "version": "9.6.1 (2a528745)" },
|
|
651
652
|
"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.",
|
|
@@ -666,7 +667,7 @@
|
|
|
666
667
|
},
|
|
667
668
|
{
|
|
668
669
|
"name": "@octanejs/tiptap",
|
|
669
|
-
"version": "0.0.
|
|
670
|
+
"version": "0.0.17",
|
|
670
671
|
"category": "Forms and content",
|
|
671
672
|
"upstream": { "package": "@tiptap/react", "version": "3.28.0" },
|
|
672
673
|
"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.",
|
|
@@ -683,7 +684,7 @@
|
|
|
683
684
|
},
|
|
684
685
|
{
|
|
685
686
|
"name": "@octanejs/usehooks-ts",
|
|
686
|
-
"version": "0.0.
|
|
687
|
+
"version": "0.0.4",
|
|
687
688
|
"category": "UI and interaction",
|
|
688
689
|
"upstream": {
|
|
689
690
|
"package": "usehooks-ts",
|
|
@@ -701,7 +702,7 @@
|
|
|
701
702
|
},
|
|
702
703
|
{
|
|
703
704
|
"name": "@octanejs/valtio",
|
|
704
|
-
"version": "0.1.
|
|
705
|
+
"version": "0.1.6",
|
|
705
706
|
"category": "Shared state",
|
|
706
707
|
"upstream": { "package": "valtio", "version": "2.3.2" },
|
|
707
708
|
"surface": "The framework-agnostic `valtio/vanilla` core and `valtio/vanilla/utils` are re-exported verbatim; `useSnapshot` and the `useProxy` utility are ported to Octane.",
|
|
@@ -713,7 +714,7 @@
|
|
|
713
714
|
},
|
|
714
715
|
{
|
|
715
716
|
"name": "@octanejs/visx",
|
|
716
|
-
"version": "0.1.
|
|
717
|
+
"version": "0.1.17",
|
|
717
718
|
"category": "Data-heavy screens",
|
|
718
719
|
"upstream": { "package": "@visx/visx", "version": "4.0.0 + master@485c035" },
|
|
719
720
|
"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.",
|
|
@@ -729,7 +730,7 @@
|
|
|
729
730
|
},
|
|
730
731
|
{
|
|
731
732
|
"name": "@octanejs/wagmi",
|
|
732
|
-
"version": "0.0.
|
|
733
|
+
"version": "0.0.3",
|
|
733
734
|
"category": "Web3",
|
|
734
735
|
"upstream": { "package": "wagmi", "version": "3.7.4" },
|
|
735
736
|
"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.",
|
|
@@ -745,7 +746,7 @@
|
|
|
745
746
|
},
|
|
746
747
|
{
|
|
747
748
|
"name": "@octanejs/zustand",
|
|
748
|
-
"version": "0.1.
|
|
749
|
+
"version": "0.1.22",
|
|
749
750
|
"category": "Shared state",
|
|
750
751
|
"upstream": { "package": "zustand", "version": "5.0.14" },
|
|
751
752
|
"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).",
|
package/src/kernel/command.js
CHANGED
|
@@ -18,6 +18,9 @@
|
|
|
18
18
|
* @property {CommandEntry[]} [subcommands]
|
|
19
19
|
* @property {boolean} [requiresProject] refuse to run outside a package.json,
|
|
20
20
|
* for commands that write into one
|
|
21
|
+
* @property {boolean} [passthrough] read the tokens after a bare `--` as
|
|
22
|
+
* `input.rest`. Without it they are a usage error rather than a silent drop,
|
|
23
|
+
* on the same reasoning as an unknown flag
|
|
21
24
|
* @property {(ctx: import('./context.js').Ctx, input: CommandInput) => Promise<CommandResult>} [run]
|
|
22
25
|
*/
|
|
23
26
|
|
package/src/kernel/main.js
CHANGED
|
@@ -109,6 +109,20 @@ async function dispatch(argv, options) {
|
|
|
109
109
|
return EXIT.OK;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
+
// A command that has not asked for `rest` would drop these on the floor. That
|
|
113
|
+
// is the same failure the parser refuses for an unknown flag, and it arrives
|
|
114
|
+
// here by an ordinary route: npm eats the `--` and forwards what follows, so
|
|
115
|
+
// `npm create octane app -- --template spa` is correct and the identical line
|
|
116
|
+
// under pnpm or yarn hands the `--` straight through. Dropped silently, the
|
|
117
|
+
// run then fails saying --template is required, naming the one flag that was
|
|
118
|
+
// in fact supplied.
|
|
119
|
+
if (parsed.rest.length > 0 && !module.passthrough) {
|
|
120
|
+
throw usageError(
|
|
121
|
+
`Unexpected arguments after --: ${parsed.rest.join(' ')}`,
|
|
122
|
+
'npm needs `--` to forward flags. pnpm and yarn forward them already, so drop it there.',
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
|
|
112
126
|
// Commands that write into a project need one to exist. Without this they
|
|
113
127
|
// fail deep inside an fs call with a raw ENOENT stack.
|
|
114
128
|
if (module.requiresProject && ctx.project().manifestPath === null) {
|