Skip to content

Releases: VirInvictus/Quire

v1.5.3

Choose a tag to compare

@github-actions github-actions released this 09 Oct 16:21

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

Choose a tag to compare

@github-actions github-actions released this 09 Oct 04:05

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

Choose a tag to compare

@github-actions github-actions released this 09 Oct 00:00

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

Choose a tag to compare

@github-actions github-actions released this 08 Oct 23:09

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_stats and quire-cli --stats
    report the fixed-point pass count and whether a sheet ever
    exhausted the pass cap; QUIRE_DEBUG=1 makes 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, total cannot be an assignment
    name (it is the keyword), and a template's forward references
    must be counted against the final layout.

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 22:43

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-cli joins the workspace: a sheet in, its answers column
    out. Plain text mirrors the sheet's shape with the answer column
    right-aligned; --json emits 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/L answers 2 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 m is 6 kg*m - torque
    territory, not a bug).

v1.3.1

Choose a tag to compare

@github-actions github-actions released this 08 Oct 22:12

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

Choose a tag to compare

@github-actions github-actions released this 08 Oct 21:52

v1.3.0 (2026-10-08)

  • Forward line references resolve: &67 on 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 * 2 over 3 kg answers 6 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

Choose a tag to compare

@github-actions github-actions released this 08 Oct 21:20

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/L answers 2 molar, the sample weighs 0.101 g answers 0.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 claims mean, std, and the word second
    is the seconds unit) and the notebook words around them.

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 20:48

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 m names 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

Choose a tag to compare

@github-actions github-actions released this 08 Oct 20:30

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 as operands = 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 *_actual variables 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 = total over money answers 990 EUR). Date
    words call their functions mid-line too: today + 30 days.