# Lixity v0.7.2

Released 20 October 2026. This release brings continuous manuscript reading,
contextual passage tools and saved research into one workspace. It includes all
product changes since v0.7.1, plus corrections to Spanish syllable estimates and
small chapter/rest lexical differences.

## Shorter daily CLI checks

Set `manuscript = "drafts/manuscript.md"` in the selected root's `lixity.toml`.
Existing folder selection, `lixity scenes` and read-only
`lixity research review-manuscript --project ./novel` can use that explicit
project default. Explicit file arguments still win. Root-only settings and
contained relative paths keep other projects out of the selection; a bad setting
does not silently choose another file. Other manuscript-link commands remain
explicit, and review retains missing/unreadable source states.

`lixity scenes --chapter 2`, `--scene 2:1` or `--latest` reduces output after full
measurement. Latest means the last measurable scene in document order, not last
edit time. IDs and full-manuscript register references remain unchanged; filtered
JSON declares its selection and counts. Explicit `scene_analysis.planned` lists
unwritten assigned IDs without fake measurements or baseline membership. Unknown
unlisted assignments still fail. See [settings and examples](../USAGE.md#scene-registers-and-project-targets).

## Read a passage, then open its context

The manuscript stays continuous. **Analysis** switches diagnostic presentation
on or off without changing prose width or opening a tool. **… → Values** opens
**Passage values** with the paragraph's measurements, chapter/source-line context
and the existing saved-research route when supported. Values preserves your
Analysis choice; switching Analysis Off leaves explicitly opened Values available.
Dense comparisons open in an overview; **Back to passage** restores the previous
layer and tool.

Chapter cells in the heatmap reveal their manuscript destination through the
shared navigation coordinator; they no longer scroll a hidden chapter while
leaving the overview visible.

Paragraph menus, right-click and keyboard context menus reuse existing values,
marker and quote-link actions. Reading settings group size, width and spacing
and retain the visible source position where possible. A keyboard-operated
resize divider separates manuscript and dossier on desktop; narrow screens stack
them. Explicit passage-tool requests reveal the tool heading on mobile, and
Close or Escape restores the requesting passage and focus.

Source-backed reading preserves supported headings, quotations, literal code,
dividers and notes in source order, including front matter, empty chapters and
the analysis-excluded appendix. Unprofiled blocks remain readable without
invented measurements or claim-save actions. Unsupported inline syntax stays
literal; Lixity does not become a manuscript editor or fetch manuscript images.

The project sidebar has a stable collapse control beside project identity.
**Project actions** groups New/Open, guidance and PDF export. It starts closed
with a loaded manuscript and open in an empty workspace; the three workspace
destinations remain directly available.
Tooltips follow live titles and nested scrolling; bounded settings, wrapping URLs
and reachable revision Close controls improve short windows and enlarged text.
Seven interface languages retain the same shared controls.

The light theme uses shared paper-toned surfaces and a quieter supporting
interface. Clearer chapter headings and tighter control spacing give the
manuscript more room, including on narrow screens. Existing reading preferences,
the initial text size and the dark palette are preserved. Measurements and the
independent Analysis and passage-tool choices retain their existing behavior.

## Follow saved research and return to the exact passage

A compact work thread keeps the original chapter/line context and the last viewed
saved record identity and revision visible while following research. It identifies
explicit pins and offers **Back to passage**. Return or a changed project, source
or research context clears this temporary thread.

Dossiers group authored notes, current-linked claims and retained citations,
with direct routes to global claims and decisions. Saved manuscript associations
open their pinned claim revision and explicit dossier reference. Existing exact
quote matches offer passage returns; Lixity does not silently accept a newer
claim or repin an association. Retained quotation cards identify their source
version but are not full historical-source readers. These changes add no record
kind, parallel store, router or implicit retention.

Creation and association forms start collapsed and keep in-memory drafts.
Research tabs expose named panels and narrow-screen scrolling controls. Shared
forms and dialogs preserve their title and Close controls while content scrolls.
Asynchronous association marks preserve native text selections, including
backward selections and astral characters.

## Reapplying an unchanged edit preserves history

An authored save whose validated, normalized content is unchanged returns the
exact previous revision. Archive HEAD, retained bytes and the disposable SQLite
index stay unchanged. Required reason, actor, change kind, editable fields and
association pins are still validated; stale revisions/snapshots and concurrent
HEAD changes still fail. Mixed batches revise changed members only, and invalid
batches accept none. Decision acknowledgements remain append-only events.

The shared revision layer owns content equality; the repository retains the
writer lock and final HEAD guard. Immutable JSON records, blobs, manifests and
HEAD remain authoritative. There is no archive migration or second store.

Backup import and export now share complete manifest-ancestry validation before
publishing or packaging a store. Every ancestor must have the expected hash,
supported schema, project identity and consecutive generation. Damaged or
incomplete history and invalid archive paths fail explicitly. Valid backup formats
and stored record bytes remain unchanged; history validation failures preserve prior outputs.

## Measurements, freshness and maps

German perception/filter cues now include indicative present and simple-past
forms of hören and riechen across corpus, chapter, paragraph and scene analysis.
Compounds, participles and context remain limited: lexical matches are not
proof of a narrative filter or instructions to remove sensory description.
Explicit project patterns still replace the list; regenerate affected German
densities and dependent comparisons. [Methods](../METHODS.md) states the coverage.

French, Spanish, Italian, Portuguese and Dutch tokenization now retains ordinary
straight and curly internal apostrophes as documented. First-person sentence
starts recognize typographic contractions consistently without changing original
starter spellings or source anchors. These are orthographic counting conventions;
affected token-based and sentence-start measurements need regeneration.

Plain-prose counting skips unnecessary delimiter scanning while preserving the
existing Markdown projection. Escapes, links and inline code retain their
existing recognition path; no new cache or analysis format is introduced.

Spanish syllable estimates now count standalone closed-vowel nuclei and use
bounded diphthong, hiatus and silent-vowel rules. Spanish ASW and derived
readability can change; coefficients and JSON fields stay the same. These are
orthographic heuristics, with limits for regional pronunciation, names, loans
and poetic usage, rather than validated comprehension scores.

Chapter/rest Jensen–Shannon divergence preserves real small differences near
equality. Identical distributions return zero with no lexical drivers. Stable
summation and count-based contrasts retain the same definition and natural-log
units; no fixed epsilon discards small differences. Regenerate affected reports
before comparing measurements across this release. See [methods](../METHODS.md).

Missing/unreadable manuscripts and failed configuration or rendering refreshes
leave the last successful dashboard visible with an **Analysis freshness**
notice and retry action. Explicit analyze/rebuild failures return an error.
Recovery clears the notice after successful validation.

Visible maps now load OpenStreetMap by default. Tile requests expose the client
IP and viewed area and stop outside the active visible map context. Turn off
the background or use the offline sketch for local vectors. v0.7.1's explicit
nonpersistent tile permission describes that earlier release. Shared geography
coverage, route context and approximate vertex-chain distances remain descriptive;
there is no road routing or travel-time inference.

Style-space views explain projection support, retained variation, active cutoffs
and chapter scores without changing existing scores or response formats.
Statistical signals support human review; they are not objective quality scores.
English remains the default analysis language; detection is explicit.

Configuration discovery now warns about permission/I/O failures and malformed
`tool`/`tool.lixity` sections. Missing paths and impossible children beneath a file
remain quiet. Imported style metrics reject non-finite measurements and invalid
standard errors before scoring. Low-level structure reports share the English
default, and dialogue, pacing, motifs and showing CLI commands use the guarded
UTF-8/regular-file reader.

An invalid explicit foreground startup path fails before selecting a workspace.
Failed configuration or Research setup keeps the prior project selected and
retains created files, with recovery guidance through **Open Project**. Supplied
invalid HTTP claim-confidence or evidence-relation values return 400 without an
archive write; omitted fields retain their defaults.

## Install, upgrade and restart

For a new isolated application and CLI installation:

```sh
uv tool install --python 3.12 --managed-python lixity
uv tool update-shell
```

Open a new terminal, then run:

```sh
lixity --version
lixity service start --open
```

For an existing PyPI tool installation, stop the managed service before upgrading:

```sh
lixity service stop
uv tool upgrade lixity
lixity --version
lixity service restart --open
```

A pinned wheel installation keeps its original URL. Replace it explicitly to
select the v0.7.2 wheel:

```sh
lixity service stop
uv tool install --python 3.12 --managed-python --reinstall-package lixity "https://github.com/mfahsold/lixity/releases/download/v0.7.2/lixity-0.7.2-py3-none-any.whl"
lixity --version
lixity service restart --open
```

Verify the wheel against the release's `SHA256SUMS` when using a pinned setup.
`restart` reuses recorded launch settings, including after `stop`; a project
selected later in the browser is not the recorded startup project. Stop/restart
each custom-port instance with its port and reload browser tabs afterward.
Installing files does not restart a running service. The [installation guide](../INSTALLATION.md)
covers historical instances without a managed service and other environments.
Service command help groups the existing workspace, instance and analysis options
without changing their defaults.

## Compatibility and public examples

The [current local data model](../research/DATA_MODEL.md) includes reference and
publication diagrams and separates immutable archive data from the rebuildable
SQLite index. Historical interchange designs are linked separately. Purge now
counts both original and extracted-text blob ownership, preserving shared bytes
and removing unshared extraction text. Storage/restore validates decision dossier
pins. Incomplete post-commit cleanup and uncertain publication acknowledgement
report their actual state; review the archive before retrying a write. Normal
successful JSON responses and archive formats remain unchanged.

Research remains experimental and explicitly project-scoped. v0.7.2 reads
record/manifest versions v1–v8; product versions, response schemas and archive
versions remain independent. Existing manuscript identities, hashes, Unicode
codepoint offsets and revision pins stay intact. Back up project archives
before changing versions and keep all archive readers/writers compatible.
Integrity checks do not establish factual accuracy.

The [read-only Warehouse 4 demo](https://mfahsold.github.io/lixity/demo/report.html)
combines manuscript, analysis, research, images, maps and prepared PDFs using
synthetic/public-domain material. Local-only actions link to installation.
Read-only and explicit-retention boundaries are unchanged. The public Pages
website and demo now use the explicitly configured hosted GoatCounter instance
for page visits and named links. A separate Pages-only adapter excludes query
strings, fragments, forms and manuscript selections and respects Do Not Track /
Global Privacy Control. The local app and exported reports remain outside this
measurement. Counts begin after deployment; blocked requests and collection
failures make them incomplete, not zero. Automated readback needs separate
statistics access; historical clicks cannot be recovered.

The public homepage has one reader view, one demo action and one installation
action. The demo uses a compact return link above its native workspace. README
explains purpose, first commands and the documentation/repository map, with
absolute links that also work from PyPI. Guides retain the detailed workflows.
Desktop reader screenshots end after the complete opening chapter; mobile
overviews show an honest viewport. Other captures frame complete widgets or
explicit task boundaries. Full-size images and provenance remain linked, and
capture tooling preserves native dialog scrolling.

Downloadable Markdown guides retain readable paragraphs and multiline commands
inside expandable sections. Example generation uses the active checkout.
