@bobfrankston/rmfmail 1.2.326 → 1.2.328
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.
- package/.commitmsg +12 -0
- package/.llm/config-cache-crash.md +20 -0
- package/client/app.bundle.js +2 -12
- package/client/app.bundle.js.map +2 -2
- package/client/components/calendar-sidebar.js +8 -12
- package/client/components/calendar-sidebar.js.map +1 -1
- package/client/components/calendar-sidebar.ts +7 -5
- package/client/compose/compose.bundle.js +19 -4
- package/client/compose/compose.bundle.js.map +2 -2
- package/client/compose/compose.js +45 -4
- package/client/compose/compose.js.map +1 -1
- package/client/compose/compose.ts +45 -4
- package/npmchanges.md +12 -0
- package/package.json +1 -1
- package/packages/mailx-service/index.d.ts.map +1 -1
- package/packages/mailx-service/index.js +66 -12
- package/packages/mailx-service/index.js.map +1 -1
- package/packages/mailx-service/index.ts +63 -10
- package/packages/mailx-service/package.json +1 -1
- package/packages/mailx-service/word-html.d.ts +18 -0
- package/packages/mailx-service/word-html.d.ts.map +1 -0
- package/packages/mailx-service/word-html.js +78 -0
- package/packages/mailx-service/word-html.js.map +1 -0
- package/packages/mailx-service/word-html.ts +78 -0
package/.commitmsg
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Edit in Word: edits come back as Word's own HTML (Range.ExportFragment), not mammoth; default calendar = primary
|
|
2
|
+
|
|
3
|
+
- mailx-service 0.1.40: the COM autosave sidecar exports `<base>-word.htm` via
|
|
4
|
+
Range.ExportFragment(path, wdFormatFilteredHTML) before each autosave and
|
|
5
|
+
mirrors a manual Ctrl+S on its next tick. New word-html.ts turns that export
|
|
6
|
+
into a body fragment (Mso classes, comments and o: tags stripped, sidecar
|
|
7
|
+
images inlined as data: URIs). The watcher has a per-file debounce, ignores
|
|
8
|
+
.docx saves once the Word HTML mirror exists, and keeps mammoth only for
|
|
9
|
+
sessions without the sidecar. Word gets only the text above the signature
|
|
10
|
+
(v1.2.327 split); the signature and quoted message are re-attached unchanged.
|
|
11
|
+
- Calendar: the Add-event picker always defaults to the primary ("personal")
|
|
12
|
+
calendar instead of remembering the last choice.
|
|
@@ -32,3 +32,23 @@ Session: Claude Fable 5.1, started 2026-09-13 ~17:00 EDT.
|
|
|
32
32
|
one tick after paste; moves the caret just after (or before) the anchor when only whitespace/U+FEFF
|
|
33
33
|
separates it from the edge. Quill's typed path NOT covered (not the configured editor).
|
|
34
34
|
- Ships as rmfmail 1.2.326 via rebuild.cmd (running). Bob must restart the daemon for the new bundle.
|
|
35
|
+
|
|
36
|
+
## Follow-on (~19:40): Edit in Word lost the quoted message's formatting
|
|
37
|
+
- Cause: whole body → html-to-docx (flattens blockquote) → Word → mammoth (only p/a/br back).
|
|
38
|
+
- Fix (v1.2.327, publishing): `splitWordEditable()` in client/compose/compose.ts — Word gets only the
|
|
39
|
+
part above the signature rule (`hr.mailx-sig-rule`, legacy `hr[style*=3cm]`) or `div.reply`; the
|
|
40
|
+
tail is re-read from the editor at apply time and appended unchanged.
|
|
41
|
+
- OPEN (Bob's direction): replace mammoth on the return path with his `y:\dev\utils\whts` converter.
|
|
42
|
+
whts today = whole-document CLI (`converter(docPath)` writes files, uses globals/logger/drive
|
|
43
|
+
paths, emits CSS classes via styleToClass, pulls sql/itemgen/pdf deps). Needs a lean exported
|
|
44
|
+
`docxToHtml()` core with inline styles before rmfmail can import it. Not touched — separate project.
|
|
45
|
+
- Checked: bundled TinyMCE 8.8.2 has NO Word-HTML cleaner (that is PowerPaste, paid); only the
|
|
46
|
+
generic paste path and `mceInsertClipboardContent`.
|
|
47
|
+
|
|
48
|
+
## ~20:20 ExportFragment route BUILT (mailx-service 0.1.40, unpublished yet)
|
|
49
|
+
- word-html.ts (new): wordHtmlToFragment(htm) — body only, Mso classes/comments/o: tags stripped, images inlined.
|
|
50
|
+
- index.ts: sidecar exports `${base}-word.htm` via Range.ExportFragment(…,10) BEFORE each autosave and
|
|
51
|
+
mirrors manual Ctrl+S on the next tick; watcher has per-file debounce, ignores .docx once -word.htm
|
|
52
|
+
exists, converts -word.htm; sweep protects -word.htm/-word_files. Head/tail split (v1.2.327) unchanged.
|
|
53
|
+
- Calendar default = primary always (calendar-sidebar.ts, sticky localStorage choice removed). Publishing as 1.2.328 (rebuild4.log).
|
|
54
|
+
localStorage pref else "primary").
|
package/client/app.bundle.js
CHANGED
|
@@ -7233,16 +7233,11 @@ function openNewEventDialog() {
|
|
|
7233
7233
|
const fillCalendars = (list) => {
|
|
7234
7234
|
const writable = writableCalendars(list);
|
|
7235
7235
|
calSelect.innerHTML = "";
|
|
7236
|
-
let last = "";
|
|
7237
|
-
try {
|
|
7238
|
-
last = localStorage.getItem(LAST_CALENDAR_PREF) || "";
|
|
7239
|
-
} catch {
|
|
7240
|
-
}
|
|
7241
7236
|
for (const c of writable) {
|
|
7242
7237
|
const opt = document.createElement("option");
|
|
7243
7238
|
opt.value = c.id;
|
|
7244
7239
|
opt.textContent = c.primary ? `${c.name} (personal)` : c.name;
|
|
7245
|
-
if (c.
|
|
7240
|
+
if (c.primary)
|
|
7246
7241
|
opt.selected = true;
|
|
7247
7242
|
calSelect.append(opt);
|
|
7248
7243
|
}
|
|
@@ -7328,10 +7323,6 @@ function openNewEventDialog() {
|
|
|
7328
7323
|
const saved = [];
|
|
7329
7324
|
const calendarId = calSelect.value || "primary";
|
|
7330
7325
|
const calendarName = calSelect.selectedOptions[0]?.textContent || "";
|
|
7331
|
-
try {
|
|
7332
|
-
localStorage.setItem(LAST_CALENDAR_PREF, calendarId);
|
|
7333
|
-
} catch {
|
|
7334
|
-
}
|
|
7335
7326
|
for (const ev of targets) {
|
|
7336
7327
|
const row = { ...eventToLocalRow(ev, text), calendarId };
|
|
7337
7328
|
try {
|
|
@@ -7593,7 +7584,7 @@ function initCalendarSidebar() {
|
|
|
7593
7584
|
}
|
|
7594
7585
|
}
|
|
7595
7586
|
}
|
|
7596
|
-
var SIDEBAR_PREF, SHOW_RECURRING_PREF, SHOW_DONE_PREF, HORIZON_DAYS_PREF, HORIZON_DEFAULT_DAYS, HOLIDAY_HORIZON_MS, viewYear, viewMonth, viewDay, viewPinned, lastEvents, lastOverdueTasks,
|
|
7587
|
+
var SIDEBAR_PREF, SHOW_RECURRING_PREF, SHOW_DONE_PREF, HORIZON_DAYS_PREF, HORIZON_DEFAULT_DAYS, HOLIDAY_HORIZON_MS, viewYear, viewMonth, viewDay, viewPinned, lastEvents, lastOverdueTasks, calById, calendarList, hiddenCalendars, selectedTaskUuids, TASK_DELETE_NOTE;
|
|
7597
7588
|
var init_calendar_sidebar = __esm({
|
|
7598
7589
|
"client/components/calendar-sidebar.js"() {
|
|
7599
7590
|
"use strict";
|
|
@@ -7611,7 +7602,6 @@ var init_calendar_sidebar = __esm({
|
|
|
7611
7602
|
viewPinned = false;
|
|
7612
7603
|
lastEvents = [];
|
|
7613
7604
|
lastOverdueTasks = [];
|
|
7614
|
-
LAST_CALENDAR_PREF = "mailx.calendar.lastCreateCalendar";
|
|
7615
7605
|
calById = /* @__PURE__ */ new Map();
|
|
7616
7606
|
calendarList = [];
|
|
7617
7607
|
hiddenCalendars = /* @__PURE__ */ new Set();
|