Releases: bisand/squint
Release list
squint 0.1.10
squint reads its faces through a new parser, and looks the same doing it.
- DeniseUI 0.31.0. The TrueType reader behind squint's text is now skrifa, filling glyphs with its own arithmetic instead of the parser squint used to be handed. Nothing squint calls moved, and nothing it draws moved either: against 0.1.9 the same window differs in 602 pixels, every one of them on a glyph edge and none by more than 22 of 255. The anti-aliasing is arrived at differently; no glyph did.
Nothing else here is visible from the outside — a test that gave the handoff five seconds to happen now waits for it instead, and a blank line went where rustfmt wanted it.
Built on DeniseUI 0.31.0.
squint 0.1.9
squint knows what version it is.
- A build says the version it is. The packages have always taken their version from the release's tag, stamped in as they are built, so the manifest in the repository never learnt it and sat at 0.1.0 through eight releases.
squint --version, the About box and the one on the macOS menu all said 0.1.0 in anything built from a checkout. A published release now writes its version back, so the tree says what it last shipped as. - A machine whose GPU could not present tries again after an upgrade. That was always meant to happen — squint writes down the version it gave up in, and looks again when it is running a different one — but the version it wrote down was 0.1.0 every time, so an upgrade never read as one. Such a machine would have gone on drawing in software after a driver arrived. It now notices.
The second is only visible where squint has already fallen back to software once; SQUINT_PRESENT=gpu always forced the question, and still does.
Built on DeniseUI 0.30.1, as 0.1.7 and 0.1.8 were.
squint 0.1.8
One internal fix, with nothing to see in the window.
- The faces the settings offer are worked out per face, not per list. Settings ▸ Appearance offers the faces squint looks for by itself that this machine has and can be drawn in. What that was checked against was a set of those faces, settled once — so a list of any other faces would have come back empty, every one of them read as having no ink in it for no reason but never having been examined. It is now a verdict per face: the two lists are still settled once between them, and a face outside them is read where it is asked about.
Nothing in squint asks for such a list today, so there is no bug here anybody could have hit — this is the guard against one, put in while the reason for it was still fresh. The faces offered, the face the chrome is drawn in, and the window are all exactly what 0.1.7 had.
Built on DeniseUI 0.30.1, as 0.1.7 was.
squint 0.1.7
0.1.6 opened on macOS with no words in its chrome: no name on a tab, nothing in the status line, and a settings window of empty rows. The document itself was fine. This fixes it.
- San Francisco is readable again. 0.1.6 moved to reading a glyph when it is drawn rather than every glyph when a face is opened, and that reader was built without what a variable font needs. macOS's own UI face,
SFNS.ttf, is a variable font, so every outline in it came back empty: the face parsed, it reported a glyph for every character it had, and it drew none of them. Nothing failed and nothing was logged — the lines were the right height and blank. Fixed upstream in DeniseUI 0.30.1. - A face nothing can be drawn in is walked past. squint took the first face on its list that this machine had a file for, and drew in whatever that turned out to be. It now walks on to the next, so a face that parses with no ink in it costs a fallback rather than a window with no words in it. Only a face that has a letter, a digit or a full stop and draws none of them is turned away: one with none of those to ask about — Braille, Cuneiform, Webdings, a Nerd Font of icons alone — is taken at its word, being somebody's deliberate choice and full of ink.
In practice this was macOS alone. The faces squint reaches for on Linux and Windows are not variable ones, and the text is drawn in Fira Code, which is not either — though a variable face chosen in Settings would have drawn blank on any platform.
Built on DeniseUI 0.30.1.
squint 0.1.6
An empty squint now costs a fifteenth of the memory and wakes thirty times less often.
Measured on an Atom x5-Z8350 running Alpine and Hyprland, with a window open and no document in it:
| 0.1.5 | this | |
|---|---|---|
| Memory | 138 MB | 18 MB |
| CPU before it settles | 1.87 s | 0.13 s |
| Thirty idle seconds | 540 ms of CPU, 240 wakeups | 20 ms, 8 wakeups |
- A face costs what its file does. Faces are read glyph by glyph as they are drawn, rather than every glyph being worked out when the file is opened — 80 MB of FiraCode Nerd Font and DejaVu Sans outlines were most of what squint held. The text is the same to the pixel.
- The caret stops blinking. Ten seconds after the last keystroke it rests lit, and the window sleeps until something happens, instead of drawing a frame twice a second for as long as it is open.
- Nothing is polled. Files handed over by a second squint, and the settings window's Save, wake the window when they happen; squint had been looking for both four and twenty times a second.
- A machine with no GPU is remembered. Where no GPU can draw the window, squint writes that down and draws in software from the start next time, rather than loading the graphics drivers to find out again — which on that machine is 37 MB and most of the start-up. It tries again after an upgrade, and
SQUINT_PRESENT=gpuor=softwarestill decides when it is set.
Built on DeniseUI 0.30.0, which is where the first three live.
squint 0.1.5
What's Changed
Full Changelog: v0.1.4...v0.1.5
squint 0.1.4
What's Changed
- feat: open the files the system hands squint, in tabs by @bisand in #5
- feat: make squint the default app from Settings or the Tools menu by @bisand in #6
Full Changelog: v0.1.3...v0.1.4
squint 0.1.3
What's Changed
Full Changelog: v0.1.2...v0.1.3