Skip to content

Releases: dev-ignis/forge

@nexcraft/forge@0.10.0

08 Oct 18:51
fa2e3bb

Choose a tag to compare

Minor Changes

  • e40659d: feat(core): expand design tokens and complete component exports

    New Features:

    • Expanded CSS custom properties (design tokens)
    • Additional component exports for better tree-shaking
    • Enhanced token coverage for theming

    What Changed:

    • Added more granular design tokens
    • Improved token organization
    • Better TypeScript types for exports

    Impact:

    • ✅ More theming flexibility with additional tokens
    • ✅ Better tree-shaking with specific component exports
    • ✅ Enhanced customization capabilities
    • ✅ No breaking changes - only additions

Patch Changes

  • e40659d: fix(forge-card): add padding to custom header slot

    Bug Fix:

    • Added proper padding to custom header slot in ForgeCard
    • Ensures consistent spacing when using slotted header content

    What Changed:

    • Custom header slot now has appropriate padding
    • Matches design system spacing standards

    Usage:

    <!-- Header slot now has proper padding -->
    <forge-card>
      <div slot="header">Custom Header</div>
      <p>Card content</p>
    </forge-card>

    Impact:

    • ✅ Better visual consistency for custom headers
    • ✅ Matches other card sections' padding
    • ✅ No breaking changes - only adds missing padding
  • e40659d: fix(tokens): export CSS design tokens for component styling

    Bug Fix:

    • Added missing tokens.css export to package.json
    • Users can now import CSS custom properties for theming

    What Changed:

    // package.json exports
    "./tokens.css": "./dist/tokens.css"

    Usage:

    // Before: Not available
    // After: Can import tokens
    import '@nexcraft/forge/tokens.css';

    Impact:

    • ✅ Design tokens now accessible via package export
    • ✅ Enables custom theming with CSS variables
    • ✅ Matches documented token bridge usage
    • ✅ No breaking changes

@nexcraft/forge-vue@1.0.2

08 Oct 18:51
fa2e3bb

Choose a tag to compare

@nexcraft/forge-vue

2.0.0

Patch Changes

  • Updated dependencies [e40659d]
  • Updated dependencies [e40659d]
  • Updated dependencies [e40659d]
    • @nexcraft/forge@0.10.0

1.0.1

Patch Changes

  • c074759: fix(release): build workspace packages before publishing

    Critical Fix: v1.0.0 packages were published without compiled dist/ folders, making them completely unusable.

    Root Cause:
    Release workflow only built main @nexcraft/forge package, not workspace packages (forge-react, forge-vue, forge-angular, forge-rhf).

    Fix:

    • Add build step for all workspace packages before changeset publish
    • Ensures dist/ folders exist for all packages
    • Validates packages are usable after installation

    Impact:

    • ✅ @nexcraft/forge-react@1.0.1 will include dist/ folder
    • ✅ @nexcraft/forge-vue@1.0.1 will include dist/ folder
    • ✅ @nexcraft/forge-angular@1.0.1 will include dist/ folder
    • ✅ @nexcraft/forge-rhf@1.0.1 will include dist/ folder

    Affected Users:
    Anyone who installed v1.0.0 packages encountered:

    Error: Cannot find module './dist/index.js'
    

    Resolution:
    Upgrade to v1.0.1 when released:

    npm install @nexcraft/forge-react@latest
    npm install @nexcraft/forge-vue@latest
    npm install @nexcraft/forge-angular@latest
    npm install @nexcraft/forge-rhf@latest

    Apologies:
    We sincerely apologize for this critical oversight. We've added additional validation to prevent this from happening again.

    • @nexcraft/forge@0.9.0

1.0.0

Patch Changes

  • Updated dependencies [7a38d60]
  • Updated dependencies [7a38d60]
    • @nexcraft/forge@0.9.0

0.3.0

Minor Changes

  • 842b2e4: chore: increment beta versions to skip unpublished versions

    • Bump framework packages to 0.2.0-beta.0 to skip past unpublished 0.1.1-beta.0
    • Bump forge-mcp-figma to 0.2.0-beta.0 to skip past unpublished 0.1.1-beta.0
    • Bump forge-rhf to 0.4.0-beta.0 to skip past unpublished 0.3.1-beta.0 and 1.0.0-beta.0
  • 6515991: Phase 15.4: Complete React package extraction and framework separation

    • Extract React integration to separate @nexcraft/forge-react package
    • Remove all framework integrations from core @nexcraft/forge package
    • Update @nexcraft/forge-rhf to use new React package
    • Achieve pure web components core architecture
    • Set up linked package releases for coordinated versioning

Patch Changes

  • Updated dependencies [6515991]
    • @nexcraft/forge@0.8.0

2.0.0

Patch Changes

  • Updated dependencies
    • @nexcraft/forge@0.9.0

1.0.0

Patch Changes

  • Updated dependencies
    • @nexcraft/forge@0.8.0

@nexcraft/forge-rhf@1.0.2

08 Oct 18:51
fa2e3bb

Choose a tag to compare

@nexcraft/forge-rhf

2.0.0

Patch Changes

  • Updated dependencies [e40659d]
  • Updated dependencies [e40659d]
  • Updated dependencies [e40659d]
  • Updated dependencies [e40659d]
  • Updated dependencies [e40659d]
    • @nexcraft/forge@0.10.0
    • @nexcraft/forge-react@2.0.0

1.0.1

Patch Changes

  • c074759: fix(release): build workspace packages before publishing

    Critical Fix: v1.0.0 packages were published without compiled dist/ folders, making them completely unusable.

    Root Cause:
    Release workflow only built main @nexcraft/forge package, not workspace packages (forge-react, forge-vue, forge-angular, forge-rhf).

    Fix:

    • Add build step for all workspace packages before changeset publish
    • Ensures dist/ folders exist for all packages
    • Validates packages are usable after installation

    Impact:

    • ✅ @nexcraft/forge-react@1.0.1 will include dist/ folder
    • ✅ @nexcraft/forge-vue@1.0.1 will include dist/ folder
    • ✅ @nexcraft/forge-angular@1.0.1 will include dist/ folder
    • ✅ @nexcraft/forge-rhf@1.0.1 will include dist/ folder

    Affected Users:
    Anyone who installed v1.0.0 packages encountered:

    Error: Cannot find module './dist/index.js'
    

    Resolution:
    Upgrade to v1.0.1 when released:

    npm install @nexcraft/forge-react@latest
    npm install @nexcraft/forge-vue@latest
    npm install @nexcraft/forge-angular@latest
    npm install @nexcraft/forge-rhf@latest

    Apologies:
    We sincerely apologize for this critical oversight. We've added additional validation to prevent this from happening again.

  • Updated dependencies [c074759]

    • @nexcraft/forge-react@1.0.1
    • @nexcraft/forge@0.9.0

1.0.0

Patch Changes

  • d04ae04: fix: support React 19 in peer dependencies

    • Update peer dependency to accept React 18 or 19
    • Fixes compatibility with Next.js 15 and React 19
  • Updated dependencies [7a38d60]

  • Updated dependencies [7a38d60]

    • @nexcraft/forge@0.9.0
    • @nexcraft/forge-react@1.0.0

0.4.0

Minor Changes

  • 842b2e4: chore: increment beta versions to skip unpublished versions

    • Bump framework packages to 0.2.0-beta.0 to skip past unpublished 0.1.1-beta.0
    • Bump forge-mcp-figma to 0.2.0-beta.0 to skip past unpublished 0.1.1-beta.0
    • Bump forge-rhf to 0.4.0-beta.0 to skip past unpublished 0.3.1-beta.0 and 1.0.0-beta.0
  • 6515991: Phase 15.4: Complete React package extraction and framework separation

    • Extract React integration to separate @nexcraft/forge-react package
    • Remove all framework integrations from core @nexcraft/forge package
    • Update @nexcraft/forge-rhf to use new React package
    • Achieve pure web components core architecture
    • Set up linked package releases for coordinated versioning

Patch Changes

  • Updated dependencies [842b2e4]
  • Updated dependencies [6515991]
    • @nexcraft/forge-react@0.3.0
    • @nexcraft/forge@0.8.0

2.0.0

Patch Changes

  • Updated dependencies
    • @nexcraft/forge@0.9.0

1.0.0

Patch Changes

  • Updated dependencies
    • @nexcraft/forge@0.8.0

0.3.0

Minor Changes

    • fix: - rhf peer dependency; (b38f5af)
    • fix: - align package versions with published npm versions; (e7400ba)
    • fix: - correct forge-rhf version from 1.0.0 to 0.3.0; (a4c841f)
    • feat: align package versions with npm registry for stable v0.7.0 release (a39eeeb)
    • fix: resolve GitHub Actions CI failures and dependency conflicts (6eb371d)

Patch Changes

  • Updated dependencies
    • @nexcraft/forge@0.7.0

0.2.0

Patch Changes

  • 581a548: # Phase 11: AI Manifest & Tooling - Major Release

    🤖 AI-Native Development Features

    • Enhanced AI Manifest: Comprehensive a11y metadata for all 30+ components with WCAG 2.1 AA compliance data
    • SSR Fallback Examples: Server-side rendering examples showing semantic HTML structure for better SEO and accessibility
    • AI Metadata Validation: Schema-based validation using AJV for AI manifest integrity
    • Component Intelligence: Complete AI state tracking and action suggestions for all components

    📚 Documentation & Developer Experience

    • Documentation Cleanup: Removed redundant files (COMPONENTS.md, IMPLEMENTATION_STATUS.md) and fixed broken references
    • AI-Native Guides: Enhanced guides for AI-assisted development patterns and component usage
    • Shipping Optimization: Fixed package.json files array to only ship necessary documentation
    • Cross-Reference Validation: Ensured all shipped documentation has valid internal references

    🏗️ Infrastructure & Deployment

    • GitHub Pages Integration: Complete deployment pipeline for live examples and documentation
    • Next.js Example App: Production-ready example with static export capabilities
    • Examples Structure: Organized framework examples with live demo hosting
    • CI/CD Enhancement: Automated deployment and example updates

    📋 Planning & Roadmap

    • Priority Roadmaps: Updated immediate, short-term, and long-term strategic plans
    • Security Framework: Added cross-cutting security and quality concerns documentation
    • Progress Tracking: Enhanced status tracking and completion metrics

    🐛 Bug Fixes & Improvements

    • React Integration: Fixed TypeScript errors in React hooks and components
    • File References: Resolved broken documentation links and missing file issues
    • Schema Compliance: Updated AI manifest schema to match rich component metadata structure

    🚀 What's Next

    This release establishes a solid foundation for AI-native component development with comprehensive tooling, documentation, and deployment infrastructure. The library now includes 30+ components with full AI metadata, live examples, and production-ready deployment pipelines.

  • Updated dependencies [581a548]

    • @nexcraft/forge@0.7.0

0.2.0

Minor Changes

  • Add React Hook Form adapters package

    Initial release of @nexcraft/forge-rhf package containing React Hook Form adapters extracted from the main package for better modularity.

@nexcraft/forge-react@1.0.5

08 Oct 18:50
fa2e3bb

Choose a tag to compare

@nexcraft/forge-react

2.0.0

Patch Changes

  • e40659d: fix(docs): correct CDN URL to use nexcraft-forge.es.js instead of forge.js

    Critical Documentation Fix:

    • CDN URL was incorrect: /dist/forge.js does not exist in the package
    • Correct file: /dist/nexcraft-forge.es.js
    • Updated all integration guides (Next.js, Remix, SvelteKit)

    What Changed:

    • ❌ Old: https://cdn.jsdelivr.net/npm/@nexcraft/forge@latest/dist/forge.js
    • ✅ New: https://cdn.jsdelivr.net/npm/@nexcraft/forge@latest/dist/nexcraft-forge.es.js

    Files Updated:

    • docs/integrations/nextjs-15-app-router.md
    • docs/integrations/remix.md
    • docs/integrations/sveltekit.md

    Impact:

    • ✅ CDN links now work correctly
    • ✅ Self-hosted instructions use correct filename
    • ✅ Import statements reference actual file
    • ✅ Fixes "404 Not Found" errors when using CDN
  • e40659d: feat(forge-card): add border prop to control card border visibility

    New Feature:

    • Added border prop to ForgeCard component
    • Default: border shown (1px solid #e5e7eb)
    • Set border={false} to remove border

    Usage:

    // With border (default)
    <ForgeCard>Content</ForgeCard>
    
    // Without border
    <ForgeCard border={false}>Clean borderless card</ForgeCard>

    Implementation:

    • Fallback renderer adds 'forge-card--no-border' class when border={false}
    • CSS: .forge-card--no-border { border: none; }
    • Attribute preserved during hydration to web component

    Impact:

    • ✅ Gives users control without custom CSS
    • ✅ Matches common UI patterns (cards with/without borders)
    • ✅ Simple API: <ForgeCard border={false}>
    • ✅ No breaking changes
  • Updated dependencies [e40659d]

  • Updated dependencies [e40659d]

  • Updated dependencies [e40659d]

    • @nexcraft/forge@0.10.0

1.0.4

Patch Changes

  • 24e826f: feat(ssr): comprehensive fallback CSS for styled SSR components

    Critical Fix for Unstyled Forms:

    • ✅ New fallback CSS file provides styling for all SSR fallback components
    • ✅ Fixes issue where components rendered as unstyled HTML inputs
    • ✅ Matches web component visual appearance during SSR

    What's Included:

    • Comprehensive styles for all form components (Input, Select, Checkbox, Switch, DatePicker)
    • Button variants and sizes (primary, secondary, outline, ghost)
    • UI components (Card, Badge, LoadingSpinner)
    • Responsive and accessible design

    How to Use:

    // Add to your app layout or root component
    import '@nexcraft/forge-react/fallbacks.css';

    Styled Components:

    • .forge-input - Text inputs with variants and sizes
    • .forge-checkbox - Checkbox with focus states
    • .forge-switch - Toggle switch with animations
    • .forge-select - Select dropdown with custom arrow
    • .forge-date-picker - Date input styling
    • .forge-button - Button variants (primary, secondary, outline, ghost)
    • .forge-card - Card with shadow and hover effects
    • .forge-badge - Badge variants (primary, success, warning, error)
    • .forge-loading-spinner - Animated spinner with sizes

    Impact:

    • ✅ Forms look styled immediately during SSR
    • ✅ No flash of unstyled content (FOUC)
    • ✅ Components visually upgrade when web components load
    • ✅ Better UX for users on slow connections

    Related Issues Fixed:

  • 24e826f: fix(ssr): improve hydration timing with customElements.whenDefined()

    Critical Timing Fix:

    • ✅ Components now properly upgrade from fallback to web component when loaded
    • ✅ Fixes issue where components stayed as fallback HTML indefinitely
    • ✅ Handles race condition between component render and web component registration

    What Changed:

    • Added customElements.whenDefined() detection in createUnifiedWrapper
    • Components wait for web component definition before upgrading
    • Graceful fallback if web components never load

    Technical Details:

    // Before: Only checked if component was already defined
    const shouldUpgrade = customElements.get(tagName) !== undefined;
    
    // After: Waits for component to be defined
    if (shouldUpgrade) {
      upgradeToWebComponent();
    } else {
      customElements.whenDefined(tagName).then(() => {
        upgradeToWebComponent();
      });
    }

    Impact:

    • ✅ Components upgrade correctly after web components load
    • ✅ Handles dynamic import scenarios
    • ✅ Handles Next.js Script with beforeInteractive strategy
    • ✅ No hydration mismatches or warnings

    Related Issues Fixed:

    • "Components stay as fallbacks" - now properly upgrade
    • Race condition with dynamic import('@nexcraft/forge')
    • Timing issues with Next.js Script loading
  • 24e826f: feat(ssr): automatic 'use client' directive for Next.js App Router compatibility

    Critical SSR Fix:

    • ✅ Automatic 'use client' directive added to all React components during build
    • ✅ Components work in Next.js App Router without manual 'use client' directives
    • ✅ Zero-config SSR support for all React frameworks

    What Changed:

    • Build script automatically prepends 'use client'; to all compiled components
    • 40 component files now have 'use client' directive
    • No changes needed in source files (framework-agnostic)

    Impact:

    • ✅ Next.js App Router: Components work automatically
    • ✅ Remix: Full SSR support
    • ✅ Gatsby: No changes needed
    • ✅ No breaking changes - existing code works better

    Before (v1.0.3):

    'use client'; // User must add this
    import { ForgeButton } from '@nexcraft/forge-react';
    
    export function MyComponent() {
      return <ForgeButton>Click</ForgeButton>;
    }

    After (v1.0.4):

    // No 'use client' needed - package handles it!
    import { ForgeButton } from '@nexcraft/forge-react';
    
    export function MyComponent() {
      return <ForgeButton>Click</ForgeButton>;
    }

    Technical Details:

    • Post-build script: packages/forge-react/scripts/add-use-client.js
    • Build command updated: tsc && node scripts/add-use-client.js
    • Follows industry standard pattern (Material UI approach)
    • @nexcraft/forge@0.9.0

1.0.3

Patch Changes

  • 2f08880: fix(fallback): pass through id prop in all form component fallbacks

    Bug Fix:

    • Fixed duplicate ID warning when multiple form components use the same id prop
    • All form input fallback renderers now properly pass through the id attribute

    What Changed:

    • ForgeInput: Now passes id prop to fallback <input> element
    • ForgeSwitch: Now passes id prop to fallback checkbox input
    • ForgeSelect: Now passes id prop to fallback <select> element
    • ForgeDatePicker: Now passes id prop to fallback date input

    Impact:

    • ✅ Fixes browser warning: "Found N elements with non-unique id"
    • ✅ Proper label associations with htmlFor attribute
    • ✅ Better accessibility for screen readers
    • ✅ No breaking changes

    Before:

    <ForgeInput id="email" />
    // Fallback: <input /> (id ignored)

    After:

    <ForgeInput id="email" />
    // Fallback: <input id="email" />
  • 2f08880: refactor(types): improve TypeScript type safety across React integration

    Type Safety Improvements:

    • ✅ Replaced any[] with proper typed arrays (GridSortConfig[], DataTableRow[], TreeNode[])
    • ✅ Added proper type definitions for data structures (GridSortConfig, DataTableRow, TreeNode)
    • ✅ Improved utility types (removed 20+ any casts)
    • ✅ Better DOM/React type annotations

    What Changed:

    • ForgeDataGridProps.onSortChanged: any[]GridSortConfig[]
    • ForgeDataTableProps.data: Record<string, any>[]DataTableRow[]
    • ForgeDataTableProps.onSelectionChange: any[]DataTableRow[]
    • ForgeTreeViewProps.data.children: any[]TreeNode[] (recursive)
    • createUnifiedWrapper: Improved type annotations for refs and props

    Impact:

    • ✅ Better IDE autocomplete and IntelliSense
    • ✅ Catch type errors at compile time
    • ✅ Improved developer experience
    • ✅ No breaking changes (compatible types)

    Remaining Work:
    Some component-specific fallback renderers still use unknown for flexibility. These are non-critical and will be addressed incrementally.

    • @nexcraft/forge@0.9.0

1.0.2

Patch Changes

  • d971b78: fix(ssr): proper SSR architecture - NO 'use client' in library files

    Critical Architecture Fix:

    • REMOVED 'use client' from all library files (was polluting all consumers)
    • Library files stay framework-agnostic (no Next.js-specific directives)
    • Consumers add 'use client' to their own files when needed
    • Matches industry standard (Radix UI, Headless UI, Framer Motion)

    What Changed:

    • ✅ ForgeProvider: NO 'use client' (consumers add it)
    • ✅ createUnifiedWrapper: NO 'use client' (consumers add it)
    • ✅ Added clear documentation: "add 'use client' to your file"
    • ✅ SSR demo shows correct usage pattern

    Why This Matters:

    • Wrong: Library has 'use client' → ALL consumers forced to client-side
    • Correct: Consumers add 'use client' → They control client boundaries

    Usage Pattern (Correct):

    ...
Read more

@nexcraft/forge-angular@1.0.2

08 Oct 18:51
fa2e3bb

Choose a tag to compare

@nexcraft/forge-angular

2.0.0

Patch Changes

  • Updated dependencies [e40659d]
  • Updated dependencies [e40659d]
  • Updated dependencies [e40659d]
    • @nexcraft/forge@0.10.0

1.0.1

Patch Changes

  • c074759: fix(release): build workspace packages before publishing

    Critical Fix: v1.0.0 packages were published without compiled dist/ folders, making them completely unusable.

    Root Cause:
    Release workflow only built main @nexcraft/forge package, not workspace packages (forge-react, forge-vue, forge-angular, forge-rhf).

    Fix:

    • Add build step for all workspace packages before changeset publish
    • Ensures dist/ folders exist for all packages
    • Validates packages are usable after installation

    Impact:

    • ✅ @nexcraft/forge-react@1.0.1 will include dist/ folder
    • ✅ @nexcraft/forge-vue@1.0.1 will include dist/ folder
    • ✅ @nexcraft/forge-angular@1.0.1 will include dist/ folder
    • ✅ @nexcraft/forge-rhf@1.0.1 will include dist/ folder

    Affected Users:
    Anyone who installed v1.0.0 packages encountered:

    Error: Cannot find module './dist/index.js'
    

    Resolution:
    Upgrade to v1.0.1 when released:

    npm install @nexcraft/forge-react@latest
    npm install @nexcraft/forge-vue@latest
    npm install @nexcraft/forge-angular@latest
    npm install @nexcraft/forge-rhf@latest

    Apologies:
    We sincerely apologize for this critical oversight. We've added additional validation to prevent this from happening again.

    • @nexcraft/forge@0.9.0

1.0.0

Patch Changes

  • Updated dependencies [7a38d60]
  • Updated dependencies [7a38d60]
    • @nexcraft/forge@0.9.0

0.3.0

Minor Changes

  • 842b2e4: chore: increment beta versions to skip unpublished versions

    • Bump framework packages to 0.2.0-beta.0 to skip past unpublished 0.1.1-beta.0
    • Bump forge-mcp-figma to 0.2.0-beta.0 to skip past unpublished 0.1.1-beta.0
    • Bump forge-rhf to 0.4.0-beta.0 to skip past unpublished 0.3.1-beta.0 and 1.0.0-beta.0
  • 6515991: Phase 15.4: Complete React package extraction and framework separation

    • Extract React integration to separate @nexcraft/forge-react package
    • Remove all framework integrations from core @nexcraft/forge package
    • Update @nexcraft/forge-rhf to use new React package
    • Achieve pure web components core architecture
    • Set up linked package releases for coordinated versioning

Patch Changes

  • Updated dependencies [6515991]
    • @nexcraft/forge@0.8.0

2.0.0

Patch Changes

  • Updated dependencies
    • @nexcraft/forge@0.9.0

1.0.0

Patch Changes

  • Updated dependencies
    • @nexcraft/forge@0.8.0

@nexcraft/forge-react@1.0.4

06 Oct 02:12
9b4e0c2

Choose a tag to compare

Patch Changes

  • 24e826f: feat(ssr): comprehensive fallback CSS for styled SSR components

    Critical Fix for Unstyled Forms:

    • ✅ New fallback CSS file provides styling for all SSR fallback components
    • ✅ Fixes issue where components rendered as unstyled HTML inputs
    • ✅ Matches web component visual appearance during SSR

    What's Included:

    • Comprehensive styles for all form components (Input, Select, Checkbox, Switch, DatePicker)
    • Button variants and sizes (primary, secondary, outline, ghost)
    • UI components (Card, Badge, LoadingSpinner)
    • Responsive and accessible design

    How to Use:

    // Add to your app layout or root component
    import '@nexcraft/forge-react/fallbacks.css';

    Styled Components:

    • .forge-input - Text inputs with variants and sizes
    • .forge-checkbox - Checkbox with focus states
    • .forge-switch - Toggle switch with animations
    • .forge-select - Select dropdown with custom arrow
    • .forge-date-picker - Date input styling
    • .forge-button - Button variants (primary, secondary, outline, ghost)
    • .forge-card - Card with shadow and hover effects
    • .forge-badge - Badge variants (primary, success, warning, error)
    • .forge-loading-spinner - Animated spinner with sizes

    Impact:

    • ✅ Forms look styled immediately during SSR
    • ✅ No flash of unstyled content (FOUC)
    • ✅ Components visually upgrade when web components load
    • ✅ Better UX for users on slow connections

    Related Issues Fixed:

  • 24e826f: fix(ssr): improve hydration timing with customElements.whenDefined()

    Critical Timing Fix:

    • ✅ Components now properly upgrade from fallback to web component when loaded
    • ✅ Fixes issue where components stayed as fallback HTML indefinitely
    • ✅ Handles race condition between component render and web component registration

    What Changed:

    • Added customElements.whenDefined() detection in createUnifiedWrapper
    • Components wait for web component definition before upgrading
    • Graceful fallback if web components never load

    Technical Details:

    // Before: Only checked if component was already defined
    const shouldUpgrade = customElements.get(tagName) !== undefined;
    
    // After: Waits for component to be defined
    if (shouldUpgrade) {
      upgradeToWebComponent();
    } else {
      customElements.whenDefined(tagName).then(() => {
        upgradeToWebComponent();
      });
    }

    Impact:

    • ✅ Components upgrade correctly after web components load
    • ✅ Handles dynamic import scenarios
    • ✅ Handles Next.js Script with beforeInteractive strategy
    • ✅ No hydration mismatches or warnings

    Related Issues Fixed:

    • "Components stay as fallbacks" - now properly upgrade
    • Race condition with dynamic import('@nexcraft/forge')
    • Timing issues with Next.js Script loading
  • 24e826f: feat(ssr): automatic 'use client' directive for Next.js App Router compatibility

    Critical SSR Fix:

    • ✅ Automatic 'use client' directive added to all React components during build
    • ✅ Components work in Next.js App Router without manual 'use client' directives
    • ✅ Zero-config SSR support for all React frameworks

    What Changed:

    • Build script automatically prepends 'use client'; to all compiled components
    • 40 component files now have 'use client' directive
    • No changes needed in source files (framework-agnostic)

    Impact:

    • ✅ Next.js App Router: Components work automatically
    • ✅ Remix: Full SSR support
    • ✅ Gatsby: No changes needed
    • ✅ No breaking changes - existing code works better

    Before (v1.0.3):

    'use client'; // User must add this
    import { ForgeButton } from '@nexcraft/forge-react';
    
    export function MyComponent() {
      return <ForgeButton>Click</ForgeButton>;
    }

    After (v1.0.4):

    // No 'use client' needed - package handles it!
    import { ForgeButton } from '@nexcraft/forge-react';
    
    export function MyComponent() {
      return <ForgeButton>Click</ForgeButton>;
    }

    Technical Details:

    • Post-build script: packages/forge-react/scripts/add-use-client.js
    • Build command updated: tsc && node scripts/add-use-client.js
    • Follows industry standard pattern (Material UI approach)
    • @nexcraft/forge@0.9.0

@nexcraft/forge-react@1.0.3

05 Oct 03:46
663b7d1

Choose a tag to compare

Patch Changes

  • 2f08880: fix(fallback): pass through id prop in all form component fallbacks

    Bug Fix:

    • Fixed duplicate ID warning when multiple form components use the same id prop
    • All form input fallback renderers now properly pass through the id attribute

    What Changed:

    • ForgeInput: Now passes id prop to fallback <input> element
    • ForgeSwitch: Now passes id prop to fallback checkbox input
    • ForgeSelect: Now passes id prop to fallback <select> element
    • ForgeDatePicker: Now passes id prop to fallback date input

    Impact:

    • ✅ Fixes browser warning: "Found N elements with non-unique id"
    • ✅ Proper label associations with htmlFor attribute
    • ✅ Better accessibility for screen readers
    • ✅ No breaking changes

    Before:

    <ForgeInput id="email" />
    // Fallback: <input /> (id ignored)

    After:

    <ForgeInput id="email" />
    // Fallback: <input id="email" />
  • 2f08880: refactor(types): improve TypeScript type safety across React integration

    Type Safety Improvements:

    • ✅ Replaced any[] with proper typed arrays (GridSortConfig[], DataTableRow[], TreeNode[])
    • ✅ Added proper type definitions for data structures (GridSortConfig, DataTableRow, TreeNode)
    • ✅ Improved utility types (removed 20+ any casts)
    • ✅ Better DOM/React type annotations

    What Changed:

    • ForgeDataGridProps.onSortChanged: any[]GridSortConfig[]
    • ForgeDataTableProps.data: Record<string, any>[]DataTableRow[]
    • ForgeDataTableProps.onSelectionChange: any[]DataTableRow[]
    • ForgeTreeViewProps.data.children: any[]TreeNode[] (recursive)
    • createUnifiedWrapper: Improved type annotations for refs and props

    Impact:

    • ✅ Better IDE autocomplete and IntelliSense
    • ✅ Catch type errors at compile time
    • ✅ Improved developer experience
    • ✅ No breaking changes (compatible types)

    Remaining Work:
    Some component-specific fallback renderers still use unknown for flexibility. These are non-critical and will be addressed incrementally.

    • @nexcraft/forge@0.9.0

@nexcraft/forge-react@1.0.2

05 Oct 02:26
3836a69

Choose a tag to compare

Patch Changes

  • d971b78: fix(ssr): proper SSR architecture - NO 'use client' in library files

    Critical Architecture Fix:

    • REMOVED 'use client' from all library files (was polluting all consumers)
    • Library files stay framework-agnostic (no Next.js-specific directives)
    • Consumers add 'use client' to their own files when needed
    • Matches industry standard (Radix UI, Headless UI, Framer Motion)

    What Changed:

    • ✅ ForgeProvider: NO 'use client' (consumers add it)
    • ✅ createUnifiedWrapper: NO 'use client' (consumers add it)
    • ✅ Added clear documentation: "add 'use client' to your file"
    • ✅ SSR demo shows correct usage pattern

    Why This Matters:

    • Wrong: Library has 'use client' → ALL consumers forced to client-side
    • Correct: Consumers add 'use client' → They control client boundaries

    Usage Pattern (Correct):

    // ✅ YOUR file - add 'use client' here
    'use client';
    import { ForgeButton } from '@nexcraft/forge-react';
    
    export function MyComponent() {
      return <ForgeButton>Click</ForgeButton>;
    }

    Impact:

    • ✅ No forced client-side rendering for all consumers
    • ✅ Consumers control their own SSR/client boundaries
    • ✅ Better performance (only client components when needed)
    • ✅ Framework-agnostic library architecture
    • @nexcraft/forge@0.9.0

@nexcraft/forge@0.9.0

04 Oct 02:29
22840b5

Choose a tag to compare

Minor Changes

  • 7a38d60: Add selective imports for all 28 components

    • Previously only 7 components had selective imports (button, input, checkbox, select, alert, card, modal)
    • Now all 28 components support selective imports for optimal tree-shaking
    • Auto-discovery system ensures new components automatically get exports
    • Fixes customer issue where ForgeProgress, ForgeBadge, ForgeAvatar, ForgeDropdown were missing

    New selective imports available:

    • ForgeAccordion, ForgeAspectRatio, ForgeAvatar, ForgeBadge
    • ForgeDataGrid, ForgeDataTable, ForgeDatePicker, ForgeDropdown
    • ForgeFormField, ForgeIcon, ForgeMultiSelect, ForgeNavigationBar
    • ForgePagination, ForgeProgress, ForgeRadioGroup, ForgeSkeleton
    • ForgeSwitch, ForgeTabs, ForgeToast, ForgeTooltip, ForgeTreeView

    Usage:

    import { ForgeProgress } from '@nexcraft/forge/progress';
    import { ForgeBadge } from '@nexcraft/forge/badge';
    import { ForgeAvatar } from '@nexcraft/forge/avatar';

Patch Changes

  • 7a38d60: Refactor test suite to prevent resource contention and timeouts

    • Split tests into fast unit tests (1147 tests) and slow accessibility tests (35 tests)
    • Add test:unit and test:a11y npm scripts for separate execution
    • Update test:coverage to run both suites sequentially
    • Accessibility tests now run in single-fork mode to prevent timeouts
    • Coverage maintained at 87% (above 70% threshold)
    • All 1182 tests now pass reliably in CI without timeouts

    Benefits:

    • Faster test execution (unit ~13s, a11y ~3s vs previous 30s+ with timeouts)
    • No more flaky accessibility test failures due to resource contention
    • Better test organization for future maintenance

@nexcraft/forge-vue@1.0.1

04 Oct 03:11
6c36ec5

Choose a tag to compare

Patch Changes

  • c074759: fix(release): build workspace packages before publishing

    Critical Fix: v1.0.0 packages were published without compiled dist/ folders, making them completely unusable.

    Root Cause:
    Release workflow only built main @nexcraft/forge package, not workspace packages (forge-react, forge-vue, forge-angular, forge-rhf).

    Fix:

    • Add build step for all workspace packages before changeset publish
    • Ensures dist/ folders exist for all packages
    • Validates packages are usable after installation

    Impact:

    • ✅ @nexcraft/forge-react@1.0.1 will include dist/ folder
    • ✅ @nexcraft/forge-vue@1.0.1 will include dist/ folder
    • ✅ @nexcraft/forge-angular@1.0.1 will include dist/ folder
    • ✅ @nexcraft/forge-rhf@1.0.1 will include dist/ folder

    Affected Users:
    Anyone who installed v1.0.0 packages encountered:

    Error: Cannot find module './dist/index.js'
    

    Resolution:
    Upgrade to v1.0.1 when released:

    npm install @nexcraft/forge-react@latest
    npm install @nexcraft/forge-vue@latest
    npm install @nexcraft/forge-angular@latest
    npm install @nexcraft/forge-rhf@latest

    Apologies:
    We sincerely apologize for this critical oversight. We've added additional validation to prevent this from happening again.

    • @nexcraft/forge@0.9.0