Skip to content

feat: add Starsmith Expanded Oracles as community content#82

Open
tbsvttr wants to merge 3 commits intorsek:v0.1.0from
tbsvttr:feature/enable-starsmith
Open

feat: add Starsmith Expanded Oracles as community content#82
tbsvttr wants to merge 3 commits intorsek:v0.1.0from
tbsvttr:feature/enable-starsmith

Conversation

@tbsvttr
Copy link

@tbsvttr tbsvttr commented Nov 26, 2025

Summary

  • Enable Starsmith in build pipeline as private package (not published to NPM yet)
  • Download and fix converted Starsmith YAML files from iron-vault-plugin repo
  • Add NPM package configuration for @datasworn-community-content/starsmith
  • Add Starsmith-specific tests (merge, structure, ID consistency)

Starsmith Expanded Oracles by Eric Bright provides 249 additional oracles expanding Starforged.

Credits

Dependencies

This PR depends on #81 (TypeBox 0.34+ compatibility fixes) - the build system was broken and needed those fixes first.

Changes made to source YAML

The files from iron-vault-plugin required several fixes:

  • Add proper Datasworn 0.1.0 expansion headers with source metadata
  • Fix oracle ID references (singular vs plural forms, collection paths)
  • Remove invalid oracle_rolls entries that referenced oracle_collection (schema requires oracle_rollable)
  • Correct stellar_object -> object reference in space oracles

Test plan

  • npm run build:json completes successfully
  • npm run build:pkg completes successfully
  • Full test suite passes (30,023 tests)
  • Starsmith generates 249 identifiable nodes
  • Starsmith merge test passes
  • Starsmith structure validation test passes
  • Starsmith ID consistency test passes

This PR addresses compatibility issues with TypeBox 0.34+ and updates dependencies to fix security vulnerabilities.

## TypeScript/TypeBox Fixes
- Simplified complex generic types to avoid "Type instantiation is excessively deep and possibly infinite" errors in TypeBox 0.34+
- Added explicit TObject casts in schema builders to break deep type chains
- Updated type definitions to use marker properties instead of deeply nested generics (e.g., `_primaryType`, `_collectionBase`)

## Dependency Security Updates
- Updated release-it: ^17.6.0 → ^19.0.0
- Updated @release-it/bumper: ^6.0.1 → ^7.0.0
- Updated esbuild: 0.23.0 → ^0.25.0
- Added npm overrides for cross-spawn (^7.0.6) and micromatch (^4.0.8) to fix transitive dependency vulnerabilities

## Schema Changes
- Normalized column_labels defaults for SharedRolls/SharedText types to remove redundant labels (SharedRollsLabels now only contains 'roll', SharedTextLabels only contains 'text')
- This is an intentional design correction, not a breaking change

## Other Changes
- Added tsconfig types arrays to fix @types/parse-path stub issues
- Updated json-schema-library imports for v10 API compatibility
- Added type assertions for ajv-formats compatibility
- Simplified buildSchema.ts key sorting (removed json-schema-library traversal)
- Added comprehensive test files (build.test.ts, runtime.test.ts)
- Added .tool-versions for consistent tooling

All 18,467 existing tests pass.
- Enable Starsmith in build pipeline as private package (not published to NPM)
- Download and fix converted Starsmith YAML files from iron-vault-plugin repo
- Add NPM package configuration for @datasworn-community-content/starsmith

Starsmith by Eric Bright provides 249 additional oracles expanding Starforged.

Fixes applied to source YAML:
- Add proper Datasworn 0.1.0 expansion headers with source metadata
- Fix oracle ID references (singular vs plural, collection paths)
- Remove invalid oracle_rolls entries referencing oracle_collections
- Correct stellar_object -> object reference
- Add merge test: Starsmith into Starforged
- Add structure validation test for starsmith.json
- Add ID consistency test for starsmith oracle IDs
@tbsvttr tbsvttr changed the base branch from main to v0.1.0 November 26, 2025 15:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant