| Age | Commit message (Collapse) | Author | Files | Lines |
|
The stride test was Height 1, so the second row and the padding beyond the
used pixels were never reached and rowstride was untested despite the
comment. It is now 2x2 with RowStride 12 and asserts a pixel in row 1,
which fails if the stride is ignored (verified by mutation). Add the
3-channel opaque encode and the short-data rejection, both explicit
requirements of the image-data contract.
|
|
image-data (and the deprecated icon_data) is the (iiibiiay) struct; the
PNG encoder honours rowstride and both 3- and 4-channel data. The path
and data readers are pure, so the service can apply the spec's priority
and the store stays free of image handling.
|
|
The spec says a history row is closable individually, but the daemon only has
clear-history. The list of changes needed on both sides is recorded so the
renderer's inert history rows are a tracked gap rather than a forgotten one.
|
|
The spec says -1 means the server decides and 0 means never; the code had
them swapped, so a plain notify-send (libnotify's default is -1) became
immortal and an explicit never (-t 0) got the urgency default. Found by the
live handover test, where notify-send produced expires 0.
The urgency default is unchanged: low and normal 10s, critical never.
|
|
.superpowers/ holds the SDD ledger, briefs and review packages, which are local
scratch. It was in .git/info/exclude, which does not travel with the repo; a
committed .gitignore does.
|
|
Remove the temp file on every writeJSON failure path, not just the write
and close ones. A failed rename left the temp behind with no cleanup.
Surface the list path's unmarshal error instead of printing null with exit
0, and make a non-positive history limit print an empty array rather than
falling through to the whole ring.
Assert the evicted item actually lands in the history ring, so the "files
to history" half of eviction is covered rather than just its signal.
Add the missing README License section beside the GPLv2 text and headers.
|
|
|
|
Snooze is a file the balloon renderer reads, not daemon state: the
notification still arrives, lists and files, only its balloon is withheld.
The last used value is kept under XDG state so a reboot does not forget it.
|
|
The private interface carries what the spec cannot: close-all, invoke action
and clear history. notifyctl reads the published files for list and history,
because the files are the interface, and uses D-Bus only for the mutations.
|
|
|
|
Notify assigns an id and publishes; a replaces_id or stack tag reuses the id.
CloseNotification closes with reason 3. The daemon claims
org.freedesktop.Notifications and exits non-zero if it cannot, which is what
happens while dunst still holds it.
|
|
Both files are written whole through a temporary file and a rename, so a
renderer never reads a half-written value. An empty queue is [] rather than
null, because the renderer parses it as an array.
|
|
The store holds the live queue and the history ring as pure state. Expiry
tells the client and keeps the entry inert; dismissal and eviction file it
in history. Replacing reuses the id and emits nothing.
|
|
|
|
The policy functions are pure so they are tested without a bus: urgency from
the hints, the timeout rule with its urgency defaults, the two stack tag
spellings, and the action pair parse.
|