All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
0.0.3-beta.5 (2026-07-24)
- include CHANGELOG.md section in GitHub release notes (3e365a2)
- catch native create-actor dialog error at its actual throw site (d1dd630)
0.0.3-beta.4 (2026-07-15)
- add attribute and skill randomizers to character creation (d74c80d)
0.0.3-beta.3 (2026-07-07)
0.0.3-beta.2 (2026-07-06)
0.0.3-beta.1 (2026-07-06)
- 01-01: character creation service layer with strict TypeScript types (41393c0)
- 01-03: Character creation dialog fully migrated with presentational Svelte component (70bd991)
- 02-01: Creation point services and flag management (b00bd7b)
- 02-02: Attribute chevrons for point spending during creation (a38f6a0)
- 2.4-01: routing fix, Intelligence-linked cost formula, Int-derived pools (b27d2ce)
- 2.4-02: extract skill buying logic to SkillSpendingService (db9b790)
- 2.5-01: linked attr on SkillCard, duplicate skill drop prevention (32f6f35)
- 2.5-02: Packery layout for all skill tabs, flat active skills, lock modal timing (fda0878)
- 3-01: KarmaSpendingService — staged attr session + SR3e skill/spec cost helpers (63acb8e)
- 3-02: wire attribute karma session into UI — ShoppingCart, AttributeCard, Karma, CharacterSheet teardown (7eeb236)
- 3-03: redesign Karma.svelte (Movement.svelte pattern) + add to character sheet (fbee142)
- 3-03: skill editor staged karma wiring + Phase 3 complete (d796f7f)
- 3.1-01: Remove $state+$effect store anti-pattern from Attributes and Dossier (339d35a)
- 3.1-02: Debloat Health and AttributeCard — stores to top-level, stunBoxes to $derived (572854f)
- 3.1-03: Remove itemsUpdateTick/hooks from Skills, debloat SkillCard and skills layer (32ccbbd)
- 3.1-04: Debloat item editors and remaining Svelte files — phase 3.1 complete (40d3617)
- 3.2-01: StorytellerScreen model, sheet, registration, and app shell (839e32e)
- 3.2-02: KarmaDistributionService + KarmaManager + KarmaRow — Phase 3.2 complete (cdb328f)
- 3.3-01: TimeService + TimeManager + TimeActuatorInput for Storyteller Screen (40a8347)
- 3.4-01: consolidate SimpleStat sum stores into GetSimpleStatROStore, fix .mod field bug (996bdea)
- automatic scaffolding of localization tree (6e82296)
- character-creation: skill-editor undo sessions, starting nuyen, reactive metatype (2757b95)
- chat: sender-colored fake shadow behind chat messages (42f6397)
- chat: style messages and expand dice results (1e16b69)
- combat: attribute/skill challenge rolls (showdowns, no damage) (6527bb3)
- combat: auto-apply wound penalty and hide karma dice on pool-only rolls (e3886f2)
- combat: composer skill/specialization picker for manual defaulting (0612668), closes #200 #198
- combat: Done buttons gate contest resolution on both sides finishing (53534da), closes #195
- combat: explicit die selection for simple/open-roll reroll and buy (b95d913)
- combat: implement advanced rolls (Tier 5b) (da9bed0)
- combat: interactive contest/drain chat messages with karma reroll/buy (a47b404)
- combat: make resistance rolls interactive with a Done gate (5af080a)
- combat: reconcile weapon-level isDefaulting flag with composer (4fbf0b8), closes #201 #200
- combat: Tier 5 combat UI — dice engine, roll composer, defender/resistance prompts (554e45c), closes #126 #129
- economy: add Rat's Race payments, debt interest, and honorary editing (bd983cd)
- economy: make subscription defaulting an explicit player action (bf1081f)
- economy: purchase-on-drop, cross-client consent, and debt repayment (f0b9300)
- gm-screen: dice pool refresh tools; garage weapon rolls always advanced (921b1fe)
- i18n: localize actor type labels via CONFIG.Actor.typeLabels (8d1d91c)
- items: migrate weapon item from old_project (e9870c8)
- karma: karma shopping UI — skill editors, attr session, spec polish (4ab6676)
- magic: add spell and focus item substrate (31e2d46)
- magic: expendable focus flag; chore: zone doc updates, socket handler tweaks, unused icon assets (e84792a)
- medical: toggle reusable effect views (8618235)
- news-feed: pause scroll on window blur, resume on focus (44e21ed)
- planning: Phase 2 plan breakdown - Character Creation Shopping Mode (f59ab49)
- roll-composer: karma pool die re-roll + simple/advanced roll distinction (cc9e786)
- roll-composer: wire roll button and enrich simple-flow chat message (0537ede)
- skinning: hologram energy field on window-content (a9a1f57)
- styles: clip-path on time actuator number input (101c0d7)
- styles: global image framing, unified sr3e-checkbox, journal toolbar restyle (b9055ad)
- stylesheet builds themes (4dca6be)
- styles: karma manager search and points fields use weapon-name two-layer clip-path outline (e24bf48)
- styles: per-stat sea-green field cards on weapon item sheet (b0778f1)
- styles: restyle broadcaster sheet to weapon visual language (d1c446c)
- styles: unified clip-path checkbox design across weapon, broadcaster, and storyteller screen (c0af721)
- styles: weapon number inputs match skill card attribute-value typography (4e9c300)
- ui: collapsible section headers for attributes, dice pools, movement, karma, skills (457462e)
- ui: desaturate and blur background ApplicationV2 windows on focus (d1c4625)
- ui: time actuator cards — label on top, arrows flank number, skill-card visual wrapper (3c50a39)
- vehicle: Garage seated/jacked-in rigger flow (166fb23)
- vehicle: make Accelerate/Brake's speed change reroll/buy-success aware (e18beba)
- vehicle: Mechanical actor MVP — gadget-moddable stats, condition monitor, Packery sheet, garage linking (82d1dd9)
- vehicle: rigger actions menu, weapon-card parity fixes, persistent garage dropdowns (49d4443)
- vehicle: speedometer gauge, Maneuver Score comparison, terrain, and automated Accelerate/Brake (9e042c0)
- vehicle: split speed into three fields; gate jack-in on Rigger Adaptation (2371dab)
- vehicle: tabbed Mechanical register, cargo hardpoint/firmpoint caps, journal (62197d1)
- vehicle: Vehicle Control Rig item, float essence, active-effect fixes (6d07af7)
- 01-01: remove exception handling from CharacterInitializer (f0affda)
- Base Sheet Conversion (b471223)
- code cleanup (f2600cf)
- combat: a defender who wins a contest now shows as winner, not a tie (fb6e34c)
- combat: a stuck contest permanently locks the actor out of all rolls (b415f7c)
- combat: defaultingRules read a flat skill schema that doesn't exist (bba083e)
- combat: fix roll composer visibility, dice display, and attribute hover (3347178)
- combat: GM can no longer act on behalf of an actively-controlled player (7ad3fd0)
- combat: grey out no-op controls for any non-controlling viewer, not just GM (ca734fe)
- combat: make attribute cards fully clickable and roll open exploding dice (693a1f1)
- combat: skill and specialization rolls now use open exploding dice (55bf3b0)
- combat: skill rolls use a flat TN 4, matching attribute rolls (c2024cf)
- combat: skill rolls use nested activeSkill schema, not flat value (30bb36f)
- combat: wire composer Defaulting toggle to skill-to-attribute rules (32e3fa7), closes #198 #199 #201
- ComboSearch: let instead of const for bindable value prop (540e03b)
- economy: extract debt payment into a dialog; gate interest accrual to GM (67da953)
- essence: react to ActiveEffect changes and format to one decimal (3f2d60c)
- health: ease ECG into and out of flatline instead of hard cut (29a8dfc)
- health: restore inline-block display on damage checkboxes (379863e)
- i18n: add placeholders.selectanoption to en.json (649a18f)
- i18n: legal status select placeholder + StatCard placeholder prop (04d4d07)
- inventory: gate weapon rolling on skill/ammo, fix item name and ammo display (27144f2)
- karma: correct pool init path, pool value on award, and factor fallback (9911191)
- model: legality.status initial value empty string so select shows placeholder (e433ace)
- models: embedded component models extend DataModel not TypeDataModel (3c0dc4b)
- news-feed: debounce blur to survive Foundry iframe focus round-trips (4b9ccec)
- news-feed: eliminate end-of-pass freeze and dead-ticker-on-focus-return (4d8043d)
- newsfeed: eliminate scroll jerk on cart recycling (860c54c)
- newsfeed: remove forceResync fan-out causing bursty ticker resets (192fd68)
- newsfeed: remove tick() await and cartUpdateThisFrame guard — apply offset correction before carts mutation (8094cec)
- packery: guard against layout-oscillation feedback loops (5ab56ba)
- persist skills tab selection across sheet re-renders (2bf7baa)
- skill: change SkillSpecializationModel base class to DataModel (e8940ba)
- skills: initialize activeTabStore synchronously to fix tab switching (a59dfbc)
- skills: prevent flag store updates from triggering sheet remounts (625cc3f)
- skills: prevent inner PackeryGrid reflow from triggering outer layout (f2348f1)
- skills: remove Packery from skill tab panels to restore tab switching (812b069)
- skinning: exempt attr-chevron from global button reskin (60391ff)
- skinning: remove form background and shadow (9508205)
- stabilize composer effects and chat hooks (3f35ee1)
- storyteller-screen: column layout, 50vh cap on karma panel, remove stray actor prop (70492ab)
- style: remove sheen animation corner artifacts (27f9bf4)
- styles: add text-align:left to select stat card labels (2e6c33a)
- styles: checkbox card-in-card, sizing, and tick color (38b1ff8)
- styles: constrain stat-field-card number inputs and selects; fix first-child top margin (95d2928)
- styles: dossier quote field uses input-frame two-layer trick for clipped-corner outline (415af9d)
- styles: full clip-path outline on weapon name input; bump h4 to 1rem (6dbf0d7)
- styles: headline input-frame outline sits snug — override sheetcard border/background (63d45fe)
- styles: health condition monitor checkboxes use 2px outline (51d5904)
- styles: left-align stat card labels above select dropdowns (b257cbe)
- styles: points field clip-path matches broadcaster headline field corners (3a36dbc)
- styles: reduce broadcaster headline input vertical padding and zero margin (d394925)
- styles: reduce karma input frame vertical padding and zero margin (343c635)
- styles: remove all padding from .storyteller-screen (84499f5)
- styles: remove anthracite gray background from item sheets (e707e38)
- styles: remove dossier top margin, add foldout header margin, zero img margin (3f4a26b)
- styles: remove h1.window-title margin outside @layer so it overrides Foundry (8e0fe0f)
- styles: remove left/right padding from .storyteller-screen (7813b13)
- styles: remove margins from h1.window-title (ebccb75)
- styles: search box clip-path matches broadcaster headline field corners (13f5645)
- styles: set line-height 0 on h1.window-title in window header (9873397)
- styles: set line-height 0 on window-header (6d0b867)
- styles: tighten stat-field-card number input and grid spacing (864806f)
- styles: time actuator cards flex: 1 to share row equally without overflow (cb0e219)
- styles: weapon name field clip-path matches broadcaster headline corners (f8ca003)
- styles: weapon number inputs use skill card h1 typography (VT323 font, h1-color, h1-bloom) (ca2cd22)
- styles: weapon sheet hero image uses dossier corner values (ded5061)
- styles: zero all margins on section.window-content globally (5473061)
- styles: zero all padding on section.window-content globally (a36ca6b)
- svelte5: untrack prop references to silence state_referenced_locally warnings (ac31328)
- ui: broadcaster image opens file picker on click (fad856a)
- ui: change metatype stat grids from 3-column to 2-column (969a1e8)
- ui: hide item sheet window before Svelte teardown to avoid visible dismantling (5775c6f)
- ui: replace Dialog.confirm (V1) with DialogV2.confirm in AttributePointsState (7c5aa34)