sysutils/mirador: update to 1.22.1
1.22.1 - 2026-10-08
Changed
A plugin that stops reading has one tick waiting, not one per poll. Mirador offers an external panel a tick each time it polls the panel, through the same 256-message queue as its keys. Once a plugin had stopped reading long enough to fill its pipe — 4,096 ticks on macOS, about two and a quarter minutes at the default 33 ms while the panel is focused and capturing input, about seventeen minutes at the dashboard's default 250 ms otherwise — ticks took the whole queue in 256 polls more, eight seconds or about a minute. The panel then said plugin input queue is full about input nobody had typed, and dropped every key that was. At most one tick now waits in the queue, and one that finds no room is dropped without that warning. This changes what protocol v1 delivers to a plugin that falls behind: it no longer has a tick queued for each poll it missed, though ticks already in the pipe still arrive. The protocol document had said ticks arrive at the negotiated refresh cadence, which held only for a panel that is focused and capturing input; it now says they come at most once per refresh_ms, save for up to a second after a key a passive panel accepts, and no more often than the dashboard's own loop unless the panel is focused and capturing input. It also says plainly that a tick is a cue to redraw, not a clock; a plugin that counted them to measure time was already losing count whenever the queue was full.
1.22.0 - 2026-10-08
Added
A note's body takes the line keys every one-line field has. Ctrl+E goes to the end of the line, and Ctrl+U, Ctrl+K and Ctrl+W delete to its start, to its end and the word before the cursor. They did nothing in the body, though the title above it has always had them. Each acts on the cursor's line and never takes a line break. A selection is let go first rather than deleted, and the key acts from the cursor, the selection's moving end. Ctrl+A still selects the whole body, and still goes to the start of a one-line field. The README is where the four are listed: the ? overlay cannot open while a note is being edited, since ? is typed into it.
Fixed
The key map's explanations arrive whole. At its widest the dialog gave them 34 cells and nineteen were longer, so they ended in … on every screen. It now grows to 100 columns, and the six longest — four of arrange mode's and the task list's two priority keys — are reworded to fit.
An empty panel offers the key you gave it. The task, notes, markets and agenda panels' empty states, and the watch log's line about where calendar entries come from, named the default key whatever [<widget>.keys] said. They name the key the panel reads now, and leave the offer out when the action is unbound.
An empty markets, notes or task panel says its whole hint. The markets and notes hints went to the terminal at full length, so at the width the shipped layout gives the markets panel the hint stopped just after the key it names, and a notes search that matched nothing said "Nothing matches this search. Esc to clea" in a pane 40 columns wide, with nothing to say the rest was gone; the task list's was cut to one row with an …, so a narrow panel lost the key it names over rows left blank. All three wrap into the rows the panel has now, and end in … only where those run out. With no search and no failed save, an empty notes panel gives its sentence every row above the status line, rather than the half under a blank list and a row saying no notes, and an empty task list gives it the row that said the sort order of nothing; an empty markets board writes in the row its header would take and may grow as tall as the hint needs.
Wrapped text no longer leaves a gap where a row breaks. A note, a headline or a task's notes carried spaces at a break over to the next row: the one after a word exactly as wide as its row, and the second of two after a full stop wherever the row broke between them. The row they were carried to was indented by a cell or, when the next word did not fit beside the space, left blank. A no-break space, an ideographic space or a tab at a break is taken the same way.
An empty watch log says when its explanation has been cut. Its rows ran off the foot of the panel in silence: at 100x34 the default dashboard's log stopped mid-sentence at "the day turning, a task", and a log 30 cells by 10 rows stopped at "Calendar entries come from", before the key that sentence names. The last row that fits now ends in ….
[12 lines not shown]
Initial import of math/chuffed, version 0.14.0.
Chuffed is a state of the art lazy clause solver designed
from the ground up with lazy clause generation in mind.
Lazy clause generation is a hybrid approach to constraint
solving that combines features of finite domain propagation
and Boolean satisfiability.
xmmix: fix ioctl cmd type error in do_ioctl() wrapper
xmmix's do_ioctl() ioctl wrapper function typed the second arg
of ioctl ("unsigned long request") as "int cmd" instead. this
type conversion mangled the request value being passed to the
ioctl syscall and resulted in an "Invalid argument" error for
a FIOASYNC request on /dev/mixer. resolve by changing do_ioctl()
from "int cmd" to "unsigned int cmd" to match ioctl() man page.
knot: Update to 3.6.1
Features:
mod-ecs: new module for setting the ECS scope prefix length (Thanks to Branko Mijuskovic)
Improvements:
knotd: additional SOA consistency checks when processing incoming XFR
knotd: DDNS over 0-RTT QUIC/TLS is forbidden
knotd: new warning if difference(-no-serial) is enabled on a secondary zone
knotc: control blocking timeout is per full command, not per each zone
kdig: backward compatibility for +noidn as an alias for +noidnout
libknot: extra checks for malformed IPv4 and TCP packets in XDP filter (Thanks to Joshua Rogers)
src,tests: various compatibility fixes for SmartOS #980
doc: various improvements
Bugfixes:
knotd: missing synchronization between catalog reload and worker suspension
knotd: race condition between pausing/resuming events, zonedb update, and reload/conf-commit
knotd: non-consumed DoT 0-RTT early data can cause memory exhaustion (Thanks to Yuxiao Wu)
[19 lines not shown]
mail/mutt: Update to version 2.4.3
This release fixes two bugs. One of them is for CVE-2026-107570, fixing an
OOB heap write. This is triggered by a specially crafted Content-Header line
in an email that is used as a template for a new email, via <resend-message>.
Thanks to Calif.io, in collaboration with Anthropic for sending me a detailed
write up and suggested patch.
The full set of changes are:
7752d93f Fix OOB heap write in convert_file_from_to().
4364e5b0 Fix mutt_signed_handler() goodsig setting.
Gerbil is an opinionated, some might even say tendentious, dialect
of Scheme designed for Systems Programming. It provides a state of
the art macro and module system on top of the Gambit runtime and
compiler and an extensive standard library. One way to think of
Gerbil is as the C++ to Marc Feeley's C.
The macro system is based on quote-syntax, and provides the full
meta-syntactic tower with a native implementation of syntax-case.
It also provides a full-blown module system, similar to PLT Scheme's
(sorry, Racket) modules. The main difference from Racket is that
Gerbil modules are single instantiation, supporting high performance
ahead of time compilation and compiled macros.
gtk2: Fix previous.
If a user didn't have MACOSX_DEPLOYMENT_TARGET set in mk.conf then the variable
was no longer defined, so handle both cases. Pointed out by tnn@.