<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>go-toast, branch HEAD</title>
<subtitle>Send toast notifications in Windows </subtitle>
<entry>
<id>d322c5ba9a4b08dfdeb56d666732788e6ccc288f</id>
<published>2025-01-17T09:34:31Z</published>
<updated>2025-01-17T09:34:50Z</updated>
<title type="text">wintoast: add appData symbol to noop</title>
<link rel="alternate" type="text/html" href="commit/d322c5ba9a4b08dfdeb56d666732788e6ccc288f.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit d322c5ba9a4b08dfdeb56d666732788e6ccc288f
parent ec285b33a79cba505b5b27abee1c5e52c359f79f
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Fri, 17 Jan 2025 17:34:31 +0800

wintoast: add appData symbol to noop

Fixes compilation for macos and linux (should be a noop compile).

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>ec285b33a79cba505b5b27abee1c5e52c359f79f</id>
<published>2025-01-16T09:35:16Z</published>
<updated>2025-01-16T09:35:16Z</updated>
<title type="text">wintoast: use global appID if set</title>
<link rel="alternate" type="text/html" href="commit/ec285b33a79cba505b5b27abee1c5e52c359f79f.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit ec285b33a79cba505b5b27abee1c5e52c359f79f
parent c818d2a22a2a0439f8d45352d90bfc940486e717
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 16 Jan 2025 17:35:16 +0800

wintoast: use global appID if set

This allows the notification struct to not have an AppID set.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>c818d2a22a2a0439f8d45352d90bfc940486e717</id>
<published>2024-10-28T04:07:19Z</published>
<updated>2024-10-28T04:07:19Z</updated>
<title type="text">wintoast.pushCOM: disable notifications when unsupported</title>
<link rel="alternate" type="text/html" href="commit/c818d2a22a2a0439f8d45352d90bfc940486e717.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit c818d2a22a2a0439f8d45352d90bfc940486e717
parent 637ac233934ae98c9e6c5c93f233012131364118
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Mon, 28 Oct 2024 12:07:19 +0800

wintoast.pushCOM: disable notifications when unsupported

Windows 7 can have WinRT apis stubbed out, such as RoActivateInstance.
Rather than erroring like they should, they silently succeed, such that
we panic when we attempt to use the resulting COM object.

To avoid this we recover the panic and transform it into an error value
for the caller. In the above case of E_NOINTERFACE we permanently
disable the api to avoid spurious unrecoverable errors. pushCOM becomes
a noop function.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>637ac233934ae98c9e6c5c93f233012131364118</id>
<published>2024-10-07T05:58:27Z</published>
<updated>2024-10-07T05:58:38Z</updated>
<title type="text">toast: update to v2</title>
<link rel="alternate" type="text/html" href="commit/637ac233934ae98c9e6c5c93f233012131364118.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 637ac233934ae98c9e6c5c93f233012131364118
parent 86a0d746142079efd945bb785677821586117647
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Mon,  7 Oct 2024 15:58:27 +1000

toast: update to v2

- added support for extra styling features
- changed requirements around SetAppData

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>86a0d746142079efd945bb785677821586117647</id>
<published>2024-10-07T05:36:58Z</published>
<updated>2024-10-07T05:36:58Z</updated>
<title type="text">toast.Notification.Push: do not auto-call SetAppData</title>
<link rel="alternate" type="text/html" href="commit/86a0d746142079efd945bb785677821586117647.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 86a0d746142079efd945bb785677821586117647
parent 7388b443a90df3175ba5eb268d1777fc93f7bf85
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Mon,  7 Oct 2024 15:36:58 +1000

toast.Notification.Push: do not auto-call SetAppData

Require the caller to set the app data. We want to avoid overwritting
things. The convenience we were trying to provide present subtle error
modes.

</content>
</entry>
<entry>
<id>7388b443a90df3175ba5eb268d1777fc93f7bf85</id>
<published>2024-10-07T05:34:42Z</published>
<updated>2024-10-07T05:34:42Z</updated>
<title type="text">toast,wintoast: supply AppID directly</title>
<link rel="alternate" type="text/html" href="commit/7388b443a90df3175ba5eb268d1777fc93f7bf85.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 7388b443a90df3175ba5eb268d1777fc93f7bf85
parent 51d49c7d0c6f71e636f444b815f0832b75130c3f
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Mon,  7 Oct 2024 15:34:42 +1000

toast,wintoast: supply AppID directly

This will help us avoid overwriting the app data per push. We only need
access the AppID here.

</content>
</entry>
<entry>
<id>51d49c7d0c6f71e636f444b815f0832b75130c3f</id>
<published>2024-10-07T05:33:52Z</published>
<updated>2024-10-07T05:33:52Z</updated>
<title type="text">toast: support extra styling features</title>
<link rel="alternate" type="text/html" href="commit/51d49c7d0c6f71e636f444b815f0832b75130c3f.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 51d49c7d0c6f71e636f444b815f0832b75130c3f
parent 168cfffb5c062da0b9ae30c935a8d4abe959abf8
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Mon,  7 Oct 2024 15:33:52 +1000

toast: support extra styling features

These correspond to the fields added in the template.

</content>
</entry>
<entry>
<id>168cfffb5c062da0b9ae30c935a8d4abe959abf8</id>
<published>2024-10-07T05:31:58Z</published>
<updated>2024-10-07T05:31:58Z</updated>
<title type="text">tmpl: support more styling features</title>
<link rel="alternate" type="text/html" href="commit/168cfffb5c062da0b9ae30c935a8d4abe959abf8.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 168cfffb5c062da0b9ae30c935a8d4abe959abf8
parent 56524118f5e005e869d00441c73a75f8bd6cb352
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Mon,  7 Oct 2024 15:31:58 +1000

tmpl: support more styling features

- hero icon
- icon cropping
- embolden the title text
- action-input matching via hint-inputId

</content>
</entry>
<entry>
<id>56524118f5e005e869d00441c73a75f8bd6cb352</id>
<published>2024-10-06T08:52:43Z</published>
<updated>2024-10-06T08:53:03Z</updated>
<title type="text">tmpl: add xml declaration</title>
<link rel="alternate" type="text/html" href="commit/56524118f5e005e869d00441c73a75f8bd6cb352.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 56524118f5e005e869d00441c73a75f8bd6cb352
parent 29071af9a10475a3e0a95b6793ac645504f11e72
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun,  6 Oct 2024 18:52:43 +1000

tmpl: add xml declaration

This is required to avoid parse errors with emoji content and other
non-Latin scripts.

</content>
</entry>
<entry>
<id>29071af9a10475a3e0a95b6793ac645504f11e72</id>
<published>2024-10-06T08:51:47Z</published>
<updated>2024-10-06T08:52:58Z</updated>
<title type="text">wintoast: cleanup imports</title>
<link rel="alternate" type="text/html" href="commit/29071af9a10475a3e0a95b6793ac645504f11e72.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 29071af9a10475a3e0a95b6793ac645504f11e72
parent d5f241d934b73b6fd4b2175d144a22fcc6f86782
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun,  6 Oct 2024 18:51:47 +1000

wintoast: cleanup imports

</content>
</entry>
<entry>
<id>d5f241d934b73b6fd4b2175d144a22fcc6f86782</id>
<published>2024-10-04T08:05:45Z</published>
<updated>2024-10-04T08:05:45Z</updated>
<title type="text">wintoast.pushCOM: release all COM objects</title>
<link rel="alternate" type="text/html" href="commit/d5f241d934b73b6fd4b2175d144a22fcc6f86782.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit d5f241d934b73b6fd4b2175d144a22fcc6f86782
parent 9ca375ab4b2f8269b4990567941508883863ed09
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Fri,  4 Oct 2024 04:05:45 -0400

wintoast.pushCOM: release all COM objects

</content>
</entry>
<entry>
<id>9ca375ab4b2f8269b4990567941508883863ed09</id>
<published>2024-01-26T04:57:59Z</published>
<updated>2024-01-26T04:57:59Z</updated>
<title type="text">wintoast: display app id in error message</title>
<link rel="alternate" type="text/html" href="commit/9ca375ab4b2f8269b4990567941508883863ed09.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 9ca375ab4b2f8269b4990567941508883863ed09
parent df90b957fc5b334eaa97ee2c3e1f2dbd89f528d0
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Fri, 26 Jan 2024 12:57:59 +0800

wintoast: display app id in error message

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>df90b957fc5b334eaa97ee2c3e1f2dbd89f528d0</id>
<published>2023-12-07T04:32:30Z</published>
<updated>2023-12-07T04:32:30Z</updated>
<title type="text">toast: synchronize AppData</title>
<link rel="alternate" type="text/html" href="commit/df90b957fc5b334eaa97ee2c3e1f2dbd89f528d0.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit df90b957fc5b334eaa97ee2c3e1f2dbd89f528d0
parent e536997593cdb83b30d37626605340d65dd42939
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu,  7 Dec 2023 12:32:30 +0800

toast: synchronize AppData

Keep AppData in sync between the front and backend.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>e536997593cdb83b30d37626605340d65dd42939</id>
<published>2023-12-05T11:02:51Z</published>
<updated>2023-12-05T11:17:06Z</updated>
<title type="text">wintoast: avoid clobbering existing keys</title>
<link rel="alternate" type="text/html" href="commit/e536997593cdb83b30d37626605340d65dd42939.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit e536997593cdb83b30d37626605340d65dd42939
parent a452fa246783c615d931148aea6296716c59d19b
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue,  5 Dec 2023 19:02:51 +0800

wintoast: avoid clobbering existing keys

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>a452fa246783c615d931148aea6296716c59d19b</id>
<published>2023-12-05T10:52:01Z</published>
<updated>2023-12-05T11:17:06Z</updated>
<title type="text">wintoast: simplify init guard</title>
<link rel="alternate" type="text/html" href="commit/a452fa246783c615d931148aea6296716c59d19b.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit a452fa246783c615d931148aea6296716c59d19b
parent d9dbb391d85e5beff96924ef4a9ce1d1e0bc345e
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue,  5 Dec 2023 18:52:01 +0800

wintoast: simplify init guard

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>d9dbb391d85e5beff96924ef4a9ce1d1e0bc345e</id>
<published>2023-12-05T10:47:25Z</published>
<updated>2023-12-05T11:17:06Z</updated>
<title type="text">wintoast: use windows utf16 helpers</title>
<link rel="alternate" type="text/html" href="commit/d9dbb391d85e5beff96924ef4a9ce1d1e0bc345e.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit d9dbb391d85e5beff96924ef4a9ce1d1e0bc345e
parent 96c735044b149648fbe6051b9137b6db2dd3c4ef
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue,  5 Dec 2023 18:47:25 +0800

wintoast: use windows utf16 helpers

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>96c735044b149648fbe6051b9137b6db2dd3c4ef</id>
<published>2023-12-05T10:42:52Z</published>
<updated>2023-12-05T11:17:05Z</updated>
<title type="text">wintoast: use generated COM definitions</title>
<link rel="alternate" type="text/html" href="commit/96c735044b149648fbe6051b9137b6db2dd3c4ef.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 96c735044b149648fbe6051b9137b6db2dd3c4ef
parent eb13cd60ae70d0644ffb07df9a7b7b3c65a8c57e
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue,  5 Dec 2023 18:42:52 +0800

wintoast: use generated COM definitions

This commit removes the hand-written COM definitions as much
as possible.

However we are stuck with defining the _undocumented_ INotificationActivationCallback
and implementing it by hand.

The implemetnations get a cleanup here. The lifetime of our COM objects
are static, so we can remove all the locking and reference counting.

In addition, we can totally eschew Malloc/Free and just pin the objects
using [runtime.Pinner], deferring allocation to the Go runtime.

The end result is dramatically simplified.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>eb13cd60ae70d0644ffb07df9a7b7b3c65a8c57e</id>
<published>2023-12-05T08:59:50Z</published>
<updated>2023-12-05T11:17:05Z</updated>
<title type="text">winrt: add auto-generated COM definitions</title>
<link rel="alternate" type="text/html" href="commit/eb13cd60ae70d0644ffb07df9a7b7b3c65a8c57e.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit eb13cd60ae70d0644ffb07df9a7b7b3c65a8c57e
parent ec054438dfbb34bc52ea089e49838f42505ccf2b
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue,  5 Dec 2023 16:59:50 +0800

winrt: add auto-generated COM definitions

This includes the definitions we need, and is better than hand writing them.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>ec054438dfbb34bc52ea089e49838f42505ccf2b</id>
<published>2023-12-04T12:59:12Z</published>
<updated>2023-12-05T11:17:05Z</updated>
<title type="text">go mod tidy</title>
<link rel="alternate" type="text/html" href="commit/ec054438dfbb34bc52ea089e49838f42505ccf2b.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit ec054438dfbb34bc52ea089e49838f42505ccf2b
parent d0ed2b20757932ce709442748cb39be7a9d90eae
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Mon,  4 Dec 2023 20:59:12 +0800

go mod tidy

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>d0ed2b20757932ce709442748cb39be7a9d90eae</id>
<published>2023-12-04T12:56:16Z</published>
<updated>2023-12-05T11:15:38Z</updated>
<title type="text">examples/toast-cli: use foreground activation</title>
<link rel="alternate" type="text/html" href="commit/d0ed2b20757932ce709442748cb39be7a9d90eae.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit d0ed2b20757932ce709442748cb39be7a9d90eae
parent cec7e6e4b3dc1c43af3e01d840a4d8ebf29e1eeb
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Mon,  4 Dec 2023 20:56:16 +0800

examples/toast-cli: use foreground activation

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>cec7e6e4b3dc1c43af3e01d840a4d8ebf29e1eeb</id>
<published>2023-03-22T06:34:29Z</published>
<updated>2023-03-22T06:34:29Z</updated>
<title type="text">wintoast: allow per app GUID override</title>
<link rel="alternate" type="text/html" href="commit/cec7e6e4b3dc1c43af3e01d840a4d8ebf29e1eeb.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit cec7e6e4b3dc1c43af3e01d840a4d8ebf29e1eeb
parent ce23bc2275c66199b2a0c78c4ce0eff12579243c
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 22 Mar 2023 14:34:29 +0800

wintoast: allow per app GUID override

Let the caller supply their own GUID.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>ce23bc2275c66199b2a0c78c4ce0eff12579243c</id>
<published>2023-03-22T06:25:03Z</published>
<updated>2023-03-22T06:25:03Z</updated>
<title type="text">wintoast: refer to toast for docs</title>
<link rel="alternate" type="text/html" href="commit/ce23bc2275c66199b2a0c78c4ce0eff12579243c.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit ce23bc2275c66199b2a0c78c4ce0eff12579243c
parent fc617a95143bf5e18485b76490516b03b1da8c23
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 22 Mar 2023 14:25:03 +0800

wintoast: refer to toast for docs

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>fc617a95143bf5e18485b76490516b03b1da8c23</id>
<published>2023-03-22T06:24:38Z</published>
<updated>2023-03-22T06:24:38Z</updated>
<title type="text">toast: explain extra flag that WinRT passes on activation</title>
<link rel="alternate" type="text/html" href="commit/fc617a95143bf5e18485b76490516b03b1da8c23.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit fc617a95143bf5e18485b76490516b03b1da8c23
parent 6327a248eff77b497723a84682896f8862e16845
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 22 Mar 2023 14:24:38 +0800

toast: explain extra flag that WinRT passes on activation

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>6327a248eff77b497723a84682896f8862e16845</id>
<published>2023-03-22T05:58:36Z</published>
<updated>2023-03-22T05:58:36Z</updated>
<title type="text">toast: remove superfluous constant</title>
<link rel="alternate" type="text/html" href="commit/6327a248eff77b497723a84682896f8862e16845.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 6327a248eff77b497723a84682896f8862e16845
parent 4d4e3c9cb6bf6cdfc965761eee9e9e70fd18a9a3
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 22 Mar 2023 13:58:36 +0800

toast: remove superfluous constant

Foreground and Background are treated identically for
our purposes. Therefore we can simplify things by removing
on of the options.

https://learn.microsoft.com/en-us/windows/apps/design/shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl#foreground-vs-background-activation

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>4d4e3c9cb6bf6cdfc965761eee9e9e70fd18a9a3</id>
<published>2023-03-22T04:25:40Z</published>
<updated>2023-03-22T04:25:40Z</updated>
<title type="text">readme: explain the packages</title>
<link rel="alternate" type="text/html" href="commit/4d4e3c9cb6bf6cdfc965761eee9e9e70fd18a9a3.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 4d4e3c9cb6bf6cdfc965761eee9e9e70fd18a9a3
parent 628a5756a2c0021a01faeb9102eadffc039cabf8
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 22 Mar 2023 12:25:40 +0800

readme: explain the packages

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>628a5756a2c0021a01faeb9102eadffc039cabf8</id>
<published>2023-03-22T04:10:44Z</published>
<updated>2023-03-22T04:21:16Z</updated>
<title type="text">all: export low level windows api</title>
<link rel="alternate" type="text/html" href="commit/628a5756a2c0021a01faeb9102eadffc039cabf8.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 628a5756a2c0021a01faeb9102eadffc039cabf8
parent 4c3afc4582daa815adace1595f6e90f14a15af37
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 22 Mar 2023 12:10:44 +0800

all: export low level windows api

Rename package bind to wintoast, and export it so that
consumers can use it directly if desired - rather than
the higher level wrapper package.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>4c3afc4582daa815adace1595f6e90f14a15af37</id>
<published>2023-03-22T04:04:28Z</published>
<updated>2023-03-22T04:04:28Z</updated>
<title type="text">all: allow package bind to be compiled on non windows</title>
<link rel="alternate" type="text/html" href="commit/4c3afc4582daa815adace1595f6e90f14a15af37.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 4c3afc4582daa815adace1595f6e90f14a15af37
parent 53f523e3d4798c91592239eb1da3366ee09fba15
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 22 Mar 2023 12:04:28 +0800

all: allow package bind to be compiled on non windows

Use build flags to define non-windows function stubs.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>53f523e3d4798c91592239eb1da3366ee09fba15</id>
<published>2023-03-22T01:37:10Z</published>
<updated>2023-03-22T01:38:43Z</updated>
<title type="text">toast,internal/bind: consistent field naming</title>
<link rel="alternate" type="text/html" href="commit/53f523e3d4798c91592239eb1da3366ee09fba15.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 53f523e3d4798c91592239eb1da3366ee09fba15
parent 3126322d89d19072d4e8b6e785173ecf4f5f737d
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 22 Mar 2023 09:37:10 +0800

toast,internal/bind: consistent field naming

Make the field names consistent.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>3126322d89d19072d4e8b6e785173ecf4f5f737d</id>
<published>2023-03-21T10:01:17Z</published>
<updated>2023-03-21T10:01:39Z</updated>
<title type="text">toast: avoid setting default backgroundcolor</title>
<link rel="alternate" type="text/html" href="commit/3126322d89d19072d4e8b6e785173ecf4f5f737d.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 3126322d89d19072d4e8b6e785173ecf4f5f737d
parent d1b15c7028877de4e826be767f6f830f82ce06eb
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 21 Mar 2023 18:01:17 +0800

toast: avoid setting default backgroundcolor

This is not strictly needed.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>d1b15c7028877de4e826be767f6f830f82ce06eb</id>
<published>2023-03-21T09:57:11Z</published>
<updated>2023-03-21T10:01:08Z</updated>
<title type="text">bind: use the global app.ID if set</title>
<link rel="alternate" type="text/html" href="commit/d1b15c7028877de4e826be767f6f830f82ce06eb.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit d1b15c7028877de4e826be767f6f830f82ce06eb
parent a09f8f0fe30b5971d8c0a855c41ff0dfe6b18b6e
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 21 Mar 2023 17:57:11 +0800

bind: use the global app.ID if set

As the comment acknowledges, this is not generally a good way
to write this code. However, we want some peculiar flexibility
when using this API. We need support the global SetAppData
along side supplying the data within toast.Notification.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>a09f8f0fe30b5971d8c0a855c41ff0dfe6b18b6e</id>
<published>2023-03-21T09:56:17Z</published>
<updated>2023-03-21T09:56:17Z</updated>
<title type="text">bind: more precise early out</title>
<link rel="alternate" type="text/html" href="commit/a09f8f0fe30b5971d8c0a855c41ff0dfe6b18b6e.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit a09f8f0fe30b5971d8c0a855c41ff0dfe6b18b6e
parent 5b500ee64deb0af6ed41fb037398bf6f9c00c8e6
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 21 Mar 2023 17:56:17 +0800

bind: more precise early out

This fixes a bug where there are other fields supplied for the
AppData struct.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>5b500ee64deb0af6ed41fb037398bf6f9c00c8e6</id>
<published>2023-03-21T08:27:38Z</published>
<updated>2023-03-21T08:27:38Z</updated>
<title type="text">examples/toast-cli: add activation exe to flag set</title>
<link rel="alternate" type="text/html" href="commit/5b500ee64deb0af6ed41fb037398bf6f9c00c8e6.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 5b500ee64deb0af6ed41fb037398bf6f9c00c8e6
parent 2fb0180c4771388cb0976302e365074fdb4dbecc
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 21 Mar 2023 16:27:38 +0800

examples/toast-cli: add activation exe to flag set

Allows setting the activation executable path in the example.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>2fb0180c4771388cb0976302e365074fdb4dbecc</id>
<published>2023-03-21T08:25:29Z</published>
<updated>2023-03-21T08:25:29Z</updated>
<title type="text">bind: test registry manipulation</title>
<link rel="alternate" type="text/html" href="commit/2fb0180c4771388cb0976302e365074fdb4dbecc.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 2fb0180c4771388cb0976302e365074fdb4dbecc
parent 24528066e08feab41da3d31468079ab29778add9
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 21 Mar 2023 16:25:29 +0800

bind: test registry manipulation

Ensure the proper keys are set correctly.

This commit inserts test hooks into the registry code.

Instead of trying to mock the object oriented nature of
the registry package api, I&#39;ve wrapped it in a simple
function that opens and set the registry value in one go.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>24528066e08feab41da3d31468079ab29778add9</id>
<published>2023-03-21T06:58:25Z</published>
<updated>2023-03-21T07:30:09Z</updated>
<title type="text">bind: allow for overlapping usecases</title>
<link rel="alternate" type="text/html" href="commit/24528066e08feab41da3d31468079ab29778add9.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 24528066e08feab41da3d31468079ab29778add9
parent a1588bc9486857299402a168e245056e02d87b6b
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 21 Mar 2023 14:58:25 +0800

bind: allow for overlapping usecases

This code allows SetAppData to be called once, globally,
or per notification.

If we set it globally, and the per-notification call provides
an empty struct, we early out - since the data is already saved.
This is instead of zeroing out the values in the registry.

This way the caller can decide to provide app data through the
use of the Notification struct or through the global SetAppData
func.

In particular this should allow consumers to set the Windows
metadata when using cross platform wrappers that don&#39;t expose
it.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>a1588bc9486857299402a168e245056e02d87b6b</id>
<published>2023-03-21T06:26:19Z</published>
<updated>2023-03-21T06:26:19Z</updated>
<title type="text">toast: allow globally setting app data</title>
<link rel="alternate" type="text/html" href="commit/a1588bc9486857299402a168e245056e02d87b6b.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit a1588bc9486857299402a168e245056e02d87b6b
parent 8dd2fc0797e688957a0d0bafd03066cfbeca2a54
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 21 Mar 2023 14:26:19 +0800

toast: allow globally setting app data

The reason for this is twofold:

1. Registry state is fundamentally global; so a global
   func that manipulates it is more correct
   Consider multiple concurrent notifications, the registry
   state will race.

2. Packages that import wrappers of this package (eg that
   offer a cross platform api) might hide Windows-only
   functionality. By offering this as a global we can set
   the Windows-only functionality through a side channel,
   while using the wrapping package like normal.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>8dd2fc0797e688957a0d0bafd03066cfbeca2a54</id>
<published>2023-03-20T08:28:51Z</published>
<updated>2023-03-20T08:29:22Z</updated>
<title type="text">fixup module name</title>
<link rel="alternate" type="text/html" href="commit/8dd2fc0797e688957a0d0bafd03066cfbeca2a54.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 8dd2fc0797e688957a0d0bafd03066cfbeca2a54
parent 9f23965a9340a69774ecaefb1b99615fa059c273
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Mon, 20 Mar 2023 16:28:51 +0800

fixup module name

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>9f23965a9340a69774ecaefb1b99615fa059c273</id>
<published>2023-03-20T07:44:09Z</published>
<updated>2023-03-20T08:29:22Z</updated>
<title type="text">ARCHITECTURE: attempt to explain the details of this package</title>
<link rel="alternate" type="text/html" href="commit/9f23965a9340a69774ecaefb1b99615fa059c273.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 9f23965a9340a69774ecaefb1b99615fa059c273
parent 2ed479fb48fad032355df9d6ec248a980650a62e
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Mon, 20 Mar 2023 15:44:09 +0800

ARCHITECTURE: attempt to explain the details of this package

The goal of this document is to provide enough explanation
to get someone up to speed even if they don&#39;t know COM or
are not familiar with the syscall package.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>2ed479fb48fad032355df9d6ec248a980650a62e</id>
<published>2023-03-17T09:23:16Z</published>
<updated>2023-03-17T09:23:51Z</updated>
<title type="text">examples/toast-cli: default to background activation type</title>
<link rel="alternate" type="text/html" href="commit/2ed479fb48fad032355df9d6ec248a980650a62e.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt@gmail.com</email>
</author>
<content type="text">commit 2ed479fb48fad032355df9d6ec248a980650a62e
parent d2b1e55846a07bcd3d814784a3ed1745b0208e88
Author: Jack Mordaunt &lt;jackmordaunt@gmail.com&gt;
Date:   Fri, 17 Mar 2023 17:23:16 +0800

examples/toast-cli: default to background activation type

This type is the more correct one for callbacks.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt@gmail.com&gt;

</content>
</entry>
<entry>
<id>d2b1e55846a07bcd3d814784a3ed1745b0208e88</id>
<published>2023-03-17T09:14:50Z</published>
<updated>2023-03-17T09:14:50Z</updated>
<title type="text">toast: remove DisplayName</title>
<link rel="alternate" type="text/html" href="commit/d2b1e55846a07bcd3d814784a3ed1745b0208e88.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt@gmail.com</email>
</author>
<content type="text">commit d2b1e55846a07bcd3d814784a3ed1745b0208e88
parent c6470b0dcd8fc78f92a0eff60019044674fe110b
Author: Jack Mordaunt &lt;jackmordaunt@gmail.com&gt;
Date:   Fri, 17 Mar 2023 17:14:50 +0800

toast: remove DisplayName

The registry entry for DisplayName appears to be useless, at
least as tested by me on Windows 11.

For now, we can simplify things and just the the AppID.

I tested using special characters for the AppID and it renders
them correctly on Windows 11. Windows 10 I&#39;m not sure about.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt@gmail.com&gt;

</content>
</entry>
<entry>
<id>c6470b0dcd8fc78f92a0eff60019044674fe110b</id>
<published>2023-03-17T08:52:15Z</published>
<updated>2023-03-17T08:53:08Z</updated>
<title type="text">toast: document ActivationType</title>
<link rel="alternate" type="text/html" href="commit/c6470b0dcd8fc78f92a0eff60019044674fe110b.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt@gmail.com</email>
</author>
<content type="text">commit c6470b0dcd8fc78f92a0eff60019044674fe110b
parent a5c9562d1d217b76d18bfb0608dc4a4b64af88ef
Author: Jack Mordaunt &lt;jackmordaunt@gmail.com&gt;
Date:   Fri, 17 Mar 2023 16:52:15 +0800

toast: document ActivationType

Signed-off-by: Jack Mordaunt &lt;jackmordaunt@gmail.com&gt;

</content>
</entry>
<entry>
<id>a5c9562d1d217b76d18bfb0608dc4a4b64af88ef</id>
<published>2023-03-17T08:47:42Z</published>
<updated>2023-03-17T08:47:42Z</updated>
<title type="text">toast: remove obsolete generation command</title>
<link rel="alternate" type="text/html" href="commit/a5c9562d1d217b76d18bfb0608dc4a4b64af88ef.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt@gmail.com</email>
</author>
<content type="text">commit a5c9562d1d217b76d18bfb0608dc4a4b64af88ef
parent 86718a85e07ed7bf1e2a316289f7c4a66988e4b1
Author: Jack Mordaunt &lt;jackmordaunt@gmail.com&gt;
Date:   Fri, 17 Mar 2023 16:47:42 +0800

toast: remove obsolete generation command

We no longer need to build C, so this command is obsolete.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt@gmail.com&gt;

</content>
</entry>
<entry>
<id>86718a85e07ed7bf1e2a316289f7c4a66988e4b1</id>
<published>2023-03-17T07:32:52Z</published>
<updated>2023-03-17T07:32:52Z</updated>
<title type="text">bind: explain cookie out param</title>
<link rel="alternate" type="text/html" href="commit/86718a85e07ed7bf1e2a316289f7c4a66988e4b1.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 86718a85e07ed7bf1e2a316289f7c4a66988e4b1
parent e7c0faf5a3c06a5ac746f6ee5b2931f89caf281e
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Fri, 17 Mar 2023 15:32:52 +0800

bind: explain cookie out param

Used for later revocation which we never do.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>e7c0faf5a3c06a5ac746f6ee5b2931f89caf281e</id>
<published>2023-03-17T07:32:26Z</published>
<updated>2023-03-17T07:32:26Z</updated>
<title type="text">bind: remove obsolete comment</title>
<link rel="alternate" type="text/html" href="commit/e7c0faf5a3c06a5ac746f6ee5b2931f89caf281e.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit e7c0faf5a3c06a5ac746f6ee5b2931f89caf281e
parent 32390f8975d9eef6fd3e96433d6d105ad151af22
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Fri, 17 Mar 2023 15:32:26 +0800

bind: remove obsolete comment

I decided to add all the method pointers to completeness.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>32390f8975d9eef6fd3e96433d6d105ad151af22</id>
<published>2023-03-16T09:34:03Z</published>
<updated>2023-03-16T09:34:03Z</updated>
<title type="text">license under MIT / Unlicense</title>
<link rel="alternate" type="text/html" href="commit/32390f8975d9eef6fd3e96433d6d105ad151af22.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 32390f8975d9eef6fd3e96433d6d105ad151af22
parent 09d1b92bc913a53e1645bfaf8f067532fac73527
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 16 Mar 2023 17:34:03 +0800

license under MIT / Unlicense

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>09d1b92bc913a53e1645bfaf8f067532fac73527</id>
<published>2023-03-16T09:33:49Z</published>
<updated>2023-03-16T09:33:49Z</updated>
<title type="text">todo: remove completed todo list</title>
<link rel="alternate" type="text/html" href="commit/09d1b92bc913a53e1645bfaf8f067532fac73527.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 09d1b92bc913a53e1645bfaf8f067532fac73527
parent 31c31b9b5f48ef5f06d7896f2dfe42e632b225a3
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 16 Mar 2023 17:33:49 +0800

todo: remove completed todo list

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>31c31b9b5f48ef5f06d7896f2dfe42e632b225a3</id>
<published>2023-03-16T09:33:31Z</published>
<updated>2023-03-16T09:33:31Z</updated>
<title type="text">readme: update with usage</title>
<link rel="alternate" type="text/html" href="commit/31c31b9b5f48ef5f06d7896f2dfe42e632b225a3.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 31c31b9b5f48ef5f06d7896f2dfe42e632b225a3
parent ca66597e00d8ff8c034188582deeb9ec66af643a
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 16 Mar 2023 17:33:31 +0800

readme: update with usage

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>ca66597e00d8ff8c034188582deeb9ec66af643a</id>
<published>2023-03-16T09:32:08Z</published>
<updated>2023-03-16T09:32:08Z</updated>
<title type="text">move cmd to example</title>
<link rel="alternate" type="text/html" href="commit/ca66597e00d8ff8c034188582deeb9ec66af643a.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit ca66597e00d8ff8c034188582deeb9ec66af643a
parent 1601fbeb01b6618a331c9acd40ef9e5541e3bd8d
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 16 Mar 2023 17:32:08 +0800

move cmd to example

cmd was misleading as the binary was designed to test the api.

We can make a fully fledged command binary later.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>1601fbeb01b6618a331c9acd40ef9e5541e3bd8d</id>
<published>2023-03-16T09:02:50Z</published>
<updated>2023-03-16T09:10:40Z</updated>
<title type="text">bind: pure-Go implementation</title>
<link rel="alternate" type="text/html" href="commit/1601fbeb01b6618a331c9acd40ef9e5541e3bd8d.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 1601fbeb01b6618a331c9acd40ef9e5541e3bd8d
parent 82e616a4b672e5265c685aec155f1fe590aa2fdf
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 16 Mar 2023 17:02:50 +0800

bind: pure-Go implementation

This commit overhauls the entire internals to use pure-Go
code to orchestrate the Windows Runtime and implement the COM
objects necessary for notification callbacks.

This code does &quot;exactly&quot; what the C code did, but the procedures
are fully implemented in Go, via the help of syscall.NewCallback.

This means we no longer need a C compiler, the Windows C compiler
or nor do we need to distribute a Dll blob to the user.

I&#39;ve tried to thoroughly document and explain everything so that
no one else has to do the amount of research and tinkering that
I had to.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>82e616a4b672e5265c685aec155f1fe590aa2fdf</id>
<published>2023-03-16T04:33:22Z</published>
<updated>2023-03-16T04:33:22Z</updated>
<title type="text">bind: make use of kernel32 memory allocation</title>
<link rel="alternate" type="text/html" href="commit/82e616a4b672e5265c685aec155f1fe590aa2fdf.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 82e616a4b672e5265c685aec155f1fe590aa2fdf
parent d82f8bc4a3a4b11c0b2d018eefe665f6d52f64f0
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 16 Mar 2023 12:33:22 +0800

bind: make use of kernel32 memory allocation

This reduces the reliance on the C code, allowing Go to manage
memory.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>d82f8bc4a3a4b11c0b2d018eefe665f6d52f64f0</id>
<published>2023-03-16T04:22:24Z</published>
<updated>2023-03-16T04:22:56Z</updated>
<title type="text">bind: use predefined RoRegisterClassObject</title>
<link rel="alternate" type="text/html" href="commit/d82f8bc4a3a4b11c0b2d018eefe665f6d52f64f0.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit d82f8bc4a3a4b11c0b2d018eefe665f6d52f64f0
parent 9b2bf0b1d578a355302161fc86d67b96149a041a
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 16 Mar 2023 12:22:24 +0800

bind: use predefined RoRegisterClassObject

Instead of wrapping it and exposing it in our DLL.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>9b2bf0b1d578a355302161fc86d67b96149a041a</id>
<published>2023-03-16T04:18:13Z</published>
<updated>2023-03-16T04:18:13Z</updated>
<title type="text">toast: migrate orchestration to Go code</title>
<link rel="alternate" type="text/html" href="commit/9b2bf0b1d578a355302161fc86d67b96149a041a.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 9b2bf0b1d578a355302161fc86d67b96149a041a
parent 08918e35ac6788d52ac4c5c2b0a579ddae837c53
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 16 Mar 2023 12:18:13 +0800

toast: migrate orchestration to Go code

This commit focuses on moving the content of GenerateToast to the Go
side.

This entails describing all the Vtables using structs with uintptr and
calling them with the syscall package.

While performing the migration, I&#39;ve broken the code out in the bind
package in attempt to be more organized.

The C code surface is significantly reduced.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>08918e35ac6788d52ac4c5c2b0a579ddae837c53</id>
<published>2023-03-15T11:19:15Z</published>
<updated>2023-03-15T11:22:32Z</updated>
<title type="text">toast: add powershell fallback</title>
<link rel="alternate" type="text/html" href="commit/08918e35ac6788d52ac4c5c2b0a579ddae837c53.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 08918e35ac6788d52ac4c5c2b0a579ddae837c53
parent 194b232c28cedca42432d94adf098ebcee704729
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 15 Mar 2023 19:19:15 +0800

toast: add powershell fallback

If the dll is not available, we use a temporary powershell
script to gracefully degrade behaviour. This is hacky and
doesn&#39;t support the ActivationCallback.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>194b232c28cedca42432d94adf098ebcee704729</id>
<published>2023-03-15T11:18:45Z</published>
<updated>2023-03-15T11:18:45Z</updated>
<title type="text">bind: surface DLL availability</title>
<link rel="alternate" type="text/html" href="commit/194b232c28cedca42432d94adf098ebcee704729.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 194b232c28cedca42432d94adf098ebcee704729
parent 53f39c0056b10f322628fcc9817aa76561ea834b
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 15 Mar 2023 19:18:45 +0800

bind: surface DLL availability

This will be used to implement a powershell fallback.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>53f39c0056b10f322628fcc9817aa76561ea834b</id>
<published>2023-03-15T11:18:17Z</published>
<updated>2023-03-15T11:18:17Z</updated>
<title type="text">tmpl: fix powershell syntax</title>
<link rel="alternate" type="text/html" href="commit/53f39c0056b10f322628fcc9817aa76561ea834b.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 53f39c0056b10f322628fcc9817aa76561ea834b
parent 24043fcd0c1ee0d52cf31599ca74ec2c33d3cf95
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 15 Mar 2023 19:18:17 +0800

tmpl: fix powershell syntax

This string literal requires open and close to be
on separate lines.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>24043fcd0c1ee0d52cf31599ca74ec2c33d3cf95</id>
<published>2023-03-15T10:29:50Z</published>
<updated>2023-03-15T10:29:50Z</updated>
<title type="text">bind: extract registry logic to file</title>
<link rel="alternate" type="text/html" href="commit/24043fcd0c1ee0d52cf31599ca74ec2c33d3cf95.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 24043fcd0c1ee0d52cf31599ca74ec2c33d3cf95
parent bc9200482b415b309b45e1da61817f1fa8798c28
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 15 Mar 2023 18:29:50 +0800

bind: extract registry logic to file

This separates the registry manipulation from the DLL interaction.
Also enhanced the documentation.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>bc9200482b415b309b45e1da61817f1fa8798c28</id>
<published>2023-03-15T10:23:32Z</published>
<updated>2023-03-15T10:23:32Z</updated>
<title type="text">toast: make API reflect global nature</title>
<link rel="alternate" type="text/html" href="commit/bc9200482b415b309b45e1da61817f1fa8798c28.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit bc9200482b415b309b45e1da61817f1fa8798c28
parent 8da8bfc2fa3fcce7958093e99235ec3290ccb578
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 15 Mar 2023 18:23:32 +0800

toast: make API reflect global nature

This change makes the exported API reflect the global nature
of the state involved. Having a per Notification field as the
callback implies a coulping between the callback and the
Notification.

In reality, subsequent invocations will totally replace the prior
callback instance - so that API is misleading.

Instead we just offer a plain global function that sets the callback.

...

If a need arises we can implement some kind of routing so that
individual notification objects can have their own true callback.

Eg we would register a global callback that maintains a map of callbacks
corresponding to each indidual notification.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>8da8bfc2fa3fcce7958093e99235ec3290ccb578</id>
<published>2023-03-15T06:54:44Z</published>
<updated>2023-03-15T06:54:44Z</updated>
<title type="text">internal/bind: avoid re-initializing windows runtime</title>
<link rel="alternate" type="text/html" href="commit/8da8bfc2fa3fcce7958093e99235ec3290ccb578.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 8da8bfc2fa3fcce7958093e99235ec3290ccb578
parent 9c52d53929fd1a8d8ea54a4777022af9a8221753
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 15 Mar 2023 14:54:44 +0800

internal/bind: avoid re-initializing windows runtime

Reinit causes errors (eg subsequent invocations of RoInitialize).
This logic will retry on error though, to maximize recoverability.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>9c52d53929fd1a8d8ea54a4777022af9a8221753</id>
<published>2023-03-15T06:54:36Z</published>
<updated>2023-03-15T06:54:36Z</updated>
<title type="text">toast: add fields and adjust docs</title>
<link rel="alternate" type="text/html" href="commit/9c52d53929fd1a8d8ea54a4777022af9a8221753.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 9c52d53929fd1a8d8ea54a4777022af9a8221753
parent d6faf9262fe99079bb0686c5f111fec31e89c335
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 15 Mar 2023 14:54:36 +0800

toast: add fields and adjust docs

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>d6faf9262fe99079bb0686c5f111fec31e89c335</id>
<published>2023-03-15T06:54:14Z</published>
<updated>2023-03-15T06:54:14Z</updated>
<title type="text">toast: add arguments to activation callback</title>
<link rel="alternate" type="text/html" href="commit/d6faf9262fe99079bb0686c5f111fec31e89c335.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit d6faf9262fe99079bb0686c5f111fec31e89c335
parent adcdbf00e925bbf613aee84cb94d28f7b2ec5228
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 15 Mar 2023 14:54:14 +0800

toast: add arguments to activation callback

Allow the caller to accesse the response data.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>adcdbf00e925bbf613aee84cb94d28f7b2ec5228</id>
<published>2023-03-15T06:14:06Z</published>
<updated>2023-03-15T06:14:06Z</updated>
<title type="text">internal/bind: lazy load DLL</title>
<link rel="alternate" type="text/html" href="commit/adcdbf00e925bbf613aee84cb94d28f7b2ec5228.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit adcdbf00e925bbf613aee84cb94d28f7b2ec5228
parent e76d509b45be5b6ccbac91f4a63b8f6751e9b0d6
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 15 Mar 2023 14:14:06 +0800

internal/bind: lazy load DLL

This will let us test for the DLL without panicking,
allows implementing the powershell fallback.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>e76d509b45be5b6ccbac91f4a63b8f6751e9b0d6</id>
<published>2023-03-15T06:11:08Z</published>
<updated>2023-03-15T06:11:08Z</updated>
<title type="text">toast: remove incorrect comment</title>
<link rel="alternate" type="text/html" href="commit/e76d509b45be5b6ccbac91f4a63b8f6751e9b0d6.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit e76d509b45be5b6ccbac91f4a63b8f6751e9b0d6
parent 67a0f31080910ecdd58ce91c21992b832d85c61e
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 15 Mar 2023 14:11:08 +0800

toast: remove incorrect comment

The related function was removed.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>67a0f31080910ecdd58ce91c21992b832d85c61e</id>
<published>2023-03-15T06:08:37Z</published>
<updated>2023-03-15T06:08:37Z</updated>
<title type="text">tmpl: package templating details</title>
<link rel="alternate" type="text/html" href="commit/67a0f31080910ecdd58ce91c21992b832d85c61e.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 67a0f31080910ecdd58ce91c21992b832d85c61e
parent 1067c138245e5c5bda6ed12aa7015ac18f5a036f
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 15 Mar 2023 14:08:37 +0800

tmpl: package templating details

- add powershell template
- wrap templating in package to keep things clean

We expose exactly two symbols: each processed template
for convenient use.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>1067c138245e5c5bda6ed12aa7015ac18f5a036f</id>
<published>2023-03-15T06:07:52Z</published>
<updated>2023-03-15T06:07:52Z</updated>
<title type="text">todo: powershell fallback</title>
<link rel="alternate" type="text/html" href="commit/1067c138245e5c5bda6ed12aa7015ac18f5a036f.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 1067c138245e5c5bda6ed12aa7015ac18f5a036f
parent 7a12f331c3603b35f823adc894a52b6841ff5307
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 15 Mar 2023 14:07:52 +0800

todo: powershell fallback

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>7a12f331c3603b35f823adc894a52b6841ff5307</id>
<published>2023-03-14T10:32:07Z</published>
<updated>2023-03-14T10:32:07Z</updated>
<title type="text">toast: build out toast api</title>
<link rel="alternate" type="text/html" href="commit/7a12f331c3603b35f823adc894a52b6841ff5307.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 7a12f331c3603b35f823adc894a52b6841ff5307
parent ec826271a616ba89de863097420ee259bf987b09
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 14 Mar 2023 18:32:07 +0800

toast: build out toast api

- cmd/toast-cli for manually testing notification features
- orchestrate Registry manipulation from Go
- generate XML template from Go
- add TODO to track remaining work items
- add bind package to wrap the raw DLL calls in nicer APIs
- impl unsafe data conversions
- impl text input
- impl select input
- impl high-level API based on go-toast
- simplify C code with simple macros

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>ec826271a616ba89de863097420ee259bf987b09</id>
<published>2023-03-13T04:59:28Z</published>
<updated>2023-03-13T04:59:28Z</updated>
<title type="text">c-lib: delete main</title>
<link rel="alternate" type="text/html" href="commit/ec826271a616ba89de863097420ee259bf987b09.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit ec826271a616ba89de863097420ee259bf987b09
parent c3fe500c5a3b13325de906947799b8986cb4b32f
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Mon, 13 Mar 2023 12:59:28 +0800

c-lib: delete main

We won&#39;t be executing this code as a standalone executable,
so let&#39;s delete such code.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>c3fe500c5a3b13325de906947799b8986cb4b32f</id>
<published>2023-03-13T04:56:00Z</published>
<updated>2023-03-13T04:56:00Z</updated>
<title type="text">c-lib: export initializers</title>
<link rel="alternate" type="text/html" href="commit/c3fe500c5a3b13325de906947799b8986cb4b32f.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit c3fe500c5a3b13325de906947799b8986cb4b32f
parent d84747fae5b1d0479b9658a38744530e99e257d8
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Mon, 13 Mar 2023 12:56:00 +0800

c-lib: export initializers

It feels wrong to force the caller to use a third-party means to
initialize the Windows Runtime.

The caller _can_ use ole.{Co,Ro}Initialize, and we likely will,
however including functions to do the same seems like a good approach.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>d84747fae5b1d0479b9658a38744530e99e257d8</id>
<published>2023-03-10T08:34:16Z</published>
<updated>2023-03-10T09:29:55Z</updated>
<title type="text">go-toast: initial commit</title>
<link rel="alternate" type="text/html" href="commit/d84747fae5b1d0479b9658a38744530e99e257d8.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit d84747fae5b1d0479b9658a38744530e99e257d8
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Fri, 10 Mar 2023 16:34:16 +0800

go-toast: initial commit

This setup can succesfully use the MSVC compiled DLL
to generate toast notifications on Windows.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
</feed>
