Repository navigation
Releases: VirInvictus/Quire
Releases · VirInvictus/Quire
Release list
v1.5.3
v1.5.3 (2026-10-09)
- A current screenshot replaces the v0.1.0-era one: the welcome tour
as it ships today - checklists, spoken and reverse percents, the
breathing answers column - now embedded in the README and shipped
in the AppStream metadata.
v1.5.2
v1.5.2 (2026-10-08)
- Fixed: pressing Enter above a block of line references could
leave them stale or drag one backward. On the Mortgage template,
two Enters above the headline turned &25/&26/&27/&28 into
&26/&27/&28/&27 instead of &27/&28/&29/&30 - the summary lines
then answered with the wrong derivation rows. Root cause: when
references target CONSECUTIVE lines, the renumbering plan chains
(each relabel's new label is the next mark's existing key), and
the plan was applied sequentially into a label-keyed table, so
every step silently evicted the next mark. The plan is now applied
as the simultaneous rename it always meant to be, through a shared
helper both the app and the tests exercise. Found by Brandon on
the Mortgage template the same night it shipped; diagnosed by a
three-agent research wave that converged on the same four lines of
page.rs from three directions.
v1.5.1
v1.5.1 (2026-10-08)
- Typing and answering land in the same frame now. The evaluation
idle ran at a priority a full frame behind the echo paint (the
structural cause of a slight split between typing and seeing),
and per-burst cost had crept to ~90 ms on the welcome sheet.
Three fixes: evaluation moved onto the view's frame clock (update
phase, so answers paint with the text), knows_unit probes are
memoized per process (the stress sheet's 24 prose words cost
33 ms in master-clone probes alone; now 0.12 ms for the whole
sheet), and the re-pass flag only fires when a missed reference
points at a line that can still answer (dangling refs stop
forcing a wasted confirm pass). The outline menu is no longer
rebuilt per keystroke, and error highlights skip rebuilds when
the error set is unchanged.
v1.5.0
v1.5.0 (2026-10-08)
- The template menu grows into a small library: a Mortgage
walkthrough whose top-of-sheet headline cites its own derivation
through forward references (monthly payment, everything you pay,
what the bank keeps, the payoff date - all resolved from the
algebra below), and a Freelance invoice where the relative
percent forms do the discount and the VAT (subtotal - 5%,
then* 21%). - The welcome sheet is a richer first impression: a compound-
interest line worth keeping, and a Where-to-go-next section
pointing at the template menu (plain text by design - the menu is
one click away, and clickable cross-document links would drag in
file resolution for no calculation gain). - The debug mode:
evaluate_sheet_statsandquire-cli --stats
report the fixed-point pass count and whether a sheet ever
exhausted the pass cap;QUIRE_DEBUG=1makes the app eprint
per-burst diagnostics (lines, passes, cap, elapsed time, column
width, over-cap answers, error count). The full run over all 21
shipped sheets: everything settles, zero cap hits, fastest path
everywhere forward references are absent. - Template-authoring lessons now pinned by the suite: two-word
names never bind as assignments,totalcannot be an assignment
name (it is the keyword), and a template's forward references
must be counted against the final layout.
v1.4.0
v1.4.0 (2026-10-08)
- The caret's line carries a subtle band: a full-height background
tag in the palette's raised card tone, following every caret move
and repaint on theme flips. Implemented as a plain TextTag after
the reserved snapshot-layer hook turned out to be unexposed in
sourceview5 0.11 - zero custom paint, and tag applications sit
outside the undo stream, so moving around never pollutes undo
history. quire-clijoins the workspace: a sheet in, its answers column
out. Plain text mirrors the sheet's shape with the answer column
right-aligned;--jsonemits one object per line with the raw
text and the answer. Stdlib-only by house rules, and it rides the
same engine, so sentences-with-units work at the terminal too
(the stock measures 2 mol/Lanswers2 molar).- The Error Zoo's Units that fight section now teaches what it
exhibits: adding Mass to Length fails with the clash named, while
multiplying units composes (2 kg * 3 mis6 kg*m- torque
territory, not a bug).
v1.3.1
v1.3.1 (2026-10-08)
- The answers column breathes: it sizes to its widest visible
answer (between 168px and 320px) instead of a fixed width that
clipped every date and any large number. Measured with the same
widget-font layout the cells draw with, recomputed once per
evaluation burst; past the 320px ceiling answers ellipsize and
the hover tooltip carries the full text, as before. Verified on
the desktop: the tour's date cells render in full.
v1.3.0
v1.3.0 (2026-10-08)
- Forward line references resolve:
&67on line 65 answers with
line 67's result. The spec always promised references to "any
line, above or below", but the engine evaluated one strict
top-down pass, so anything pointing downward stayed blank
forever. The sheet now re-evaluates - whole-sheet passes seeded
with the previous pass's results, stopping when the rendered
answers stop changing (a cap of 8 bounds it) - so chains resolve
one link per pass and a summary line at the top of a section can
cite the derivation at the bottom. Cycles never ignite: no line
in a circular chain is ever seeded, so a cycle stays blank
rather than showing a wrong number, and sheets without forward
references still cost exactly one pass. Unit lines resolve
forward too (&2 kg * 2over3 kganswers6 kg). The starter
sheet's Line references section demos it live: a backward ref and
a forward ref, both answering. - A research wave (three agents: engine design, reference-app
semantics, app blast radius) drove the design. The interesting
negative result: iteration-as-cycles (a Newton's-method guess
referencing itself) does NOT work under re-pass evaluation -
cycles never ignite and seeds reset each pass - so converging
iterations stay with recursive functions, where they are already
sound.
v1.2.0
v1.2.0 (2026-10-08)
- Sentences carry units through the engine: the mixed-line skeleton
evaluates through the unit engine when it holds one -the stock solution measures 2 mol/Lanswers2 molar,the sample weighs 0.101 ganswers0.101 g, trailing periods and commas are glue.
The surviving words must sit the way numbers and units sit in
math: a number may lean on its unit, units may stand together,
and a bound name next to anything stays prose. This is the
feature that makes a lab notebook read like a lab notebook. - The Complex Sample is rewritten as that lab notebook: sentences
carry the numbers, derivations keep their own lines when they
deserve the room, and everything referenced later is bound with
=in the paper's notation. Building it surfaced two name
collisions (numbat claimsmean,std, and the wordsecond
is the seconds unit) and the notebook words around them.
v1.1.0
v1.1.0 (2026-10-08)
- Two dev torture sheets join the template menu, built to stress and
confuse the renderer on purpose. The Stress Test loads layout
edges: wrapped long lines, a 45-character answer next to short
ones, region-alignment padding, tab-led lines, blank forward
references, very long names and tag runs, and unicode prose. The
Error Zoo loads every contained failure family at once - division
by zero, out-of-range powers, malformed numbers, unbalanced
parens, unknown functions and names, dead references, recursion
depth, arity clashes, fighting units, keyword misuse, and hostile
text - each error caged to its own line while the sheet keeps
computing past the last cage. If a cell overlaps, an error leaks,
or anything misbehaves, the sheet names the finding. - Two better error messages fell out of building the zoo: unit
dimension clashes now surface the engine's own wording (3 kg + 5 mnames Mass versus Length instead of "unknown name kg"), and
a bare period word in dead algebra reads as the unit it is, with
numbat's suggested fix attached. - Finding, documented: the recursion cap (200 levels) costs about
10 KB of stack per level in debug builds - fine on the app's
8 MB main thread, over the budget of Rust's default 2 MB test
threads, so heavy template computes in the suite run under a
big-stack harness.
v1.0.0
v1.0.0 (2026-10-08)
- 1.0: Phases 6 through 9 are complete and the Soulver-depth surface
is whole - arithmetic with implicit multiplication, every
percentage form including the reverse questions in words,
functions with recursion and dimension-checked unit paths,
self-updating line references, dates, recurring amounts, currency,
units, math functions, tags, mixed lines, completion, and the
template menu. - Ctrl+click a math line and it explains itself: a popover shows the
line's operations bottom-up, each asoperands = value, evaluated
in full sheet context so variables, references, and function
bodies resolve. A relative percent reads in the sheet's words
(200 + 15% (of 200) = 230). Unit lines and prose do not break
down. - Task lists: a list line may open with a GFM checkbox
(- [ ] plan the trip); Ctrl+clicking the box toggles it as a
plain user edit undo reverses. Checkboxes never enter the math. - The region model: within each heading region, scalar answers
align on the decimal point - integer answers pad so their implied
dot sits where the region's fractional dots are. Quantities,
errors, hex and bin keep their shapes. - Definition sheets read as a table: the Outline popover lists every
bound name beneath the headings; picking one lands on its line,
with the answers column as the values and trailing comments as
the notes. - The template menu grows to four: budget (now with budget-vs-
actual paired*_actualvariables and a variance section where
positive means under budget), portfolio, trip (dates for the
countdown, rates for per-day costs, currency for the spend), and
a Complex Sample - a scientist's worksheet running the ideal gas
law, Arrhenius activation energy, triplicate statistics with a
sample standard deviation, a dilution, Henderson-Hasselbalch pH,
projectile range, and combinatorics through recursive functions. - Two engine primitives the new sheets demanded: the prelude's math
functions route to the unit engine (sqrt(144)is 12,
sin(30 deg)is 0.5 - before,log(100)silently answered 100
through the mixed skeleton), and quantity totals finish inside
expressions (whole = totalover money answers990 EUR). Date
words call their functions mid-line too:today + 30 days.