Changelog

Major changes to the SRD site, the In The Union Now builder, and the Discord bot. For full commit history see the GitHub repository.

  1. Site

    v2.8.0

    • P7 — installed means offline, without touching the service worker (#882) (c1fdb4f)
  2. Data

    v2.11.2

    • one Tech Level comparator, and it handles Bio/Nanite (#891) (9e755a0)
  3. Site

    v2.7.1

    • three cutover-blocking defects found by running the deploy (#856) (69862e8)
  4. Site

    v2.7.0

    • snapshot write freeze, the five custom domains, and a P7 runbook built on measured DNS (#854) (f4f6326)
  5. Site

    v2.6.0

    • all three web surfaces on Cloudflare Workers (P4) (#852) (1e66485)
  6. Site

    v2.5.0

    • load the package stylesheet, layered below Tailwind's utilities (#816) (2eb54ba)
    • declare three packages the workspaces import but never listed (#777) (250af17)
    • give the SRD route grammar one owner (#768) (19902db)
    • name a guide's tone instead of storing a second palette (#769) (18974c3)
    • stop four unactionable browser errors filling Sentry (#790) (786df13)
  7. Data

    v2.11.1

    • define "an unset pool means full" once, and enforce it (#780) (5269c60)
    • give the SRD route grammar one owner (#768) (19902db)
    • name a guide's tone instead of storing a second palette (#769) (18974c3)
    • delete the corrupt .tool-versions that breaks mise (#766) (ae0931e)
    • stop the schema catalog embedding the package version (#825) (b46ec67)
    • check the docs a contributor actually reads first (#782) (d0a4d22)
  8. Site

    v2.4.0

    • hoist shared versions into a workspace catalog (#743) (e944fc5)
  9. Site

    v2.3.1

    • re-bless the output snapshot for the About page (#736) (2ad0dfd)
  10. Site

    v2.3.0

  11. Site

    v2.2.0

    • replace the retired parity gate with a self-hosted output snapshot (#723) (d6de2a4)
  12. Data

    v2.11.0

  13. Data

    v2.10.0

    • a mech's drones are granted, live, and tied to their chassis (#715) (f4c6ca1)
  14. Site

    v2.1.0

    • add a Special Thanks section to both about pages (#716) (92d5cd8)
  15. Site

    v2.0.2

    • stop two unactionable browser errors filling Sentry (#703) (2dcb5e4)
  16. Site

    v2.0.1

    • make the parity gate reproducible and stop bundle-budget lying locally (#696) (cb89893)
  17. Site

    v2.0.0

    • migrate off Astro to an in-house Vite SSG (#689)
    • migrate off Astro to an in-house Vite SSG (#689) (1af4019)
    • server-render the entity card on the 82% of pages that are documents (#685) (ab26365)
  18. Data

    v2.9.1

    • stop two actions rendering their content twice (#680) (8ca04fd)
  19. Data

    v2.9.0

    • accounts, Games, and a live Mediator surface (ADR-030) (#647) (eec0a7f)
  20. Site

    v1.4.0

    • fit each entity's og:image card to the preview canvas (#662) (43a99a0)
    • render each entity's og:image from its Catalog tile (#657) (c7f2b71)
  21. Site

    v1.3.1

    • point the CSP at Sentry's EU ingest region (#607) (f9ccbdb)
  22. Site

    v1.3.0

    • render the SRD home page in the Dashboard SRD Explorer (#593) (05906b6)
    • unblock Sentry in CSP, gate the wiring, repair nightly E2E (#601) (360abc8)
  23. Data

    v2.8.0

    • mark rules-bearing prose inline on entity cards (#630) (2e72c3b)
    • activated contributions with manual expiry — Squeeze It In, Hull Magnetiser (#635) (9156601)
    • split cap overrides from manual adjustments; derivations return breakdowns (#608) (7139ab8)
    • abilities can declare stat contributions — Beefcake now applies (#615) (1ad2625)
    • add the rules-parity audit — the gate that keeps content honest (#627) (2221de8)
    • give effects a target — Bio-Wings grants the MECH the Fly Trait (#640) (04b7d07)
  24. Data

    v2.7.0

    • render partners in place, delete the partner sheet (#590) (33ddccd)
    • Change Log truth + Composite Armour's missing +5 Max SP (#602) (47f53da)
  25. Site

    v1.2.2

    • render guide steps — most guide prose was missing from every guide page (#564) (de44fd1)
  26. Data

    v2.6.0

    • Partner Sheets — statted drones/companions owned by a pilot or a mech (#578) (7ee4d1b)
    • name self-actions after their entities so book facets fold (6 entities + Bio-Rifle matcher) (#566) (b0598b3)
    • correct Generic ability data against core book p.248-249 (#570) (531cb10)
    • point nine equipment records at their entry page + an index-backed name/page scan (#569) (baddaec)
    • restore Eggs Mayhem module facets and roll table (#563) (4049a8a)
    • render guide steps — most guide prose was missing from every guide page (#564) (de44fd1)
  27. Data

    v2.5.3

    • show the action (Owner) suffix only when it disambiguates (#558) (e134b96)
  28. Data

    v2.5.2

    • resolve data-inspection findings — dead flags, enum, null-marker, redundant fields (#555) (2658095)
  29. Site

    v1.2.1

    • class abilities sit beneath the artwork, not around it (#537) (e49023c)
    • pattern cards render their own source/page, not the chassis's (#535) (fd7cb19)
  30. Site

    v1.2.0

    • shared about-page colophon + slab section heads on the back pages (#524) (652e5fc)
    • render roll tables referenced by name (#530) (2c9e872)
    • give every mech pattern its own verified source + page (#529) (578a12f)
  31. Site

    v1.1.0

    • chassis patterns get their own pages, roll tables render again (#518) (02824e9)
  32. Data

    v2.5.1

    • render Upkeep, Upgrade and Population on crawler tech levels (#527) (f844630)
    • correct three pattern names and add two missing book patterns (#523) (736b1b8)
    • give every mech pattern its own verified source + page (#529) (578a12f)
  33. Data

    v2.5.0

    • chassis patterns get their own pages, roll tables render again (#518) (02824e9)
  34. Data

    v2.4.0

    • mechanically enforce architecture invariants (Biome + supplementary scripts) (#387) (9bb37d2)
    • unify artwork on WebP, shrink about-page map (#321) (f94082a)
    • audit sweep — 13 high-priority UX/DX/gameplay fixes across ITUN, suref-web, bot, packages (#366) (04b854f)
    • audit sweep — 30 high-impact changes across ITUN, suref-web, bot, and packages (#334) (afddf9d)
    • derived release changelogs + ref public-surface gate (ADR-024/025) (#472) (4f10b63)
    • high-value batch — ITUN cross-links/Sentry, suref-web e2e/Sentry, bot tests, CI (Dependabot/CodeQL/coverage/visual), package hardening (#339) (1131678)
    • built-in Starter Set workspace (Reclamation of the Wastes roster) (698d36e)
    • built-in Starter Set workspace (Reclamation of the Wastes roster) (#371) (698d36e)
    • close rules-vs-ITUN gaps (Phases 0-2) (eef9059)
    • crawler wizard — book-order steps + type/weapon/SP enforcement (Phase 5) (#426) (3b9680e)
    • mech wizard — book-order steps + 20-Scrap budget enforcement (Phase 4) (#422) (cf2b587)
    • model Eldridge Coast companions as equipment loadouts (2/2) (#464) (c18d6a5)
    • pilot wizard — book-order steps + hard creation enforcement (Phase 3) (#421) (0c566d8)
    • rebuild in-the-union-now as a local-first app; remove itun-legacy (#239) (c162917)
    • single-surface live sheets — poster redesign + section-based editing (#395) (daaead6)
    • sum installed system/module stat bonuses into mech derived maxima (#327) (bcc73e2)
    • migrate entity artwork off Supabase to Netlify Blobs (#298) (8b678bb)
    • PASS sprint + suref-web cleanup (#170) (199e86f)
    • model vehicle loadouts as actions, not installable systems (#269) (f4a49fe)
    • add expansion crawler bays (#266) (0585206)
    • move Tier 1/2 rules modules into the package (ADR-006) (#382) (52eb79c)
    • unified validation runner + CST-preserving data editor (#381) (56f0faa)
    • SRD audit remediation — licensing, data fidelity, search/UX, SEO/perf/PWA, DX (#268) (ab3648e)
    • SRD + shared design-system restyle (#260) (1072bb2)
    • add /schema/v1 JSON API endpoints (#107) (d9922ae)
    • filter abilities by tree (#459) (5f747f3)
    • archive Salvage Union Starter Set content (#180) (2cfae8d)
    • equip Iron Lady with mech modules and theme new sources (#181) (edb63d7)
    • actions audit — data quality and PDF accuracy fixes (b2ff5b7)
    • remove broken Elite Blade Squad asset_url (#299) (f846fa0)
    • update Wader chassis stats to Rainmaker 2.0a (#337) (9617842)
    • heat check trigger fires unconditionally (dbf472f), closes #174
    • pilot armor reduces HP damage in cascade calc (3ad5776), closes #175
    • seed only base crawler bays on new crawlers (#325) (7fbdfa4)
    • add missing Fabrication Bay options (#290) (210042c)
    • align Adv. Epoxy Applicator self-action name for bubble-up (#293) (df60536)
    • remove spurious 2 AP cost from First Aid Kit (#288) (ce25085)
    • render mech action/ability costs as EP by source (Auto-Doctor + chassis) (#274) (9566eb0)
    • add missing Smuggler hybrid class to classes.json (a8d579e)
    • full copy audit — 120 fixes across all source PDFs (13d8fe3)
    • resolve CodeQL js/polynomial-redos in nameToSlug (#384) (a3302ed)
    • skip prepare script in CI to fix Render deployment (1c8ecc3)
    • drive Legal Starting Pattern badge from data tag (#292) (09d0745)
    • eliminate Zod JIT eval to satisfy strict CSP (#283) (2693869)
    • use --ignore-scripts for Render build to avoid lifecycle failures (a5c3857)
  35. Site

    Support the project on Ko-fi

    • The About page now has a Ko-fi support link, so you can chip in toward hosting and development.
  36. Site

    Chassis patterns open their loadout again

    • Clicking a pattern on a chassis page now opens its pattern-specific systems and modules in a modal, instead of re-opening the chassis page in a new tab.
  37. Site

    Filter abilities by tree

    • The Abilities listing now has a Tree filter, so you can narrow abilities down to a specific ability tree (e.g. Hacking, Ranger, Legendary Soldier). Like the other filters, the selection is shareable via the page URL.
  38. Site

    Simpler entity pages

    • Removed the Previous/Next paging links from entity pages — use search or the category listing to move between entities.
  39. Site

    Bot Terms & Privacy moved to the Discord page

    • The bot's Terms of Service and Privacy Policy links now live at the bottom of the Discord page instead of in the site footer.
  40. Site

    Link to the character builder

    • The top bar now has a BUILDER link out to In The Union Now — the no-account character builder & game manager — so you can jump straight from the reference to building pilots, mechs, and crawlers.
  41. Site

    Faster page loads

    • Entity and category pages now download only the reference data they actually need, instead of the entire dataset — item and listing pages load noticeably faster, especially on slower connections.
    • Search now runs against a small pre-built index instead of downloading the full dataset, so search starts working faster the first time you use it.
  42. Site

    Discord bot Terms & Privacy pages

    • Added Terms of Service and Privacy Policy pages for the Salvage Union Discord bot, linked from the site footer.
  43. Site

    First-class search and shareable filtered views

    • A dedicated search page shows the full, uncapped list of matches (press Enter in the search box, or open it directly at /search?q=…) with type filters to narrow by category.
    • On phones, a search button now sits right in the top bar — no need to open the menu first.
    • Filtered listing views are now bookmarkable and shareable: your Tech Level, Source, and name filters live in the URL and survive back-navigation.
    • Entity pages gained Previous/Next links to page through the rest of their category.
  44. Site

    No more text flash when opening an entity

    • Opening a chassis, system, ability, or any other entity no longer briefly flashes an unstyled text-only version before the full card appears — the styled card (or its loading skeleton) is what you see from the first paint.
  45. Site

    Discord bot: install page and the /su command

    • New Discord page (in the nav) with a one-click install button and a reference for using the bot at your table.
    • Bot commands now live under a single /su namespace — /su roll and /su lookup — so they no longer collide with other bots' /roll in the command picker.
  46. Site

    55 community Mech Monday patterns

    • Seven chassis — Mule, Scrapper, Thresher, Spectrum, Mazona, Goliath, and Bobcat — now carry the community-designed patterns from Leyline Press's official Mech Monday compilations: 55 new patterns in all, each transcribed from the published cards.
    • A handful of cards that reference homebrew or ambiguous items were left out rather than guessed at.
  47. Site

    Builder: safer data, session drafts, printable sheets

    • Wizard progress survives refreshes and accidental taps — pilot/mech/crawler builds save a session draft as you go, and Cancel asks before discarding changes.
    • Scrapping a mech, moving cargo, and salvage deposits now apply all-or-nothing, so scrap value can no longer duplicate or vanish if something goes wrong mid-action.
    • Every sheet has a Print action with a clean paper layout (pips and current stats included) — use "Save as PDF" in the print dialog for a PDF copy.
    • Snapshot sharing renders a real scannable QR code, and internal links no longer trigger full page reloads on crawler pages.
  48. Site

    Discord bot: /lookup and full table coverage

    • New /lookup command searches every entity type — chassis, systems, modules, equipment, keywords, and more — with autocomplete and a link to the entity's SRD page.
    • Both "Salvage Cache Table" roll tables are now individually rollable (one previously shadowed the other), and slash commands re-register automatically on every deploy.
  49. Site

    Builder: live-play rules controls across every sheet

    • Mech sheets gained Take Damage (with the Critical Damage table), Heat Check escalation, Salvage rolls, Scrap-this-Mech, and per-item condition tracking; pilot sheets take damage and injuries; crawler sheets run the full economy — upkeep, upgrades, and trade.
    • A Downtime control walks the between-mission steps (repairs, healing, training, crafting), and a floating quick-roll button rolls any table from anywhere.
    • GMs get an encounter tray: track reference NPCs with live HP/SP and roll on the Mediator tables.
    • Global search (Cmd+K) finds any rule or entity from anywhere in the builder.
  50. Site

    Shadowed table restored, smarter search, tidier sitemap

    • The two "Salvage Cache Table" roll tables (We Were Here First! and Reclamation of the Wastes) shared one URL, so only the first was reachable — they are now disambiguated by source and both have their own page.
    • Search understands multi-word queries: "heavy laser" now finds Heavy Laser instead of returning nothing, with word-prefix matching and better ranking.
    • Removed 712 orphaned internal pages (inline-only entries like raw actions) from the sitemap and breadcrumbs — every indexed page now has a working parent listing.
  51. Site

    Builder: smarter mech & crawler building

    • Installed Heat Sinks, Capacitance Banks, cargo holds and similar passives now raise your mech's maximum Heat/EP/SP/Cargo automatically.
    • The mech loadout supports duplicate systems and modules (two Heat Sinks are two Heat Sinks), with per-item Add buttons, installed counts, and remove-one controls, plus Bio and Nanite tiers in the tech filter.
    • New crawlers seed only their base bays — the three expansion bays (Bio Bays, Nanite Processing Bay, VR Tubes) are add-ons you install — and crawler system capacity follows the crawler type.
  52. Site

    "View details" opens the full entity page

    • Clicking "View details" on a nested entity (chassis pattern, formation member, integrated system, ability) now opens that entity's own page in a new tab instead of a modal, so you can read it alongside the original and link straight to it.
  53. Site

    Link previews now mirror the entity card exactly

    • The preview image shown when you share an entity link is now a 1:1 render of the actual entity display card — the same header, stats, traits, and styling you see on the page — instead of a separately-designed preview.
  54. Site

    Faster, lighter artwork

    • All entity artwork now serves as WebP from a dedicated asset store — noticeably smaller downloads on art-heavy pages, with the about-page map shrunk to a fraction of its old size.
  55. Site

    Non-advanceable classes call it out

    • Classes that cannot advance to a hybrid class now show a "Non-Advanceable" tag, instead of silently omitting the "Advanceable" label and leaving it ambiguous.
  56. Site

    Steadier catalog grid on load

    • Fixed a hydration mismatch on catalog (/schema) pages where the masonry grid rendered one column on the server but two or three in the browser, throwing a React error and forcing the whole grid to re-render on tablet and desktop widths.
  57. Site

    Branded link previews for every entity

    • Sharing a link to any chassis, system, ability, creature (or any other entity) now shows a branded Salvage Union preview card — the entity name, tech level, key stats, traits, and source — instead of a generic banner. Generated at build time for all entity pages.
  58. Site

    Small data & display fixes

    • The "Legal Starting Pattern" badge is driven by each pattern's data tag instead of being computed, fixing patterns that were mislabeled.
    • The Adv. Epoxy Applicator's self-action now bubbles up correctly, and entities whose stats live on a matching action show those stats in the resolved data row.
    • First Aid Kit no longer shows a spurious 2 AP cost.
  59. Site

    Fabrication Bay options restored

    • The Fabrication Bay system now lists its four activation options — restore up to 15 SP, restore up to 2 EP, repair damaged Systems/Modules, or repair damaged Chassis/Vehicles. Previously the text promised "choose one of the following options" but showed none.
  60. Site

    In The Union Now rebuilt — local-first, no account needed

    • The character builder & game manager was rebuilt from the ground up as a local-first app: your pilots, mechs, and crawlers live in your browser (with export/import backups) — no account, no server, works offline.
    • Redesigned pilot/mech/crawler wizards with auto-fill selection grids, a floating step footer, and a crawler Crew step with selectable crawler types and editable tech level.
    • Share read-only snapshots of any sheet via link — the one place a server is involved, and only when you ask for it.
    • The Discord bot also got steadier: it now finishes loading game data before answering commands.
  61. Site

    Filters above the catalog, smoother window resizing

    • Catalog filters (name, tech level, source) now sit in a bar above the results at every screen size, instead of in a left sidebar on desktop.
    • The catalog grid no longer stutters when you resize the window — large schemas (chassis, abilities, equipment) stay smooth.
  62. Site

    Smoother loads on catalog & entity pages

    • Fixed a hydration mismatch that could make a catalog or entity page throw away the server-rendered HTML and re-render (a brief flicker) once game data finished loading.
  63. Site

    Buy links on source books

    • Each source book and expansion now shows a Buy button — in both the catalog listing and on its page — linking straight to the publisher's store.
  64. Site

    Vehicles read as actions, not installable systems

    • Conventional vehicles now list their loadout — weapons and locomotion — as actions, the way their statblocks read, rather than as installable Mech Systems.
    • The Power Loader's rigging arm now shows its own melee profile (Close, 1 SP), distinct from the mech utility arm, and two placeholder systems (Integrated Amphibious Locomotion System and Shanty Home) were folded into the vehicles that use them.
  65. Site

    Audit sweep: search fixes, offline support, faster pages

    • Search no longer breaks if you type before game data finishes loading, Enter now jumps to the top result, and category matches no longer crowd out item hits.
    • The SRD now works offline after your first visit — install it to your phone for table use on bad venue wifi.
    • Every page loads ~1.3 MB less JavaScript, schema listings gained a name filter plus loading skeletons and clearer empty states, and printed pages drop the site chrome.
    • Item pages link their traits and keywords directly, trait tooltips fixed for six pilot-equipment items (armor/armour mismatch), and the Salvage Cache Table now references SRD listings instead of print-book page numbers.
  66. Site

    Expansion crawler bays added

    • Four expansion / found Crawler bays now appear in the reference: the Bio-Mech Bay and Bio-Crafting Bay (We Were Here First!), the Nanite Processing Bay (False Flag), and the VR Tubes (Rainmaker).
    • Unlike the core fixed facilities, these are player-addable upgrade bays — each shows its build cost (Scrap and/or Bio-Salvage), tech level, or salvage value instead of a crew member and damaged effect.
  67. Site

    Bio-Titans restored; Iron Lady reclassified

    • The Titans schema is once again Bio-Titans, and each Bio-Titan now shows its bio-salvage value (equal to its Structure Points).
    • The Iron Lady — an android, not a Bio-Titan — now lives under Drones with a salvage value, while keeping her Titanic Actions and equipped Mech Modules.
  68. Site

    Mobile fix for guide entity grids

    • Side-by-side entity cards in guides (e.g. the Base Classes and abilities on Create a Pilot) now stack into a single column on mobile instead of overflowing off the right edge, and still show two balanced columns on wider screens.
  69. Site

    Site restyle + interactive equipment customisation

    • New Salvage Union 'Cargo' brand header with a breadcrumb description sub-bar that surfaces each schema's description as you browse.
    • Refreshed entity-card and typography styling across the SRD, and the old landing-page hero has been removed.
    • Pilot equipment with player choices (weapon type, modifications) now shows an interactive customisation panel — toggle options to watch the damage, range, and traits update live.
  70. Site

    Iron Lady modules + custom expansion themes

    • Iron Lady (titans) now lists its equipped Mech Modules — Comms Module, IR Night Vision Optics, Firewall — as compact entries you can click through.
    • Titans schema accepts optional `systems` and `modules` arrays; both render as compact cards beneath the titan actions.
    • New custom themes for Reclamation of the Wastes (wind-blown dust), The Hive (honeycomb mesh), Thatcher's Mech Base (industrial steel grate), and Relics of a Time Gone By (weathered parchment).
    • Changelog entries are now rendered as readable bullet lists instead of paragraphs.
    • API page documents that appending `.json` to any schema or item URL returns the raw data.
  71. Site

    Salvage Union Starter Set archived

    • Reclamation of the Wastes and the Asset Pack mini-adventures (Hive, Thatcher's Mech Base, Relics of a Time Gone By) are now reachable: chassis patterns, systems, modules, abilities, equipment, drones, creatures, titans (monsters and bosses), NPCs with unique statblocks, lances, and roll tables.
    • New `titans` schema (replaces `bio-titans`) consolidates monster-class and boss-class mech-scale enemies, including Iron Lady.
    • Mobile schema list pages no longer overflow horizontally.
  72. Data

    v2.0.1

    • Fixed utility functions that incorrectly extracted properties from `actions[0]` for multi-action entities
    • Updated `getActivationCost()`, `getActionType()`, `getRange()`, `getDamage()`, and `getTraits()` to only extract from `actions[0]` when entity has **exactly 1 action**
    • Previously, these functions would extract from the first action even when entities had multiple actions (e.g., Chassis with 4 actions)
    • Now correctly returns `undefined` for multi-action entities, ensuring properties are only "promoted" for single-action entities
    • Fixed `getEffects()` to only check base-level properties (effects don't exist in action schema)
    • Added comprehensive test coverage for single-action, multi-action, and base-level property precedence scenarios
  73. Data

    v2.0.0

    • `description` (string) - Replaced by `content` array
    • `effect` (string) - Replaced by `content` array
    • `effects` (array) - Replaced by `content` array
    • `notes` (string) - Replaced by `content` array
    • `options` (array) - Replaced by `content` array
    • `content` (array of ContentBlock) - Unified structured content system
    • `grantable` - Replaced by enhanced `grant` definition
    • `damage` - Now defined inline within `action` definition
    • `effect` - Replaced by content blocks
    • `effects` - Replaced by content blocks
    • `baseEntry` - Redundant with `baseEntity`
    • `action` - Now uses `content` array instead of separate text fields (`description`, `effect`, `notes`)
    • `baseEntity` - Added `content` property
    • `npc` - Changed `description` field to `content` array
    • `grant` - Enhanced to support both schema references and choice types
    • `pattern` - Changed `description` field to `content` array
    • `techLevelEffect` - Changed `effects` from reference to inline array definition
    • `content` - Array of content blocks
    • `contentBlock` - Individual structured content block with type, value, label, level, and nested items
    • `combatEntity` - Entity that can perform actions and has traits
    • `mechanicalEntity` - Mechanical entity with structure points and equipment stats
    • New schema for range/distance definitions
    • 34 distance/range entries with structured data
    • `contentType` - Content block types: `paragraph`, `heading`, `list-item`, `list-item-naked`, `label`
    • Added top-level `description` field (summary text, distinct from action-level content)
    • 2,609 line changes
    • 3,298 line changes
    • 1,552 line changes
    • 1,566 line changes
    • Complete migration to content blocks
    • Complete migration to content blocks
    • Complete migration to content blocks
    • Complete migration to content blocks
    • Complete migration to content blocks
    • Complete migration to content blocks
    • Complete migration to content blocks
    • Complete migration to content blocks
    • Complete migration to content blocks
    • Complete migration to content blocks
    • Complete migration to content blocks
    • Complete migration to content blocks
    • Complete migration to content blocks
    • Complete migration to content blocks
    • Complete migration to content blocks
    • Simplified and cleaned (304 line reduction)
    • Enhanced type inference for content blocks
    • Added `ContentType` enum
    • Better organization and exports
    • Enhanced full-text search with content block support (95 line changes)
    • Added content block helper functions
    • Improved search result relevance scoring
    • Better handling of structured content in search
    • Auto-generates type guards and property extractors from schemas (277 lines)
    • Utility functions including type guards and property extractors
    • Generate utility functions from schemas
    • Auto-generates markdown docs from schemas (173 lines)
    • 25 auto-generated schema documentation files:
    • abilities.md, ability-tree-requirements.md, bio-titans.md, chassis.md
    • classes.advanced.md, classes.core.md
    • crawler-bays.md, crawler-tech-levels.md, crawlers.md
    • creatures.md, distances.md, drones.md, equipment.md
    • keywords.md, meld.md, modules.md, NPCs.md
    • roll-tables.md, squads.md, systems.md, traits.md, vehicles.md
    • `docs:schemas` - Generate schema documentation
    • `validate:references` - Validate cross-references in data files
    • Validates generated code is current (130 lines)
    • Validates data cross-references (172 lines)
    • Updates schema references (101 lines)
    • General content block migration (231 lines)
    • Ability-specific migration (155 lines)
    • Using `npm-run-all` for faster builds
    • Updated `generate` script to run type generation in parallel, then index generation, then utilities generation
    • Enhanced GitHub Actions CI workflow
    • 68 files changed
    • 14,330 insertions
    • 3,230 deletions
    • 25+ schemas updated
    • 20 data files completely restructured
    • Import new `ContentBlock` type
    • Remove references to old `effect`, `effects`, `notes`, `options` fields
    • Use `content: ContentBlock[]` instead
    • Replace `objects.schema.json#/definitions/effect` with `objects.schema.json#/definitions/content`
    • Replace `objects.schema.json#/definitions/grantable` with `objects.schema.json#/definitions/grant`
    • Remove references to `baseEntry` (use `baseEntity` instead)
    • Ensure `content` arrays contain valid `ContentBlock` objects
    • Validate `type` field against `contentType` enum
    • All text content uses the same structure
    • Support for rich formatting (headings, lists, labels)
    • Easy to add new content types in the future
    • Better TypeScript inference and validation