Skip to content

History

Revisions

  • docs: update Navigation-Plugin for #524 (forceDeactivate default, RouterError sync) Aligns wiki with plugin changes introduced in #524: - Configuration Options table: `forceDeactivate` default flipped from `true` to `false`. Added migration note for apps that relied on the old bypass. Configuration example updated to reflect the new contract. - "CANNOT_DEACTIVATE auto-rollback" edge-case rewritten as "CANNOT_DEACTIVATE / RouterError URL sync" — explains the new syncUrlToRouterState path: on any RouterError the plugin calls browser.navigate(url, {history:"replace"}) to the current router state, keeping URL and state consistent in a single visible transition. Explains why manual sync is used instead of Navigation API's native rollback on intercept rejection (headless/cross-origin reliability). - "Error recovery" entry updated to reflect the shared syncUrlToRouterState helper now used by both paths (RouterError and non-RouterError). From navigation-plugin review (.claude/review-2026-04-23.md, HIGH #1 + #2).

    @greydragon888 greydragon888 committed Apr 23, 2026
    00df8bd
  • docs: add Desktop Integration guide (#496) - Desktop-Integration.md: plugin × runtime compatibility matrix (10 OS rows × 4 plugins), Electron custom protocol (app://) and file:// + hash fallback setup, Tauri v2 setup with Navigation API caveat and WebKit OS matrix, plugin selection decision tree, three troubleshooting scenarios, links to 5 runnable examples. - _Sidebar.md: +1 link in integration guides group (Ink + Desktop are both non-browser runtime guides). - Navigation-Plugin.md: new Desktop compatibility section explaining the WebView OS matrix + fail-fast factory behavior on unsupported WebKit.

    @greydragon888 greydragon888 committed Apr 22, 2026
    1a3e5e5
  • docs: scroll restoration wiki + React-Integration guide (#497) - New page: Scroll-Restoration — behavior matrix, per-framework opt-in snippets, virtual-scroll recipe, "why not a plugin" rationale. - New page: React-Integration — covers three entry points (main/legacy/ink), <Activity> keepAlive, native useSyncExternalStore, memo'd <Link>. Fills the long-standing gap (Sidebar linked to a missing page). - RouterProvider: props table extended with scrollRestoration, per-framework snippets. - 5 Integration guides (Preact/Solid/Svelte/Vue/Angular) + Ink: scrollRestoration section with framework-specific reactivity notes (Solid non-reactive onMount, Svelte $derived+untrack, Vue reactive watch, Angular bootstrap snapshot). - Home: link under Concepts. - Accessibility: new "Relationship to Scroll Restoration" section — ortho interaction. - recipes: existing home-grown scroll-restore recipe marked as reference; points to the builtin utility. - _Sidebar: Scroll Restoration entry under DOM Utilities.

    @greydragon888 greydragon888 committed Apr 21, 2026
    9335369
  • docs: document search-schema-plugin queryParams coercion alignment Add a schema <-> queryParams coercion table: z.boolean() vs booleanFormat, z.number() vs numberFormat, z.array(...) vs arrayFormat. Flag the common gotcha (z.boolean() + booleanFormat:"none" silently failing), recommend z.coerce.* fallback, and point to the params contract in the core README.

    @greydragon888 greydragon888 committed Apr 20, 2026
    4d6fc5e
  • docs: document memory-plugin hardening Tighten maxHistoryLength validation (rejects NaN, +/-Infinity, fractional, negative). Document optimistic index updates with revert on guard rejection and goGeneration counter protecting against superseded reverts. Note idempotent teardown and silent no-op for invalid go() deltas.

    @greydragon888 greydragon888 committed Apr 20, 2026
    a2c17bb
  • docs: document plugin DI factory hooks (lifecycle onNavigate, ssr-data loaders) Lifecycle plugin: add onNavigate (fires on every successful navigation to the route -- entry AND param-change), switch hook fields to LifecycleHookFactory (router, getDependency) => hook, document orthogonal dispatch between onEnter/onStay/onNavigate, and add a "recommended default" section. ssr-data-plugin: switch to DataLoaderFactoryMap -- each loader is now a factory (router, getDependency) => (params) => Promise<unknown>. Document plugin-registration-time validation.

    @greydragon888 greydragon888 committed Apr 20, 2026
    fe8fd9a
  • docs: document params undefined-strip contract in navigate/buildPath/State/forwardState Document that undefined values in params are stripped at the core boundary (including after forwardState interceptors) while null, "", 0, and false remain distinct defined values. Mark State.transition as required (no longer optional), reorder TransitionMeta fields, and add an onNavigate-style route-entry vs param-change comparison using transition.from.

    @greydragon888 greydragon888 committed Apr 20, 2026
    568febf
  • docs: document @real-router/sources caching and shared error boundary Rewrite sources-package.md and sources-adapter-guide.md around cached vs non-cached factories. Document new shared sources (getTransitionSource, getErrorSource, createDismissableError, createActiveNameSelector), the canonicalJson-based param cache key, and no-op destroy() semantics for cached wrappers. Remove useStableValue references from BaseLink / Solid / Svelte / Vue integration guides -- params stabilization lives in sources now. Note RouterErrorBoundary is unified across all adapters via createDismissableError. Add Solid use:link accessor gotcha, useRouteStore / useRouteNodeStore, routeSelector in RouterContext, and await router.start() fix.

    @greydragon888 greydragon888 committed Apr 20, 2026
    70c89fe
  • docs: document Angular adapter across the wiki (6-adapter parity) Add Angular integration sections to framework-agnostic pages: imports, hook variants (injectRouter, injectNavigator, injectRoute, injectRouteNode), RouterErrorBoundary / RouteView directive patterns, realLink directive, NavigationAnnouncer component, and provideRealRouter. Update adapter count references (5 -> 6). Also includes useRoute<P> generic for typed params and a [real - router] -> [router] typo fix in RouterProvider.

    @greydragon888 greydragon888 committed Apr 20, 2026
    e0bf82e
  • docs: add Ink (terminal UI) integration guide Cover the `@real-router/react/ink` subpath: InkRouterProvider, InkLink, composing routes via useRouteNode + switch, memory-plugin for history, testing with ink-testing-library, and constraints vs the DOM adapter. Link the new page from _Sidebar.md.

    @greydragon888 greydragon888 committed Apr 20, 2026
    58dda64
  • Extend #483 doc coverage: error-codes, plugin-architecture, breaking-changes, start - error-codes.md: ROUTE_NOT_FOUND section now explains strict-mode entry points (start / popstate / navigate) emit the same code via emitTransitionError; added onTransitionError observe recipe - plugin-architecture.md: new "Emitting Errors from a Plugin" section documenting api.emitTransitionError(error) — signature, semantics, when to use (strict-mode unmatched URLs, custom navigation handlers) - breaking-changes.md: new HIGH entry under browser-plugin — strict-mode popstate no longer silently redirects; applies to navigation-plugin and hash-plugin too; includes incidental CANNOT_DEACTIVATE URL-rollback fix and userland migration snippet - start.md: allowNotFound: false behaviour clarified — defaultRoute is not consulted as an implicit fallback, matches popstate / Navigation API events; cross-reference to RouterOptions migration snippet

    @greydragon888 greydragon888 committed Apr 20, 2026
    17c8681
  • Sync docs with #483 — strict-mode unified behavior - RouterOptions.md: allowNotFound section rewritten to describe the unified contract across start() / popstate / Navigation API events, with the userland migration snippet. Cross-Field Constraints section updated — the dead-end case `{ allowNotFound: false, defaultRoute: "" }` is resolved because defaultRoute is no longer consulted as an implicit fallback. - browser-plugin.md / Navigation-Plugin.md / hash-plugin.md: Edge Cases section updated with the new strict-mode semantics (emit $$error → URL rollback → router state unchanged). - migration-guide.md: new "Strict Mode no longer silently redirects" section with the userland migration snippet. Files also contain pre-existing in-progress edits to unrelated sections.

    @greydragon888 greydragon888 committed Apr 20, 2026
    be1dabb
  • Sync docs with #471 cross-field validation + trailingSlash fix - RouterOptions.md: fix rewritePathOnMatch default (false → true), document trailingSlash "preserve" + rewrite interaction, add "Cross-Field Constraints" section summarizing validation-plugin diagnostics (warnListeners>maxListeners, defaultRoute target, callbackIgnoresLevel without callback) - validation-plugin.md: expand "What It Validates" Options row with cross-field checks, retrospective list gains static defaultRoute resolution and cross-field options, explain why callback defaultRoute is runtime-checked instead of registration-probed - navigateToDefault.md: document sync-throw → Promise.reject contract and callback-returns-unknown-route behavior - matchPath.md: correct trailing-slash normalization blurb — "preserve" is the default and keeps the source path's trailing-slash choice

    @greydragon888 greydragon888 committed Apr 19, 2026
    6fb10ea
  • docs: add State Context (state.context.*) across all plugin pages Updated State.md, plugin-architecture.md, Navigation-Plugin.md, ssr-data-plugin.md, browser-plugin.md, memory-plugin.md, persistent-params-plugin.md, ssr.md with claim-based API documentation.

    @greydragon888 greydragon888 committed Apr 11, 2026
    fd0fa78
  • docs: update leave, navigation-lifecycle, subscribe for async subscribeLeave

    @greydragon888 greydragon888 committed Apr 8, 2026
    8a53fa6
  • docs: unify FSM terminology TRANSITIONING → TRANSITION_STARTED

    @greydragon888 greydragon888 committed Apr 8, 2026
    4289c7e
  • docs: add isLeaveApproved, fix method counts, update adapter tables and examples

    @greydragon888 greydragon888 committed Apr 8, 2026
    05744ca
  • docs: deprecate BaseLink/ConnectedLink, fix Link.md props and references

    @greydragon888 greydragon888 committed Apr 8, 2026
    8df8371
  • docs: add memory-plugin wiki page - New page: memory-plugin.md — full API reference, history management, guard interaction, comparison table with browser/hash plugins, use cases - _Sidebar.md: add Memory Plugin and Search Schema links

    @greydragon888 greydragon888 committed Apr 6, 2026
    cf23969
  • docs: add search-schema-plugin wiki page and cross-references (#333) - New page: search-schema-plugin.md — full API reference, validation pipeline, error recovery, strict mode, defaultParams integration, LIFO ordering - Route.md: add searchSchema to Route interface and properties table - plugin-architecture.md: document forwardState + add interceptor usage - validation-plugin.md: add comparison table with search-schema-plugin

    @greydragon888 greydragon888 committed Apr 6, 2026
    115d2e5
  • docs: add preload-plugin wiki page

    @greydragon888 greydragon888 committed Apr 5, 2026
    3cdf871
  • docs: add lifecycle-plugin wiki article (#394) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @greydragon888 greydragon888 committed Apr 3, 2026
    e81293d
  • docs: document subscribeLeave + LEAVE_APPROVED across wiki (#391) - New article: leave.md — full subscribeLeave() API docs, framework examples, comparison with subscribe() - Rewrite stale atomicity claims in navigation-lifecycle.md - Rewrite "no per-route leave event" in navigation-lifecycle.md - Rewrite "only correct place for per-route leave/enter logic" in plugin-architecture.md - Add onTransitionLeaveApprove to plugin hooks, event tables - Update getNavigator, useNavigator, useRouter with new methods - Add glossary entries, recipes, framework integration examples - Update _Sidebar.md with leave.md link Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @greydragon888 greydragon888 committed Apr 3, 2026
    071dd0a
  • docs(wiki): remove State.meta from framework hooks and migration guide useRoute/useRouterTransition: remove meta from State interface examples. migration-guide: update makeState description in plugin API table.

    @greydragon888 greydragon888 committed Mar 29, 2026
    a542980
  • docs(wiki): remove State.meta from State consumer pages navigateToState: update buildState description in related methods table. areStatesEqual: remove meta from State interface example. shouldUpdateNode: fix reload example to use transition field instead of meta. replaceRoutes: update comment about state revalidation.

    @greydragon888 greydragon888 committed Mar 29, 2026
    4b8e433
  • docs(wiki): remove State.meta from State builder pages buildState: remove meta.id from comparison table, options from plugin example. buildNavigationState: remove meta from returned State example. matchPath: update signature State<P, MP> → State<P>, remove meta from return example.

    @greydragon888 greydragon888 committed Mar 29, 2026
    44523a0
  • docs(wiki): rewrite makeState — remove forceId, document WeakMap storage Remove forceId parameter, meta.id concept, State<P, MP> generic. Update browser-plugin examples to reflect simplified popstate reconstruction without meta.id preservation.

    @greydragon888 greydragon888 committed Mar 29, 2026
    0e81005
  • docs(wiki): remove MP generic from State getter pages getState/getPreviousState: State<P, MP> → State<P>, remove meta from type examples.

    @greydragon888 greydragon888 committed Mar 29, 2026
    a8fa7b8
  • docs(wiki): remove State.meta from type definition pages State no longer carries a meta field — segment parameter metadata is stored internally in a WeakMap.

    @greydragon888 greydragon888 committed Mar 29, 2026
    491e5f2
  • docs: add Data Loading guide — architecture, simple plugin, compose yourself, @nanostores/query

    @greydragon888 greydragon888 committed Mar 29, 2026
    16b2118