screentinker/frontend/js/i18n
screentinker 792b105035
feat(content): server-side search, type filter, and sort (#221)
Content discovery was client-side only, scoped to the items already rendered
on the current page — searching "logo" on page 1 couldn't find logos on page
2 or in another folder.

Server (GET /api/content):
- ?q= text search on filename (LIKE, workspace-wide — a search ignores the
  open folder so nothing is missed). LIKE metacharacters are escaped so a
  filename with % or _ matches literally.
- ?type=video|image|youtube|web — youtube (video/youtube) and web (other
  remote_url) are split from plain uploaded video/image so the four UI buckets
  map cleanly.
- ?sort=date_desc|date_asc|name|size — whitelisted (never interpolates user
  input into ORDER BY); default keeps the legacy newest-first ordering.

Frontend (content-library):
- Type filter + sort dropdowns; search debounced (300ms) and now hits the
  server instead of filtering the DOM.
- Result count shown while a search/type filter is active.
- en/es i18n.

api.getContent gains an opts arg ({q,type,sort}); folder_id is omitted while
searching to match the server's workspace-wide behaviour.

Test: content-search-filter-sort.test.js mounts the real router and covers
substring match, LIKE-escape (literal %), the type buckets, name/size sort,
the ORDER BY injection guard, and combined filters. Suite 541/541.

Closes #214

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 11:38:22 -05:00
..
de.js feat(widgets): directory-search widget (interactive search of a directory board, live-sync) (#188) 2026-07-15 08:00:22 -05:00
en.js feat(content): server-side search, type filter, and sort (#221) 2026-07-23 11:38:22 -05:00
es.js feat(content): server-side search, type filter, and sort (#221) 2026-07-23 11:38:22 -05:00
fr.js feat(widgets): directory-search widget (interactive search of a directory board, live-sync) (#188) 2026-07-15 08:00:22 -05:00
hi.js i18n: extract all strings, add 6 language translations, restructure i18n module 2026-04-29 19:25:22 -05:00
it.js feat(widgets): directory-search widget (interactive search of a directory board, live-sync) (#188) 2026-07-15 08:00:22 -05:00
pt.js feat(widgets): directory-search widget (interactive search of a directory board, live-sync) (#188) 2026-07-15 08:00:22 -05:00