Search: spinner indicator + performance note on client-side filtering (#32)
CI / test (pull_request) Successful in 19s
CI / docker (pull_request) Skipped

- Fix filter fetch to request limit=100 (API max) instead of 500, which
  the API silently clamped, so filtered results actually cover the fetch window.
- Document client-side filtering behavior and limits in README Performance Notes.
This commit is contained in:
2026-09-09 09:13:40 -05:00
parent 03bf327f6b
commit c288fc73a7
2 changed files with 11 additions and 1 deletions
+10
View File
@@ -79,6 +79,16 @@ curl -X POST http://localhost:8080/api/pastes \
Full API docs: [docs/API.md](docs/API.md). Full API docs: [docs/API.md](docs/API.md).
## Performance Notes
The history and Saved pages use client-side filtering: when you type in the
search box, the UI fetches the most recent 100 pastes (`limit=100`, the API
maximum) once per query and filters/sorts them in the browser. Pastes beyond
the newest 100 are not searched; a match count against the full total is still
shown. This keeps search instant without a server-side query. If large
instances need full search later, it will be a server-side endpoint (see
issue #32).
## CI ## CI
Gitea Actions workflow at `.gitea/workflows/ci.yml`: Gitea Actions workflow at `.gitea/workflows/ci.yml`:
+1 -1
View File
@@ -63,7 +63,7 @@ const PaletteTable = (() => {
const filtered = state.filter.length > 0; const filtered = state.filter.length > 0;
const off = (state.page - 1) * opts.perPage; const off = (state.page - 1) * opts.perPage;
const url = (filtered || state.sortKey) const url = (filtered || state.sortKey)
? opts.endpoint + '?limit=500&offset=0' ? opts.endpoint + '?limit=' + (opts.fetchLimit || 100) + '&offset=0'
: opts.endpoint + '?limit=' + opts.perPage + '&offset=' + off; : opts.endpoint + '?limit=' + opts.perPage + '&offset=' + off;
const res = await fetch(url); const res = await fetch(url);
const data = await res.json(); const data = await res.json();