@bobfrankston/rmfmail 1.2.314 → 1.2.316

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 (47) hide show
  1. package/.commitmsg +29 -24
  2. package/.llm/trusted-lists.md +10 -0
  3. package/client/android-bootstrap.bundle.js +21 -1
  4. package/client/android-bootstrap.bundle.js.map +2 -2
  5. package/client/app.bundle.js +51 -3
  6. package/client/app.bundle.js.map +2 -2
  7. package/client/app.js +12 -0
  8. package/client/app.js.map +1 -1
  9. package/client/app.ts +11 -0
  10. package/client/components/calendar-sidebar.js +59 -3
  11. package/client/components/calendar-sidebar.js.map +1 -1
  12. package/client/components/calendar-sidebar.ts +50 -3
  13. package/client/compose/compose.bundle.js +4 -0
  14. package/client/compose/compose.bundle.js.map +2 -2
  15. package/client/lib/api-client.js +6 -0
  16. package/client/lib/api-client.js.map +1 -1
  17. package/client/lib/api-client.ts +6 -0
  18. package/client/lib/mailxapi.js +4 -1
  19. package/npmchanges.md +50 -0
  20. package/package.json +5 -5
  21. package/packages/mailx-imap/package-lock.json +2 -2
  22. package/packages/mailx-imap/package.json +1 -1
  23. package/packages/mailx-service/index.d.ts +14 -0
  24. package/packages/mailx-service/index.d.ts.map +1 -1
  25. package/packages/mailx-service/index.js +31 -0
  26. package/packages/mailx-service/index.js.map +1 -1
  27. package/packages/mailx-service/index.ts +29 -0
  28. package/packages/mailx-service/jsonrpc.js +2 -0
  29. package/packages/mailx-service/jsonrpc.js.map +1 -1
  30. package/packages/mailx-service/jsonrpc.ts +2 -0
  31. package/packages/mailx-service/package.json +1 -1
  32. package/packages/mailx-settings/docs/spam-false-positives.md +1 -1
  33. package/packages/mailx-settings/package.json +1 -1
  34. package/packages/mailx-store/package.json +1 -1
  35. package/packages/mailx-store-web/package.json +1 -1
  36. package/packages/mailx-store-web/web-service.d.ts +4 -0
  37. package/packages/mailx-store-web/web-service.d.ts.map +1 -1
  38. package/packages/mailx-store-web/web-service.js +1 -0
  39. package/packages/mailx-store-web/web-service.js.map +1 -1
  40. package/packages/mailx-store-web/web-service.ts +1 -0
  41. package/packages/mailx-types/mailx-api.d.ts +5 -0
  42. package/packages/mailx-types/mailx-api.d.ts.map +1 -1
  43. package/packages/mailx-types/mailx-api.ts +2 -0
  44. package/packages/mailx-types/package.json +1 -1
  45. package/packages/mailx-types/trust.d.ts.map +1 -1
  46. package/packages/mailx-types/trust.js +33 -1
  47. package/packages/mailx-types/trust.js.map +1 -1
@@ -106,6 +106,7 @@ __export(api_client_exports, {
106
106
  reauthGoogleScopes: () => reauthGoogleScopes,
107
107
  reauthenticate: () => reauthenticate,
108
108
  recordSpamReport: () => recordSpamReport,
109
+ refreshCalendarNow: () => refreshCalendarNow,
109
110
  registerMailto: () => registerMailto,
110
111
  removeUserDictWord: () => removeUserDictWord,
111
112
  renameFolder: () => renameFolder,
@@ -259,6 +260,9 @@ function getPrimaryAccount(feature) {
259
260
  function getCalendarEvents(fromMs, toMs) {
260
261
  return ipc().getCalendarEvents?.(fromMs, toMs) ?? Promise.resolve([]);
261
262
  }
263
+ function refreshCalendarNow() {
264
+ return ipc().refreshCalendarNow?.() ?? Promise.resolve({ ok: false, reason: "not available" });
265
+ }
262
266
  function getCalendars() {
263
267
  return ipc().getCalendars?.() ?? Promise.resolve([]);
264
268
  }
@@ -7214,19 +7218,57 @@ function openNewEventDialog() {
7214
7218
  }
7215
7219
  const api = window.mailxapi;
7216
7220
  const targets = events.length ? events : [null];
7221
+ let authuser = "";
7222
+ try {
7223
+ authuser = String((await getPrimaryAccount("calendar"))?.email || "");
7224
+ } catch (e) {
7225
+ console.warn("[calendar] primary account lookup failed, opening without authuser:", e?.message || e);
7226
+ }
7217
7227
  for (const ev of targets) {
7218
- const url = buildGoogleEventUrl(ev, text);
7228
+ const url = buildGoogleEventUrl(ev, text, authuser);
7219
7229
  if (api?.openExternal)
7220
7230
  api.openExternal(url);
7221
7231
  else
7222
7232
  window.open(url, "_blank");
7223
7233
  }
7234
+ armPostCreateRefresh();
7224
7235
  close();
7225
7236
  });
7226
7237
  }
7227
- function buildGoogleEventUrl(event, fallbackText) {
7238
+ function armPostCreateRefresh() {
7239
+ disarmPostCreateRefresh();
7240
+ const pull = async (why) => {
7241
+ try {
7242
+ const r = await refreshCalendarNow();
7243
+ if (!r?.ok)
7244
+ console.log(`[calendar] post-create refresh (${why}) not started: ${r?.reason || "unknown"}`);
7245
+ } catch (e) {
7246
+ console.warn(`[calendar] post-create refresh (${why}) failed:`, e?.message || e);
7247
+ }
7248
+ };
7249
+ postCreateFocusHandler = () => {
7250
+ void pull("window focus");
7251
+ };
7252
+ window.addEventListener("focus", postCreateFocusHandler);
7253
+ postCreateTimers = POST_CREATE_REFRESH_DELAYS_MS.map((ms, i) => window.setTimeout(() => {
7254
+ void pull(`${ms / 1e3} s after create`);
7255
+ if (i === POST_CREATE_REFRESH_DELAYS_MS.length - 1)
7256
+ disarmPostCreateRefresh();
7257
+ }, ms));
7258
+ }
7259
+ function disarmPostCreateRefresh() {
7260
+ for (const t of postCreateTimers)
7261
+ window.clearTimeout(t);
7262
+ postCreateTimers = [];
7263
+ if (postCreateFocusHandler)
7264
+ window.removeEventListener("focus", postCreateFocusHandler);
7265
+ postCreateFocusHandler = null;
7266
+ }
7267
+ function buildGoogleEventUrl(event, fallbackText, authuser = "") {
7228
7268
  const base = "https://calendar.google.com/calendar/render?action=TEMPLATE";
7229
7269
  const params = [];
7270
+ if (authuser)
7271
+ params.push(`authuser=${encodeURIComponent(authuser)}`);
7230
7272
  const fmt = (iso) => {
7231
7273
  const m = iso.match(/(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2}))?)?/);
7232
7274
  if (!m)
@@ -7451,7 +7493,7 @@ function initCalendarSidebar() {
7451
7493
  }
7452
7494
  }
7453
7495
  }
7454
- var SIDEBAR_PREF, SHOW_RECURRING_PREF, SHOW_DONE_PREF, HORIZON_DAYS_PREF, HORIZON_DEFAULT_DAYS, HOLIDAY_HORIZON_MS, viewYear, viewMonth, viewDay, lastEvents, lastOverdueTasks, calById, calendarList, hiddenCalendars, selectedTaskUuids, TASK_DELETE_NOTE;
7496
+ var SIDEBAR_PREF, SHOW_RECURRING_PREF, SHOW_DONE_PREF, HORIZON_DAYS_PREF, HORIZON_DEFAULT_DAYS, HOLIDAY_HORIZON_MS, viewYear, viewMonth, viewDay, lastEvents, lastOverdueTasks, calById, calendarList, hiddenCalendars, selectedTaskUuids, TASK_DELETE_NOTE, POST_CREATE_REFRESH_DELAYS_MS, postCreateTimers, postCreateFocusHandler;
7455
7497
  var init_calendar_sidebar = __esm({
7456
7498
  "client/components/calendar-sidebar.js"() {
7457
7499
  "use strict";
@@ -7473,6 +7515,9 @@ var init_calendar_sidebar = __esm({
7473
7515
  hiddenCalendars = /* @__PURE__ */ new Set();
7474
7516
  selectedTaskUuids = /* @__PURE__ */ new Set();
7475
7517
  TASK_DELETE_NOTE = "Removes it from Google Tasks. To mark it done instead, use the checkbox.";
7518
+ POST_CREATE_REFRESH_DELAYS_MS = [45e3, 12e4, 3e5];
7519
+ postCreateTimers = [];
7520
+ postCreateFocusHandler = null;
7476
7521
  }
7477
7522
  });
7478
7523
 
@@ -9643,6 +9688,9 @@ window.__btick && window.__btick("app.ts module body executing");
9643
9688
  }, true);
9644
9689
  document.addEventListener("contextmenu", (e) => {
9645
9690
  if (e.defaultPrevented) return;
9691
+ const t = e.target;
9692
+ const tag = t?.tagName;
9693
+ if (tag === "TEXTAREA" || tag === "INPUT" && !["checkbox", "radio", "button", "submit", "range", "color", "file"].includes(t.type)) return;
9646
9694
  e.preventDefault();
9647
9695
  const items = editMenuItems({ target: e.target });
9648
9696
  if (items.length > 0) showContextMenu(e.clientX, e.clientY, items);