@bobfrankston/rmfmail 1.1.194 → 1.1.195
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/client/app.bundle.js +14 -1
- package/client/app.bundle.js.map +2 -2
- package/client/app.js +24 -4
- package/client/app.js.map +1 -1
- package/client/app.ts +23 -4
- package/package.json +3 -3
- /package/packages/mailx-imap/{node_modules.npmglobalize-stash-73948 → node_modules.npmglobalize-stash-43840}/.package-lock.json +0 -0
package/client/app.ts
CHANGED
|
@@ -160,8 +160,8 @@ function updateBadge(count: number): void {
|
|
|
160
160
|
link.href = dataUrl;
|
|
161
161
|
|
|
162
162
|
// Also push to the Windows taskbar overlay via msger's IPC helper —
|
|
163
|
-
// no-op on Linux/Mac. For count=0,
|
|
164
|
-
//
|
|
163
|
+
// no-op on Linux/Mac. For count=0, clear the overlay so the base icon
|
|
164
|
+
// shows cleanly.
|
|
165
165
|
try {
|
|
166
166
|
// The injected host bridge is `window.mailxapi`, NOT `window.msgapi`.
|
|
167
167
|
// The old `msgapi` reference was always undefined, so the taskbar
|
|
@@ -171,8 +171,27 @@ function updateBadge(count: number): void {
|
|
|
171
171
|
const hostApi: any = (window as any).mailxapi;
|
|
172
172
|
if (hostApi?.setTaskbarOverlay) {
|
|
173
173
|
if (count > 0) {
|
|
174
|
-
//
|
|
175
|
-
|
|
174
|
+
// BADGE-ONLY overlay. SetOverlayIcon composites the supplied
|
|
175
|
+
// icon onto the bottom-right corner of the taskbar button —
|
|
176
|
+
// the base envelope icon is already there. Sending the full
|
|
177
|
+
// envelope+badge canvas (favicon) drew a SECOND tiny envelope
|
|
178
|
+
// in the corner on top of the big one (Bob 2026-05-29). Render
|
|
179
|
+
// just the red count pill on a transparent field so only the
|
|
180
|
+
// number is overlaid. Filled circle spans most of the 32×32 so
|
|
181
|
+
// it stays legible after the corner downscale.
|
|
182
|
+
const bc = document.createElement("canvas");
|
|
183
|
+
bc.width = 32; bc.height = 32;
|
|
184
|
+
const bx = bc.getContext("2d")!;
|
|
185
|
+
bx.fillStyle = "#e33";
|
|
186
|
+
bx.beginPath();
|
|
187
|
+
bx.arc(16, 16, 15, 0, Math.PI * 2);
|
|
188
|
+
bx.fill();
|
|
189
|
+
bx.fillStyle = "#fff";
|
|
190
|
+
bx.font = "bold 20px sans-serif";
|
|
191
|
+
bx.textAlign = "center";
|
|
192
|
+
bx.textBaseline = "middle";
|
|
193
|
+
bx.fillText(count > 99 ? "99+" : String(count), 16, 17);
|
|
194
|
+
const b64 = bc.toDataURL("image/png").split(",")[1] || "";
|
|
176
195
|
hostApi.setTaskbarOverlay(b64, `${count} unread`);
|
|
177
196
|
} else {
|
|
178
197
|
hostApi.setTaskbarOverlay("", "");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bobfrankston/rmfmail",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.195",
|
|
4
4
|
"description": "Local-first email client with IMAP sync and standalone native app",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "bin/mailx.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@bobfrankston/iflow-direct": "^0.1.51",
|
|
40
40
|
"@bobfrankston/mailx-host": "^0.1.13",
|
|
41
|
-
"@bobfrankston/mailx-imap": "^0.1.
|
|
41
|
+
"@bobfrankston/mailx-imap": "^0.1.75",
|
|
42
42
|
"@bobfrankston/mailx-store-web": "^0.1.26",
|
|
43
43
|
"@bobfrankston/mailx-sync": "^0.1.19",
|
|
44
44
|
"@bobfrankston/miscinfo": "^1.0.12",
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
"dependencies": {
|
|
119
119
|
"@bobfrankston/iflow-direct": "^0.1.51",
|
|
120
120
|
"@bobfrankston/mailx-host": "^0.1.13",
|
|
121
|
-
"@bobfrankston/mailx-imap": "^0.1.
|
|
121
|
+
"@bobfrankston/mailx-imap": "^0.1.75",
|
|
122
122
|
"@bobfrankston/mailx-store-web": "^0.1.26",
|
|
123
123
|
"@bobfrankston/mailx-sync": "^0.1.19",
|
|
124
124
|
"@bobfrankston/miscinfo": "^1.0.12",
|