Skip to content

feat: add full-text search via Awesomebar - #22

Merged
barredterra merged 7 commits into
version-15-hotfixfrom
search
Aug 23, 2026
Merged

feat: add full-text search via Awesomebar#22
barredterra merged 7 commits into
version-15-hotfixfrom
search

Conversation

@barredterra

@barredterra barredterra commented Aug 23, 2026

Copy link
Copy Markdown
Member

Depends on frappe/frappe#41931
Resolves #8

@barredterra barredterra linked an issue Aug 23, 2026 that may be closed by this pull request
@greptile-apps

greptile-apps Bot commented Aug 23, 2026

Copy link
Copy Markdown

Confidence Score: 4/5

The PR is not yet safe to merge because the documentation index can remain stale after an equal-size content deployment that preserves timestamps.

The current fingerprint compares only file paths, timestamps, and sizes, so changed Markdown bytes can remain invisible to cache invalidation and Awesome Bar can continue serving obsolete search results.

Files Needing Attention: compendium/search.py

Reviews (3): Last reviewed commit: "docs: translate the search page to Germa..." | Re-trigger Greptile

Comment thread compendium/search.py Outdated
Comment thread compendium/search.py Outdated
barredterra and others added 5 commits August 23, 2026 19:47
Alt text is prose the author wrote and the reader sees, but the Markdown
to plain text conversion dropped it along with every other attribute, so
a page could not be found by the caption of the screenshot it shows.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014kMagMiqVQbMRmbX2zuC5Q
The index was considered current while the number of Markdown files and
the newest mtime were unchanged. A deployment that preserves timestamps
(rsync -a, tar -xp) can replace a file with one whose mtime is older
than another file's, leaving the worker serving results from content
that no longer exists until the next unrelated change or a restart.

Fingerprint every file with its mtime and size instead. The walk and
the stat calls are the same, only the aggregation is gone.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014kMagMiqVQbMRmbX2zuC5Q
snippet() re-scans a page body, and the sorter builds one for every row
it orders, so a short prefix like "s" that matches the whole collection
paid for a preview of every page: 48 ms over 2000 pages, of which the
previews were 47 ms.

Rank first over the metadata alone, then fetch previews for the twenty
rows that survive the role filter: 4.8 ms for the same query. The rank
pass stays unbounded on purpose. Roles are filtered after ranking, so a
page the reader may open can rank below any number of pages they may
not, and a LIMIT on the rank query would silently drop it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014kMagMiqVQbMRmbX2zuC5Q
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014kMagMiqVQbMRmbX2zuC5Q
Comment thread compendium/search.py
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014kMagMiqVQbMRmbX2zuC5Q
@barredterra
barredterra merged commit f006a19 into version-15-hotfix Aug 23, 2026
4 checks passed
@barredterra
barredterra deleted the search branch August 23, 2026 18:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

No search across documentation pages

1 participant