diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-09-07 00:48:55 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-09-07 00:48:55 +0200 |
| commit | a36080742287bad8f657f688d7fec0022dd696a1 (patch) | |
| tree | 3da5c9eedb9c0d2f22967ebf61bd777e32c7bb5e /packages/meshbay-hub/src/meshbay_hub/static/locales | |
| parent | 6828e64a256caea3c4e51829ae1aa09dfa725324 (diff) | |
| download | meshbay-a36080742287bad8f657f688d7fec0022dd696a1.tar.gz | |
feat(client): HelloWorld, the reference application
Every other test of the plugin architecture reads source for the *absence* of
app names. That proves nobody wrote a special case for Videos; it cannot prove
a genuinely new application works, because there was no new application.
This is one. It stores directories, appears as a tab, has a settings pane and
lists files, and the node has never heard its name outside a single allow-list
entry. Two files and one registry line, which is the claim
`docs/refactor-groups.md` §4.1 makes.
It ships hidden behind `?dev=1` (`dev: true` in the registry, the same opt-in
shape as transport.js's `?trace=1`). Registering it normally would put a toy
app in every operator's group; not registering it would prove nothing, since
registration is exactly what is claimed to be sufficient.
**Adding it found two places where the claim was nearly true rather than true,
and both are fixed by making the code less app-specific:**
`group-settings.js` fell back to the whole registry when a group had no
`enabled_apps` yet — which would have turned a hidden app on for everyone. It
asks `availableApps()` now.
`group-page.js` wrote out `videoDirectories` / `musicDirectories` /
`photoDirectories` by hand, so a fifth app would have needed that file edited.
It derives `<key>Directories` from the registry.
Neither was found by reading; both were found by adding the app, which is the
whole reason it exists.
Verified in a real Electron window as well as by the tests: hidden by default,
present with the flag, offered its own settings section, and listing exactly
the files under its configured folder and its subfolders — not the ones beside
it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011pvMdvLBG92jyhvD5pD6us
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales')
10 files changed, 60 insertions, 0 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 c6d0331..d05d3a3 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js @@ -126,6 +126,12 @@ export default { 'group.tab_video': 'Videos', 'group.tab_music': 'Musik', 'group.tab_photos': 'Fotos', + 'group.tab_helloworld': 'HelloWorld', + 'helloworld.greeting': 'Hallo, Welt!', + 'helloworld.no_directory': 'Noch kein Ordner gewählt. Wählen Sie einen in den Einstellungen.', + 'helloworld.counted': '{n} Datei(en)', + 'settings_app.helloworld_directory_label': 'Ordner', + 'settings_app.helloworld_directory_hint': 'Der Ordner, den diese Referenz-App auflistet. Sie zeigt, dass eine neue Anwendung nichts außer ihren beiden Dateien braucht.', 'group.tab_members': 'Mitglieder', 'group.tab_settings': "Einstellungen", 'members.danger_leave_hint': "Sie verlieren den Zugriff auf die Dateien und den Chat dieser Gruppe.", 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 0831aa3..6dbb70f 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js @@ -127,6 +127,12 @@ export default { 'group.tab_video': 'Videos', 'group.tab_music': 'Music', 'group.tab_photos': 'Photos', + 'group.tab_helloworld': 'HelloWorld', + 'helloworld.greeting': 'Hello, World!', + 'helloworld.no_directory': 'No folder chosen yet. Pick one in Settings.', + 'helloworld.counted': '{n} file(s)', + 'settings_app.helloworld_directory_label': 'Folder', + 'settings_app.helloworld_directory_hint': 'The folder this reference app lists. It exists to show that adding an application needs nothing beyond its own two files.', 'group.tab_members': 'Members', 'group.tab_settings': "Settings", 'members.danger_leave_hint': "You will lose access to this group's files and chat.", 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 18570cc..aa950cc 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js @@ -124,6 +124,12 @@ export default { 'group.tab_video': 'Vídeos', 'group.tab_music': 'Música', 'group.tab_photos': 'Fotos', + 'group.tab_helloworld': 'HelloWorld', + 'helloworld.greeting': '¡Hola, mundo!', + 'helloworld.no_directory': 'Aún no hay carpeta elegida. Elige una en los ajustes.', + 'helloworld.counted': '{n} archivo(s)', + 'settings_app.helloworld_directory_label': 'Carpeta', + 'settings_app.helloworld_directory_hint': 'La carpeta que lista esta aplicación de referencia. Existe para mostrar que añadir una aplicación no requiere más que sus dos archivos.', 'group.tab_members': 'Miembros', 'group.tab_settings': "Ajustes", 'members.danger_leave_hint': "Perderá el acceso a los archivos y al chat de este grupo.", 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 65021e3..daa9f94 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js @@ -125,6 +125,12 @@ export default { 'group.tab_video': 'Vidéos', 'group.tab_music': 'Musique', 'group.tab_photos': 'Photos', + 'group.tab_helloworld': 'HelloWorld', + 'helloworld.greeting': 'Bonjour, monde !', + 'helloworld.no_directory': 'Aucun dossier choisi. Choisissez-en un dans les réglages.', + 'helloworld.counted': '{n} fichier(s)', + 'settings_app.helloworld_directory_label': 'Dossier', + 'settings_app.helloworld_directory_hint': 'Le dossier que cette application de référence liste. Elle existe pour montrer qu\'ajouter une application ne demande rien de plus que ses deux fichiers.', 'group.tab_members': 'Membres', 'group.tab_settings': "Paramètres", 'members.danger_leave_hint': "Vous perdrez l’accès aux fichiers et à la discussion de ce groupe.", 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 7f58764..364c26c 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js @@ -125,6 +125,12 @@ export default { 'group.tab_video': 'Video', 'group.tab_music': 'Musica', 'group.tab_photos': 'Foto', + 'group.tab_helloworld': 'HelloWorld', + 'helloworld.greeting': 'Ciao, mondo!', + 'helloworld.no_directory': 'Nessuna cartella scelta. Scegline una nelle impostazioni.', + 'helloworld.counted': '{n} file', + 'settings_app.helloworld_directory_label': 'Cartella', + 'settings_app.helloworld_directory_hint': 'La cartella elencata da questa applicazione di riferimento. Serve a mostrare che aggiungerne una non richiede altro che i suoi due file.', 'group.tab_members': 'Membri', 'group.tab_settings': "Impostazioni", 'members.danger_leave_hint': "Perderai l’accesso ai file e alla chat di questo gruppo.", 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 0e2dd42..f778fc4 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js @@ -123,6 +123,12 @@ export default { 'group.tab_video': '動画', 'group.tab_music': '音楽', 'group.tab_photos': '写真', + 'group.tab_helloworld': 'HelloWorld', + 'helloworld.greeting': 'ハロー、ワールド!', + 'helloworld.no_directory': 'フォルダーが未選択です。設定で選んでください。', + 'helloworld.counted': '{n} 件のファイル', + 'settings_app.helloworld_directory_label': 'フォルダー', + 'settings_app.helloworld_directory_hint': 'この参照アプリが一覧表示するフォルダーです。アプリの追加に必要なのは自身の 2 つのファイルだけであることを示すために存在します。', 'group.tab_members': 'メンバー', 'group.tab_settings': "設定", 'members.danger_leave_hint': "このグループのファイルとチャットにアクセスできなくなります。", 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 9f74e19..6e6842e 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js @@ -126,6 +126,12 @@ export default { 'group.tab_video': "Video's", 'group.tab_music': 'Muziek', 'group.tab_photos': "Foto's", + 'group.tab_helloworld': 'HelloWorld', + 'helloworld.greeting': 'Hallo, wereld!', + 'helloworld.no_directory': 'Nog geen map gekozen. Kies er een bij Instellingen.', + 'helloworld.counted': '{n} bestand(en)', + 'settings_app.helloworld_directory_label': 'Map', + 'settings_app.helloworld_directory_hint': 'De map die deze referentie-app toont. Hij bestaat om te laten zien dat een app toevoegen niets meer vergt dan zijn eigen twee bestanden.', 'group.tab_members': 'Leden', 'group.tab_settings': "Instellingen", 'members.danger_leave_hint': "U verliest de toegang tot de bestanden en de chat van deze groep.", 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 083d72d..c8cbd16 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js @@ -130,6 +130,12 @@ export default { 'group.tab_video': 'Wideo', 'group.tab_music': 'Muzyka', 'group.tab_photos': 'Zdjęcia', + 'group.tab_helloworld': 'HelloWorld', + 'helloworld.greeting': 'Witaj, świecie!', + 'helloworld.no_directory': 'Nie wybrano folderu. Wybierz go w ustawieniach.', + 'helloworld.counted': 'Plików: {n}', + 'settings_app.helloworld_directory_label': 'Folder', + 'settings_app.helloworld_directory_hint': 'Folder wypisywany przez tę aplikację referencyjną. Istnieje, aby pokazać, że dodanie aplikacji nie wymaga niczego poza jej dwoma plikami.', 'group.tab_members': 'Członkowie', 'group.tab_settings': "Ustawienia", 'members.danger_leave_hint': "Utracisz dostęp do plików i czatu tej grupy.", 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 bdc6c3b..6eb2242 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 @@ -126,6 +126,12 @@ export default { 'group.tab_video': 'Vídeos', 'group.tab_music': 'Música', 'group.tab_photos': 'Fotos', + 'group.tab_helloworld': 'HelloWorld', + 'helloworld.greeting': 'Olá, mundo!', + 'helloworld.no_directory': 'Nenhuma pasta escolhida. Escolha uma nas configurações.', + 'helloworld.counted': '{n} arquivo(s)', + 'settings_app.helloworld_directory_label': 'Pasta', + 'settings_app.helloworld_directory_hint': 'A pasta que este aplicativo de referência lista. Existe para mostrar que adicionar um aplicativo não exige nada além de seus dois arquivos.', 'group.tab_members': 'Membros', 'group.tab_settings': "Configurações", 'members.danger_leave_hint': "Você perderá o acesso aos arquivos e ao chat deste grupo.", 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 0a1fe1a..044611e 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 @@ -123,6 +123,12 @@ export default { 'group.tab_video': '视频', 'group.tab_music': '音乐', 'group.tab_photos': '照片', + 'group.tab_helloworld': 'HelloWorld', + 'helloworld.greeting': '你好,世界!', + 'helloworld.no_directory': '尚未选择文件夹。请在设置中选择。', + 'helloworld.counted': '{n} 个文件', + 'settings_app.helloworld_directory_label': '文件夹', + 'settings_app.helloworld_directory_hint': '该参考应用所列出的文件夹。它的存在是为了说明:新增一个应用只需要它自己的两个文件。', 'group.tab_members': '成员', 'group.tab_settings': "设置", 'members.danger_leave_hint': "您将无法再访问该群组的文件和聊天。", |