@bobfrankston/rmfmail 1.2.276 → 1.2.277

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/.commitmsg +28 -23
  2. package/bin/build-tinymce.js +27 -0
  3. package/client/app.bundle.js +108 -0
  4. package/client/app.bundle.js.map +4 -4
  5. package/client/app.js +65 -0
  6. package/client/app.js.map +1 -1
  7. package/client/app.ts +59 -0
  8. package/client/compose/compose.bundle.js +90 -2
  9. package/client/compose/compose.bundle.js.map +4 -4
  10. package/client/compose/compose.js +26 -1
  11. package/client/compose/compose.js.map +1 -1
  12. package/client/compose/compose.ts +22 -1
  13. package/client/compose/editor.js +12 -1
  14. package/client/compose/editor.js.map +1 -1
  15. package/client/compose/editor.ts +17 -2
  16. package/client/index.html +1 -0
  17. package/client/lib/rmf-tiny.js +3 -0
  18. package/client/lib/tinymce/langs/ar-SA.js +440 -0
  19. package/client/lib/tinymce/langs/ar.js +441 -0
  20. package/client/lib/tinymce/langs/az.js +440 -0
  21. package/client/lib/tinymce/langs/be.js +440 -0
  22. package/client/lib/tinymce/langs/bg-BG.js +440 -0
  23. package/client/lib/tinymce/langs/bn-BD.js +440 -0
  24. package/client/lib/tinymce/langs/bs.js +440 -0
  25. package/client/lib/tinymce/langs/ca.js +440 -0
  26. package/client/lib/tinymce/langs/cs.js +440 -0
  27. package/client/lib/tinymce/langs/cy.js +440 -0
  28. package/client/lib/tinymce/langs/da.js +440 -0
  29. package/client/lib/tinymce/langs/de.js +440 -0
  30. package/client/lib/tinymce/langs/el.js +440 -0
  31. package/client/lib/tinymce/langs/eo.js +440 -0
  32. package/client/lib/tinymce/langs/es-MX.js +440 -0
  33. package/client/lib/tinymce/langs/es.js +440 -0
  34. package/client/lib/tinymce/langs/et.js +440 -0
  35. package/client/lib/tinymce/langs/eu.js +440 -0
  36. package/client/lib/tinymce/langs/fa.js +441 -0
  37. package/client/lib/tinymce/langs/fi.js +440 -0
  38. package/client/lib/tinymce/langs/fr-FR.js +440 -0
  39. package/client/lib/tinymce/langs/gl.js +440 -0
  40. package/client/lib/tinymce/langs/he-IL.js +440 -0
  41. package/client/lib/tinymce/langs/hr.js +440 -0
  42. package/client/lib/tinymce/langs/hu-HU.js +440 -0
  43. package/client/lib/tinymce/langs/hy.js +440 -0
  44. package/client/lib/tinymce/langs/id.js +440 -0
  45. package/client/lib/tinymce/langs/index.json +63 -0
  46. package/client/lib/tinymce/langs/is-IS.js +440 -0
  47. package/client/lib/tinymce/langs/it.js +440 -0
  48. package/client/lib/tinymce/langs/ja.js +440 -0
  49. package/client/lib/tinymce/langs/ka-GE.js +440 -0
  50. package/client/lib/tinymce/langs/kab.js +440 -0
  51. package/client/lib/tinymce/langs/kk.js +440 -0
  52. package/client/lib/tinymce/langs/ko-KR.js +440 -0
  53. package/client/lib/tinymce/langs/lt.js +440 -0
  54. package/client/lib/tinymce/langs/lv.js +440 -0
  55. package/client/lib/tinymce/langs/nb-NO.js +440 -0
  56. package/client/lib/tinymce/langs/ne.js +440 -0
  57. package/client/lib/tinymce/langs/nl-BE.js +440 -0
  58. package/client/lib/tinymce/langs/nl.js +440 -0
  59. package/client/lib/tinymce/langs/oc.js +440 -0
  60. package/client/lib/tinymce/langs/pl.js +440 -0
  61. package/client/lib/tinymce/langs/pt-BR.js +440 -0
  62. package/client/lib/tinymce/langs/pt-PT.js +440 -0
  63. package/client/lib/tinymce/langs/ro.js +440 -0
  64. package/client/lib/tinymce/langs/ru.js +440 -0
  65. package/client/lib/tinymce/langs/sk.js +440 -0
  66. package/client/lib/tinymce/langs/sl-SI.js +440 -0
  67. package/client/lib/tinymce/langs/sr.js +440 -0
  68. package/client/lib/tinymce/langs/sv-SE.js +440 -0
  69. package/client/lib/tinymce/langs/ta.js +440 -0
  70. package/client/lib/tinymce/langs/tg.js +440 -0
  71. package/client/lib/tinymce/langs/th-TH.js +440 -0
  72. package/client/lib/tinymce/langs/tr.js +440 -0
  73. package/client/lib/tinymce/langs/ug.js +440 -0
  74. package/client/lib/tinymce/langs/uk.js +440 -0
  75. package/client/lib/tinymce/langs/vi.js +440 -0
  76. package/client/lib/tinymce/langs/zh-CN.js +440 -0
  77. package/client/lib/tinymce/langs/zh-HK.js +440 -0
  78. package/client/lib/tinymce/langs/zh-MO.js +440 -0
  79. package/client/lib/tinymce/langs/zh-TW.js +440 -0
  80. package/client/lib/tinymce-langs.js +96 -0
  81. package/client/lib/tinymce-langs.js.map +1 -0
  82. package/client/lib/tinymce-langs.ts +99 -0
  83. package/docs/editor.md +29 -3
  84. package/docs/preferences.md +2 -1
  85. package/npmchanges.md +29 -0
  86. package/package.json +11 -8
  87. /package/packages/mailx-imap/{node_modules.npmglobalize-stash-59216 → node_modules.npmglobalize-stash-48352}/.package-lock.json +0 -0
package/client/app.js CHANGED
@@ -6048,6 +6048,71 @@ document.getElementById("opt-compose-font-size")?.addEventListener("change", (e)
6048
6048
  saveSettings(settings);
6049
6049
  }).catch(() => { });
6050
6050
  });
6051
+ // TinyMCE UI-language picker. The options are whatever language packs
6052
+ // build-tinymce.js actually copied next to the script (langs/index.json), so
6053
+ // the menu can never offer a pack that would 404 at editor init — TinyMCE
6054
+ // raises a visible error notification for a missing langs/<code>.js.
6055
+ //
6056
+ // These translate the editor CHROME only. Content, the spellcheck dictionary
6057
+ // and Harper are untouched and stay English, which is why the control sits
6058
+ // under Editor rather than anywhere that reads as a global language setting.
6059
+ //
6060
+ // TinyMCE itself has no detection — "Auto" is ours, resolving the browser's
6061
+ // ordered language list against the shipped packs. The Auto row names what it
6062
+ // currently resolves to so the choice is not a guess. (Claude Code 2026-08-23)
6063
+ const optEditorLanguage = document.getElementById("opt-editor-language");
6064
+ if (optEditorLanguage) {
6065
+ (async () => {
6066
+ const scriptUrl = localStorage.getItem("mailx-tinymce-cdn") || "lib/tinymce/tinymce.min.js";
6067
+ const { availableLanguages, resolveLanguage, languageLabel, LANGUAGE_AUTO, LANGUAGE_ENGLISH } = await import("./lib/tinymce-langs.js");
6068
+ const available = await availableLanguages(scriptUrl);
6069
+ const autoPick = resolveLanguage(LANGUAGE_AUTO, available);
6070
+ const add = (value, text) => {
6071
+ const o = document.createElement("option");
6072
+ o.value = value;
6073
+ o.textContent = text;
6074
+ optEditorLanguage.appendChild(o);
6075
+ };
6076
+ add(LANGUAGE_AUTO, `Auto — ${languageLabel(autoPick)}`);
6077
+ add(LANGUAGE_ENGLISH, languageLabel(LANGUAGE_ENGLISH));
6078
+ for (const code of [...available].sort((a, b) => languageLabel(a).localeCompare(languageLabel(b)))) {
6079
+ add(code, `${languageLabel(code)} (${code})`);
6080
+ }
6081
+ if (!available.length) {
6082
+ optEditorLanguage.disabled = true;
6083
+ optEditorLanguage.title = "No language packs found next to tinymce.min.js — English only";
6084
+ }
6085
+ let current = LANGUAGE_AUTO;
6086
+ try {
6087
+ current = localStorage.getItem("mailx-editor-language") || LANGUAGE_AUTO;
6088
+ }
6089
+ catch { /* */ }
6090
+ try {
6091
+ const settings = await getSettings();
6092
+ if (typeof settings?.ui?.editorLanguage === "string" && settings.ui.editorLanguage)
6093
+ current = settings.ui.editorLanguage;
6094
+ }
6095
+ catch { /* cache value stands */ }
6096
+ optEditorLanguage.value = current;
6097
+ // A pinned pack that is no longer shipped would leave the select on
6098
+ // nothing at all; say so rather than showing a blank control.
6099
+ if (!optEditorLanguage.value)
6100
+ optEditorLanguage.value = LANGUAGE_AUTO;
6101
+ })().catch((e) => console.error("[settings] editor-language menu failed:", e?.message || e));
6102
+ optEditorLanguage.addEventListener("change", () => {
6103
+ const value = optEditorLanguage.value;
6104
+ // Synchronous cache write for the same reason as saveEditorSetting:
6105
+ // compose reads it at module load, so the next compose-open is right.
6106
+ try {
6107
+ localStorage.setItem("mailx-editor-language", value);
6108
+ }
6109
+ catch { /* private mode */ }
6110
+ getSettings().then((settings) => {
6111
+ settings.ui = { ...settings.ui, editorLanguage: value };
6112
+ saveSettings(settings);
6113
+ }).catch((e) => console.error("[settings] editor language save failed:", e?.message || e));
6114
+ });
6115
+ }
6051
6116
  // Save editor choice to server settings
6052
6117
  function saveEditorSetting(editor) {
6053
6118
  // Update the localStorage cache SYNCHRONOUSLY. compose.ts reads