From 3df4468605fe628dcf2c5de8f1cb5beca272998d Mon Sep 17 00:00:00 2001 From: pdmarf <135653545+pdmarf@users.noreply.github.com> Date: Thu, 23 Apr 2026 20:39:51 +0100 Subject: [PATCH] v1.0.20: fix button icons and surface user-fetch errors - Remove stale idle.svg/running.svg from zip (were shadowing the PNG icons added in v1.0.15, causing old grey icons to show instead of the Aurora timer images) - Fix package script to always delete and recreate zip so removed files don't persist across builds - Show a clear error in the name dropdown when fetchUsers fails (e.g. Notion integration missing "Read user information" capability) Co-Authored-By: Claude Sonnet 4.6 --- com.pdma.notion-timer.sdPlugin/bin/plugin.js | 14 +++++++++----- .../bin/plugin.js.sig | Bin 64 -> 64 bytes .../ui/property-inspector.html | 11 ++++++++++- notion-timer.streamDeckPlugin | Bin 99884 -> 99204 bytes package.json | 2 +- src/plugin.ts | 12 +++++++----- version.json | 2 +- 7 files changed, 28 insertions(+), 13 deletions(-) diff --git a/com.pdma.notion-timer.sdPlugin/bin/plugin.js b/com.pdma.notion-timer.sdPlugin/bin/plugin.js index a77ea86..d9052d3 100644 --- a/com.pdma.notion-timer.sdPlugin/bin/plugin.js +++ b/com.pdma.notion-timer.sdPlugin/bin/plugin.js @@ -6438,7 +6438,7 @@ async function stopTimer(token, entryId) { } // src/plugin.ts -var CURRENT_VERSION = "1.0.19"; +var CURRENT_VERSION = "1.0.20"; var GITEA_BASE = "https://gitea.pdmarf.co.uk/pdm/stream_deck_notion_timer/raw/branch/master"; var SIGNING_PUBLIC_KEY = `-----BEGIN PUBLIC KEY----- MCowBQYDK2VwAyEAN7ko8TUpuPzPAJuKAZCRjV0c4ZSlou5d9pUAF6o12b4= @@ -6573,14 +6573,18 @@ var TimerToggle = class extends SingletonAction { await plugin_default.ui.sendToPropertyInspector({ event: "projects", data: [], error: "Enter your Notion API token above.", version: CURRENT_VERSION }); return; } - const [projects, usersResult] = await Promise.all([ + let usersResult = []; + let usersError; + const [projects] = await Promise.all([ fetchProjects(global.notionToken, global.projectsDbId), - fetchUsers(global.notionToken).catch((err) => { + fetchUsers(global.notionToken).then((u) => { + usersResult = u; + }).catch((err) => { plugin_default.logger.error("Failed to fetch users:", err); - return []; + usersError = err instanceof Error ? err.message : String(err); }) ]); - await plugin_default.ui.sendToPropertyInspector({ event: "projects", data: projects, users: usersResult, version: CURRENT_VERSION }); + await plugin_default.ui.sendToPropertyInspector({ event: "projects", data: projects, users: usersResult, usersError, version: CURRENT_VERSION }); } catch (err) { plugin_default.logger.error("Failed to fetch projects:", err); await plugin_default.ui.sendToPropertyInspector({ event: "projects", data: [], error: String(err), version: CURRENT_VERSION }); diff --git a/com.pdma.notion-timer.sdPlugin/bin/plugin.js.sig b/com.pdma.notion-timer.sdPlugin/bin/plugin.js.sig index 777302414b8c0a749be7f1a58523b6639101faa1..ec2ed0ddfeba3f46e8fd306a94f5eb5d3a4af14c 100644 GIT binary patch literal 64 zcmV-G0KfnA8yt$x0Pa&kwK(l)BAsM1iPd(!%z^MC_-85BO?!CV6+$%_C3yED* W$b>O^9Fqq~;;THo#rXigG literal 64 zcmV-G0Kfmt6s#0qFr`4TV>p&^4Kzy|H}gOxUA(r(c$$>5)GTD9G4z8jIxxP_WuFRp W)sSNQm%o_SOKy)37Gp2LdX55{d>uFd diff --git a/com.pdma.notion-timer.sdPlugin/ui/property-inspector.html b/com.pdma.notion-timer.sdPlugin/ui/property-inspector.html index 4dffcb6..639a739 100644 --- a/com.pdma.notion-timer.sdPlugin/ui/property-inspector.html +++ b/com.pdma.notion-timer.sdPlugin/ui/property-inspector.html @@ -127,6 +127,7 @@ +

Shared across all buttons. Select once per device.


@@ -304,9 +305,17 @@ if (payload.version) { document.getElementById("versionText").textContent = "v" + payload.version; } - if (payload.users) { + if (payload.users !== undefined) { var savedUserId = document.getElementById("userId").value; populateUsers(payload.users, savedUserId); + var userErr = document.getElementById("userError"); + if (payload.usersError) { + userErr.textContent = "Could not load names: " + payload.usersError; + } else if (payload.users.length === 0) { + userErr.textContent = "No users found — check the integration has \u201cRead user information\u201d enabled."; + } else { + userErr.textContent = ""; + } } if (payload.error) { setStatus(payload.error, "error"); diff --git a/notion-timer.streamDeckPlugin b/notion-timer.streamDeckPlugin index fd3bf06f7efba316f9f035cc931e904d61c88e9b..0d0840510b0d7f23255ee41124b8652bd08a337c 100644 GIT binary patch delta 5777 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 delta 6318 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 diff --git a/package.json b/package.json index bec2286..a4edeaa 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Notion time tracking toggle for Stream Deck", "scripts": { "build": "esbuild src/plugin.ts --bundle --platform=node --target=node20 --outfile=com.pdma.notion-timer.sdPlugin/bin/plugin.js --external:electron && node scripts/sign.js", - "package": "npm run build && zip -r notion-timer.streamDeckPlugin com.pdma.notion-timer.sdPlugin && echo 'Packaged: notion-timer.streamDeckPlugin'", + "package": "npm run build && rm -f notion-timer.streamDeckPlugin && zip -r notion-timer.streamDeckPlugin com.pdma.notion-timer.sdPlugin && echo 'Packaged: notion-timer.streamDeckPlugin'", "dev": "esbuild src/plugin.ts --bundle --platform=node --target=node20 --outfile=com.pdma.notion-timer.sdPlugin/bin/plugin.js --external:electron --watch", "sign": "node scripts/sign.js", "link": "ln -sf \"$(pwd)/com.pdma.notion-timer.sdPlugin\" \"$HOME/Library/Application Support/com.elgato.StreamDeck/Plugins/com.pdma.notion-timer.sdPlugin\"", diff --git a/src/plugin.ts b/src/plugin.ts index 15481e0..4f86c3e 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -1,4 +1,4 @@ -const CURRENT_VERSION = "1.0.19"; +const CURRENT_VERSION = "1.0.20"; const GITEA_BASE = "https://gitea.pdmarf.co.uk/pdm/stream_deck_notion_timer/raw/branch/master"; const SIGNING_PUBLIC_KEY = `-----BEGIN PUBLIC KEY----- MCowBQYDK2VwAyEAN7ko8TUpuPzPAJuKAZCRjV0c4ZSlou5d9pUAF6o12b4= @@ -176,14 +176,16 @@ class TimerToggle extends SingletonAction { await streamDeck.ui.sendToPropertyInspector({ event: "projects", data: [], error: "Enter your Notion API token above.", version: CURRENT_VERSION }); return; } - const [projects, usersResult] = await Promise.all([ + let usersResult: Awaited> = []; + let usersError: string | undefined; + const [projects] = await Promise.all([ fetchProjects(global.notionToken, global.projectsDbId), - fetchUsers(global.notionToken).catch((err) => { + fetchUsers(global.notionToken).then((u) => { usersResult = u; }).catch((err) => { streamDeck.logger.error("Failed to fetch users:", err); - return []; + usersError = err instanceof Error ? err.message : String(err); }), ]); - await streamDeck.ui.sendToPropertyInspector({ event: "projects", data: projects, users: usersResult, version: CURRENT_VERSION }); + await streamDeck.ui.sendToPropertyInspector({ event: "projects", data: projects, users: usersResult, usersError, version: CURRENT_VERSION }); } catch (err) { streamDeck.logger.error("Failed to fetch projects:", err); await streamDeck.ui.sendToPropertyInspector({ event: "projects", data: [], error: String(err), version: CURRENT_VERSION }); diff --git a/version.json b/version.json index bac3891..a04ad19 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{ "version": "1.0.19" } +{ "version": "1.0.20" }