Override Harmony's search partials so results tagged by the wiki plugin (isWikiArticle + wikiPath) show a gold Wiki badge and link to /wiki/... instead of /post/..., in the quick-search dropdown and both /search views. Forum results render unchanged; posts_list_item is shared with account and group pages, where the flags are never set and the conditional no-ops. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3.8 KiB
Wiki Badge in Global Search Results — Theme Design
Date: 2026-07-02 Status: Approved for planning Scope: theme-only slice of the cross-repo "wiki in global search" work.
Companion spec (drives this): sow-nodebb-plugin-wiki →
docs/superpowers/specs/2026-07-02-wiki-global-search-design.md. The wiki
plugin makes wiki articles searchable and tags each wiki result with
isWikiArticle: true and wikiPath (/wiki/...). This spec covers only the
rendering of those tagged results in the theme.
Problem
The theme currently ships no search-result overrides — global search
(quick-search dropdown + /search page) renders with stock NodeBB templates.
Once the wiki plugin surfaces wiki articles in search, those results need to be
visually marked as wiki and to link to /wiki/... instead of /topic/....
Input contract (from the wiki plugin)
Each search result object may carry:
isWikiArticle—truefor wiki article hits.wikiPath— the/wiki/...URL for the article.
Forum results do not carry these; they render unchanged.
Design
Mark wiki result rows and point them at the wiki URL, in both surfaces:
/searchpage — the full results list.- Quick-search dropdown — the navbar type-ahead results.
For each row where isWikiArticle is set:
- show a wiki icon/badge (e.g. a book/wiki icon plus a small "Wiki" label),
consistent with existing theme iconography (see
GAME_ICONS.md); - set the result's link
hreftowikiPath.
Rows stay in the single relevance-ranked list returned by search; no grouping or reordering.
Approach — decide during planning
Two ways to inject this; pick the smaller one that works against the pinned NodeBB version:
- Template override (preferred if a small partial isolates the row): add a
theme override of the NodeBB search result partial(s) — the quick-search
results partial and the
/searchresults partial — with a conditional badge andwikiPathlink. Keeps logic declarative and server-rendered. - Client-side decoration (fallback): in
public/client.js, after results render, decorate rows flaggedisWikiArticle(badge + rewrite href). Smaller surface if the stock partials are awkward to override cleanly, but relies on the data being present in the client payload.
Planning resolves which, based on the actual stock partials in the pinned NodeBB/theme base.
Resolved (2026-07-03): template override. Harmony's row markup is small and
self-contained, so the theme overrides partials/posts_list_item.tpl (/search
posts view — shared with account/groups pages, where the wiki flags are never
set and the conditional no-ops), partials/search-results.tpl (/search topics
view), and partials/quick-search-results.tpl (dropdown). No client-side
decoration needed.
Styling
Add badge styles in the theme SCSS (scss/, wired via theme.scss), matching
existing badge/pill conventions. No new dependencies.
Non-goals
- No search behavior changes — indexing, matching, ranking, and result tagging all live in the wiki plugin.
- No grouping/separate section — inline badge only.
- No changes to non-search surfaces.
Testing / verification
- Visual: run the dev stack (
docker-compose.dev.ymlinsow-nodebb), search a term matching a wiki article, confirm the result shows the wiki badge and its link goes to/wiki/...; confirm forum results are unchanged. Check both the dropdown and the/searchpage. - Snapshot/DOM assertions only if the theme's existing test setup (
tests/) makes them cheap; otherwise rely on the visual check (badge/link is not complex logic).
Dependencies / sequencing
Depends on the wiki plugin emitting isWikiArticle + wikiPath on results.
Theme work can be built against a stubbed result but is only end-to-end
verifiable once the plugin side lands.