-
Notifications
You must be signed in to change notification settings - Fork 1
Add a Typesense provider layer #74
Copy link
Copy link
Open
Labels
ai: needs humanEscalated - a human must review or decideEscalated - a human must review or decidefeatureNew feature or capabilityNew feature or capabilitypriority: lowLow priorityLow priorityrepo: kirchDev/duxt
Description
Activity
Metadata
Metadata
Assignees
Labels
ai: needs humanEscalated - a human must review or decideEscalated - a human must review or decidefeatureNew feature or capabilityNew feature or capabilitypriority: lowLow priorityLow priorityrepo: kirchDev/duxt
Before you start
What problem are you trying to solve?
duxt will expose normalized, build-time search records through #16. A site that already runs Typesense needs an official way to consume those records without recreating duxt's source, version, locale, and generated-section logic.
The built-in search decision in #33 must remain independent: Typesense is an opt-in provider for consumers that choose to operate or buy the service.
Proposed solution
Provide a Typesense provider layer that consumes
duxt:search:recordsafter #16 lands.It should let a consumer synchronize the complete current record set to a Typesense collection during its build, with stable record identity and removal of records no longer present in a later build. Searchable content and filterable provenance must preserve the common contract: URL, title, normalized plaintext, source, version, and locale.
The provider layer owns its credentials, service configuration, synchronization policy, and browser search integration. duxt itself gains no Typesense SDK, runtime hook, or service dependency.
Alternatives considered
Additional context
duxt:search:records.Decided (refinement pass, 2026-09-11):
@kirchdev/duxt-typesense, in its own repository. It consumes the public hook but is not a workspace package or optional export of@kirchdev/duxt.duxt:search:recordshas landed; GitHub records this as a native “blocked by Decide the extension surface: hooks, plugins, or neither #16” dependency.@kirchdev/duxtremains free of the Typesense SDK, credentials, runtime hooks, and service configuration. Those are exclusively the companion layer’s responsibility.