feat: backend-powered search (full-text, semantic, hybrid) #14
Labels
No labels
domain:backend
domain:devops
domain:frontend
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/pal-e-docs-app#14
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Lineage
plan-pal-e-docs→ Phase F1 (phase-pal-e-docs-frontend-search)Repo
forgejo_admin/pal-e-appUser Story
As a platform operator
I want to search all pal-e-docs notes by content from the browser
So that I can find SOPs, phases, and conventions without relying on MCP tools or client-side title filtering
Context
The pal-e-docs backend has a full search API (
GET /notes/search) supporting three modes:ts_headline()snippetsAll three modes are tested and deployed. The frontend currently only has client-side title/slug filtering on
/notes. This issue exposes the backend search through a dedicated/searchroute.The API response shape is:
Query params:
q(required),mode(keyword|semantic|hybrid, default keyword),alpha(0-1 hybrid weight),note_type,project,limit(1-100, default 10).File Targets
Files to create:
src/routes/search/+page.svelte— search results pagesrc/routes/search/+page.server.ts— server-side search callFiles to modify:
src/lib/api.ts— addsearchNotes()functionsrc/routes/+layout.svelte— add search input to nav bar + Cmd+K keyboard shortcutFiles NOT to touch:
src/lib/components/blocks/— block renderers are unrelatedsrc/routes/boards/— board pages are separate scopeAcceptance Criteria
/search?q=deploy+recovery, then I see ranked search results with headline snippets/search?q=myquery/orCmd+Kanywhere, then the search input in the nav bar is focused/notes/{slug})typeColor()and project name if availableTest Expectations
?q=test&mode=semanticand see same resultsConstraints
#0a0a14background,#e94560accent,gray-300texttypeColor()fromsrc/lib/colors.tsfor note_type badges — do NOT duplicate color mappings+page.server.ts(not client-side fetch) — match existing patternheadlinefield from API contains**word**bold markers (from ts_headline) — render as<strong>tagshybridfor best resultsChecklist
Closes #1Related
phase-pal-e-docs-frontend-search— plan phase in pal-e-docsplan-pal-e-docs— parent plan