Skip to content

chore: version packages#42

Merged
aridyckovsky merged 1 commit into
mainfrom
changeset-release/main
Nov 8, 2025
Merged

chore: version packages#42
aridyckovsky merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented Nov 8, 2025

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@effect-migrate/cli@0.4.0

Minor Changes

  • #41 f22c2dd Thanks @aridyckovsky! - Add normalized schema for 40-70% audit.json size reduction and move business logic to core

    Breaking Changes:

    1. Schema version 0.1.0 → 0.2.0 (audit.json - no backwards compatibility)
      • Replace byFile/byRule with deduplicated rules[], files[], results[] arrays
      • Add index-based groupings in groups field for O(1) lookup
      • Implement deterministic ordering (sorted rules/files) for reproducible output
      • Add stable content-based keys for cross-checkpoint delta computation
      • Compact range representation using tuples instead of objects
      • Add separate info counter to FindingsSummary (previously counted as warnings)
    2. CLI loaders removed - business logic moved to @effect-migrate/core
      • ❌ Removed @effect-migrate/cli/loaders/config - use @effect-migrate/core exports instead
      • ❌ Removed @effect-migrate/cli/loaders/presets - use PresetLoader service instead

    New @effect-migrate/core exports:

    Config utilities:

    • mergeConfig(defaults, userConfig) - Merge preset defaults with user config
    • deepMerge(target, source) - Deep merge plain objects (arrays replaced, not concatenated)
    • isPlainObject(value) - Type guard for plain objects

    Preset loading:

    • PresetLoader - Context.Tag for preset loading service
    • PresetLoaderService - Service interface
    • PresetLoaderNpmLive - Default Layer for npm-based preset resolution
    • PresetLoadError - Tagged error for preset loading failures
    • Preset - Preset type (rules + optional defaults)
    • LoadPresetsResult - Result of loading multiple presets

    Rule construction:

    • rulesFromConfig(config) - Build rules from config (pattern + boundary)

    Schema enhancements:

    • Config now supports presets?: string[] field for preset names

    Normalizer utilities:

    • normalizeResults(results, config, threads?) - Convert to normalized schema
    • expandResult(normalized) - Convert back to flat format
    • deriveResultKey(result) - Generate stable content-based key

    @effect-migrate/cli changes:

    New workspace-aware preset resolution:

    • PresetLoaderWorkspaceLive - Layer that tries workspace path first, falls back to npm
    • Supports monorepo development with automatic workspace preset detection
    • Windows-compatible file URL handling with pathToFileURL()

    Refactored loaders:

    • loadRulesAndConfig() now orchestrates core services instead of implementing logic
    • Uses Effect.catchTag("PresetLoadError") for precise error handling
    • Reduced CLI code by ~1291 lines (60% reduction in loaders)

    Build improvements:

    • Implement TypeScript Project References (src/test separation) for proper type checking
    • Fix NodeNext module resolution (.js extension requirements)
    • Consolidate test organization (all tests in test/ directories)
    • Fix barrel import violations (use direct imports from @effect/platform)
    • Remove duplicate utils folder (merged util/ into utils/)

    Migration guide:

    If you were importing from CLI loaders:

    // Before
    import { loadConfig } from "@effect-migrate/cli/loaders/config"
    import { loadPresets } from "@effect-migrate/cli/loaders/presets"
    
    // After
    import { loadConfig, PresetLoader } from "@effect-migrate/core"
    
    const config = yield * loadConfig(configPath)
    const loader = yield * PresetLoader
    const { rules, defaults } = yield * loader.loadPresets(config.presets ?? [])

    Test coverage:

    • 50 new tests for core utilities (config merge, preset loading, rule builders)
    • 6 new tests for CLI workspace preset resolution
    • 40+ tests for normalized schema
    • Total: 308 tests passing

Patch Changes

  • #41 cbd8eb9 Thanks @aridyckovsky! - Update all READMEs to reflect current architecture and published usage

    Documentation improvements:

    • Root README: Accurate CLI commands, output schemas (index.json, audit.json, metrics.json, threads.json), real rule examples, proper roadmap
    • CLI README: Complete options documentation (--strict, --log-level, --amp-out), troubleshooting guide, local development instructions
    • Core README: Comprehensive exported API documentation, service architecture, Layer patterns, real rule examples from preset-basic

    Key updates:

    • Reflect dogfooding status and unstable API warnings across all packages
    • Document complementary relationship with @effect/language-service
    • Add proper roadmap with planned features (SQLite, Polars, OpenTelemetry, MCP server, workflow orchestration)
    • User-focused: Published npm usage as primary, local development as secondary
    • Real examples from actual codebase (patterns.ts, boundaries.ts)

    Resolves chore: consolidate and update README to reflect actual usage #24

  • Updated dependencies [f22c2dd, cbd8eb9]:

    • @effect-migrate/core@0.4.0

@effect-migrate/core@0.4.0

Minor Changes

  • #41 f22c2dd Thanks @aridyckovsky! - Add normalized schema for 40-70% audit.json size reduction and move business logic to core

    Breaking Changes:

    1. Schema version 0.1.0 → 0.2.0 (audit.json - no backwards compatibility)
      • Replace byFile/byRule with deduplicated rules[], files[], results[] arrays
      • Add index-based groupings in groups field for O(1) lookup
      • Implement deterministic ordering (sorted rules/files) for reproducible output
      • Add stable content-based keys for cross-checkpoint delta computation
      • Compact range representation using tuples instead of objects
      • Add separate info counter to FindingsSummary (previously counted as warnings)
    2. CLI loaders removed - business logic moved to @effect-migrate/core
      • ❌ Removed @effect-migrate/cli/loaders/config - use @effect-migrate/core exports instead
      • ❌ Removed @effect-migrate/cli/loaders/presets - use PresetLoader service instead

    New @effect-migrate/core exports:

    Config utilities:

    • mergeConfig(defaults, userConfig) - Merge preset defaults with user config
    • deepMerge(target, source) - Deep merge plain objects (arrays replaced, not concatenated)
    • isPlainObject(value) - Type guard for plain objects

    Preset loading:

    • PresetLoader - Context.Tag for preset loading service
    • PresetLoaderService - Service interface
    • PresetLoaderNpmLive - Default Layer for npm-based preset resolution
    • PresetLoadError - Tagged error for preset loading failures
    • Preset - Preset type (rules + optional defaults)
    • LoadPresetsResult - Result of loading multiple presets

    Rule construction:

    • rulesFromConfig(config) - Build rules from config (pattern + boundary)

    Schema enhancements:

    • Config now supports presets?: string[] field for preset names

    Normalizer utilities:

    • normalizeResults(results, config, threads?) - Convert to normalized schema
    • expandResult(normalized) - Convert back to flat format
    • deriveResultKey(result) - Generate stable content-based key

    @effect-migrate/cli changes:

    New workspace-aware preset resolution:

    • PresetLoaderWorkspaceLive - Layer that tries workspace path first, falls back to npm
    • Supports monorepo development with automatic workspace preset detection
    • Windows-compatible file URL handling with pathToFileURL()

    Refactored loaders:

    • loadRulesAndConfig() now orchestrates core services instead of implementing logic
    • Uses Effect.catchTag("PresetLoadError") for precise error handling
    • Reduced CLI code by ~1291 lines (60% reduction in loaders)

    Build improvements:

    • Implement TypeScript Project References (src/test separation) for proper type checking
    • Fix NodeNext module resolution (.js extension requirements)
    • Consolidate test organization (all tests in test/ directories)
    • Fix barrel import violations (use direct imports from @effect/platform)
    • Remove duplicate utils folder (merged util/ into utils/)

    Migration guide:

    If you were importing from CLI loaders:

    // Before
    import { loadConfig } from "@effect-migrate/cli/loaders/config"
    import { loadPresets } from "@effect-migrate/cli/loaders/presets"
    
    // After
    import { loadConfig, PresetLoader } from "@effect-migrate/core"
    
    const config = yield * loadConfig(configPath)
    const loader = yield * PresetLoader
    const { rules, defaults } = yield * loader.loadPresets(config.presets ?? [])

    Test coverage:

    • 50 new tests for core utilities (config merge, preset loading, rule builders)
    • 6 new tests for CLI workspace preset resolution
    • 40+ tests for normalized schema
    • Total: 308 tests passing

Patch Changes

  • #41 cbd8eb9 Thanks @aridyckovsky! - Update all READMEs to reflect current architecture and published usage

    Documentation improvements:

    • Root README: Accurate CLI commands, output schemas (index.json, audit.json, metrics.json, threads.json), real rule examples, proper roadmap
    • CLI README: Complete options documentation (--strict, --log-level, --amp-out), troubleshooting guide, local development instructions
    • Core README: Comprehensive exported API documentation, service architecture, Layer patterns, real rule examples from preset-basic

    Key updates:

    • Reflect dogfooding status and unstable API warnings across all packages
    • Document complementary relationship with @effect/language-service
    • Add proper roadmap with planned features (SQLite, Polars, OpenTelemetry, MCP server, workflow orchestration)
    • User-focused: Published npm usage as primary, local development as secondary
    • Real examples from actual codebase (patterns.ts, boundaries.ts)

    Resolves chore: consolidate and update README to reflect actual usage #24

@effect-migrate/preset-basic@0.3.1

Patch Changes

@aridyckovsky aridyckovsky self-assigned this Nov 8, 2025
@aridyckovsky aridyckovsky merged commit 13ed91d into main Nov 8, 2025
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.

chore: consolidate and update README to reflect actual usage

1 participant