Skip to content

v0.15.10

Choose a tag to compare

@AwsomeFox AwsomeFox released this 01 Aug 00:21
· 220 commits to main since this release
8bf8c65

🚀 Key Highlights

  • This release focuses on accessibility, AI driver reliability, and web/server polish across the app.
  • It also adds several user-facing workflow improvements in inventory, character sheets, sessions, and quests.
  • Overall, the update strengthens stability, consistency, and rules-system support.

✨ New Features & Improvements

  • AI encounter panel now surfaces tool confirmations for clearer live-play feedback.
  • Inventory add flows now include a From Compendium option.
  • Character sheet accessibility has been improved, including better touch targets and contrast handling.
  • Session prep now supports notes, recap pre-fill, and RSVP seeding.
  • Web UI consistency was improved across dialogs, headers, roster cards, tokens, and page-title typography.
  • Quests can now be edited after creation, including title, reward, giver, and parent.
  • AI Driver received live-play tools, turn-state control, and turn-change triggers.

🐛 Bug Fixes & Maintenance

  • Fixed multiple a11y issues, including WCAG target-size coverage and smaller interactive controls.
  • Improved server lifecycle handling, including death state, concentration breaks, and encounter-end reconciliation.
  • Hardened AI Driver behavior with step caps, truncation handling, allowlists, and better turn-loop safety.
  • Fixed inbox sweep reliability, including race recovery, background execution, and pagination title resolution.
  • Improved export/scribe job limits to avoid unbounded scans and overly large logs.
  • Tightened tests and coverage, including adapter parity, E2E stability, UI icon contracts, and server coverage baselines.
  • Fixed additional rules and character logic, including rule-system adapter delegation and non-5e bestiary support.

Full Changelog

What's Changed

  • fix(a11y): enable target-size rule, scan chrome contrast, enforce incomplete policy (#1778) by @AwsomeFox in #1804
  • feat(ai-dm): surface tool confirmations in the encounter panel (#1494) by @AwsomeFox in #1802
  • fix(server): derive character lifecycle status from deathState on create by @AwsomeFox in #1807
  • feat(inventory): add From Compendium affordance to inventory add flows (#1782) by @AwsomeFox in #1805
  • feat(ai-driver): cap cumulative AI Driver economy grants per aftermath window (#1781) by @AwsomeFox in #1810
  • Fixes #1456 — encounter runner touch targets, single end-turn path, panel focus/announce by @AwsomeFox in #1800
  • fix(ai-driver): convert guardDriverLivePlayArgs to allowlist (#1792) by @AwsomeFox in #1798
  • fix(web): consolidate dialogs, page headers, roster cards, and tokens (#1783) by @AwsomeFox in #1809
  • feat(web): improve character sheet accessibility (fixes #1488) by @AwsomeFox in #1799
  • fix(ai-driver): honor finishReason truncation, enforce the step cap, and harden the eval harness (#1500) by @AwsomeFox in #1811
  • fix(web): preserve session deep links in CatchUpPanel and SessionLog by @AwsomeFox in #1814
  • fix(server): concentration breaks when caster drops, dies, removed, or recasts (#1452) by @AwsomeFox in #1801
  • test(adapters): update Linux parity snapshot and assert exact adapter behavior (#1508) by @AwsomeFox in #1817
  • fix(ai-driver): add live-play tools, turn state control, and turn change triggers (#1498) by @AwsomeFox in #1815
  • fix(characters): delegate character sheet checks and rest logic to rule-system adapter by @AwsomeFox in #1816
  • fix(rules): distinguish drifted 13th Age statblocks from prose headings (#1522) by @AwsomeFox in #1822
  • fix(scribe): replace unbounded priorSucceeded scan with bounded deduplication queries (#1530) by @AwsomeFox in #1823
  • fix(export): bound campaign export AI scribe job log to recent runs and proposal rows (#1529) by @AwsomeFox in #1821
  • Consolidate web app formatting and add ESLint rule banning bare toLocaleString (Fixes #1531) by @AwsomeFox in #1824
  • Defer seed() evaluation in browser e2e specs (Fixes #1753) by @AwsomeFox in #1825
  • Inbox sweep: distinguish race-recovered proposals from fresh proposals (Fixes #1724) by @AwsomeFox in #1827
  • Hide owner-only interactive controls during character print (Fixes #1761) by @AwsomeFox in #1826
  • Preserve explicit non-active lifecycle status during encounter-end reconciliation (Fixes #1758) by @AwsomeFox in #1828
  • test(ui-icons): assert canonical 4-value scale contract (Fixes #1715) by @AwsomeFox in #1830
  • fix(web): resolve inbox sweep titles beyond first page (Fixes #1718) by @AwsomeFox in #1831
  • Unify page-title typography across PageHeader and PageTitle (Fixes #1714) by @AwsomeFox in #1832
  • Fix sub-24px WCAG interactive controls with density=xs (Fixes #1722) by @AwsomeFox in #1833
  • test(e2e): guard and unroute proxy route.fetch handlers by @AwsomeFox in #1835
  • fix(web): ensure .cf-target-24 and .cf-target-44 take precedence over control aliases (Fixes #1698) by @AwsomeFox in #1834
  • fix(server): route death saves, proficiency, and crit/fumble through the rule-system adapter (#1503) by @AwsomeFox in #1812
  • fix(server): support non-5e bestiary play (Starforged null HP, PF2e actions, OSR hit dice) (#1506) by @AwsomeFox in #1836
  • fix(inbox-sweep): background the sweep so client can recover results after timeout (#1716) by @AwsomeFox in #1820
  • fix(ai-driver): harden turn loop against pre-loop throws and add scene/history to prompts (#1497) by @AwsomeFox in #1819
  • fix(web): thread ruleSystem adapter into optimistic HP lifecycle (Fixes #1829) by @AwsomeFox in #1838
  • test(server): raise the all-source unit coverage baseline by @AwsomeFox in #1837
  • fix(quests): allow editing title, reward, giver, and parent after creation by @AwsomeFox in #1842
  • feat(web): session prep notes, scheduled session recap pre-fill, and RSVP seeding by @AwsomeFox in #1845

Full Changelog: v0.15.9...v0.15.10


Container image

docker pull ghcr.io/awsomefox/campfire:0.15.10