From eba2e6b14484c124f3c87ff95cd7ee640833e5d3 Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Fri, 28 Aug 2026 15:35:20 +0200 Subject: feat(hub): cross-group search with reuse of existing views MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Search page fetches indexes from all groups, then renders consolidated entries through the existing FilesPanel, VideoApp, and MusicApp components — no reimplemented views. Groups appear as top-level directories in the file browser; video/music entries use a synthetic root with per-entry transport refs for thumbnails and metadata across groups. Music player lifted to app.js with getConnection(groupId) for cross-group playback. Connection pool (max 3, LRU eviction) manages lazy WebRTC connections. All 10 locales updated with search keys. Co-Authored-By: Claude Opus 4.6 --- .../meshbay-hub/src/meshbay_hub/static/locales/en.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales/en.js') diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js index 7cb3769..06d54a7 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js @@ -603,15 +603,15 @@ export default { 'search.title': 'Search Files', 'search.placeholder': 'Search across all groups...', 'search.no_results': 'No files match your search.', - 'search.synced': 'synced {ago}', - 'search.cache_note': 'Search reads what each group looked like the last time you ' - + 'opened it. Open a group to bring its files up to date here.', 'search.col_group': 'Group', - 'search.result_count': { - one: '{n} file found', - other: '{n} files found', - }, - 'search.hint': 'Search file names across all cached group indexes.', + 'search.result_count': { one: '{n} file found', other: '{n} files found' }, + 'search.hint': 'Type to search file names across all your groups.', + 'search.indexing': 'Indexing {done} / {total} groups...', + 'search.unreachable': { one: '{n} group unreachable', other: '{n} groups unreachable' }, + 'search.view_files': 'Files', + 'search.view_videos': 'Videos', + 'search.view_music': 'Music', + 'search.connecting': 'Connecting to groups...', // Presence, chat paging, leaving a group, the profile page 'presence.online': 'A node serving this group is online', -- cgit v1.2.3