Skip to content

rebrand: docker image mattfly/obsidian -> mattfly/obby#229

Open
matheusfillipe wants to merge 8 commits into
mainfrom
feat/h4ks-setup
Open

rebrand: docker image mattfly/obsidian -> mattfly/obby#229
matheusfillipe wants to merge 8 commits into
mainfrom
feat/h4ks-setup

Conversation

@matheusfillipe
Copy link
Copy Markdown
Contributor

@matheusfillipe matheusfillipe commented May 18, 2026

Rename in docker.yaml workflow + README badge + INSTALL.md + BUILD.md.

Companion repos: https://github.com/ObsidianIRC/obby-stack | https://github.com/ObsidianIRC/obby-helm

Summary by CodeRabbit

  • Chores

    • Updated Docker image/name references and install/build docs; added macOS entitlements, usage descriptions and minimum macOS version.
  • New Features

    • Copy selected chat content as Markdown (preserves authorship/time and grouping).
  • Bug Fixes

    • Fixed channel placeholder formatting.
    • Improved media-type probing for non-OK HTTP responses.
    • Added PDF error boundary and more reliable PDF viewer fallback.
  • Localization

    • Regenerated and updated translation catalogs and PO entries for many languages.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 18, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 77ce5239-3adc-4a6d-a6b7-edeb3f94719c

📥 Commits

Reviewing files that changed from the base of the PR and between 1c4064c and 5cd882e.

📒 Files selected for processing (23)
  • src/components/layout/ChannelMessageList.tsx
  • src/components/message/MessageItem.tsx
  • src/lib/chatMarkdownCopy.ts
  • src/locales/cs/messages.po
  • src/locales/de/messages.po
  • src/locales/en/messages.po
  • src/locales/es/messages.po
  • src/locales/fi/messages.po
  • src/locales/fr/messages.po
  • src/locales/it/messages.po
  • src/locales/ja/messages.po
  • src/locales/ko/messages.po
  • src/locales/nl/messages.po
  • src/locales/pl/messages.po
  • src/locales/pt/messages.po
  • src/locales/ro/messages.po
  • src/locales/ru/messages.po
  • src/locales/sv/messages.po
  • src/locales/tr/messages.po
  • src/locales/uk/messages.po
  • src/locales/zh-TW/messages.po
  • src/locales/zh/messages.po
  • tests/lib/chatMarkdownCopy.test.ts
🚧 Files skipped from review as they are similar to previous changes (6)
  • src/locales/de/messages.po
  • src/locales/fr/messages.po
  • src/locales/es/messages.po
  • src/locales/cs/messages.po
  • src/locales/fi/messages.po
  • src/locales/it/messages.po

📝 Walkthrough

Walkthrough

This PR renames Docker image references to obbyirc/obby, adds macOS entitlements and Info.plist usage strings, refactors HTTP media probing to return richer probe results and avoid trusting failed HEAD responses, changes ChatArea placeholder formatting to use channel names directly, regenerates locale catalogs, adds a PDF error boundary used in preview/modal components, and implements copy-as-markdown for chat selections.

Changes

Docker Hub image branding update

Layer / File(s) Summary
Docker Hub repository rename
.github/workflows/docker.yaml, BUILD.md, INSTALL.md, README.md
Workflow, build docs, install docs, and README badge updated to reference obbyirc/obby instead of mattfly/obsidian/obsidianirc.

macOS app permissions and entitlements

Layer / File(s) Summary
Audio and camera entitlements
src-tauri/Entitlements.plist, src-tauri/Info.plist, src-tauri/tauri.conf.json
Adds entitlements for audio-input and camera, NSMicrophone/NSCamera usage descriptions, and macOS bundle settings (minimumSystemVersion 12.0, entitlements file).

Media probe refactoring

Layer / File(s) Summary
HTTP response handling and fallback logic
src/lib/mediaProbe.ts
tryHttpFetch returns an HttpProbe with ok/status/contentType/contentLength; fetchContentType trusts HEAD only when successful and conditionally retries with ranged GET for 405/501, otherwise returns null for non-OK HEADs.

ChatArea placeholder and localization updates

Layer / File(s) Summary
Channel placeholder formatting
src/components/layout/ChatArea.tsx
Multiline chat placeholder now uses selectedChannel.name directly (removes forced strip-and-reprepend #).
Localization catalog updates
src/locales/*/messages.mjs, src/locales/*/messages.po
Regenerates .mjs locale payloads and updates .po entries to replace Message #{0} with Message {0} plus Enter/Shift+Enter variants; many new .po entries are untranslated (empty).

PDF rendering error boundary and integration

Layer / File(s) Summary
PDF error boundary and usage
src/components/PdfErrorBoundary.tsx, src/components/message/MediaPreview.tsx, src/components/ui/MediaViewerModal.tsx
Adds PDF_OPTIONS and PdfErrorBoundary; wraps react-pdf Document/Page in the boundary and passes shared options, enabling native <object> PDF fallback on render errors.

Chat selection copy-as-markdown

Layer / File(s) Summary
Copy-as-markdown implementation and wiring
src/lib/chatMarkdownCopy.ts, src/components/layout/ChannelMessageList.tsx, src/components/message/MessageItem.tsx
Adds selection-to-markdown utilities, exposes data-md-* attrs on message rows, and intercepts copy to write a grouped markdown transcript when appropriate.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • ValwareIRC

Poem

🐰 I hopped through Docker tags and docs so spry,
Gave macOS a nod for mic and eye,
Probed media safer, HEADs now verified,
Channel names un-hashed, translations supplied,
PDFs guarded—if they fail, native sails I try.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Title check ⚠️ Warning The title describes rebranding a Docker image but does not capture the significant additional changes, particularly the macOS/iOS entitlements, platform improvements, and media/chat functionality enhancements. Update the title to reflect the main changes more accurately, such as: 'Add macOS entitlements, media probe improvements, chat markdown copy, and rebrand Docker image' or split into multiple PRs focusing on distinct feature areas.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed Docstring coverage is 83.33% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/h4ks-setup
⚔️ Resolve merge conflicts
  • Resolve merge conflict in branch feat/h4ks-setup

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

Pages Preview
Preview URL: https://feat-h4ks-setup.obsidianirc.pages.dev

Automated deployment preview for the PR in the Cloudflare Pages.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

🟡 Minor comments (23)
src/locales/de/messages.mjs-1-1 (1)

1-1: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

German catalog still ships English placeholders for the new channel-message keys.

de users will see mixed language (Message ...) for chat input placeholders. Please add German msgstr entries for the three new Message {0} variants in src/locales/de/messages.po and regenerate this catalog.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/de/messages.mjs` at line 1, The German locale is missing
translations for three new "Message {0}" placeholders causing English text to
appear; add German msgstr entries for the three keys (referenced in the compiled
catalog as the message IDs "mH+wEJ", "pqr+oY" and "z0DY9w") into
src/locales/de/messages.po with appropriate German strings (e.g. "Nachricht {0}"
variants matching context), then regenerate the de messages catalog so
src/locales/de/messages.mjs is rebuilt.
src/locales/cs/messages.po-1377-1390 (1)

1377-1390: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill Czech translations for new channel placeholder keys.

These three entries have empty msgstr, so Czech users will see English input placeholders after this change.

💡 Proposed translation patch
 msgid "Message {0}"
-msgstr ""
+msgstr "Zpráva {0}"

 msgid "Message {0} (Enter for new line, Shift+Enter to send)"
-msgstr ""
+msgstr "Zpráva {0} (Enter pro nový řádek, Shift+Enter pro odeslání)"

 msgid "Message {0} (Shift+Enter for new line)"
-msgstr ""
+msgstr "Zpráva {0} (Shift+Enter pro nový řádek)"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/cs/messages.po` around lines 1377 - 1390, The three placeholder
entries in src/locales/cs/messages.po (msgid "Message {0}", "Message {0} (Enter
for new line, Shift+Enter to send)", and "Message {0} (Shift+Enter for new
line)") have empty msgstr; update each msgstr with the Czech translations (e.g.
"Zpráva {0}", "Zpráva {0} (Enter pro nový řádek, Shift+Enter pro odeslání)", and
"Zpráva {0} (Shift+Enter pro nový řádek)") so Czech users see localized
placeholders in ChatArea.tsx.
src/locales/es/messages.mjs-1-1 (1)

1-1: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Spanish catalog still contains English strings for new channel placeholders.

The new Message {0} variants are left in English in the Spanish catalog payload, which creates inconsistent UI language.

Please translate these in src/locales/es/messages.po and recompile catalogs (rather than editing this generated .mjs directly).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/es/messages.mjs` at line 1, The Spanish catalog contains
untranslated English placeholders for "Message {0}" (see message keys "pqr+oY"
and "z0DY9w" which currently map to ["Message ",["0"]]); fix this by updating
the translations in src/locales/es/messages.po (replace the English "Message
{0}" variants with the Spanish equivalent), then recompile the locale catalogs
with the project's locale build/compile step so the generated
src/locales/es/messages.mjs is rebuilt (do not edit the .mjs directly).
src/locales/de/messages.po-1377-1390 (1)

1377-1390: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill the new German translations instead of leaving them empty.

These new entries are currently untranslated (msgstr ""), so German users will see fallback text for these placeholders.

💡 Suggested translations
 msgid "Message {0}"
-msgstr ""
+msgstr "Nachricht {0}"

 msgid "Message {0} (Enter for new line, Shift+Enter to send)"
-msgstr ""
+msgstr "Nachricht {0} (Enter für neue Zeile, Shift+Enter zum Senden)"

 msgid "Message {0} (Shift+Enter for new line)"
-msgstr ""
+msgstr "Nachricht {0} (Shift+Enter für neue Zeile)"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/de/messages.po` around lines 1377 - 1390, The three German msgstr
entries for the placeholders in the PO file are empty; update the msgstr for
each msgid to proper German translations: set msgstr for "Message {0}" to
something like "Nachricht {0}", for "Message {0} (Enter for new line,
Shift+Enter to send)" to "Nachricht {0} (Enter für neue Zeile, Shift+Enter zum
Senden)", and for "Message {0} (Shift+Enter for new line)" to "Nachricht {0}
(Shift+Enter für neue Zeile)"; edit the corresponding entries referenced by the
msgid strings in the file so German users no longer see fallback text.
src/locales/es/messages.po-1377-1390 (1)

1377-1390: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Complete the new Spanish translations before shipping.

Line 1380, Line 1385, and Line 1390 are empty msgstr values for newly introduced Message {0} variants. This will surface English strings in the Spanish UI.

Suggested translation patch
 msgid "Message {0}"
-msgstr ""
+msgstr "Mensaje {0}"

 msgid "Message {0} (Enter for new line, Shift+Enter to send)"
-msgstr ""
+msgstr "Mensaje {0} (Enter para nueva línea, Shift+Enter para enviar)"

 msgid "Message {0} (Shift+Enter for new line)"
-msgstr ""
+msgstr "Mensaje {0} (Shift+Enter para nueva línea)"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/es/messages.po` around lines 1377 - 1390, Three new Spanish
translations for the message placeholders are missing: fill the empty msgstr
entries for the three msgid values ("Message {0}", "Message {0} (Enter for new
line, Shift+Enter to send)", and "Message {0} (Shift+Enter for new line)") in
the PO file so the Spanish UI doesn't fall back to English; provide accurate
Spanish translations that preserve the {0} placeholder and keyboard instructions
(for example, "Mensaje {0}", "Mensaje {0} (Enter para nueva línea, Shift+Enter
para enviar)", and "Mensaje {0} (Shift+Enter para nueva línea)") and save the
updated msgstr values corresponding to each msgid.
src/locales/fi/messages.po-1377-1390 (1)

1377-1390: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill the new Finnish translations for channel message placeholders.

Line 1380, Line 1385, and Line 1390 are currently untranslated. Users will see English fallback text in Finnish locale.

Suggested translation patch
 msgid "Message {0}"
-msgstr ""
+msgstr "Viesti {0}"

 msgid "Message {0} (Enter for new line, Shift+Enter to send)"
-msgstr ""
+msgstr "Viesti {0} (Enter = uusi rivi, Shift+Enter = lähetä)"

 msgid "Message {0} (Shift+Enter for new line)"
-msgstr ""
+msgstr "Viesti {0} (Shift+Enter = uusi rivi)"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/fi/messages.po` around lines 1377 - 1390, Add Finnish
translations for the three msgid placeholders used in ChatArea.tsx
(selectedChannel.name): set msgstr for "Message {0}" to "Viesti {0}", for
"Message {0} (Enter for new line, Shift+Enter to send)" to "Viesti {0} (Enter
uudelle riville, Shift+Enter lähettää)" and for "Message {0} (Shift+Enter for
new line)" to "Viesti {0} (Shift+Enter uudelle riville)"; update the msgstr
entries in src/locales/fi/messages.po so Finnish users see localized
placeholders when ChatArea.tsx renders selectedChannel.name.
src/locales/fr/messages.mjs-1-1 (1)

1-1: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

French catalog still ships English Message {0} placeholders.

The new channel placeholder entries are untranslated in this compiled catalog, so French users will see English text.

Suggested target translations
-"Message {0}"
+"Message {0}"
→ "Message {0}"

-"Message {0} (Enter for new line, Shift+Enter to send)"
+"Message {0} (Entrée pour nouvelle ligne, Maj+Entrée pour envoyer)"

-"Message {0} (Shift+Enter for new line)"
+"Message {0} (Maj+Entrée pour nouvelle ligne)"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/fr/messages.mjs` at line 1, The compiled French messages blob
exported as messages contains leftover English placeholder strings for
new-channel/message placeholders; open the exported JSON in
src/locales/fr/messages.mjs (export const messages) and replace the untranslated
English entries (search for strings containing "Message {0}", "Message to",
"Message …" or other English words with placeholder arrays) with their proper
French translations while preserving the placeholder array structure (e.g. keep
[,["0"],] or [,["channel"],] tokens intact), then save/regenerate the compiled
JSON so the keys in the messages object (the existing identifiers like "ApSx0O",
"CHVRxG", etc.) map to French text.
src/locales/it/messages.po-1377-1390 (1)

1377-1390: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add Italian translations for the new channel placeholder strings.

Line 1379, Line 1384, and Line 1389 have empty msgstr, which causes English fallback in Italian for these ChatArea placeholders.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/it/messages.po` around lines 1377 - 1390, Add Italian
translations for the three empty msgstr entries corresponding to the ChatArea
channel placeholder strings; locate the msgid entries "Message {0}", "Message
{0} (Enter for new line, Shift+Enter to send)", and "Message {0} (Shift+Enter
for new line)" (placeholder {0}: selectedChannel.name, referenced in
src/components/layout/ChatArea.tsx) and fill each msgstr with the appropriate
Italian text (e.g., "Messaggio {0}", "Messaggio {0} (Invio per nuova riga,
Shift+Invio per inviare)", "Messaggio {0} (Shift+Invio per nuova riga)")
ensuring plural/format placeholders remain intact.
src/locales/fr/messages.po-1377-1390 (1)

1377-1390: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill missing French translations for new channel message placeholders.

Line 1379, Line 1384, and Line 1389 introduce new msgids but keep msgstr "", so French users will see English fallback for these inputs.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/fr/messages.po` around lines 1377 - 1390, The French locale file
has three untranslated msgid entries for the chat input placeholders—"Message
{0}", "Message {0} (Enter for new line, Shift+Enter to send)", and "Message {0}
(Shift+Enter for new line)"; open src/locales/fr/messages.po and replace the
empty msgstr "" values for those msgids with proper French translations (e.g.
"Message {0}" → "Message {0}", "Message {0} (Enter for new line, Shift+Enter to
send)" → "Message {0} (Entrée pour nouvelle ligne, Maj+Entrée pour envoyer)",
and "Message {0} (Shift+Enter for new line)" → "Message {0} (Maj+Entrée pour
nouvelle ligne)") or other approved copy, ensuring placeholders {0} remain
intact.
src/locales/it/messages.mjs-1-1 (1)

1-1: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Italian catalog ships English strings for the new Message {0} placeholders.

Line 1 includes untranslated values (e.g., Message {0} and its Enter/Shift+Enter variants), so the Italian UI regresses to English for these prompts. Please add Italian msgstr values in the PO source and regenerate this catalog.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/it/messages.mjs` at line 1, The Italian catalog contains English
placeholders for "Message {0}" variants—update the PO source with proper Italian
msgstr entries for the message keys found in the generated catalog (e.g.,
"pqr+oY", "mH+wEJ", "z0DY9w") and then regenerate the JSON catalog (messages) so
those keys render Italian strings such as "Messaggio {0}" and the correct
Enter/Shift+Enter variants.
src/locales/ja/messages.mjs-1-1 (1)

1-1: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Japanese catalog contains untranslated English for new ChatArea placeholders.

Line 1 includes English text for the new Message {0} variants, so Japanese users will see mixed-language input placeholders. Please translate in source PO and regenerate the catalog.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/ja/messages.mjs` at line 1, The JA catalog still contains English
for the new "Message {0}" placeholders (keys mH+wEJ, pqr+oY, z0DY9w — and any
similar "Message ",["0"] entries); update the source PO to provide Japanese
translations for those message strings (e.g. translate "Message {0} (Enter for
new line, Shift+Enter to send)" and "Message {0} (Shift+Enter for new line)" and
the bare "Message {0}") and then regenerate the messages.mjs so the JSON entries
for mH+wEJ, pqr+oY, z0DY9w (and any other Message... keys) contain the Japanese
text.
src/locales/ko/messages.po-1377-1390 (1)

1377-1390: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add Korean translations for the new channel placeholder prompts.

Line 1380, Line 1385, and Line 1390 are empty msgstr, which leaves these UI strings untranslated in Korean.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/ko/messages.po` around lines 1377 - 1390, The three Korean
translations for the channel placeholder prompts are missing; open the PO
entries corresponding to the msgid strings "Message {0}", "Message {0} (Enter
for new line, Shift+Enter to send)", and "Message {0} (Shift+Enter for new
line)" (referenced from src/components/layout/ChatArea.tsx) and populate their
msgstr values with appropriate Korean translations matching the placeholders
(keep {0} intact) so the UI shows localized placeholder text.
src/locales/ja/messages.po-1377-1390 (1)

1377-1390: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill the new Japanese placeholder translations before shipping.

Line 1380, Line 1385, and Line 1390 have empty msgstr, so these prompts will fall back to English in the Japanese UI.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/ja/messages.po` around lines 1377 - 1390, The three Japanese
translation entries for the ChatArea placeholder strings are empty—populate the
msgstr for the msgid values "Message {0}", "Message {0} (Enter for new line,
Shift+Enter to send)", and "Message {0} (Shift+Enter for new line)" in
src/locales/ja/messages.po so the Japanese UI doesn't fall back to English;
preserve the {0} placeholder and the keyboard-instruction text
(Enter/Shift+Enter) in natural Japanese while keeping the context (these are
used by src/components/layout/ChatArea.tsx).
src/locales/nl/messages.mjs-1-1 (1)

1-1: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Dutch catalog still ships English for the new Message {0} placeholders.

The new channel input placeholder keys are currently untranslated in this locale payload, so Dutch users will see English text for those prompts.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/nl/messages.mjs` at line 1, The Dutch locale still contains
English "Message " entries; locate the message keys "mH+wEJ", "pqr+oY" and
"z0DY9w" in the messages JSON and replace the English literal "Message " with
the Dutch translation "Bericht " while preserving the surrounding placeholder
arrays (e.g. ["0"], "(Enter for new line, Shift+Enter to send)", etc.); ensure
you update only the string values for those keys and keep the JSON structure
intact so channel input placeholders render in Dutch.
src/locales/nl/messages.po-1377-1390 (1)

1377-1390: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill the new Dutch ChatArea placeholder translations.

Line 1380, Line 1385, and Line 1390 are empty, so these prompts will fall back to English in the Dutch locale.

💬 Proposed translation patch
 msgid "Message {0}"
-msgstr ""
+msgstr "Bericht {0}"

 msgid "Message {0} (Enter for new line, Shift+Enter to send)"
-msgstr ""
+msgstr "Bericht {0} (Enter voor nieuwe regel, Shift+Enter om te verzenden)"

 msgid "Message {0} (Shift+Enter for new line)"
-msgstr ""
+msgstr "Bericht {0} (Shift+Enter voor nieuwe regel)"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/nl/messages.po` around lines 1377 - 1390, Add Dutch translations
for the three empty msgstr entries in src/locales/nl/messages.po corresponding
to the ChatArea placeholders: "Message {0}", "Message {0} (Enter for new line,
Shift+Enter to send)", and "Message {0} (Shift+Enter for new line)". Edit the
msgstr lines directly under each msgid and provide concise Dutch equivalents
that preserve the placeholder {0} and the keyboard hints (e.g., "Bericht {0}",
"Bericht {0} (Enter voor nieuwe regel, Shift+Enter om te verzenden)", "Bericht
{0} (Shift+Enter voor nieuwe regel)"), ensuring punctuation and placeholders
remain unchanged.
src/locales/pl/messages.po-1377-1390 (1)

1377-1390: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add Polish translations for the new channel placeholder strings.

Line 1380, Line 1385, and Line 1390 are empty, so Polish users will see English for these input placeholders.

💬 Proposed translation patch
 msgid "Message {0}"
-msgstr ""
+msgstr "Wiadomość {0}"

 msgid "Message {0} (Enter for new line, Shift+Enter to send)"
-msgstr ""
+msgstr "Wiadomość {0} (Enter — nowa linia, Shift+Enter — wyślij)"

 msgid "Message {0} (Shift+Enter for new line)"
-msgstr ""
+msgstr "Wiadomość {0} (Shift+Enter — nowa linia)"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/pl/messages.po` around lines 1377 - 1390, Fill the three empty
msgstr entries in src/locales/pl/messages.po for the ChatArea placeholders
(msgid "Message {0}", "Message {0} (Enter for new line, Shift+Enter to send)",
and "Message {0} (Shift+Enter for new line)") with Polish translations so the UI
shows Polish to users; for example set them to "Wiadomość {0}", "Wiadomość {0}
(Enter — nowa linia, Shift+Enter — wyślij)", and "Wiadomość {0} (Shift+Enter —
nowa linia)" respectively, ensuring the placeholders ({0}) are kept intact and
saved in the file.
src/locales/ru/messages.mjs-1-1 (1)

1-1: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Russian catalog still ships English for the new Message {0} placeholders.

The compiled payload includes English strings for the three new channel placeholder variants, so RU users will not get localized text for this path.

Please add Russian translations for these three entries in src/locales/ru/messages.po and regenerate the compiled catalog.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/ru/messages.mjs` at line 1, The compiled RU catalog still
contains English for the new "Message {0}" variants; update
src/locales/ru/messages.po to add Russian translations for the keys mH+wEJ,
pqr+oY and z0DY9w (the message placeholders that render "Message {0}" / "Message
{0} (Enter/Shift+Enter...)" ) and then regenerate the compiled catalog so
src/locales/ru/messages.mjs contains the localized Russian strings.
src/locales/ro/messages.po-1377-1390 (1)

1377-1390: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill missing Romanian translations for new channel placeholder strings.

msgstr is empty (Line 1380, Line 1385, Line 1390), so Romanian users will see English fallback for these prompts.

💡 Suggested fix
 msgid "Message {0}"
-msgstr ""
+msgstr "Mesaj {0}"

 msgid "Message {0} (Enter for new line, Shift+Enter to send)"
-msgstr ""
+msgstr "Mesaj {0} (Enter pentru linie nouă, Shift+Enter pentru trimitere)"

 msgid "Message {0} (Shift+Enter for new line)"
-msgstr ""
+msgstr "Mesaj {0} (Shift+Enter pentru linie nouă)"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/ro/messages.po` around lines 1377 - 1390, The three new
placeholder msgid strings used by ChatArea.tsx ("Message {0}", "Message {0}
(Enter for new line, Shift+Enter to send)", "Message {0} (Shift+Enter for new
line)") lack Romanian translations (empty msgstrs); open the locale PO entries
for those msgid values and provide appropriate Romanian msgstr values that
preserve the placeholder {0} and the keyboard instructions (e.g., translate
"Message" and the parenthetical guidance), ensuring plural/placeholder
formatting is unchanged and saving the updated msgstr lines for each
corresponding msgid.
src/locales/tr/messages.mjs-1-1 (1)

1-1: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Turkish compiled locale includes English fallback for new message placeholders.

Line 1 currently maps the new channel placeholder keys (pqr+oY, mH+wEJ, z0DY9w) to English text, which will surface mixed-language UI for tr.

Please add Turkish translations in the source .po catalog and regenerate this .mjs bundle.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/tr/messages.mjs` at line 1, The compiled Turkish bundle still
contains English fallbacks for keys pqr+oY, mH+wEJ and z0DY9w; update the
Turkish source .po catalog with proper Turkish translations for those message
IDs (and any new placeholders), then re-run the message build/regeneration step
that produces src/locales/tr/messages.mjs so the JSON.parse(...) output includes
the Turkish strings instead of English fallbacks.
src/locales/sv/messages.mjs-1-1 (1)

1-1: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Swedish bundle still ships English fallback for new “Message {0}” placeholders.

In Line 1, the compiled map includes English values for the new channel placeholder keys (pqr+oY, mH+wEJ, z0DY9w). This causes mixed-language UI in sv.

Please populate the Swedish translations in src/locales/sv/messages.po and regenerate this bundle.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/sv/messages.mjs` at line 1, The sv bundle contains English
fallbacks for the new message placeholders pqr+oY, mH+wEJ and z0DY9w; open
src/locales/sv/messages.po, add proper Swedish translations for those message
ids (the channel/message placeholders), then re-run the locale
compile/regeneration step you use to produce src/locales/sv/messages.mjs so the
JSON.parse map includes the Swedish strings instead of the English fallbacks.
src/locales/sv/messages.po-1377-1390 (1)

1377-1390: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add Swedish translations for the new channel placeholder strings.

Line 1380, Line 1385, and Line 1390 are empty, so Swedish users see English text in the input placeholder.

Suggested fix
 msgid "Message {0}"
-msgstr ""
+msgstr "Meddelande {0}"

 msgid "Message {0} (Enter for new line, Shift+Enter to send)"
-msgstr ""
+msgstr "Meddelande {0} (Enter för ny rad, Shift+Enter för att skicka)"

 msgid "Message {0} (Shift+Enter for new line)"
-msgstr ""
+msgstr "Meddelande {0} (Shift+Enter för ny rad)"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/sv/messages.po` around lines 1377 - 1390, The Swedish .po file is
missing translations for three new channel placeholder msgids used by
src/components/layout/ChatArea.tsx; add appropriate Swedish text into the
corresponding msgstr entries for "Message {0}", "Message {0} (Enter for new
line, Shift+Enter to send)", and "Message {0} (Shift+Enter for new line)" so the
placeholders are shown in Swedish instead of English.
src/locales/ru/messages.po-1377-1390 (1)

1377-1390: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill missing Russian translations for new ChatArea placeholders.

Line 1380, Line 1385, and Line 1390 have empty msgstr, so RU users will see English fallback in the message input placeholder.

Suggested fix
 msgid "Message {0}"
-msgstr ""
+msgstr "Сообщение {0}"

 msgid "Message {0} (Enter for new line, Shift+Enter to send)"
-msgstr ""
+msgstr "Сообщение {0} (Enter — новая строка, Shift+Enter — отправить)"

 msgid "Message {0} (Shift+Enter for new line)"
-msgstr ""
+msgstr "Сообщение {0} (Shift+Enter — новая строка)"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/ru/messages.po` around lines 1377 - 1390, The Russian .po file
has three empty translations for ChatArea placeholders—fill the msgstr for each
msgid ("Message {0}", "Message {0} (Enter for new line, Shift+Enter to send)",
and "Message {0} (Shift+Enter for new line)") with correct Russian equivalents
preserving the {0} placeholder (e.g., "Сообщение {0}" and variants that include
the keyboard hints in Russian), ensuring punctuation and placeholder placement
match the original strings so ChatArea.tsx displays localized placeholders.
src/locales/tr/messages.po-1377-1391 (1)

1377-1391: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Provide Turkish translations for channel message placeholders.

The three new message entries for channel input placeholders are currently untranslated (empty msgstr values), which will cause Turkish users to see English text or the message ID in the chat input field.

For consistency and a fully localized experience, follow the pattern established for private message placeholders at lines 1392-1406. Suggested translations:

  • Message {0}{0} kanalına mesaj or {0}'a mesaj
  • Message {0} (Enter for new line, Shift+Enter to send){0} kanalına mesaj (yeni satır için Enter, göndermek için Shift+Enter)
  • Message {0} (Shift+Enter for new line){0} kanalına mesaj (yeni satır için Shift+Enter)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/locales/tr/messages.po` around lines 1377 - 1391, Fill the empty msgstr
values for the three channel placeholder entries so Turkish users see localized
text: for msgid "Message {0}" set msgstr to a Turkish variant like "{0} kanalına
mesaj" (or "{0}'a mesaj"), for "Message {0} (Enter for new line, Shift+Enter to
send)" set msgstr to "{0} kanalına mesaj (yeni satır için Enter, göndermek için
Shift+Enter)", and for "Message {0} (Shift+Enter for new line)" set msgstr to
"{0} kanalına mesaj (yeni satır için Shift+Enter)"; follow the pattern used in
the nearby private message placeholders (lines around the existing entries) to
match punctuation and spacing.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src-tauri/tauri.conf.json`:
- Around line 35-38: The tauri config only sets "entitlements" under the macOS
bundle; add a "infoPlist" reference so Tauri can merge
NSMicrophoneUsageDescription/NSCameraUsageDescription into the app Info.plist.
Update the JSON bundle.macOS object to include an "infoPlist" key (e.g.,
"infoPlist": "./Info.plist") alongside "entitlements", and ensure your
Info.plist contains the NSMicrophoneUsageDescription and
NSCameraUsageDescription keys so the permission prompts have proper strings.

In `@src/locales/en/messages.po`:
- Around line 1376-1390: The i18n catalogs are out of sync (see messages in
src/locales/en/messages.po related to placeholders used in
src/components/layout/ChatArea.tsx like "Message {0}" variants); regenerate and
commit the updated message catalogs by running the extraction and compile
commands (run `npm run i18n:extract` then `npm run i18n:compile`), verify `git
diff --exit-code src/locales/en/messages.po` is clean, and commit the updated
.po/.json files so CI i18n checks pass.

---

Minor comments:
In `@src/locales/cs/messages.po`:
- Around line 1377-1390: The three placeholder entries in
src/locales/cs/messages.po (msgid "Message {0}", "Message {0} (Enter for new
line, Shift+Enter to send)", and "Message {0} (Shift+Enter for new line)") have
empty msgstr; update each msgstr with the Czech translations (e.g. "Zpráva {0}",
"Zpráva {0} (Enter pro nový řádek, Shift+Enter pro odeslání)", and "Zpráva {0}
(Shift+Enter pro nový řádek)") so Czech users see localized placeholders in
ChatArea.tsx.

In `@src/locales/de/messages.mjs`:
- Line 1: The German locale is missing translations for three new "Message {0}"
placeholders causing English text to appear; add German msgstr entries for the
three keys (referenced in the compiled catalog as the message IDs "mH+wEJ",
"pqr+oY" and "z0DY9w") into src/locales/de/messages.po with appropriate German
strings (e.g. "Nachricht {0}" variants matching context), then regenerate the de
messages catalog so src/locales/de/messages.mjs is rebuilt.

In `@src/locales/de/messages.po`:
- Around line 1377-1390: The three German msgstr entries for the placeholders in
the PO file are empty; update the msgstr for each msgid to proper German
translations: set msgstr for "Message {0}" to something like "Nachricht {0}",
for "Message {0} (Enter for new line, Shift+Enter to send)" to "Nachricht {0}
(Enter für neue Zeile, Shift+Enter zum Senden)", and for "Message {0}
(Shift+Enter for new line)" to "Nachricht {0} (Shift+Enter für neue Zeile)";
edit the corresponding entries referenced by the msgid strings in the file so
German users no longer see fallback text.

In `@src/locales/es/messages.mjs`:
- Line 1: The Spanish catalog contains untranslated English placeholders for
"Message {0}" (see message keys "pqr+oY" and "z0DY9w" which currently map to
["Message ",["0"]]); fix this by updating the translations in
src/locales/es/messages.po (replace the English "Message {0}" variants with the
Spanish equivalent), then recompile the locale catalogs with the project's
locale build/compile step so the generated src/locales/es/messages.mjs is
rebuilt (do not edit the .mjs directly).

In `@src/locales/es/messages.po`:
- Around line 1377-1390: Three new Spanish translations for the message
placeholders are missing: fill the empty msgstr entries for the three msgid
values ("Message {0}", "Message {0} (Enter for new line, Shift+Enter to send)",
and "Message {0} (Shift+Enter for new line)") in the PO file so the Spanish UI
doesn't fall back to English; provide accurate Spanish translations that
preserve the {0} placeholder and keyboard instructions (for example, "Mensaje
{0}", "Mensaje {0} (Enter para nueva línea, Shift+Enter para enviar)", and
"Mensaje {0} (Shift+Enter para nueva línea)") and save the updated msgstr values
corresponding to each msgid.

In `@src/locales/fi/messages.po`:
- Around line 1377-1390: Add Finnish translations for the three msgid
placeholders used in ChatArea.tsx (selectedChannel.name): set msgstr for
"Message {0}" to "Viesti {0}", for "Message {0} (Enter for new line, Shift+Enter
to send)" to "Viesti {0} (Enter uudelle riville, Shift+Enter lähettää)" and for
"Message {0} (Shift+Enter for new line)" to "Viesti {0} (Shift+Enter uudelle
riville)"; update the msgstr entries in src/locales/fi/messages.po so Finnish
users see localized placeholders when ChatArea.tsx renders selectedChannel.name.

In `@src/locales/fr/messages.mjs`:
- Line 1: The compiled French messages blob exported as messages contains
leftover English placeholder strings for new-channel/message placeholders; open
the exported JSON in src/locales/fr/messages.mjs (export const messages) and
replace the untranslated English entries (search for strings containing "Message
{0}", "Message to", "Message …" or other English words with placeholder arrays)
with their proper French translations while preserving the placeholder array
structure (e.g. keep [,["0"],] or [,["channel"],] tokens intact), then
save/regenerate the compiled JSON so the keys in the messages object (the
existing identifiers like "ApSx0O", "CHVRxG", etc.) map to French text.

In `@src/locales/fr/messages.po`:
- Around line 1377-1390: The French locale file has three untranslated msgid
entries for the chat input placeholders—"Message {0}", "Message {0} (Enter for
new line, Shift+Enter to send)", and "Message {0} (Shift+Enter for new line)";
open src/locales/fr/messages.po and replace the empty msgstr "" values for those
msgids with proper French translations (e.g. "Message {0}" → "Message {0}",
"Message {0} (Enter for new line, Shift+Enter to send)" → "Message {0} (Entrée
pour nouvelle ligne, Maj+Entrée pour envoyer)", and "Message {0} (Shift+Enter
for new line)" → "Message {0} (Maj+Entrée pour nouvelle ligne)") or other
approved copy, ensuring placeholders {0} remain intact.

In `@src/locales/it/messages.mjs`:
- Line 1: The Italian catalog contains English placeholders for "Message {0}"
variants—update the PO source with proper Italian msgstr entries for the message
keys found in the generated catalog (e.g., "pqr+oY", "mH+wEJ", "z0DY9w") and
then regenerate the JSON catalog (messages) so those keys render Italian strings
such as "Messaggio {0}" and the correct Enter/Shift+Enter variants.

In `@src/locales/it/messages.po`:
- Around line 1377-1390: Add Italian translations for the three empty msgstr
entries corresponding to the ChatArea channel placeholder strings; locate the
msgid entries "Message {0}", "Message {0} (Enter for new line, Shift+Enter to
send)", and "Message {0} (Shift+Enter for new line)" (placeholder {0}:
selectedChannel.name, referenced in src/components/layout/ChatArea.tsx) and fill
each msgstr with the appropriate Italian text (e.g., "Messaggio {0}", "Messaggio
{0} (Invio per nuova riga, Shift+Invio per inviare)", "Messaggio {0}
(Shift+Invio per nuova riga)") ensuring plural/format placeholders remain
intact.

In `@src/locales/ja/messages.mjs`:
- Line 1: The JA catalog still contains English for the new "Message {0}"
placeholders (keys mH+wEJ, pqr+oY, z0DY9w — and any similar "Message ",["0"]
entries); update the source PO to provide Japanese translations for those
message strings (e.g. translate "Message {0} (Enter for new line, Shift+Enter to
send)" and "Message {0} (Shift+Enter for new line)" and the bare "Message {0}")
and then regenerate the messages.mjs so the JSON entries for mH+wEJ, pqr+oY,
z0DY9w (and any other Message... keys) contain the Japanese text.

In `@src/locales/ja/messages.po`:
- Around line 1377-1390: The three Japanese translation entries for the ChatArea
placeholder strings are empty—populate the msgstr for the msgid values "Message
{0}", "Message {0} (Enter for new line, Shift+Enter to send)", and "Message {0}
(Shift+Enter for new line)" in src/locales/ja/messages.po so the Japanese UI
doesn't fall back to English; preserve the {0} placeholder and the
keyboard-instruction text (Enter/Shift+Enter) in natural Japanese while keeping
the context (these are used by src/components/layout/ChatArea.tsx).

In `@src/locales/ko/messages.po`:
- Around line 1377-1390: The three Korean translations for the channel
placeholder prompts are missing; open the PO entries corresponding to the msgid
strings "Message {0}", "Message {0} (Enter for new line, Shift+Enter to send)",
and "Message {0} (Shift+Enter for new line)" (referenced from
src/components/layout/ChatArea.tsx) and populate their msgstr values with
appropriate Korean translations matching the placeholders (keep {0} intact) so
the UI shows localized placeholder text.

In `@src/locales/nl/messages.mjs`:
- Line 1: The Dutch locale still contains English "Message " entries; locate the
message keys "mH+wEJ", "pqr+oY" and "z0DY9w" in the messages JSON and replace
the English literal "Message " with the Dutch translation "Bericht " while
preserving the surrounding placeholder arrays (e.g. ["0"], "(Enter for new line,
Shift+Enter to send)", etc.); ensure you update only the string values for those
keys and keep the JSON structure intact so channel input placeholders render in
Dutch.

In `@src/locales/nl/messages.po`:
- Around line 1377-1390: Add Dutch translations for the three empty msgstr
entries in src/locales/nl/messages.po corresponding to the ChatArea
placeholders: "Message {0}", "Message {0} (Enter for new line, Shift+Enter to
send)", and "Message {0} (Shift+Enter for new line)". Edit the msgstr lines
directly under each msgid and provide concise Dutch equivalents that preserve
the placeholder {0} and the keyboard hints (e.g., "Bericht {0}", "Bericht {0}
(Enter voor nieuwe regel, Shift+Enter om te verzenden)", "Bericht {0}
(Shift+Enter voor nieuwe regel)"), ensuring punctuation and placeholders remain
unchanged.

In `@src/locales/pl/messages.po`:
- Around line 1377-1390: Fill the three empty msgstr entries in
src/locales/pl/messages.po for the ChatArea placeholders (msgid "Message {0}",
"Message {0} (Enter for new line, Shift+Enter to send)", and "Message {0}
(Shift+Enter for new line)") with Polish translations so the UI shows Polish to
users; for example set them to "Wiadomość {0}", "Wiadomość {0} (Enter — nowa
linia, Shift+Enter — wyślij)", and "Wiadomość {0} (Shift+Enter — nowa linia)"
respectively, ensuring the placeholders ({0}) are kept intact and saved in the
file.

In `@src/locales/ro/messages.po`:
- Around line 1377-1390: The three new placeholder msgid strings used by
ChatArea.tsx ("Message {0}", "Message {0} (Enter for new line, Shift+Enter to
send)", "Message {0} (Shift+Enter for new line)") lack Romanian translations
(empty msgstrs); open the locale PO entries for those msgid values and provide
appropriate Romanian msgstr values that preserve the placeholder {0} and the
keyboard instructions (e.g., translate "Message" and the parenthetical
guidance), ensuring plural/placeholder formatting is unchanged and saving the
updated msgstr lines for each corresponding msgid.

In `@src/locales/ru/messages.mjs`:
- Line 1: The compiled RU catalog still contains English for the new "Message
{0}" variants; update src/locales/ru/messages.po to add Russian translations for
the keys mH+wEJ, pqr+oY and z0DY9w (the message placeholders that render
"Message {0}" / "Message {0} (Enter/Shift+Enter...)" ) and then regenerate the
compiled catalog so src/locales/ru/messages.mjs contains the localized Russian
strings.

In `@src/locales/ru/messages.po`:
- Around line 1377-1390: The Russian .po file has three empty translations for
ChatArea placeholders—fill the msgstr for each msgid ("Message {0}", "Message
{0} (Enter for new line, Shift+Enter to send)", and "Message {0} (Shift+Enter
for new line)") with correct Russian equivalents preserving the {0} placeholder
(e.g., "Сообщение {0}" and variants that include the keyboard hints in Russian),
ensuring punctuation and placeholder placement match the original strings so
ChatArea.tsx displays localized placeholders.

In `@src/locales/sv/messages.mjs`:
- Line 1: The sv bundle contains English fallbacks for the new message
placeholders pqr+oY, mH+wEJ and z0DY9w; open src/locales/sv/messages.po, add
proper Swedish translations for those message ids (the channel/message
placeholders), then re-run the locale compile/regeneration step you use to
produce src/locales/sv/messages.mjs so the JSON.parse map includes the Swedish
strings instead of the English fallbacks.

In `@src/locales/sv/messages.po`:
- Around line 1377-1390: The Swedish .po file is missing translations for three
new channel placeholder msgids used by src/components/layout/ChatArea.tsx; add
appropriate Swedish text into the corresponding msgstr entries for "Message
{0}", "Message {0} (Enter for new line, Shift+Enter to send)", and "Message {0}
(Shift+Enter for new line)" so the placeholders are shown in Swedish instead of
English.

In `@src/locales/tr/messages.mjs`:
- Line 1: The compiled Turkish bundle still contains English fallbacks for keys
pqr+oY, mH+wEJ and z0DY9w; update the Turkish source .po catalog with proper
Turkish translations for those message IDs (and any new placeholders), then
re-run the message build/regeneration step that produces
src/locales/tr/messages.mjs so the JSON.parse(...) output includes the Turkish
strings instead of English fallbacks.

In `@src/locales/tr/messages.po`:
- Around line 1377-1391: Fill the empty msgstr values for the three channel
placeholder entries so Turkish users see localized text: for msgid "Message {0}"
set msgstr to a Turkish variant like "{0} kanalına mesaj" (or "{0}'a mesaj"),
for "Message {0} (Enter for new line, Shift+Enter to send)" set msgstr to "{0}
kanalına mesaj (yeni satır için Enter, göndermek için Shift+Enter)", and for
"Message {0} (Shift+Enter for new line)" set msgstr to "{0} kanalına mesaj (yeni
satır için Shift+Enter)"; follow the pattern used in the nearby private message
placeholders (lines around the existing entries) to match punctuation and
spacing.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 93a185ff-5f4b-40e6-a6b2-fb0bb901d1d0

📥 Commits

Reviewing files that changed from the base of the PR and between f1a3dee and 4aa2bd4.

📒 Files selected for processing (48)
  • .github/workflows/docker.yaml
  • BUILD.md
  • INSTALL.md
  • README.md
  • src-tauri/Entitlements.plist
  • src-tauri/Info.plist
  • src-tauri/tauri.conf.json
  • src/components/layout/ChatArea.tsx
  • src/lib/mediaProbe.ts
  • src/locales/cs/messages.mjs
  • src/locales/cs/messages.po
  • src/locales/de/messages.mjs
  • src/locales/de/messages.po
  • src/locales/en/messages.mjs
  • src/locales/en/messages.po
  • src/locales/es/messages.mjs
  • src/locales/es/messages.po
  • src/locales/fi/messages.mjs
  • src/locales/fi/messages.po
  • src/locales/fr/messages.mjs
  • src/locales/fr/messages.po
  • src/locales/it/messages.mjs
  • src/locales/it/messages.po
  • src/locales/ja/messages.mjs
  • src/locales/ja/messages.po
  • src/locales/ko/messages.mjs
  • src/locales/ko/messages.po
  • src/locales/nl/messages.mjs
  • src/locales/nl/messages.po
  • src/locales/pl/messages.mjs
  • src/locales/pl/messages.po
  • src/locales/pt/messages.mjs
  • src/locales/pt/messages.po
  • src/locales/ro/messages.mjs
  • src/locales/ro/messages.po
  • src/locales/ru/messages.mjs
  • src/locales/ru/messages.po
  • src/locales/sv/messages.mjs
  • src/locales/sv/messages.po
  • src/locales/tr/messages.mjs
  • src/locales/tr/messages.po
  • src/locales/uk/messages.mjs
  • src/locales/uk/messages.po
  • src/locales/zh-TW/messages.mjs
  • src/locales/zh-TW/messages.po
  • src/locales/zh/messages.mjs
  • src/locales/zh/messages.po
  • tests/lib/mediaProbe.test.ts

Comment thread src-tauri/tauri.conf.json
Comment on lines +35 to +38
"macOS": {
"minimumSystemVersion": "12.0",
"entitlements": "Entitlements.plist"
},
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

How to configure custom Info.plist in Tauri 2.11.1 bundle.macOS section?

💡 Result:

To configure a custom Info.plist for a Tauri 2.11.1 macOS bundle, you should create a dedicated Info.plist file within your src-tauri directory and reference it in your tauri.conf.json configuration [1][2][3]. 1. Create a custom file: Create a file named Info.plist in your src-tauri folder and add your desired key-value pairs [1][3]. Example src-tauri/Info.plist: NSCameraUsageDescription Request camera access 2. Reference it in tauri.conf.json: Update your tauri.conf.json to point to this file under the bundle.macOS section using the infoPlist field [2]. { "bundle": { "macOS": { "infoPlist": "./Info.plist" } } } Tauri will merge the contents of this file with the default properties generated by the CLI [1]. Be cautious when overriding default values such as the application version or bundle identifier, as this can cause conflicts or unexpected behavior in your application bundle [1]. If you need to support multiple languages, create InfoPlist.strings files within language-specific.lproj directories and include them via the bundle.resources configuration [1]. Additionally, if your custom configuration requires Apple entitlements (such as security permissions), you should manage those separately in an entitlements file and reference it via the entitlements field in the same macOS bundle configuration block [3].

Citations:


Add bundle.macOS.infoPlist reference for camera/mic usage descriptions
You’re only setting entitlements in src-tauri/tauri.conf.json, and Tauri expects a custom Info.plist to be wired via bundle.macOS.infoPlist (e.g., "infoPlist": "./Info.plist") to merge in keys like NSMicrophoneUsageDescription and NSCameraUsageDescription. Without that explicit reference, the permission prompt strings may be missing.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src-tauri/tauri.conf.json` around lines 35 - 38, The tauri config only sets
"entitlements" under the macOS bundle; add a "infoPlist" reference so Tauri can
merge NSMicrophoneUsageDescription/NSCameraUsageDescription into the app
Info.plist. Update the JSON bundle.macOS object to include an "infoPlist" key
(e.g., "infoPlist": "./Info.plist") alongside "entitlements", and ensure your
Info.plist contains the NSMicrophoneUsageDescription and
NSCameraUsageDescription keys so the permission prompts have proper strings.

Comment thread src/locales/en/messages.po
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
src/components/PdfErrorBoundary.tsx (1)

22-28: ⚡ Quick win

Consider accepting and logging error parameters for better debugging.

The error boundary methods typically accept error parameters that could be useful for debugging PDF rendering failures. While omitting them is valid, capturing error details would improve observability.

📊 Proposed enhancement to capture error details
- static getDerivedStateFromError() {
+ static getDerivedStateFromError(error: Error) {
+   console.error('PDF rendering error:', error);
    return { hasError: true };
  }

- componentDidCatch() {
+ componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {
+   console.error('PDF error boundary caught:', error, errorInfo);
    this.props.onError();
  }

Optionally, you could pass error details to the callback for production logging:

  export class PdfErrorBoundary extends Component<
-   { onError: () => void; children: ReactNode },
+   { onError: (error: Error, errorInfo: React.ErrorInfo) => void; children: ReactNode },
    { hasError: boolean }
  > {
    // ...
-   componentDidCatch() {
+   componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {
-     this.props.onError();
+     this.props.onError(error, errorInfo);
    }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/PdfErrorBoundary.tsx` around lines 22 - 28, Update the
PdfErrorBoundary to capture and forward error details: change static
getDerivedStateFromError to accept the error parameter and return the same
state, and change componentDidCatch to accept (error, info) and call
this.props.onError(error, info) (or at minimum pass the error) so callers can
log/inspect the error; ensure the PdfErrorBoundaryProps/onError type is updated
to accept an optional error/info payload and that componentDidCatch still calls
super or handles state as needed.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@src/components/PdfErrorBoundary.tsx`:
- Around line 22-28: Update the PdfErrorBoundary to capture and forward error
details: change static getDerivedStateFromError to accept the error parameter
and return the same state, and change componentDidCatch to accept (error, info)
and call this.props.onError(error, info) (or at minimum pass the error) so
callers can log/inspect the error; ensure the PdfErrorBoundaryProps/onError type
is updated to accept an optional error/info payload and that componentDidCatch
still calls super or handles state as needed.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 497f0d86-02c6-4f7c-b930-f5409d3e68c8

📥 Commits

Reviewing files that changed from the base of the PR and between 4aa2bd4 and 1c4064c.

📒 Files selected for processing (3)
  • src/components/PdfErrorBoundary.tsx
  • src/components/message/MediaPreview.tsx
  • src/components/ui/MediaViewerModal.tsx

@matheusfillipe matheusfillipe requested a review from ValwareIRC May 30, 2026 17:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant