Release Notes
This release is mostly about the Quickshell panel, which grew from three cards
to ten: it now opens on last night's window, draws carbs and insulin under the
trace, reads today against your own fortnight, shows a fortnight of time in
range one bar per day, and lets you tap an hour of the profile to see the
individual days the median hides. It can also act — snooze the alarm that woke
you, or log a treatment — and it says what the alarm actually did, including a
delivery that never arrived. The bar pill wears your theme's colour only when
something is wrong, and each of its parts can be switched off. Two fixes worth
naming: sugarrush config units mgdl used to be refused outright because it
reinterpreted your thresholds rather than converting them, and the panel
ignored the colourblind palette entirely.
Changed
-
Views cross-fade instead of popping. One set of cards used to vanish and
another appear in the same frame, which reads as a redraw rather than a move.
animations falseturns it off. -
The panel uses the width it has. It was one 380px column in a scroll
view, on a desktop, and it has grown from three cards to nine — the Glucose
view scrolled past its own statistics and the Profile view past its patterns.
On a horizontal bar it is wider now, with the reading beside the last 24
hours and the clinical summary beside the alarms; the charts keep full rows. A vertical bar keeps the narrow
column, where it is the right answer, andwideLayout falseturns it off. -
The stats card admits when its window is full of holes. A percentage
computed over a day with half its readings missing drew exactly the same
confident stripe as a complete one. The document now carries how many
readings each figure stands on, and below 70% of a full window the card is
marked "partial" and says how much of it is a gap rather than time in range. -
The alarm thresholds are one band, not four steppers. The Settings view
draws all five zones with a handle at each threshold, in the colours the
reading itself uses. The handles cannot cross, so the crossed-threshold
configurationsugarrush configrefuses is now unreachable rather than
rejected. The four stepper rows are gone — a handle lands on a tenth of a
mmol/L in about two pixels, so they were rows buying nothing. -
The panel draws itself while it loads. A cold open used to collapse the
whole panel to the line "waiting for the first reading" for as long as
Nightscout took, which looks like a failure rather than a wait. It now draws
the cards it is about to fill. -
The reading rides in the panel's header. The wordmark was sized to half
the panel width, and the number you opened it for scrolled off the top — on
the Settings view it was not on screen at all. The mark is a third now, with
the reading and its arrow beside it, so it survives scrolling and view
switches. -
The panel's settings no longer claim a state they have not read. Every
switch showed "on" untilsugarrush configanswered, so for a moment the
Status bar card asserted four settings were enabled when two of them were
not. Those cards are dimmed and inert until the file has actually been read. -
The Quickshell panel obeys your theme. Its chart, profile, time-in-range
bar, sensor countdown and alarm chip all carried a hard-coded copy of the
default palette, so anyone on the colourblind preset — the one setting whose
entire purpose is that red and green are the wrong pair — got an accessible
bar and an inaccessible panel. The snapshot now carries the resolved palette
and the panel paints from it. Low and high are separate colours there too,
as they always have been everywhere else. -
A stale reading in the panel looks stale. The age sat in the same grey
pill at 3 minutes and at 40. Past your ownstale_minutes, the reading greys
out, the pill turns red and says "no reading for 26 min", and the caption
gives the clock time it was last seen — at 3am the number is not wrong, it is
absent, and the panel was presenting absence as a value. -
The panel's forecast stopped jumping sideways. The projection was
anchored to the reading's rendered width, so gaining or losing a digit moved
it. The reading now reserves room for the widest value its units can produce. -
The Quickshell pill wears the bar's colour until something is wrong. It
used to paint the whole reading — number, unit, arrow, delta and trace — in
the alert colour at all times, so a perfectly ordinary reading sat on the bar
as a green light. Now only the number takes colour, and only when it is out
of range or a forecast crossing is coming; everything else stays in the bar's
own foreground. Stale data is carried by its?marker alone. -
The panel's threshold lines are scale marks again. They were drawn in
their alert colours, so a red rule ran across the chart whether or not the
reading ever went near it. The line already turns amber or red where it
crosses one; the rules are now the panel's foreground, with the urgent pair
fainter than low and high so the target band reads first.
Added
-
The Status bar card shows the pill it is describing. Four switches that
changed something at the other end of the screen now draw it: the reading,
the unit, the arrow, the delta and the sparkline, in the pill's own colours,
updating as you flip them. You no longer have to look away to see what you
did. -
Units are switchable from the panel. A mmol/L · mg/dL choice above the
threshold band, which converts the thresholds with it. -
Last night, as one card. Nobody opens a CGM panel in the morning to
browse six hours of chart — they open it to find out whether the night was
fine. The Glucose view now leads with 23:00–07:00 in your own timezone: the
shape of it, time in range, the lowest reading, and what the alarm did, with
every excursion below range marked rather than only the worst one. Before
07:00 it says "tonight so far" and stops at now, because reporting a night as
finished before it is would be a claim about hours that have not happened. -
The panel shows what the alarm actually did.
sugarrush alertshas been
recording every episode and every delivery attempt since it was written, and
nothing displayed any of it. The Profile view now lists recent alarms with
how long each lasted — and, in red, any whose delivery never arrived. A push
that failed means an alarm was raised and nobody was told, which was until
now the least visible line in the whole system. -
Tap an hour of the profile to see the days behind it. A percentile band
says the middle half of your evenings look fine; it cannot say that three of
the fourteen went low, which is the finding that changes a basal rate. Tapping
an hour marks it, draws each day's value for that hour as a dot, and says the
median, the spread and how many days fell out of range. Tapping it again
clears it. -
The panel keeps itself current while it is open. It used to fetch once on
open and then sit there — watch a low come up and the panel quietly stopped
being true while the pill behind it kept updating, the two disagreeing with
the bigger surface being the wrong one. It now refetches at the pill's own
interval for as long as it is on screen, and the header counts down to the
next one: what a spinner should have said all along is not that something is
happening, but when. -
The clinical summary is on screen before it is on the clipboard. The
Profile view shows the same figuressugarrush exportwrites — mean, GMI, CV
and the five bands with their boundaries spelled out — so you are not sending
a clinician a block of text you have never read. -
The panel takes the keyboard.
123jump to a view,←→step
between them,rfetches,dopens the dashboard,Esccloses, and?
shows the list. It ships to people running Hyprland, where the mouse is a
last resort, and every view and settings row needed a pointer to reach. -
A fortnight of time in range, one bar per day. The Profile view gains a
strip of stacked daily bars, oldest on the left, under the typical-day chart.
The profile answers "what do my nights look like"; this answers the other
question people track — whether it is getting better — and neither can be
read off the other. Days grouped at local midnight, so a night is not cut in
half by a UTC boundary. A day with too few readings to trust is drawn faded
rather than as a full bar, since one thin morning would otherwise read as the
best day of the fortnight. -
The panel says whether today is better than usual. "76% in range" is a
number with no scale, and the comparison that changes what someone does is
against themselves a fortnight ago. The stats card now reads time in range,
time below range, mean and CV against the whole history window, with the
change named and coloured — where there is a better direction. Mean has none:
a lower average bought with lows is not an improvement, so its change is
stated rather than judged. -
The panel's chart shows what you did, not only what happened. Carbs and
insulin logged on the site are drawn in their own lane along the foot of the
chart — a dot sized by the amount for carbs, a triangle for insulin, labelled
where there is room — and the card title totals the window:Last 6 hours · 45g · 5.7u. A rise from 5 to 12 means one thing after 60g of pasta and
another with nothing logged, and the chart could only ever show the rise.
sugarrush had been fetching and discarding this all along. -
You can log carbs and insulin from the panel. A Log button beside the
snooze pair opens two steppers; Review in terminal hands the amounts to
sugarrush treatment, which prints what it is about to write and asks for
the person's name before it writes it. The panel deliberately does not do
the writing: that confirmation is the guard on a health record, and a bar
widget should not be a way around it. The form stays collapsed until asked
for, so the panel is no taller for the many opens that are just a glance at
a number. The button only appears on a site that has a treatment write token,
since without onesugarrush treatmentrefuses the write outright. -
The panel can silence the alarm that opened it. A Snooze 15m / 1h
pair sits under the reading, and while one is running it becomes
Wake now · 12m left. The snooze state is read from the daemon's own health
report, so one set from the menu, the dashboard or another machine shows up
here too. When nothing is watching the buttons are dead and say why, rather
than offering to silence an alarm that is not running. -
The panel can switch the status bar's parts too. A Status bar card in
the panel's Settings view toggles the same four parts as the dashboard, and
the pill redraws as soon as the write lands instead of waiting out its poll.
sugarrush configlearned thebar.*keys that make it possible. -
The status bar's parts are switchable. A pill carrying reading, arrow,
delta, unit and sparkline is more than some bars have room for, so each part
now has an on/off switch under Status bar in the settings screen, or as
[bar]inconfig.toml. Switching one off drops it from every format at
once —sugarrush status,sugarrush waybar, the Quickshell pill — so the
bars agree with each other. The reading itself and the out-of-range marker
always stay.unitsandsparklineaffect the JSON output only; no text
format has ever carried them. -
The panel has a Profile view. The ambulatory glucose profile — every day
in the window folded onto one 24-hour clock, median over the middle half and
the outer 5–95% — answers "what do my nights look like" rather than "what
happened last night". It needs at least three days of history. The patterns
list moves here from the Glucose view, since it names findings from the same
multi-day profile, and now says so when nothing recurring stands out instead
of vanishing. -
The panel says whether the alarm is actually watching. A chip in the
status strip readsalarm armed,snoozed 12m, ornot watchingin red,
fromsugarrush health --json. A perfect graph over a stopped watcher was
the one thing the panel could not tell you. -
Copy the clinical summary from the panel, and a new
sugarrush summary
command that prints it to stdout. The same textsugarrush exportwrites,
without the CSV and without a file to find afterwards. -
The bar pill draws the last hour. A trace after the reading, in the same
state colour, with the newest point marked — so the number says where the
glucose is and the shape says what it has been doing. Turn it off with
omarchy bar set sugarrush.glucose showSparkline false. -
The bar reacts to where the reading is heading, not only where it is.
When the 30-minute projection crosses a threshold that the reading has not,
the pill takes the colour of what is coming and the tooltip says so
("6.2 in 30 min · LOW"). The class ispredicted-lowrather thanlow, and
the trace ends in a hollow marker, so a projection is never mistaken for
something that has happened. It follows the existing
predict_horizon_minutessetting, and never repaints an alarm that is
already sounding. -
Click an alert notification to snooze it. On Omarchy the toast now
carries the snooze command, so answering a 3am alarm no longer means finding
a terminal. It snoozes for the configured length and targets only the site
that alarmed, and because the command travels with the notification rather
than as a live action, a toast still answers after a shell restart. Other
desktops are unaffected. -
Urgent alerts also show on Omarchy's on-screen display. Do Not Disturb
drops sugarrush's desktop notification outright — critical urgency does not
buy an exemption — so an urgent low could pass with nothing on screen. The
OSD is drawn by the shell above fullscreen windows and outside notification
policy, and now carries urgent alerts alongside the notification. Urgent
states only, it honours the content-free setting, and it is silently skipped
on other desktops. Turn it off withosd = falseunder[alerts], or from
the settings screen. -
The Quickshell panel has a settings view. Chips under the wordmark swap
between Glucose and Settings: alarm thresholds, audible alarm and sensor
life writeconfig.tomlthroughsugarrush config, while the panel's own
chart window and pattern history write the bar's config. A refused value —
crossed thresholds — says so under the rows. Sites, tokens, quiet hours and
themes stay in the dashboard. -
sugarrush configreads and writes settings from the shell.sugarrush configlists them,sugarrush config alerts.lowprints one, and
sugarrush config alerts.low 4.2sets it — through the same serializer and
atomic owner-only write the settings screen uses. Thresholds are in your
display unit, as the file stores them. A value the app would have quietly
repaired is refused instead: crossed thresholds print what is wrong and write
nothing, because an alarm watching a band nobody chose is worse than an
error. -
The panel scrolls back through days, not hours.
sugarrush snapshot
now carries anoverview— the multi-day history it already fetched for the
percentiles, at one point per quarter hour — so the chart can be panned
across a fortnight without a second request or a wait. Fine detail inside the
drawn window, the coarse history beyond it.scrollbackHourscaps how far
that goes — three days by default, since a fortnight in a strip a few hundred
pixels wide is noise. -
The panel's chart scrolls, over an overview strip. The panel now fetches
a wider window than it draws — 24 hours by default,overviewHours— so the
chart can be scrolled back through it with the wheel, and the strip beneath
shows the whole span with a box marking the part on screen. Click or drag the
strip to jump. While panned, the card names the hours it is showing and
returns to live when tapped. -
The panel leads with the reading, and says where it is heading. The
current value is three times its old size, beside the AR2 projection for
half an hour out — a 9.6 rising to 10.4 is a different evening from a 9.6
settling. Both are coloured by the band they land in. During a sensor gap the
projection is left out rather than fabricated, which is whatpredicthas
always done for the dashboard.sugarrush snapshotcarries it as a
forecastblock. -
The panel says how old your sensor is, and when it runs out. A status
strip under the cards readssensor 9d 5h · 19h left, amber inside the last
day and red once it is past, with when the panel last fetched on the other
end. Newsensor_dayssetting (default 10 — a G6/G7 lasts 10 days, a
Libre 14) sets the expected life;0keeps showing the age without ever
calling it expiring, which is what you want if your uploader logs no sensor
changes.sugarrush snapshotcarries the same as asensorblock. -
A sugarrush submenu for the Omarchy menu.
quickshell/omarchy-menu.jsonc
drops dashboard, snooze, reading, export and settings into the Omarchy menu,
gated so it stays hidden where sugarrush is not installed.