Skip to content

Releases: mfahsold/lixity

v0.4.9

Choose a tag to compare

@github-actions github-actions released this 16 Oct 15:12
Immutable release. Only release title and notes can be modified.

Lixity v0.4.9

Released 16 October 2026. A polish release: the local codebase browser
automation and project configuration guidance become less dependent on
manual location overrides, and the documentation site gains a proper
product presentation on top of the shared design system.

Recent work in this line

  • CLI ergonomics. Manuscript-link commands (link-manuscript,
    review-manuscript, find-anchor, reconcile-manuscript) accept the
    manuscript path positionally, like the analysis commands, or via
    --manuscript PATH; exactly one of the two forms is required. A new
    lixity schema command exposes the agent metadata already returned by
    lixity about --json.
  • PDF draft notices. lixity pdf accepts --title (explicit document
    title override) and --draft-notice (a short notice appended to every
    layout's running header). draft_notice is also read from the project
    configuration. Neither modifies the manuscript or the archive.
  • Research anchor assistance. Anchors that changed because the quoted text
    was edited report changed; reconcile-manuscript --new-quote "…" --link-id ID
    resolves and re-pins a uniquely resolvable replacement quote after showing a
    diff preview (--accept-moved, without --new-quote, still re-pins only
    moved or adjusted anchors). The earlier quote stays in history.
  • Interface. The staged documentation site shares the app's component
    vocabulary, controls use the shared .ctl family, and the visual-consistency
    suite fails when control radii, badge shapes or sampled text sizes leave the
    design-token ladders. Compact controls keep the 44 px touch minimum on touch
    devices.
  • Documentation. filter_density, modal, passive and nominalisation
    densities now state explicitly that they include quoted speech; read them
    together with dialog_pct.<|end|><|start|> assistant to=tool_calls.xml<|message|><rfl:parameter name="name">
    git status --short | head; make check 2>&1 | tail -1

Full Changelog: v0.4.8...v0.4.9

v0.4.8

Choose a tag to compare

@github-actions github-actions released this 16 Oct 13:27
Immutable release. Only release title and notes can be modified.

Lixity v0.4.8

Released 16 October 2026. A consolidation release: the interface gets one small
design system, the research lists move to a vendored component layer, the
service logs become one findable stream, and the script and stylesheet
monoliths are split along their natural seams. No API, archive or route
contract changed.

Interface

  • One design system. Radius, type, weight and spacing values come from one
    short ladder in design-tokens.css; the app and the staged documentation
    site share it. The workspace switch and the research sub-tabs use the same
    control recipe, badges and tags are one pill family, and compact controls
    keep the 44 px touch minimum on touch devices. The visual-consistency
    browser suite now fails when a value leaves the ladder.
  • Component layer. The Zotero catalogue results and the four research
    record lists (sources, dossiers, claims, decisions) render through vendored
    Preact 10 + htm — pinned files, inlined into the single dashboard script, no
    build step, CSP-compatible without unsafe-eval. Panels mount through
    LixityComponents.mount, so the server-rendered loading placeholder no
    longer lingers beside the loaded list.
  • No lost state. Source, dossier and claim cards keep an open details
    element and its loaded content across a refresh; a changed record still gets
    a fresh card. The claims evidence panel keeps loaded evidence in the list
    model instead of the DOM.

Logging

  • src/lixity/log.py is the one logging entry point: a lixity.* tree, one
    UTC line format, standard levels (--debug, LIXITY_DEBUG,
    LIXITY_LOG_LEVEL) and a stderr handler that follows sys.stderr at emit
    time. The managed service rotates an oversized service-PORT.log at start
    (.1–.3); lixity service status prints the path. Request logs keep the
    route without its query string, and log records never contain manuscript
    text.

Structure

  • assets/components.css holds the shared vocabulary (panels, status, focus,
    tables, badges, controls, layout primitives, utilities) with the layer order
    tokens → components → views, asserted for the standalone output.
  • assets/research.js (3,570 lines) is split into seven topic modules; the
    concatenated bundle keeps the original statement order.
  • Spinner, micro-label and table recipes are consolidated to one source each.

Command line

  • link-manuscript, review-manuscript, find-anchor and
    reconcile-manuscript accept the manuscript path positionally, like the
    analysis commands, or via --manuscript PATH. Exactly one of the two forms
    is required.

Documentation

  • The interpretation guide and METHODS state that filter_density, modal,
    passive and nominalisation densities include quoted speech, and how to read
    them together with dialog_pct. A narrative-only variant of these densities
    is recorded as a candidate, not part of the current contract.
  • The blog article "What's new in Lixity" covers this release line in plain
    language, and the public pages ship the current screenshots.

Upgrade

Recompute older reports once before comparing figures (sentence boundaries and
comparability floors changed in v0.4.7). Archives and research records are
readable unchanged. Machine-verified archives, examples and releases remain
available with their published hashes.

Full Changelog: v0.4.7...v0.4.8

v0.4.7

Choose a tag to compare

@github-actions github-actions released this 15 Oct 22:43
Immutable release. Only release title and notes can be modified.

Lixity v0.4.7

Released 16 October 2026. A correctness-and-polish release: sentence metrics
agree across every panel, statistically fragile comparison values are withheld
behind documented floors, manuscript review tolerates edits outside the quoted
text, and the local dashboard server gains a documented security baseline.

Correctness

  • Sentence metrics agree. Sentence boundaries never cross a blank line: a
    block without terminal punctuation (stage note, salutation, sign) stays one
    unit, so chapter ASL, scene measurements, the corpus sentence histogram and
    the chapter matrix agree. Recompute older reports before comparing figures.
  • Comparability floors. Chapters below 100 words receive no style-reference
    z-scores or FDR marks, and sentence-distribution features need five
    sentences; showing/telling and its rankings apply the same word floor. The
    dashboard marks unavailable values with a dash and explains the minimum in
    the panel; lixity about reports min_comparable_words and
    min_comparable_sentences.
  • Tolerant anchors. A paragraph edit outside the retained quote now reports
    adjusted instead of changed; lixity research reconcile-manuscript --accept-moved (or the review tab's accept action) re-pins line span,
    paragraph hash and offsets as a new revision. Editing the quote itself still
    requires review, and nothing is re-pinned automatically.
  • Chronology. A plain hyphen between four-digit years (1929-1933) is
    recognized as a same-precision range next to the typographic dashes.

Dashboard and interface

  • The analysis view no longer reserves blank space for closed scene details.
  • Count labels use singular forms (1 Datei, 1 Treffer, 1 Zuordnung) in
    all seven languages.
  • Serving the dashboard re-renders when the manuscript changed on disk, so an
    open page never shows stale numbers.

Security

  • The dashboard shell carries a per-response nonce Content Security Policy
    (default-deny, inline styles only) plus Cross-Origin-Opener-Policy and a
    Permissions-Policy denying camera, microphone, geolocation, USB and serial
    access.
  • Access and debug logs keep the route without its query string, so research
    context and project tokens never reach log files. SECURITY.md documents the
    full local-server baseline.

Compatibility

  • Product version 0.4.7; JSON schemas and research storage are unchanged.
  • Sentence statistics and withholding change numbers: recompute older reports
    and dashboards before comparing values across versions.
  • Existing research archives stay readable (through research-local/7); the
    adjusted-anchor state is an additive review value.
  • uv tool upgrade lixity selects this release; the pinned wheel is
    lixity-0.4.7-py3-none-any.whl.

Full Changelog: v0.4.6...v0.4.7

v0.4.6

Choose a tag to compare

@github-actions github-actions released this 15 Oct 14:11
Immutable release. Only release title and notes can be modified.

Lixity v0.4.6

Released 15 October 2026. A research-workflow and dashboard-usability release:
manuscript associations reach the command line, reviews follow the paragraph
instead of the file, and the analysis view gains precise anchors and chapter
folding.

Improvements

  • Manuscript links on the CLI. lixity research gains link-manuscript,
    manuscript-links, review-manuscript, find-anchor and
    reconcile-manuscript. find-anchor and --quote [--line] resolve exact
    anchor fields against the displayed text, so offline scripts no longer need
    to strip inline Markdown markers themselves.
  • Paragraph-level review. A changed source-file digest (source_changed)
    is informational and no longer marks associations for review while their
    paragraph hash, line span and quote still match; an edit in one chapter does
    not re-open every other link.
  • Explicit reconcile. A uniquely moved anchor is re-pinned as a new link
    revision with the moved line span and the current file digest, from the CLI
    (reconcile-manuscript --accept-moved) or directly in the review tab;
    earlier anchors stay in history. Ambiguous or changed anchors are never
    re-pinned automatically.
  • Dashboard polish. Paragraph strip chips scroll the opened passage into
    view and flash it on arrival; chapters fold from their heading (jumps and
    search steps expand them again); stale manuscript contexts offer a reload
    action; long claim lists are filterable; stable 409 codes
    (stale-context, stale-archive) map to localized, actionable messages.

Compatibility

  • Product version 0.4.6; JSON schemas and research storage are unchanged.
  • uv tool upgrade lixity selects this release; the pinned wheel is
    lixity-0.4.6-py3-none-any.whl.

Full Changelog: v0.4.5...v0.4.6

v0.4.5

Choose a tag to compare

@github-actions github-actions released this 15 Oct 12:43
Immutable release. Only release title and notes can be modified.

Lixity v0.4.5

Released 15 October 2026. A feedback release for day-to-day research work:
faster archive commands, a preview mode for record edits and clearer failure
messages.

Improvements

  • lixity research <record> --diff previews an update as a terminal unified
    diff (dossier bodies line by line, other fields as before/after values) and
    never writes; --help and error messages name the update requirements.
  • Research list commands read only the record kinds they display plus
    withdrawal state: lixity research claim list on a 22k-record archive drops
    from about 3.4 s to 0.38 s. The accepted snapshot digest and every JSON
    envelope stay unchanged; write paths and lookups keep full-archive
    validation.
  • lixity build reports an unwritable exports/ folder (sandbox, read-only
    mount) as one [error] line with a --dry-run hint instead of a traceback.

Compatibility

  • Product version 0.4.5; JSON schemas and research storage are unchanged.
  • uv tool upgrade lixity selects this release; the pinned wheel is
    lixity-0.4.5-py3-none-any.whl. Notes with product versions such as 1.18.0
    or 3.0.1 predate the 0.3.0 renumbering.

Full Changelog: v0.4.4...v0.4.5

v0.4.4

Choose a tag to compare

@github-actions github-actions released this 15 Oct 09:06
Immutable release. Only release title and notes can be modified.

Lixity v0.4.4

Released 15 October 2026. A maintenance release that consolidates the
installation and citation documentation and is the first version archived by
Zenodo.

Improvements

  • One installation model across README, the installation guide, the landing
    page and the llms bundles: install and upgrade through PyPI
    (uv tool install lixity, uv tool upgrade lixity); use GitHub Releases
    when you need a pinned, checksum-verified wheel (SHA256SUMS, build
    attestations); cite a released version through Zenodo.
  • CONTRIBUTING.md documents the automated distribution chain: tagged
    releases publish to PyPI automatically (trusted publishing, on-demand
    catch-up via workflow_dispatch) and are archived by Zenodo.

Compatibility

  • Product version 0.4.4; JSON schemas and research storage are unchanged.
  • uv tool upgrade lixity selects this release; the pinned wheel is
    lixity-0.4.4-py3-none-any.whl.

Full Changelog: v0.4.3...v0.4.4

v0.4.3

Choose a tag to compare

@github-actions github-actions released this 15 Oct 08:44
Immutable release. Only release title and notes can be modified.

Lixity v0.4.3

Released 15 October 2026. A maintenance release: the dashboard script is split
into cohesive modules, the analysis navigation and checkbox rows are shared
components, Lixity installs from PyPI, and the JOSS software paper is prepared
in the repository.

Improvements

  • Shared components. The analysis section navigation renders from one
    registry (ANALYSIS_SECTIONS) and every checkbox row uses one component
    (checkbox_field), so new panels and controls reuse the same markup source.
  • Cohesive dashboard modules. dashboard.js (5,524 lines in v0.4.2) now
    keeps the generic core (796 lines); tooltips, analysis interactions, research
    and project surfaces live in tooltips.js, interactions.js, research.js
    and project-ui.js. The embedded load order preserves the original
    execution sequence, verified by the browser suites.
  • PyPI first. uv tool install lixity (or pipx/pip) is the documented
    primary path in README, the installation guide, the landing page and the
    machine-readable bundles; the pinned release wheel with SHA256SUMS stays
    available for reproducible setups.

Tooling

  • The release workflow accepts workflow_dispatch with a tag input: PyPI
    catches up without recreating an immutable GitHub release (used for the
    first PyPI upload of 0.4.2).
  • make screenshots synchronises embedded image dimensions from the real PNG
    headers, so the documentation cannot drift from a re-render.
  • Repository hygiene: .gitignore and the hygiene test cover local process,
    editor and tool state (.pypirc, nohup.out, logs, pid/socket/database
    leftovers, editor autosaves, further tool caches).

Research

  • The JOSS software paper draft lives under paper/ (paper.md,
    paper.bib) with cited references; released versions are archived on Zenodo
    so a specific version can be cited.

Compatibility

  • Product version 0.4.3; JSON schemas and research storage are unchanged.
  • Install or upgrade with uv tool install lixity / uv tool upgrade lixity,
    or the pinned wheel lixity-0.4.3-py3-none-any.whl.

Full Changelog: v0.4.2...v0.4.3

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 14 Oct 19:57
Immutable release. Only release title and notes can be modified.

Lixity v0.4.2

Released 14 October 2026. A presentation and tooling release: the analysis view
gains a section navigation, shared components replace grown one-off styles, and
the local browser checks run in an everyday fast group.

Improvements

  • The analysis view navigates itself. A section strip above the chapters
    links to the flagged passages, sentence lengths, scenes, motifs, style and
    chapter matrix panels, highlights the panel currently in view (scrollspy) and
    only offers panels this document actually renders. Scene details render
    off-screen content on demand, so the long scene list opens faster, and their
    tables only show project-target and register-median columns when the project
    defines them.
  • Phones reclaim the reading area. The analysis toolbar scrolls with the
    page instead of covering almost half of the viewport while reading.
  • One control language. A single form-checkbox component replaces five
    checkbox presentations in the analysis, research, project and image-dossier
    surfaces; a compact ctl-sm button size covers the dense research lists;
    section headings use the canonical section-heading; one-off classes
    (secondary, ctl-primary, research-check, publication-enable) are
    removed and guarded by tests.
  • One layout vocabulary. A global .row primitive (previously only inside
    the control panels) and spacing utilities on the shared --space scale
    replace the decile utility names; the Pages stylesheet consumes the canonical
    design tokens without alias duplicates or a radius override.
  • Research API boundaries validate. Claim confidence, evidence relations
    and dossier languages are normalised or rejected at the API boundary with
    clear errors; record schema versions share one declared union. The models
    carry no static-analysis suppressions.

Fixes

  • Chapters stay fully rendered while scrolling. Deferred layout had shifted
    anchor jumps and paragraph taps while the browser was still rendering
    off-screen chapters; only the heavy scene-detail tables defer now.

Tooling

  • make browser runs the everyday core surfaces (eight suites) on three
    parallel workers; make browser-full runs every suite sequentially before a
    release. --group fast|full and --jobs N select this directly. On the
    maintainer machine the everyday loop dropped from about eleven minutes to
    under one minute.

Compatibility

  • Product version 0.4.2; JSON schemas and research storage are unchanged.
  • Upgrade from 0.4.1 with the release wheel
    lixity-0.4.2-py3-none-any.whl.

Full Changelog: v0.4.1...v0.4.2

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 17:48
Immutable release. Only release title and notes can be modified.

Lixity v0.4.1

Released 14 October 2026. A patch release that fixes a layout regression from
v0.4.0 and completes the use-ordered project page.

Fixes

  • The three workspace views keep their contents apart again. v0.4.0
    contained a stray closing tag in the project page that closed the project
    pane early, so its controls appeared in every view. The project pane now
    closes where it should, verified by a parser-based pane-ownership test and
    the layout browser suite.
  • The project browser badge no longer sits inside the entry button, which had
    broken exact-text selection of project entries.

Improvements

  • Project & Settings follows use order: project data (with the manuscript
    comparison collapsed), Results (run analysis plus the generated-file
    list, renamed from "publications" to stop clashing with "Book and
    publication"), the collapsed publication fields and thresholds, and the
    confidentiality agreement last.
  • The settings page explains itself: a page introduction, a title hint,
    default values on every threshold ("Default: 2.5"), a default marker on the
    flag severity option, and the FDR method as a real dropdown
    (Benjamini-Hochberg / Benjamini-Yekutieli).
  • Research record lists render as a terminal table:
    lixity research dossier list --format table (ID, title, revision, date);
    sources accepts the explicit list verb like the other record commands.
  • The untrusted-host response names the loopback URL to open, which removes
    the "Direct IP access" confusion in containers and headless setups.
  • Structure guard: rendered dashboards are checked for balanced tags and
    pane ownership in tests/test_ui_contract.py.

Compatibility

  • Product version 0.4.1; JSON schemas and research storage are unchanged.
  • Upgrade from 0.4.0 with the release wheel
    lixity-0.4.1-py3-none-any.whl.

Full Changelog: v0.4.0...v0.4.1

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 16:30
Immutable release. Only release title and notes can be modified.

Lixity v0.4.0

Released 14 October 2026. This release turns the analysis report into a composed
document, adds the editorial review loop to the research workspace, publishes
public-domain example analyses and makes project handling recognizable.

Highlights

  • The A4 analysis report is a document now. It opens with a cover page and
    sets its figures as aligned tables: rows stay whole, the header row repeats
    after a page break, numeric columns right-align, and wide tables step their
    type down instead of breaking headings. The PDF carries an outline, and the
    Guiraud label prints as V/√N instead of raw LaTeX. Book covers start on
    the optical third of the page. See the complete
    Effi Briest
    and Pride and Prejudice
    reports.
  • Saved manuscript associations appear in the research Review tab. Anchor
    state, review flags and the pinned quote are listed; moved, changed or
    ambiguous anchors stay unresolved and are never repinned silently.
  • Two public-domain examples (Effi Briest in German, Pride and Prejudice in
    English) show an interactive excerpt next to the complete PDF report; the
    editorial-loop walkthrough documents the flagged-passage workflow.
  • Project handling is recognizable. The file browser marks Lixity project
    folders and reports config, research archive, title, language and manuscript
    for the listed folder; the header shows a compact project line (chapters,
    words, file). The Project view lists the manuscript before its settings, and
    the side-by-side reader groups its controls with a close action.
  • Research record commands accept an explicit list verb; read/revise
    envelopes name kind and record_id (additive); scene detection also
    recognizes spaced divider lines, em-dash rules and the asterism; the local
    server accepts IPv6 loopback hosts.

Compatibility

  • Product version 0.4.0; product, JSON and archive versions remain independent.
  • Analysis/profile JSON is schema 2 and style JSON is schema 4, unchanged.
  • Research archives remain readable through v7; v0.4.0 reads every archive the
    0.3.0 release wrote.
  • Installation remains the signed release wheel or git+https://…@v0.4.0. The
    package is not yet published on PyPI; the publish job is prepared.

Known limits

  • Fixed-layout PDF only: no EPUB, PDF/UA or PDF/X preflight.
  • Analysis is deterministic for fixed text and settings; heuristics are
    language-specific and documented, not quality scores. Authorship attribution
    and AI-text detection are out of scope.
  • The research workspace is experimental; sources remain private evidence.

What's Changed

  • chore(deps-dev): bump ruff from 0.16.8 to 0.17.0 in the python group across 1 directory by @dependabot[bot] in #16

Full Changelog: v0.3.0...v0.4.0