Releases: phoseinq/DynamicWin
Release list
Halo v3.3.0 - telegram gets a real timeline
Telegram finally has a timeline. Telegram publishes no position over SMTC, so its music sat behind a
dead seek bar. The position now comes from the desktop client's own player strip, read over UI Automation,
and the bar can be dragged to seek — a synthetic click posted straight at Telegram's slider, so your mouse
pointer is never moved or borrowed. Works for video too.
The question banner is readable on the desktop, and you can put it away. Over a busy wallpaper the
panel had nothing to contrast against and the text competed with whatever was behind it; the desktop tint
is now much darker while the glass over an app is unchanged, where the captured backdrop is really doing
that job. There is a close button in the corner and a swipe up from the bottom edge — neither answers the
question, they just take the banner off the screen. It also folds away properly now instead of vanishing
between frames, which turned out to be true of answering as well.
A dash in Persian text no longer eats the space next to it. A dash is a bidi neutral, and resolving the
neutral run swallowed the whitespace at the direction change, welding the dash to the following word. It is
pinned into the run from both sides now — in the banner and in the scrolling media title, where
"artist — title" is the commonest case in the whole app.
Settings stops overwriting what the pill wrote. The panel merged your edits onto the snapshot it opened
with, so leaving it open while dragging the pill to a new position — or while anything else wrote a
setting — put the stale copy back and silently undid the change. It merges onto the current file now.
Frames, and the things that ride on them. A real frame-rate ceiling that reads the monitor instead of
assuming 60, a 280 tier that is a real choice rather than another name for 240, and the timer resolution
raised so the ceiling is not decoration. Album art retries instead of falling back to the app icon, the
collapsed progress bar stopped looking like two bars and moves smoothly, long titles scroll on their own
while playing, and the cover card-flips on a track change.
Setup installs to %LOCALAPPDATA%\Programs\Halo, unpackaged, no MSIX. The portable zip is the same build
with nothing written outside its own folder. Both are signed.
Halo v3.1.7 - no updater
Halo no longer updates itself
The built-in updater is gone — no version check, no background download, no silent reinstall. Halo now makes no network request about its own version at all.
If you installed from the setup here, you update the way you installed: download the new DynamicWinSetup.exe and run it over the top. Nothing else changes, and your settings, pin position and file tray are kept.
The privacy policy now matches the code
PRIVACY.md said, in two places, that Halo "does not use the Windows location API" and that your actual location never leaves the machine. That stopped being true when the hourly banner learned to fetch weather: if Windows location is switched on and Halo is allowed to use it, Halo asks Windows for a fix and sends those coordinates — about 11 m — to Open-Meteo.
A privacy policy that is merely out of date is still a wrong one, so both the English and Persian versions now say exactly what is sent, how precise it is, what consent it depends on, and where in Windows to switch it off (Settings → Privacy & security → Location). Turn it off and the banner still works — one city wide instead of one street. Nothing else about the data Halo touches has changed.
Also
- Both READMEs and both privacy policies now point at this repository rather than the old one.
- CI and the CodeQL scan only ever triggered on the old branch name, so neither had run here. Both now run on
main.
DynamicWinSetup.exe is the signed installer. DynamicWinPortable.zip needs no install — unzip and run Halo\Halo.App.exe.
Halo v3.1.6 - the date in the calendar you actually use
The hourly banner now uses the calendar of the place you are in
Once an hour Halo shows the time, the date and the weather for where the machine thinks it is. The date was only ever written two ways — the Iranian Solar Hijri calendar, or Gregorian for everyone else — and that got two places wrong.
Afghanistan runs the same Solar Hijri calendar as Iran, with different month names. It was deliberately left on Gregorian for exactly that reason: showing Tehran's month names to someone in Kabul is worse than showing none at all. There is a second set of names now, so Kabul reads 8 Asad where Tehran reads 8 Mordad.
Saudi Arabia gets the lunar Hijri date, taken from the Umm al-Qura calendar rather than the tabular arithmetic one — the arithmetic version drifts a day or two from the dates actually published there, which is the whole point of showing it.
Everywhere else is unchanged and still Gregorian. The list is deliberately short: it is which calendar is civil here, not which countries are Muslim-majority — Egypt, Turkey and Indonesia all keep their diaries in Gregorian, and a Hijri date there would misinform rather than inform.
Which one you get follows the country the weather lookup already resolved, falling back to your Windows region — so a laptop carried abroad follows where it is, not where it was bought.
A status line on the agent pill could freeze
The line under the agent icon ("still cooking…", "reading up…") is held for a minute and then rerolled. The freshness check was a subtraction, so if the system clock ever stepped backwards — an NTP correction, a daylight-saving fold — the elapsed time went negative, which counts as "still fresh", and the line stuck for as long as the clock stayed behind. That is the same permanent freeze this mechanism was built to end, arriving through the other door.
DynamicWinSetup.exe is the signed installer. DynamicWinPortable.zip needs no install — unzip and run Halo\Halo.App.exe. If you are already on 3.1.x, Halo picks this up on its own within a day.
Halo v3.1.5 - the pulse swells instead of stepping
The pulse on the pill was stepping, not swelling
When something is playing or downloading, the pill's own background bar breathes — that is how it answers "is this actually moving?" for a two-hour film whose bar advances about a pixel a minute.
The breath is supposed to be a slow swell. It was arriving as a handful of visible steps, and the reason turned out to be a single word in a helper signature: the glow behind the bar declared its opacity as a whole number, even though that value only ever reaches the graphics layer as a float. Rounding it meant that across an entire breath the glow had four brightness levels to work with, and the second glow had three.
Nothing about the drawing needed the rounding. Removing it takes the same pulse from four levels to a continuous one — measured at frame rate, a pixel in the middle of the bar now moves through 24–26 distinct values per breath instead of jumping with the glow.
Downloads breathe too
The same rule the media pill uses. A download sitting at 40% and a download stalled at 40% are the same still picture, and the pill's bar is the thing you glance at to tell them apart — so it now breathes while bytes are moving and holds still when the download is paused.
Also in this build
- A new README animation, recorded on the current pill. The old one predated the background progress bar, the pulse and the eased accent colour, so it was showing a media widget that no longer exists.
DynamicWinSetup.exe is the signed installer. DynamicWinPortable.zip needs no install — unzip and run Halo\Halo.App.exe. If you are already on 3.1.x, Halo picks this up on its own within a day.
Halo v3.1.4 - the progress bar on the pill tells the truth now
The progress bar on the collapsed pill was lying to you
The pill fills its own background with how far into the track you are. Depending on which player you use, that bar had four different ways of being wrong — and every one of them looked like a drawing bug rather than what it was, which is the pill believing something the player told it.
A new song started somewhere else entirely. A track change and its timeline do not arrive together: for about a second the player is still handing out the outgoing track's position and length. So the bar leapt to wherever the last song ended, sat there, and then fell back to the start. Halo now recognises the leftover — it still carries the old track's duration — and waits it out, briefly enough that a playlist of same-length tracks can't stall it.
A video in a background tab showed a bar once and never again. Chrome reports a real timeline when the video starts and then, once the tab is in the background, comes back with everything at zero. Taken literally that erased a duration Halo already knew, so the bar vanished. A blank answer about a track already measured is not news, and is ignored. A live stream with genuinely no duration reports zero from the very first update, and still correctly gets no bar.
The bar sat frozen while the video played on. The same players repeat an identical position, poll after poll. Halo was restarting its clock against each repeat, so the bar could never advance past one poll's worth.
A dark album cover gave no bar at all. The whole bar is coloured from the album art, and every shade is derived by taking brightness away — on a black-ish cover that is black paint on black glass. The colour now has a floor, with the hue kept, so a dark red cover still gives a red bar.
The bar's leading edge looked like a separate object
Reported first as a line between the head and the body, then as two bars — a pale one ahead of a solid one. Four things, all of them real: a glow centred on the leading edge put half of itself past it; the "it's playing" pulse was a separate band twice as bright as the bar it rode on; the highlight brightened and then fell back to nothing inside two pixels; and a helper was replacing the clip it had been handed instead of intersecting with it, so the halo spilled past the edge and lay under the bar as a second, paler one. The pulse is now the whole bar breathing together rather than a stripe added on top.
Also in this build
- Seeking is quicker to answer. A single tap on the seek bar goes out immediately instead of always paying a debounce meant for rapid tapping, and a seek the player ignores is retried once rather than seven times over five seconds — a second seek of a player that simply isn't reporting itself is not a correction, it's another yank of the picture.
- Ring colours fade between states instead of repainting between two frames, which read as a glitch rather than as the thing changing.
- The "bad internet" banner drops its emoticon.
DynamicWinSetup.exe is the signed installer. DynamicWinPortable.zip needs no install — unzip and run Halo\Halo.App.exe. If you are already on 3.1.x, Halo picks this up on its own within a day.
Halo v3.1.3 — the notification sound is no longer cut in half
Your notification sound was being cut in half
If you have had Halo silence a notification banner and heard the chime start and then stop partway, this is that.
Windows starts a toast's sound the moment the toast fires. Halo only learns a new app exists from that toast — it writes the app's "no banner, no sound" setting afterwards, and then has to restart the Windows notification service for the setting to take effect in the current session. That restart was landing about three seconds later, which is inside most notification sounds. The log on my machine had twenty-three of them, every single one three seconds after a toast.
So the sound was neither on nor off. It started at full volume and got guillotined.
The restart now waits until the notifications have gone quiet — twelve seconds since the last one, which clears even the long ringtones — and a notification arriving in the meantime pushes it back out again.
One thing worth being straight about: a sound Windows has already started cannot be muted. The per-app setting only takes effect when that service restarts, and restarting is exactly what was cutting the sound off. So the very first notification from an app Windows has never seen before now plays in full, and every one after it is silent. Apps Windows already knows about — which is almost all of them — were already silent from the first toast and still are.
Also in this build
- The installer wizard carries the Halo mark instead of Inno's blank corner.
- A rewritten README, in English and Persian, that shows the features instead of describing how they were built.
- PRIVACY.md — written out of the source rather than out of good intentions. Every file Halo writes and every network request it can make, all nine of them, with what each one discloses. There is no Halo server, no account and no telemetry, and now you can check that rather than take my word for it.
DynamicWinSetup.exe is the signed installer. DynamicWinPortable.zip needs no install — unzip and run Halo\Halo.App.exe. If you are already on 3.1.x, Halo picks this up on its own within a day.
Halo v3.1.2 — autostart and Codex integration survive an upgrade
An installer-only release. Nothing in the pill itself changed since 3.1.1 — but if you have upgraded Halo at least once, two things you almost certainly ticked on your very first install had been quietly removed since.
"Start Halo when Windows starts" was on once, then never again
Setup remembers the previous run's choices and restores them over its own defaults. That sounds helpful and isn't: anyone who unticked autostart a single time had it stay unticked for every release afterwards, and the update that was supposed to keep Halo working is the thing that stopped it from coming back after a reboot. The defaults now win on every install.
"Integrate with Codex" was removed by upgrading
Worse, and for the opposite reason. That task carried a flag whose documented behaviour is "unchecked when Setup finds a previous version installed" — so it was on for a first install and off for every upgrade after it. If your Codex sessions stopped appearing in the pill at some point and you never worked out why, this was it. Re-run the installer and the integration comes back.
Also: the installer had been stamping 3.1.0 onto a 3.1.1 build.
Both checkboxes are on the first page of the installer and you can still untick either one — the change is only about which state you start from.
DynamicWinSetup.exe is the signed installer. DynamicWinPortable.zip needs no install — unzip and run Halo\Halo.App.exe. If you are already on 3.1.x, Halo picks this up on its own within a day; the installer part of it applies the moment it does.
Halo v3.1.1 — real scrubbing, a ring that means something, and 60fps in the panel
A polish release, mostly about things that moved badly or drew a shape they shouldn't have.
The panel was redrawing at 3.5 frames a second
Anything animated in the pill asks for frames, but that request was only honoured while the pill was collapsed — with the panel open it redrew only when something else happened to mark it dirty. Measured with a title scrolling at 42px/s: 42 distinct frames in 12 seconds. Now 249. This was starving the waveform, animated album art and the scrolling title all at once.
Media
- Press and drag the bars. They were click-only, so dragging one was a series of separate seeks, each waiting for the player to answer — which is what made it move in steps. Held, the bar swells to three times its size and follows your cursor, and the seek commits once when you let go. The timestamp previews where you're about to land instead of showing the old position.
- Holding a control no longer walks off with the pill. Press-and-hold on the panel is the move gesture, so holding the seek bar started dragging the whole pill sideways — and the position is saved, so it stayed there.
- A long track title scrolls while your pointer is on it, and returns to the start when it leaves.
- Animated GIF covers keep animating even while paused.
Session circle
The ring around a Claude Code / Codex circle was permanently full, so it said nothing. It now draws your usage window as an arc — the 5-hour figure, with the weekly one standing in when that hasn't been fetched — while the colour still shows what the session is doing. Colour is state, fill is budget.
A single session also no longer wears a "1" badge; the number appears when there's more than one session to tell apart, which is when it means something.
Shapes that were showing their edges
- The glow was a rectangle. Its dither noise was added to the radial falloff, so every pixel outside the circle sat one or two steps above transparent and the texture's own square boundary stayed faintly lit.
- The strip's icon wash was a square — a flat accent rectangle behind every circular icon, obvious behind a colourful album cover.
- The copy-code pill is centred. The icon sat above the label because centring uses the font's line box, and two glyphs of the same icon font differ in ink height.
DynamicWinSetup.exe is the signed installer. DynamicWinPortable.zip needs no install — unzip and run. If you're already on 3.1.0, Halo will pick this up on its own within a day.
And one the release itself was cut too early to include
Close the last thing running — a VLC video ending is the easy way to see it — and a small grey rounded rectangle stayed behind at the notch. It looked like it was colour-matching your wallpaper, and it was: it was your wallpaper. When nothing is active the pill fades to an invisible strip that still catches a dragged file, but the glass layer underneath ignored that and kept painting a blurred picture of whatever sat behind it. The notch region is now pixel-identical to Halo not running at all.
Re-cut with the glass and gesture fixes
The build behind this tag was replaced after release. What changed:
- The glass backdrop was about six frames behind the screen. The capture read the window DC, which is
black for GPU-composited content, so every browser and video player fell through to a full-window
PrintWindow at roughly 30ms; the blur then expanded to full size twice. It reads the screen DC, expands
once, and refreshes every 32ms instead of every 200ms. 57ms to 6.1ms per capture. - Pinning no longer decides whether the pill appears in screen captures, because a pill that capture
can see can see itself, which forced the slow path above. Capture visibility is its own setting now:
tap the pushpin to pin, press and hold it for the other one. - Three gestures were stealing the press-to-move. Holding the pushpin, dropping a file on the tray and
reordering a tray item all look identical to "button held over the pill", and each used to carry the
pill off sideways mid-action. - Cancelling a Chrome download with a long list. It walked keyboard focus, up to 60 tab presses,
stepping visibly down the list — and any mouse movement landed the cancel on the wrong row. Chrome's
download bubble has no Cancel to reach, so that walk could never have worked there; it goes straight to
the downloads page. Edge still needs the walk and now stops the moment focus or the pointer moves. - The installer offers to set up the Codex hooks for you, and the uninstaller removes them.
Halo v3.1.0 — real download progress, a Cancel that works, silent auto-update
Downloads got a lot more honest this release, and Halo now keeps itself up to date.
Downloads
- Live progress in Edge. Edge tells nothing through its file name or its history until a download ends, so the pill used to just say "Downloading" with no percentage. It now reads the browser's own in-progress store, so you get the real name, the real percentage and the real byte count while it is still running.
- Cancel actually cancels. In both Chrome and Edge, pressing Cancel now ends the transfer instead of only closing the pill. If the button cannot be reached for any reason, your browser's own downloads list is put in front of you rather than nothing happening.
- Several downloads at once. The pill shows the first one and moves to the next as each finishes, with a count on the icon when there is more than one; the expanded panel has a switcher to jump between them.
- Byte counts that could not be trusted are no longer shown at all, rather than shown wrong.
Notifications
- Halo's own alerts — "Screenshot captured", "Bad internet :/", high CPU — no longer draw their text high above the icon beside it.
- Screenshot and clipboard banners carry a proper badge; before, they were the only banners with no icon at all.
- The copy button on a verification code is aligned with the title and animates instead of snapping.
Auto-update
Halo checks once a day for a new release and installs it quietly in the background — no prompts, no permission dialogs. If the download fails it backs off (30 minutes, then 6 hours, 12, then once a day) rather than retrying at you, and it will only install a setup signed with the same certificate as this one.
DynamicWinSetup.exe is the signed installer. DynamicWinPortable.zip needs no install — unzip and run.
Halo v3.0.2 — fixes a frozen pill on Bluetooth connect
Fixes a frozen pill when a Bluetooth device connects. The battery ring's radius is derived from the pill's height, and once the pill tucks itself into its slim tab that radius reached zero, which GDI+ rejects. The drawing call then failed on every single frame, and because render errors are caught and logged rather than shown, the only symptom was a pill that quietly stopped updating. Found in frame-errors.txt, timestamped to the same second a phone connected.
The rest of this release is maintenance — nothing else changes on screen.
Single-sourced the duplicated interface strings. Several pieces of text were written out twice in places far apart, so a wording or translation change could land on one copy and silently miss the other:
- the RAM and CPU banners were two copies of one banner, plus two more copies in the demo path — now a single builder
netandapihad four different spellings per agent widget, eight literals for two words — now one constant each, shared by both widgets- the screenshot wording existed both in the real clipboard path and in the
--render-notifdev hook, so the preview image could drift away from what users actually see
Also in this build: removed a stray file-header comment that had leaked into Interop/Clipboard.cs, and repaired two stale tests that still asserted the old waiting_input behaviour — the suite had been failing 2 of 81 because of them.
Verified: Release build with 0 warnings and 0 errors, 81/81 tests green, the Bluetooth draw path exercised across every height from 40px down to 2px, and the rendered widget output unchanged from v3.0.1.
| Download | What it is |
|---|---|
| DynamicWinSetup.exe | installer — per-user, no admin prompt |
| DynamicWinPortable.zip | portable — unzip and run Halo\Halo.App.exe |
Windows 11 · x64. Both are signed with the same self-signed certificate as previous releases.