diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-08-28 15:35:20 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-08-28 15:35:58 +0200 |
| commit | eba2e6b14484c124f3c87ff95cd7ee640833e5d3 (patch) | |
| tree | ba109b719c879df3ea40090e4fd6ff80b403a3a5 /packages/meshbay-hub/src/meshbay_hub/static/locales | |
| parent | e6917349c47cc4b7e04e1ecfab27c5291a5fe522 (diff) | |
| download | meshbay-eba2e6b14484c124f3c87ff95cd7ee640833e5d3.tar.gz | |
feat(hub): cross-group search with reuse of existing views
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 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales')
10 files changed, 71 insertions, 45 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js index f8daa16..e64d910 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js @@ -522,16 +522,18 @@ export default { 'search.title': 'Dateien suchen', 'search.placeholder': 'In allen Gruppen suchen …', 'search.no_results': 'Keine Datei entspricht Ihrer Suche.', - 'search.synced': 'synchronisiert {ago}', - 'search.cache_note': 'Die Suche stützt sich auf den Stand, den jede Gruppe beim ' - + 'letzten Öffnen hatte. Öffnen Sie eine Gruppe, um ihre Dateien hier zu ' - + 'aktualisieren.', 'search.col_group': 'Gruppe', 'search.result_count': { one: '{n} Datei gefunden', other: '{n} Dateien gefunden', }, - 'search.hint': 'Durchsucht Dateinamen in allen zwischengespeicherten Gruppenindexen.', + 'search.hint': 'Tippen Sie einen Begriff ein, um in allen Ihren Gruppen zu suchen.', + 'search.indexing': 'Indexierung von {done} / {total} Gruppen …', + 'search.unreachable': { one: '{n} Gruppe nicht erreichbar', other: '{n} Gruppen nicht erreichbar' }, + 'search.view_files': 'Dateien', + 'search.view_videos': 'Videos', + 'search.view_music': 'Musik', + 'search.connecting': 'Verbindung zu Gruppen wird hergestellt …', // Presence, chat paging, leaving a group, the profile page 'presence.online': 'Ein Node, der diese Gruppe hostet, ist online', 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', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js index ba64ee0..af211c6 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js @@ -518,15 +518,18 @@ export default { 'search.title': 'Buscar archivos', 'search.placeholder': 'Buscar en todos los grupos...', 'search.no_results': 'Ningún archivo coincide con su búsqueda.', - 'search.synced': 'sincronizado {ago}', - 'search.cache_note': 'La búsqueda usa el estado que tenía cada grupo la última vez ' - + 'que lo abrió. Abra un grupo para poner sus archivos al día aquí.', 'search.col_group': 'Grupo', 'search.result_count': { one: '{n} archivo encontrado', other: '{n} archivos encontrados', }, - 'search.hint': 'Busca nombres de archivo en todos los índices de grupo en caché.', + 'search.hint': 'Escriba un término para buscar en todos sus grupos.', + 'search.indexing': 'Indexando {done} / {total} grupos…', + 'search.unreachable': { one: '{n} grupo inalcanzable', other: '{n} grupos inalcanzables' }, + 'search.view_files': 'Archivos', + 'search.view_videos': 'Vídeos', + 'search.view_music': 'Música', + 'search.connecting': 'Conectando a los grupos…', // Presence, chat paging, leaving a group, the profile page 'presence.online': 'Un node que sirve este grupo está en línea', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js index 60e56c9..92ab2b9 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js @@ -522,15 +522,18 @@ export default { 'search.title': 'Rechercher des fichiers', 'search.placeholder': 'Rechercher dans tous les groupes...', 'search.no_results': 'Aucun fichier ne correspond à votre recherche.', - 'search.synced': 'synchronisé {ago}', - 'search.cache_note': 'La recherche s’appuie sur l’état de chaque groupe lors de ' - + 'votre dernière visite. Ouvrez un groupe pour mettre ses fichiers à jour ici.', 'search.col_group': 'Groupe', 'search.result_count': { one: '{n} fichier trouvé', other: '{n} fichiers trouvés', }, - 'search.hint': 'Recherche les noms de fichiers dans tous les index de groupe en cache.', + 'search.hint': 'Saisissez un terme pour rechercher dans tous vos groupes.', + 'search.indexing': 'Indexation de {done} / {total} groupes…', + 'search.unreachable': { one: '{n} groupe injoignable', other: '{n} groupes injoignables' }, + 'search.view_files': 'Fichiers', + 'search.view_videos': 'Vidéos', + 'search.view_music': 'Musique', + 'search.connecting': 'Connexion aux groupes…', // Presence, chat paging, leaving a group, the profile page 'presence.online': 'Un node servant ce groupe est en ligne', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js index ccf54ed..201fdfc 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js @@ -520,15 +520,18 @@ export default { 'search.title': 'Cerca file', 'search.placeholder': 'Cerca in tutti i gruppi...', 'search.no_results': 'Nessun file corrisponde alla sua ricerca.', - 'search.synced': 'sincronizzato {ago}', - 'search.cache_note': 'La ricerca si basa su com’era ogni gruppo l’ultima volta che ' - + 'lo ha aperto. Apra un gruppo per aggiornarne qui i file.', 'search.col_group': 'Gruppo', 'search.result_count': { one: '{n} file trovato', other: '{n} file trovati', }, - 'search.hint': 'Cerca i nomi dei file in tutti gli indici di gruppo in cache.', + 'search.hint': 'Digita un termine per cercare in tutti i tuoi gruppi.', + 'search.indexing': 'Indicizzazione di {done} / {total} gruppi…', + 'search.unreachable': { one: '{n} gruppo non raggiungibile', other: '{n} gruppi non raggiungibili' }, + 'search.view_files': 'File', + 'search.view_videos': 'Video', + 'search.view_music': 'Musica', + 'search.connecting': 'Connessione ai gruppi…', // Presence, chat paging, leaving a group, the profile page 'presence.online': 'Un node che ospita questo gruppo è online', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js index 2ea90cb..a421e25 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js @@ -509,14 +509,17 @@ export default { 'search.title': 'ファイルを検索', 'search.placeholder': 'すべてのグループから検索…', 'search.no_results': '検索条件に一致するファイルはありません。', - 'search.synced': '{ago}に同期', - 'search.cache_note': '検索は、各グループを最後に開いたときの状態を参照します。' - + 'グループを開くと、そのファイルがここで最新になります。', 'search.col_group': 'グループ', 'search.result_count': { other: '{n} 個のファイルが見つかりました', }, - 'search.hint': 'キャッシュされたすべてのグループインデックスからファイル名を検索します。', + 'search.hint': '入力してすべてのグループを検索します。', + 'search.indexing': '{done} / {total} グループをインデックス中…', + 'search.unreachable': { other: '{n} グループに接続できません' }, + 'search.view_files': 'ファイル', + 'search.view_videos': '動画', + 'search.view_music': '音楽', + 'search.connecting': 'グループに接続中…', // Presence, chat paging, leaving a group, the profile page 'presence.online': 'このグループをホストする node が稼働中です', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js index 4b7ff12..b2e3b24 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js @@ -522,15 +522,18 @@ export default { 'search.title': 'Bestanden zoeken', 'search.placeholder': 'In alle groepen zoeken...', 'search.no_results': 'Geen bestand voldoet aan uw zoekopdracht.', - 'search.synced': 'gesynchroniseerd {ago}', - 'search.cache_note': 'De zoekopdracht gaat uit van hoe elke groep eruitzag toen u ' - + 'die voor het laatst opende. Open een groep om de bestanden hier bij te werken.', 'search.col_group': 'Groep', 'search.result_count': { one: '{n} bestand gevonden', other: '{n} bestanden gevonden', }, - 'search.hint': 'Zoekt bestandsnamen in alle groepsindexen in de cache.', + 'search.hint': 'Typ een zoekterm om in al uw groepen te zoeken.', + 'search.indexing': '{done} / {total} groepen indexeren…', + 'search.unreachable': { one: '{n} groep onbereikbaar', other: '{n} groepen onbereikbaar' }, + 'search.view_files': 'Bestanden', + 'search.view_videos': 'Video\'s', + 'search.view_music': 'Muziek', + 'search.connecting': 'Verbinding maken met groepen…', // Presence, chat paging, leaving a group, the profile page 'presence.online': 'Een node die deze groep host is online', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js index 611c412..2c2bacd 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js @@ -539,9 +539,6 @@ export default { 'search.title': 'Wyszukiwanie plików', 'search.placeholder': 'Szukaj we wszystkich grupach...', 'search.no_results': 'Żaden plik nie pasuje do zapytania.', - 'search.synced': 'zsynchronizowano {ago}', - 'search.cache_note': 'Wyszukiwanie opiera się na stanie każdej grupy z chwili jej ' - + 'ostatniego otwarcia. Otwarcie grupy odświeża tutaj jej pliki.', 'search.col_group': 'Grupa', 'search.result_count': { one: 'Znaleziono {n} plik', @@ -549,7 +546,13 @@ export default { many: 'Znaleziono {n} plików', other: 'Znaleziono {n} pliku', }, - 'search.hint': 'Przeszukuje nazwy plików we wszystkich zbuforowanych indeksach grup.', + 'search.hint': 'Wpisz frazę, aby wyszukać we wszystkich grupach.', + 'search.indexing': 'Indeksowanie {done} / {total} grup…', + 'search.unreachable': { one: '{n} grupa nieosiągalna', few: '{n} grupy nieosiągalne', many: '{n} grup nieosiągalnych', other: '{n} grupy nieosiągalnej' }, + 'search.view_files': 'Pliki', + 'search.view_videos': 'Filmy', + 'search.view_music': 'Muzyka', + 'search.connecting': 'Łączenie z grupami…', // Presence, chat paging, leaving a group, the profile page 'presence.online': 'Node hostujący tę grupę jest dostępny', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js index 74e5047..96dbc75 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js @@ -519,15 +519,18 @@ export default { 'search.title': 'Pesquisar arquivos', 'search.placeholder': 'Pesquisar em todos os grupos...', 'search.no_results': 'Nenhum arquivo corresponde à sua pesquisa.', - 'search.synced': 'sincronizado {ago}', - 'search.cache_note': 'A pesquisa usa o estado de cada grupo na última vez que você o ' - + 'abriu. Abra um grupo para atualizar os arquivos dele aqui.', 'search.col_group': 'Grupo', 'search.result_count': { one: '{n} arquivo encontrado', other: '{n} arquivos encontrados', }, - 'search.hint': 'Pesquisa nomes de arquivo em todos os índices de grupo em cache.', + 'search.hint': 'Digite um termo para pesquisar em todos os seus grupos.', + 'search.indexing': 'Indexando {done} / {total} grupos…', + 'search.unreachable': { one: '{n} grupo inacessível', other: '{n} grupos inacessíveis' }, + 'search.view_files': 'Arquivos', + 'search.view_videos': 'Vídeos', + 'search.view_music': 'Música', + 'search.connecting': 'Conectando aos grupos…', // Presence, chat paging, leaving a group, the profile page 'presence.online': 'Um node que hospeda este grupo está on-line', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js index d2e6b48..45d89f7 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js @@ -495,14 +495,17 @@ export default { 'search.title': '搜索文件', 'search.placeholder': '在所有群组中搜索…', 'search.no_results': '没有文件符合您的搜索。', - 'search.synced': '{ago}同步', - 'search.cache_note': '搜索依据的是您上次打开每个群组时的状态。' - + '打开某个群组,即可在此更新它的文件。', 'search.col_group': '群组', 'search.result_count': { other: '找到 {n} 个文件', }, - 'search.hint': '在所有已缓存的群组索引中搜索文件名。', + 'search.hint': '输入关键词搜索所有群组。', + 'search.indexing': '正在索引 {done} / {total} 个群组…', + 'search.unreachable': { other: '{n} 个群组无法连接' }, + 'search.view_files': '文件', + 'search.view_videos': '视频', + 'search.view_music': '音乐', + 'search.connecting': '正在连接群组…', // Presence, chat paging, leaving a group, the profile page 'presence.online': '有一个服务本群组的 node 在线', |