From e3a19234a98eb40100b3aef14257c21560518338 Mon Sep 17 00:00:00 2001 From: pdmarf <135653545+pdmarf@users.noreply.github.com> Date: Fri, 24 Apr 2026 09:01:55 +0100 Subject: [PATCH] v1.0.32: re-assert button state after setSettings resets it setSettings() causes Stream Deck to reset the button visual back to its default state (state 0). The optimistic setState(1) was correct but got overridden. Now setState(1) is called again after setSettings completes to ensure the button stays green. Co-Authored-By: Claude Sonnet 4.6 --- com.pdma.notion-timer.sdPlugin/bin/plugin.js | 3 ++- .../bin/plugin.js.sig | 2 +- com.pdma.notion-timer.sdPlugin/manifest.json | 2 +- notion-timer.streamDeckPlugin | Bin 99138 -> 99143 bytes src/plugin.ts | 4 +++- version.json | 2 +- 6 files changed, 8 insertions(+), 5 deletions(-) diff --git a/com.pdma.notion-timer.sdPlugin/bin/plugin.js b/com.pdma.notion-timer.sdPlugin/bin/plugin.js index d4884d2..9e8a650 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.31"; +var CURRENT_VERSION = "1.0.32"; var GITEA_BASE = "https://gitea.pdmarf.co.uk/pdm/stream_deck_notion_timer/raw/branch/stable-rebuild"; var SIGNING_PUBLIC_KEY = `-----BEGIN PUBLIC KEY----- MCowBQYDK2VwAyEAN7ko8TUpuPzPAJuKAZCRjV0c4ZSlou5d9pUAF6o12b4= @@ -6648,6 +6648,7 @@ var TimerToggle = class extends SingletonAction { await ev.action.setSettings(started); this.settingsCache.set(ev.action.id, started); await setRunningEntry(entryId); + await Promise.all([ev.action.setState(1), ev.action.setTitle(`\u23F1 ${title}`)]); } } catch (err) { plugin_default.logger.error("Timer toggle failed:", err); diff --git a/com.pdma.notion-timer.sdPlugin/bin/plugin.js.sig b/com.pdma.notion-timer.sdPlugin/bin/plugin.js.sig index a2f96ad..94ef762 100644 --- a/com.pdma.notion-timer.sdPlugin/bin/plugin.js.sig +++ b/com.pdma.notion-timer.sdPlugin/bin/plugin.js.sig @@ -1 +1 @@ -vXCkf*jvk 0OZj Y2ֈ=%/Ve[<07_ \ No newline at end of file +"4-8peOc"uɻS>g-#&ÓqN0vZI \ No newline at end of file diff --git a/com.pdma.notion-timer.sdPlugin/manifest.json b/com.pdma.notion-timer.sdPlugin/manifest.json index a708604..07e5bb8 100644 --- a/com.pdma.notion-timer.sdPlugin/manifest.json +++ b/com.pdma.notion-timer.sdPlugin/manifest.json @@ -2,7 +2,7 @@ "Author": "Pete Marfleet", "Description": "Toggle Notion time tracking for a project with a single button press.", "Name": "Notion Timer", - "Version": "1.0.31", + "Version": "1.0.32", "SDKVersion": 2, "Software": { "MinimumVersion": "5.0" }, "OS": [{ "Platform": "mac", "MinimumVersion": "10.11" }], diff --git a/notion-timer.streamDeckPlugin b/notion-timer.streamDeckPlugin index 2ab5dc924a824035249c03960f5b6439523e7fad..0d30ca6b484f30f2db76e54011c0490b8f467eae 100644 GIT binary patch delta 3493 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 K!l-lWMe=tkd5aSO delta 3476 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 diff --git a/src/plugin.ts b/src/plugin.ts index 13e1ec3..76aaeef 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -1,4 +1,4 @@ -const CURRENT_VERSION = "1.0.31"; +const CURRENT_VERSION = "1.0.32"; const GITEA_BASE = "https://gitea.pdmarf.co.uk/pdm/stream_deck_notion_timer/raw/branch/stable-rebuild"; const SIGNING_PUBLIC_KEY = `-----BEGIN PUBLIC KEY----- MCowBQYDK2VwAyEAN7ko8TUpuPzPAJuKAZCRjV0c4ZSlou5d9pUAF6o12b4= @@ -261,6 +261,8 @@ class TimerToggle extends SingletonAction { await ev.action.setSettings(started); this.settingsCache.set(ev.action.id, started); await setRunningEntry(entryId); + // Re-assert state after setSettings, which can reset visual state + await Promise.all([ev.action.setState(1), ev.action.setTitle(`⏱ ${title}`)]); } } catch (err) { streamDeck.logger.error("Timer toggle failed:", err); diff --git a/version.json b/version.json index 68603d5..5d8d496 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{ "version": "1.0.31" } +{ "version": "1.0.32" }