Skip to content

Releases

v0.8.0-rc2

v0.8.0-rc2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Nov 09:16
197ff6b

This is a release candidate: an early-testing build. Try it, and report what breaks - problems found here are problems not shipped to everyone. UI/UX and copy work on this line is still in progress.

FerriteLib is a prerequisite library mod for Coahuilite mods that use its UI kit. It adds no game content of any kind - no Defs, no patches, no textures - and its entire payload is 1.6/Assemblies/FerriteLib.UiKit.dll.

Installing

  1. Unzip this archive directly into RimWorld/Mods/. It contains a top-level FerriteLib folder, so the result is Mods/FerriteLib/....
  2. Install the mod that needs it (currently Universal Squeaker) from its own releases page.
  3. Enable both in the mod list. RimWorld will warn if the consumer is enabled without this one.

Do not copy FerriteLib.UiKit.dll into another mod's folder. Exactly one carrier of that assembly may be installed; two of them bind by load order through the game's single global AssemblyResolve and the copy that loses has no way to find out.

Version identity

Package id coahuilite.ferritelib
Release v0.8.0-rc2
Game RimWorld 1.6
Built from commit 197ff6b3ae99bb3e957e22eaa8be70aca5858447
ZIP asset SHA-256 97CD4AC4D6EA1412305AE5010912992BC3102390B0AFF19FB4B1C5F1C1CC96F0

The SHA-256 above identifies the downloaded FerriteLib-v0.8.0-rc2.zip archive, not the DLL inside it. The extracted version.txt separately records the payload DLL's SHA-256. The consumer repository links to this release instead of shipping another copy. The full source of this exact build is https://github.com/Coahuilite/FerriteLib at tag v0.8.0-rc2 (commit 197ff6b3ae99bb3e957e22eaa8be70aca5858447); the license terms travel inside the package as LICENSE.

0.8.0-rc2 — retained layout and dependable verification

Release candidate with RimWorld 1.6 and basic 1.7 compatibility, not a stable/latest release.
Native 1.7 rendering and main interactions still await human acceptance. FerriteLib remains a no-content
prerequisite with one runtime DLL, no Defs/patches/textures and no settings or save data of its own.

Changes from rc1

  • Read-only bindings on text/wrapped now use normal foreground rather than disabled grey, subject
    to Tone/Emphasis/TextColor. This is the shared FL baseline: A and B both become brighter, as does
    delivery-r8 when it adopts the new FL, even where A's own source is unchanged. Interactive read-only
    controls and explicit shared writable:false calls retain their previous behavior.
  • Seven optional TextColor slots inherit independently without adding palette roles. Theme/instance/local
    runtime declarations use the public-unstable UiTextColours facade; resolved styles carry the selected ink.
  • Native event mapping uses explicit enum values; Repeat template-root visibility follows the normal
    invalidation path.
  • Canonical palette lookup avoids repeated parsing/reflection. Resolved appearance and detached rollback
    facts are reused only while their actual declaration, ancestor, theme and font inputs remain valid.
  • The shared synchronous layout pipeline validates stable domains before full candidate preparation.
    It uses first-write leaf records, first-touch arrangement backups and immutable sparse geometry.
    Unknown/legacy/structural domains retain the complete transaction, including multi-root remaining-height
    dependencies. Draw, current hit geometry, native editors and required Repaint calls remain active.
  • Verification now restores explicit roots once, builds distinct Core/Release/Dev variants and executes
    the built outputs. Stub dependencies share the normal graph. Complete logs and input/configuration,
    exit and timing summaries survive failures as well as success.
  • A local basic 1.7 compatibility candidate isolates Unity-only font-environment metadata from the
    common text path. Unity 1.6 retains its original fingerprint; other font providers use the existing
    conservative no-reuse contract. Both game versions select one payload. Native 1.7 rendering and
    main interactions remain awaiting human acceptance; this is not a complete Waylith adapter.
  • Standard draw guards retain and report request errors and their actual target without tripping the
    widget, retrying the request or rolling back business effects. Optional reporting failures stay isolated.
  • A registry first explicitly enrolled after Host construction joins that view's presentation and
    demand pipeline at the next legal synchronization; ordinary bindings need no early registration.
  • Initial document attachment restores staged Host state on failure and changes dependencies only
    after staging succeeds. Seal/retirement remains an irreversible committed result.

Compatibility and upgrade

Supported 0.8 source, compiled-consumer, XML and legal-use contracts remain protected. There is no new
purity/subscription prerequisite for ordinary getters, old Measure or ITextMetrics. The API/build base
remains 0.8.0; the rc2 tag/archive identifies the trial, while the DLL additionally records its real source
commit. Retained domains still perform validity/Draw/hit walks; this is not pixel retention or automatic
background layout.

Exit the game before replacing the complete FerriteLib folder with the selected package. Keep exactly
one enabled carrier of FerriteLib.UiKit.dll; do not put a second copy in a consumer mod. Consumers compile
against that exact fixed DLL with Private=false and assert their supported API range, normally
[0.8.0,0.9.0). Keep the last accepted complete consumer/library pair for rollback. Do not clear player
configuration to upgrade the library, and do not disable it while an enabled consumer depends on it.

Use the DLL from the selected release asset. Its tag and full source commit identify the package;
local development builds have separate identities.

Playtest results and known limitations

Numeric FontSize1..96 is implemented in the current source through public-unstable composed production
entries, without changing Stable signatures or old singleton/override conditions. Standard windows and
independent authors can use the same effective alias/size for measurement, layout, drawing, cache, fit
and retained display. Explicit text/state colour reaches the real native editor request, not only labels.
Invalid numbers are refused; unsupported purposes report the effective preset and reason.

The1.6 numeric label/editor routes remain 静态候选、待原生.1.7 labels are a source-level candidate
with an explicit capability switch; editors do not support numeric size and fall back with a report.
No1.7 numeric-label level is advertised for release before the user's1.7 screenshot coverage. Font/IME,
caret/selection, exception-state restoration, language fallback, UIScale and extreme-size behavior remain
native acceptance gaps. Existing stub checks are not pixel acceptance. See the
implementation status and
author guide.

The user accepted stable FPS for US2f22bec/FL833c14f4 and later reported that
USea610fa/FL833c14f4 worked well in internal playtesting. The trial did not include a detailed
per-action, resolution, language or IME record.

Cold-opening peaks, independent HUD cost, detailed font/IME/overlap/scaling and real configuration-save
coverage remain incompletely characterized. Some earlier headless game checks reported errors.
The local basic 1.7 candidate is described in the build guide.
No complete/native-accepted 1.7 adapter, new window manager or asynchronous dispatch is delivered.

Changes since v0.8.0-rc1

  • 197ff6b Merge FerriteLib 0.8.0-rc2 maintenance baseline
  • 94d36fc docs: align 0.8 maintenance scope and privacy policy
  • cd8b2ae fix(uikit): preserve successful layout revisions and Dev paths
  • a85ce32 docs: align line-specific engineering and handoff rules
  • 15b5422 feat(uikit): baseline existing 0.8 workbench and script contracts
  • 8c6d0ff feat(uikit): add composable text appearance controls
  • c1a5091 build: map RimWorld 1.7 candidates to the shared 1.6 payload
  • 7e9db67 fix(kernel): preserve request failures and document lifecycle ownership
  • 26d9f19 docs: consolidate the 0.8 specification and preserve superseded contracts
  • cf1cf64 Make rc2 release copy reader-facing
  • 79c73e7 Separate verification actions from retry guidance
  • 6ec0c31 Unify verification graphs and prepare rc2 local release inputs
  • 4fb27e3 Update window guide with accepted performance and compact browsing
  • f12d1ec Close fixed incremental consumer integration status
  • 833c14f Preserve remaining-height constraints across root reflow
  • 704c4c1 Keep incremental public geometry snapshots data-only
  • 085d330 Retain idle content-reference geometry without blocking adopted pages
  • 594927f Implement stable-domain incremental layout publication
  • 6038213 docs: refine window navigation help and palette guidance
  • 36fa7ad perf(properties): reuse detached rollback backups between writes
  • 2309cd3 perf(properties): retain resolution for exact unchanged inputs
  • 6f0238d docs: record reported page input recovery and remaining latency
  • 4863667 perf(palette): fast-path canonical roles and enum validation
  • b6b89ed docs: clarify native event mapping and Repeat visibility
  • f362c99 fix(layout): honor visibility on Repeat template roots
  • 069b88a fix(adapter): map native event phases without enum names
  • bdb4fb0 docs: record native window interaction failure lessons
  • f19c11a docs: refine desktop window interaction guidance
  • cb99263 docs: document RimWorld window sizing and UI scale
  • 98aaa1c docs: reflect published 0.8 RC status

Status

Supported stable contracts protect source, compiled consumers, XML vocabulary, behavior and legal use conditions within the same game/adapter ta...

Read more

v0.8.0-rc1

v0.8.0-rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Oct 16:48

This is a release candidate: an early-testing build. Try it, and report what breaks - problems found here are problems not shipped to everyone. UI/UX and copy work on this line is still in progress.

FerriteLib is a prerequisite library mod for Coahuilite mods that use its UI kit. It adds no game content of any kind - no Defs, no patches, no textures - and its entire payload is 1.6/Assemblies/FerriteLib.UiKit.dll.

Installing

  1. Unzip this archive directly into RimWorld/Mods/. It contains a top-level FerriteLib folder, so the result is Mods/FerriteLib/....
  2. Install the mod that needs it (currently Universal Squeaker) from its own releases page.
  3. Enable both in the mod list. RimWorld will warn if the consumer is enabled without this one.

Do not copy FerriteLib.UiKit.dll into another mod's folder. Exactly one carrier of that assembly may be installed; two of them bind by load order through the game's single global AssemblyResolve and the copy that loses has no way to find out.

Version identity

Package id coahuilite.ferritelib
Release v0.8.0-rc1
Game RimWorld 1.6
Built from commit a0b5b983c3c1
ZIP asset SHA-256 A49ED2BE0C98B4C0FCADB40004538C997F5D66ADC6C869BCA5A6B16A4E7C2660

The SHA-256 above identifies the downloaded FerriteLib-v0.8.0-rc1.zip archive, not the DLL inside it. The extracted version.txt separately records the payload DLL's SHA-256. The consumer repository links to this release instead of shipping another copy. The full source of this exact build is https://github.com/Coahuilite/FerriteLib at tag v0.8.0-rc1 (commit a0b5b983c3c1); the license terms travel inside the package as LICENSE.

Changes since v0.7.0-rc1

  • a0b5b98 fix: preserve runtime anonymity checks without identity environment
  • c3c3070 release: align 0.8 RC status and publication contract
  • 7eb8073 docs: point binding notification references at registry
  • f4a0691 fix: complete owned output release without corrupting sealed definitions
  • 62b582e refactor: unify help references and own option output lifetime
  • 45d102a docs: close explicit choice help migration and publication evidence
  • 18004ef fix: enforce borrowed execution and forwarded binding ownership contracts
  • 2c81146 docs: align stable retirement with approved post-publication major rule
  • d07d398 refactor: complete explicit native authors typed layout and full capability migration
  • 555d45e refactor: unify declarations capabilities and owner-scoped native execution
  • 4cba388 refactor: extract complete retained core and explicit execution vertical
  • fc010bd Seal readonly resolved property and adjacent collection views
  • 564f78b Close neutral page dependency boundary and record real source integrations
  • d7ecfb7 Close supported author dependencies and align confirmed 0.8 contracts
  • e4296b2 Add owned current-target keyed item bindings and immediate release
  • e0bf4fa Open finite per-metric appearance declarations and removal
  • 1147f1a Close editor end and composite takeover request boundaries
  • 79825a5 Capture resolved retained display facts and document RU3 recovery contracts
  • d3d0cde Separate failed branch recovery edges and retain safe default control paint
  • 2121f99 Implement managed reactive faults, owner recovery and view demand
  • 93e2a68 Align shared-column migration summary with RU2 results
  • 79c86c9 Preserve Verse stub copy surface for transitive font dependency
  • ae83fcf Complete RU2 wrapper inputs legacy conditions and author contracts
  • e5afb87 Implement scoped measure and local arrangement result reuse
  • a8275f4 Fix reactive list writes tracking their output
  • c3cff4c Complete RU1 bounded reads, current response inputs and author migration contracts
  • 355a795 Implement explicit reactive object and collection sources with real options and Repeat integration
  • 4553d13 fix: read live command qualification and prove default reactive pages
  • dd7ab63 fix: preserve legacy boundaries and schedule all reactive evaluations
  • 581ed76 feat: connect neutral reactive operations to host presentation lifetimes
  • d0e113b docs: checkpoint accepted reactive and neutral specification
  • 904404b fix(ui): follow committed background definitions and surface supplier failures
  • 1186077 docs(ui): distinguish aspect fallback from retained natural image measure
  • 7640bfe feat(ui): add shared image placement and standard window backgrounds
  • 0528ebd fix(ui): obstruct lower operations with unavailable configured controls
  • 9eece46 fix(ui): map child input to owning layer without merging identities
  • 1e5338e fix(ui): arbitrate current content layers before native input
  • 5ad210b fix(ui): name Metric Token correctly in missing-field diagnostic
  • 559b621 feat(ui): replace legacy theme bag with neutral semantic palette
  • c93c8f6 fix(ui): diagnose Stepper internal width without changing input geometry
  • a2fe62e Preserve complete runtime observation facts and explicit scope candidates
  • cd19fe6 Complete shared host integration and bounded runtime observation
  • fc8a8ee Complete immutable definition assembly and preserve live host appearance on updates
  • 80c5765 Resolve written appearance intent per property and complete labelled fields
  • c5ffea4 Move production containers and label groups onto neutral layout rules
  • 7e91963 Migrate editable chart points and descriptive wrappers to shared contracts
  • 82ba428 Separate explicit editor recovery attempts from automatic publication
  • e500006 Preserve actual editor publication history across Live return and failed takeover
  • 710305c Implement shared editing and numeric composition candidates
  • a29f095 Dispatch established boolean and tree requests before pure paint
  • d1be164 Keep popup ownership per instance and paint shared capture facts
  • 426f6e4 Name pointer retarget conditions by domain
  • ddd2388 Implement shared boolean selection expansion and migrate default wrappers
  • c461b2f Release consumed native pointer captures using raw event phase
  • d1323f5 Preserve another node capture when native ownership changes
  • 8c4cd17 Keep aborted hit passes atomic and suspend unreliable pointer input
  • 5acc9b9 Implement 0.8 S0/S1 shared properties and pointer behaviors
  • bc1f200 docs: streamline shared behavior evidence requirements
  • 6ef82d7 docs: correct pure-core acceptance case reference
  • 715bb9d docs: define 0.8 behavioral acceptance and test migration baseline
  • fe457ff docs: checkpoint authorized 0.7 archive and 0.8 design consolidation

Status

Supported stable contracts protect source, compiled consumers, XML vocabulary, behavior and legal use conditions within the same game/adapter target. After publication, breaking one requires a major release. Deprecation also retains the old contract through two complete subsequent published minors; that minimum does not permit a breaking minor removal, and a 1.x transition cannot shorten it. Experimental surface changes require explicit migration. Consumers still assert their tested API range in code, because RimWorld's modDependencies cannot express a version.

This build targets RimWorld 1.6. UI/UX integration and player-facing acceptance continue in the next stage. FerriteLib adds nothing to saves and stores no settings of its own; keep it installed while any consumer mod (currently Universal Squeaker) depends on it.

Testing status: current 0.8 technical evidence covers the complete engine-free core, retained controls and containers, editing/recovery protocols, public author paths and fixed-source consumer integration. This workflow runs the existing verification gates, including the Dev-only instrument, before building this fresh Release-configuration archive. Automated protocol/stub and source-integration results do not establish complete native gameplay acceptance. Headless game checks reported errors that the user accepted as non-blocking for this RC transition; they were not error-free. Native 1.6 font/IME/window/input/rendering acceptance and UI/UX remain open. A compiled/native 1.7 adapter is not delivered. Earlier 0.7 native checks do not accept this 0.8 package.

v0.7.0-rc1

v0.7.0-rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Oct 15:57

This is a release candidate: an early-testing build. Try it, and report what breaks - problems found here are problems not shipped to everyone. UI/UX and copy work on this line is still in progress.

FerriteLib is a prerequisite library mod for Coahuilite mods that use its UI kit. It adds no game content of any kind - no Defs, no patches, no textures - and its entire payload is 1.6/Assemblies/FerriteLib.UiKit.dll.

Installing

  1. Unzip this archive directly into RimWorld/Mods/. It contains a top-level FerriteLib folder, so the result is Mods/FerriteLib/....
  2. Install the mod that needs it (currently Universal Squeaker) from its own releases page.
  3. Enable both in the mod list. RimWorld will warn if the consumer is enabled without this one.

Do not copy FerriteLib.UiKit.dll into another mod's folder. Exactly one carrier of that assembly may be installed; two of them bind by load order through the game's single global AssemblyResolve and the copy that loses has no way to find out.

Version identity

Package id coahuilite.ferritelib
Release v0.7.0-rc1
Game RimWorld 1.6
Built from commit 6a628c6c3cb2
Asset SHA-256 C4390E92414B6FDA47C53A2F07B37EB5FA4FD606F04D033704BD6AE3DC8C42C7

The consumer repository links to this release instead of shipping its own copy, so the SHA-256 above is the one true digest of FerriteLib.UiKit.dll for this version. The full source of this exact build is https://github.com/Coahuilite/FerriteLib at tag v0.7.0-rc1 (commit 6a628c6c3cb2); the license terms travel inside the package as LICENSE.

Changes since v0.4.0-rc1

  • 6a628c6 Merge branch '0.7.x' into main for v0.7.0-rc1
  • 76575e0 release: state the native-Dev acceptance versus the CI Release build in the RC notes
  • 5080793 docs(memory): record the RC publication decision, identity acceptance and exemption boundary
  • cc66168 release: state the RC scope and the publication state for the first 0.7 trial
  • 82367d6 privacy: accept the exact worker@localhost automation placeholder
  • afcbecf docs(archive): drop the stray trailing blank line introduced by the compaction
  • bdd7a31 docs(memory): record the accepted 2026-10-09 in-game pass and compact the pending-pass wording
  • bce057d docs(memory): record the accepted interaction slices and compact the ledger
  • d5af4d8 Let a shell own its cancel policy and state the two keys apart
  • 1d86ff8 Correct the FL-IC2 public-surface count in the 0.7 contract
  • 84d1504 Carry an edit through to one commit and answer Cancel one layer at a time
  • 11f1603 Correct FL-IC1 wheel sign, end ownership and lane accounting
  • 8dad3d5 Route popup, chart and menu input through one receive-eligibility rule
  • bb64c01 docs(memory): separate standing instructions from incident lessons
  • 4d67b70 chore: align full-history pre-push privacy gates
  • 3399abb Support consumer production-path harness type loading
  • 8ec57ee Size scroll viewports from measured visible rows
  • 069195d Fix developer geometry coverage and completed shell capture
  • 5ed3dfd Clarify held package and appearance source status
  • c080855 Add selector appearance and independent geometry outlines
  • 0181268 fix: expose unexpected reload diagnostic publication failures
  • 0aca59e docs: record frozen playtest and concise development handoff
  • b31e2c3 test: provide ModSettings base for production consumer diagnostics
  • c1b38d1 Add shared image and tree row composition for playtest checkpoint
  • ab95c32 Checkpoint appearance, geometry diagnostics and typed choice controls
  • 0b744f5 docs(memory): the frozen carrier's identity cannot live in a file, and the rules that follow (0.7.x, T32)
  • e70ed3a docs(memory): the 2026-09-25 delivery, with the carrier hash quoted against its inputs (0.7.x, T32)
  • 4d66cf7 fix(harness): the two halves of the width convention are compared, and the injection count is corrected (0.7.x, T31)
  • 1d53ae7 feat(evidence): a log carries its own identity, in the consumer's footer shape (0.7.x, T31)
  • 20fce1f docs(0.7): the NGS impact report's second entry line, in the line README
  • 3888aaf docs(consumers): give the NGS 0.7.0 impact report a delivery channel
  • 1236567 docs(0.7): NGS 0.7.0 消费者影响报告(只读取证、UNRUN 已标注)+ 交付前身份复核
  • 41ad08d docs(memory): the harness text convention, and why a fixture never takes its size from the instrument (0.7.x, T29)
  • ebb1a76 fix(harness): the wrap lane's fixture takes its size from its claim, and gains the negative control that can see a dead ruler (0.7.x, T29)
  • 312f9b7 fix(harness): the Verse stub measures height by wrapping, not by a constant (0.7.x, T29)
  • 1c05b0f docs(memory): 'derivable' means rebuildable, and only three of eleven cases have it by another name (0.7.x, task-19)
  • eee6207 docs(memory): input records cover only what a log cannot derive (0.7.x, task-19)
  • 1c2afb7 fix(tools): the driver carrier is recorded as an input, not only watched (0.7.x, task-19)
  • e7f2215 fix(tools): M10 watches every payload a cross-repo run can damage (0.7.x, task-19)
  • c6498d2 docs(memory): M11 - the log pins the generator's own identity (0.7.x, task-19)
  • b5e3701 feat(tools): the log pins the generator's own identity, and every red says why it is one (0.7.x, task-19)
  • d0ed64b docs(memory): the tracked mutation battery, and the consumer half's structural risk (0.7.x, task-15)
  • 080ebb9 fix(tools): the battery names its two carriers, labels every outcome, and baselines the artifact (0.7.x, task-15)
  • d1c0ef7 fix(tools): the battery's command scripts keep CRLF, because cmd.exe parses line endings (0.7.x, task-15)
  • 967aa83 feat(tools): a tracked, self-testing mutation battery (0.7.x, task-15)
  • d1b5796 docs(memory): the tier lane's blind spot, the LineChartWidget disposition, and the Mouse.IsOver difference (0.7.x, task-9)
  • be5e2ef fix(verify): the covered lane measures its mechanism, the stub guard closes its sets (0.7.x, task-12)
  • 1092e20 docs(memory): the task-2 guards, the carrier-writer correction, and the tier-reason gap (0.7.x)
  • 90ebb6e fix(verify): gate 6's licence guard becomes self-contained and two-sided (0.7.x, task-2)
  • 2873739 docs(0.7): no gate writes the compatibility carrier - correct two pre-isolation claims
  • f56e675 test(contract): the stub tree's published paths and assembly names get a local guard (0.7.x, task-2)
  • 247d621 fix(contract): the visual-core boundary guard rejects UiPopup too (0.7.x, task-2)
  • 2f9b127 test(instrument): a lane drives the covered verdict, and gate 10 carries it (0.7.x, task-2)
  • 21f0cbe fix(verify): gate 10's floor measures a quantity that can move (0.7.x, task-2)
  • 545fe01 docs(0.7): correct the UiChartPointChange tier citation, and record the LineChartWidget disposition
  • d01664a docs(0.7): tier-reason review, the dependable-surface template, and the 2026-09-24 boundaries
  • 2e9c94e Align library memory with the next-stage development handbook
  • 07f3c40 Make Dev diagnostics reproducible with isolated build artifacts
  • a9d9732 docs(memory): a handoff signpost - the files, the library-held dev mode, and what is open
  • 9938121 feat(verify): gate 10 - the dev instrument's half really runs, and it is proven to
  • 807e014 feat(diagnostics): the development-only geometry instrument on the existing audit surface
  • 06ff1c2 docs(memory): carrier identity as history, and why a tracked file must not pin it
  • 553fc53 chore(pack): candidate-then-commit staging, plus carrier identity, transport and delivery-build memory
  • e668344 docs(0.7): hash vs mtime, the --no-build freshness criterion, the S6-3 citation resolved, and a theming trap (0.7.x)
  • 876750a fix(widgets): section/header's divider becomes declarable - Chrome=none (0.7.x, task-10)
  • 490d4f0 feat(layout): Height=MatchContent, and an unknown scope name is attributed to its element (0.7.x, task-9)
  • b05f58d docs(rules): no lane reads additions - the version-axis exemption needs no re-cut (0.7.x)
  • a1a8bbd docs(rules): a public addition does not bump the minor on 0.7.x (maintainer ruling 2026-09-22)
  • b997f3a docs(gates): classify hints by what they write - the harness hint writes too (0.7.x)
  • b68b4f5 docs(gates): a red gate's retry hint is a build command, not a repair (0.7.x)
  • d1f2c50 docs(agents): verify-local and the harness are both writers of the shared carrier (0.7.x)
  • 5052440 docs(0.7): B1 follow-up - correct the live scoped-set enumeration, point the 0.5 record forward (0.7.x)
  • e929fa1 fix(layout): SelectedKey joins the item-scope table - a row's answer, not the page's (0.7.x, B1)
  • f105504 docs(agents): add the shared-payload rules and an evidence-discipline section
  • 5ab35cc docs(memory): restore the dropped provenance marker on the archived MEMORY block
  • 9c23e0d docs(memory): archive the pre-compaction TODO.md history, and restore a line commit 1 clipped
  • 6db8ce8 docs(memory): reduce TODO.md to the current action surface (805 -> 302 lines)
  • e9d5cd7 docs(memory): compact MEMORY.md to durable facts plus pointers (2313 -> 827 lines)
  • db6dfc1 docs(memory): archive the pre-0.7 body of MEMORY.md into OBLIVIONIS verbatim
  • bce1ba4 feat(0.7): typed UiOption display/value pairs on the dropdown, second attempt with the order proven
  • 26c8ac0 feat(0.7): report binding element-type mismatches on the fail-soft channel (FL-23)
  • b3957dc feat(0.7): button PayloadKey (G2) and Chrome=none/Auto height (G3); withdraw the UiOption pair attempt
  • 3df7bf5 feat(0.7): P1-E batch 1 - WideHidden, WidthKey, SelectedKey, banner roles, and the overflow/saturation wording
  • ad7aac1 docs(0.7): P1-E capability disposition table - one row per raised item, awaiting the batched ruling
  • 26bace0 test(P1-B): mutation-proven dispositions for X-21 / FL-3 / FL-1 / FL-2, and FL-4 REJECTED with its citation
  • 52f66bc docs(consumers): FL-8 migration section, FL-11 authoritative payload, FL-12 count corrected to seventeen (P1-A)
  • c898a6b fix(scripts): name the sibling verification script in the carrier-lock diagnostic
  • b98c683 fi...
Read more

v0.4.0-rc1

v0.4.0-rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Sep 17:17

This is a release candidate: an early-testing build. Try it, and report what breaks - problems found here are problems not shipped to everyone.

FerriteLib is a prerequisite library mod for Coahuilite mods that use its UI kit. It adds no game content of any kind - no Defs, no patches, no textures - and its entire payload is 1.6/Assemblies/FerriteLib.UiKit.dll.

Installing

  1. Unzip this archive directly into RimWorld/Mods/. It contains a top-level FerriteLib folder, so the result is Mods/FerriteLib/....
  2. Install the mod that needs it (currently Universal Squeaker) from its own releases page.
  3. Enable both in the mod list. RimWorld will warn if the consumer is enabled without this one.

Do not copy FerriteLib.UiKit.dll into another mod's folder. Exactly one carrier of that assembly may be installed; two of them bind by load order through the game's single global AssemblyResolve and the copy that loses has no way to find out.

Version identity

Package id coahuilite.ferritelib
Release v0.4.0-rc1
Built from commit b60f7fd67d08
Asset SHA-256 361468B141BC7BCCA4D13EC59237C540276FD785E916DA8D4F1E9E8CEFA347A5

The consumer repository links to this release instead of shipping its own copy, so the SHA-256 above is the one true digest of FerriteLib.UiKit.dll for this version. The full source of this exact build is https://github.com/Coahuilite/FerriteLib at tag v0.4.0-rc1 (commit b60f7fd67d08); the license terms travel inside the package as LICENSE.

Changes since v0.3.0-rc1

  • b60f7fd Merge branch '0.4.x' into main for v0.4.0-rc1
  • aa0f9ab fix(kernel): singleLine actually renders single-line; harness stubs build single-node
  • a0b716a docs(memory): the file-driven scope ruling and the 0.5.0 vocabulary target
  • 75c04ee test(FL): carry the value-type families the reference can verify, and write the not-carry list down
  • 9c00bb6 fix(host): warn when a Styles section is dropped
  • b415809 test(FL): carry the pure math family in the Unity stub
  • 0b396c4 fix(FL): index each stub's canonical output, refuse stale copies, carry eight pure helpers
  • f629e1a test(FL): carry the stub's language and constant members, and assert them
  • 629033a test(FL): make a stub's missing members a gate, and carry the integer overloads a consumer calls
  • d588c35 test(FL): stub Verse.GenUI.ContractedBy and fail lanes that draw through a trip
  • 62b119b docs(memory): the shell sizes to the consumer's text, and what an overflow record may say
  • a306cae feat(shell)!: size the close affordance from its label, and name the shell's own text
  • 651efff docs(memory): the gate count is nine now - gate 9 wires the consumer half
  • c240146 feat(gates): wire the consumer half of the boundary metric into the local gates
  • 2b705f4 docs(tiers): say that the raw call-site count is measured, not asserted
  • 5744e20 docs(gates): pin the context-free pattern's measured reach
  • c7d0887 feat(gates): count the context-free hit overload, and pin the contract that excuses it
  • 6d2335e docs(memory): record the ratified world-space exemption and what the two halves share
  • 1f2c177 docs(gates): the shared half is the pattern set, not the allowlists
  • c3292db chore(gates): count the in-world labeling surface on this half of the metric too
  • ae48991 docs(memory): transcribe the break the node step caused, and the comment that hid it
  • cbfe680 docs(kernel): say what the scroll key is, and what it is not
  • 572c40b docs(tiers): record the content-layer boundary
  • 0683603 feat(kernel)!: own the hit stack
  • 33596bd docs(memory): the print-without-counting family has no second instance
  • a8111d2 docs(memory): a lane that prints without counting is not a gate
  • bd4d1b5 feat(kernel)!: node-key state, tree and geometry
  • 7421090 test(style): compare the redirect with the lane's own helper
  • ccca4ae fix(theme): keep the redirect neutral and pin what it is
  • 3841479 fix(style): expire a region theme on the layout clock it was built from
  • fc3cf5f docs(memory): the Warning collapse read the wire as empty
  • 492ec51 fix(theme)!: keep the alarm fill under its pre-0.4 name for one minor
  • 7402f12 fix(style): report a style section a handed-in document displaced
  • 6baa3b3 feat(style): carry the document into the live tree
  • 69d7ccd docs(memory): gate 8 has a third exit code, and a scan that finds nothing is a failure
  • 79bcbe0 fix(gates): trap scan fails on an empty scan
  • 17efa5e docs(memory): a reference to an untracked file is fatal in an archive
  • 3229b28 feat(gates): commit the net472 trap scanner gate 8 calls
  • a2ffbf7 docs(tiers): call the guards load-bearing
  • 4aeef83 feat(gates): scan for the net472 traps that compile green and fail at runtime
  • d7ee313 feat(kernel)!: move element identity into nodes
  • 02e2a68 docs(memory): the net472 trap class, measured and turned into a scan
  • 3809ef1 fix(uikit): a read-only atom cannot write
  • ee69ec6 docs(memory): the net472 Split trap is invisible to an enum-name grep
  • f658303 test(style): pin the style document lane
  • 3c523fd feat(style): add the style document
  • a8ac562 test(uikit): drive role fallback and density
  • 21b2fe3 feat(uikit): add Tone/Emphasis to the leaf atoms
  • 86e0967 fix(manifest)!: keep '/' out of a declared Id
  • e7fb89f docs(memory): the shared-file race hides evidence, not just gates
  • 5e58f7b fix(manifest)!: reject colliding identities
  • 2eb4af5 test(uikit): pin the disabled producer
  • 29759a0 feat(uikit)!: add the writability read
  • e02edf4 test(kernel): pin Tab switches vs renumbering
  • d5eab21 docs(memory): archive the 0.4.x batch and its two artifacts
  • 1ececed docs(stubs): note the additive label recorder
  • 5947c98 docs(memory): record the 0.4.x atoms, the gate hardening and the hit-stack trigger
  • f393de4 test(uikit): pin the rebuilt composites' bands
  • 7ddbaca refactor(uikit): rebuild banner and empty state
  • f6fe097 docs(tiers): restate the UiTheme entry
  • 7afa1df test(uikit): pin the text colour sites write
  • dfba792 feat(kernel)!: give each element a stable identity
  • 169cf62 test(uikit): pin the style table and its outlets
  • f516651 fix(host): re-measure when density or font moves
  • 7110b0c feat(uikit): add the resolved style table
  • 5399aa7 fix(gates): surface the throw message of a failed gate
  • 2ce61ce test(uikit): drive every leaf atom from one manifest
  • db2d88e feat(uikit): add the number-field atom
  • 26c53f5 feat(uikit): add the bare slider atom
  • 4e47427 feat(uikit): add the rule atom
  • 03ed6e3 feat(uikit): add the button leaf atom
  • bab3c07 feat(uikit): add the wrapped-text leaf atom
  • d0632ca fix(gates): measure payload path, restore fresh trees
  • fa14dd4 docs(memory): provenance correction - IMGUI-as-drawing-backend is a survey finding, not intuition; the style-document ruling restate-cites the self-owned-chrome ledger lines
  • 4176e2e docs(memory): the style surface is a standalone document with its own loader - ruling, kept non-goals, and the settled ParseFile fork
  • dcea022 build(version): open 0.4.x with all three axes at 0.4.0

Status

Pre-1.0: the public API is still provisional and a minor bump is a breaking change. The supported range a consumer asserts lives in its own code, because RimWorld's modDependencies cannot express a version at all.

v0.3.0-rc1

v0.3.0-rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Sep 06:57

This is a release candidate: an early-testing build. Try it, and report what breaks - problems found here are problems not shipped to everyone.

FerriteLib is a prerequisite library mod for Coahuilite mods that use its UI kit. It adds no game content of any kind - no Defs, no patches, no textures - and its entire payload is 1.6/Assemblies/FerriteLib.UiKit.dll.

Installing

  1. Unzip this archive directly into RimWorld/Mods/. It contains a top-level FerriteLib folder, so the result is Mods/FerriteLib/....
  2. Install the mod that needs it (currently Universal Squeaker) from its own releases page.
  3. Enable both in the mod list. RimWorld will warn if the consumer is enabled without this one.

Do not copy FerriteLib.UiKit.dll into another mod's folder. Exactly one carrier of that assembly may be installed; two of them bind by load order through the game's single global AssemblyResolve and the copy that loses has no way to find out.

Version identity

Package id coahuilite.ferritelib
Release v0.3.0-rc1
Built from commit 6a9233117504
Asset SHA-256 1609552D319532813FF4EBE67AAE5693E7908512EC66B69F3BD21DFE4E2F94B1

The consumer repository links to this release instead of shipping its own copy, so the SHA-256 above is the one true digest of FerriteLib.UiKit.dll for this version. The full source of this exact build is https://github.com/Coahuilite/FerriteLib at tag v0.3.0-rc1 (commit 6a9233117504); the license terms travel inside the package as LICENSE.

Changes since v0.2.0-rc1

  • 6a92331 Merge branch '0.3.x' into main for v0.3.0-rc1
  • 1fd78dd docs(memory): what advancing to 0.4.0 means, and why 0.3.0 should be the number that ships first
  • 4afeccb fix(privacy-audit): measure identity by account, not by display name - and record the confirmed style scope
  • 2e3f8ee docs(memory): four failure buckets instead of one wall, and the analogy fix - no author CSS, only a UA stylesheet
  • b4234b6 docs(memory): the five jobs a stylesheet file carries, and which four this library already performs elsewhere
  • 5f027db docs(memory): five separable pieces of a style capability, with the non-goals and their reasons
  • 37217c3 docs(memory): a third consumer's appearance options today, measured for the §5 call
  • 7789b9c docs(memory): four-layer map that separates a cascade from a resolved-value store, plus the blocked second rule source
  • cdaf16e docs(memory): separate style resolution from pre-measure determinacy, and correct the Unity API names
  • bb5fb68 docs(memory): the style scattering is caused by an unqueryable table, not by the absent stylesheet
  • 7f36344 docs(memory): our look is self-owned chrome over the game's fonts, and the tone bag is half-wired
  • f615366 docs(memory): the game has no style layer to inherit, and our roles are unreachable from data
  • 6045818 docs(agents): a kind is earned by ownership, not by being atomic
  • 61fa282 docs(charter): the vocabulary has no leaf atoms, and the self-check has no door
  • 1b8beb1 docs: walkthrough form, the kind-ownership rule, and the verdict on a carrier diagnostic surface
  • b989f13 docs(api-tiers): make the breaking promise per-type and guard it in the harness
  • ebdc53b docs(charter): transcribe the declarative-UI convergence and the cautionary specimen; queue the contract
  • 54f2bec docs(charter): record what the library is for, and demote three premises to their evidence class
  • b085843 docs(todo): re-derive the US pin citation and close the workflow-name follow-through
  • 471f3ca docs(agents): answer for this repository alone; transcribe external evidence
  • 54eed0c docs(ledger): deliver the cross-repo corrections and record what the delivery taught
  • 577da55 docs(memory): close the round-3 audit's four doc defects
  • f223b43 docs(todo): promote in-game verification to critical path; reopen the privacy item on the identity vector
  • 19cfdcc Merge pull request #1 from Coahuilite/0.3.x
  • 588b13f feat(layout): text-natural Auto width + container Breakpoint (US->FL round 3, refiled to 0.3.0)
  • 487d80a docs: settle the round-3 consolidation and close the UiPanel phantom by re-derivation
  • 996a6bc docs(handoff): file FL->US round 2 (S1-S6) and record its durable facts
  • f2f4dd0 fix(packaging): measure the build configuration instead of asserting it, and build the flavor dev claims
  • 2e0f13b docs(stage-package): name who installs the release archive, and that folder channels do not install anything
  • 06101da docs(scripts): stop telling people to install — placement is theirs, and no link shortcut
  • 7eaa945 docs: record the three-channel packaging design and the consolidation left on the table
  • 2227b63 refactor(scripts): three channels over one staging engine; drop the dev zip and nupkg ritual
  • e4a18f1 build(pack-dev): -StageOnly directory rehearsal, and a forced Release build
  • ba94e0c docs: consolidate round 1 — file the release package, close the buffer round
  • 0daf06e build: move all three version axes to 0.3.0; rule world-space text a non-goal
  • f605144 feat(kernel): items D and E — retire the global lever, ship the dependency-reality checker
  • 0cf397d feat(kernel): item C — the engine, not the consumer, owns per-widget recovery
  • acb5d1d feat(kernel): P2 — the library-owned window shell, with its four binding conditions
  • d721756 feat(kernel): land P1/P3/P4/P5/P6 of the US feedback round
  • b56a845 fix(kernel): funnel FL's own backend leaks, then gate the funnel
  • 9a6f620 docs(memory+todo): consolidate the US feedback round, all four claims verified
  • f632d7b docs: correct the publication record to the rc-only window
  • 5f723ab docs: record the publication in the durable layer; README/description ledger sync
  • 490fea7 docs(todo): close the publication items with rehearsal evidence

Status

Pre-1.0: the public API is still provisional and a minor bump is a breaking change. The supported range a consumer asserts lives in its own code, because RimWorld's modDependencies cannot express a version at all.

v0.2.0-rc1

v0.2.0-rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Sep 18:44

This is a release candidate: an early-testing build. Try it, and report what breaks - problems found here are problems not shipped to everyone.

FerriteLib is a prerequisite library mod for Coahuilite mods that use its UI kit. It adds no game content of any kind - no Defs, no patches, no textures - and its entire payload is 1.6/Assemblies/FerriteLib.UiKit.dll.

Installing

  1. Unzip this archive directly into RimWorld/Mods/. It contains a top-level FerriteLib folder, so the result is Mods/FerriteLib/....
  2. Install the mod that needs it (currently Universal Squeaker) from its own releases page.
  3. Enable both in the mod list. RimWorld will warn if the consumer is enabled without this one.

Do not copy FerriteLib.UiKit.dll into another mod's folder. Exactly one carrier of that assembly may be installed; two of them bind by load order through the game's single global AssemblyResolve and the copy that loses has no way to find out.

Version identity

Package id coahuilite.ferritelib
Release v0.2.0-rc1
Built from commit bdbeae0252db
Asset SHA-256 E8A54BE6C10D1557C6B408DB97A5974ECB6DB18B868E5CEE55FA24E933736735

The consumer repository links to this release instead of shipping its own copy, so the SHA-256 above is the one true digest of FerriteLib.UiKit.dll for this version. The full source of this exact build is https://github.com/Coahuilite/FerriteLib at tag v0.2.0-rc1 (commit bdbeae0252db); the license terms travel inside the package as LICENSE.

Changes

  • bdbeae0 docs+scripts: pre-push completion — bilingual README, real description, privacy gate, neutralization
  • f9996bb docs(about): fill from the naming ruling; close the §5 url item
  • 2122b57 build+docs: name the repo FerriteLib (maintainer ruling), point packages at their source
  • c7c2aa7 docs(memory+todo): record the digest-determinism fix and re-date the privacy scan
  • f6347d4 fix(pack): write archive timestamps directly — mtime pinning cannot win against NTFS
  • d98de81 fix(pack): pin directories deepest-first — NTFS bumps parent mtime when a child changes
  • e4a2a70 fix(pack): normalize staged mtimes to the commit date before zipping
  • a4a2046 docs(memory+todo): apply the US cross-repo anchor 0fe60b0 -> 6c7053a
  • 55a4c9e docs(todo): align rehearsal tags with the rc dialect, and record the US cross-repo hash anchor
  • 7f1b419 docs(memory): the web-UI checkbox is manual, and the rc delete-republish path proven both ways

Status

Pre-1.0: the public API is still provisional and a minor bump is a breaking change. The supported range a consumer asserts lives in its own code, because RimWorld's modDependencies cannot express a version at all.