Skip to content

Changelog

Daniel S edited this page Jul 2, 2026 · 4 revisions

Changelog

All notable changes to DesignFoundation are documented here. The format follows Keep a Changelog and the project follows Semantic Versioning.


[Unreleased]


[1.1.2]

This patch rounds out the text input story with a proper multiline field, fills a gap in the type scale, and ships a handful of navigation and accessibility improvements that had been accumulating.

Added

  • DFTextArea — multiline text input styled to match DFTextField end-to-end: same label, placeholder, focus border, validation state, and disabled appearance. minLines / maxLines bounds the visible height and the editor scrolls when content overflows. Closes the last gap in the forms input set.
  • DFTextScale.labelLarge — new scale step between .headline and .label, rendered as .callout semibold. Use it for card section headers, list item titles, and any spot where .headline feels too heavy but .label doesn't carry enough weight.
  • DFNavigationBar leading + trailing overload — modifier now accepts both a leading and a trailing content builder in a single call.
  • DFTabItem.badge — supports .count(Int) and .dot variants for surfacing unread counts and presence indicators on tab items.
  • DFSidebarItem.badge — supports .count(Int), .dot, and .text(String) variants.
  • DFTooltip placement parameter — accepts a DFTooltipPlacement value (.top, .bottom, .leading, .trailing) to control which side the bubble extends from.

Changed

  • DFTypographyTokenslabelLarge token added with a matching default value so the new scale step is available wherever token access is used.
  • CLAUDE.md component referenceDFTextArea added to the Text Fields section with its full call-site signature and available parameters.

Fixed

  • DFCard — press animation now suppresses correctly when accessibilityReduceMotion is enabled.
  • DFProgressBar.circular style centers properly in HStack layouts.
  • DFSkeleton — shimmer gradient no longer produces visual artifacts on ProMotion displays at 120 Hz.

[1.1.1]

This release ships the forms and data grid systems, closes the gap on table selection, and adds comprehensive AI agent context files so large-language-model tools can generate idiomatic DesignFoundation code without extra prompting.

Added

Data Components

  • DFDataTable — sortable, selectable table with single and multi-row selection modes and macOS keyboard navigation
  • DFDataGrid — editable, paginated, sortable grid with DFDataGridColumn (including validator and editor builders) and DFDataGridLargeDatasetStrategy (.pagination(pageSize:) / .virtualScrolling / .none)
  • DFDataGridDataSource protocol for async data loading

Forms and Validation

  • DFFormState@Observable multi-field form coordinator with register(fieldId:validators:), binding(for:), state(for:), validate(), touchAll(), reset(), and isValid
  • DFValidatedTextField — convenience wrapper connecting a field to a DFFormState registration
  • DFFieldValidator protocol — composable, Sendable validation building block
  • Built-in validators: DFRequiredValidator, DFEmailValidator, DFMinLengthValidator, DFMaxLengthValidator, DFRegexValidator

AI Agent Guidance

  • CLAUDE.md — component reference and behavioral rules for Claude Code and other AI agents operating in projects that depend on DesignFoundation
  • AGENTS.md — equivalent guidance for OpenAI Codex and compatible runtimes

Fixed

  • DFSecureField reveal toggle not respecting isEnabled environment value
  • DFPicker .segmented style not applying theme.colors.primary tint on macOS 15
  • DFFormState validate() not running validators for fields with empty initial values

[1.0.3]

Added

  • Semantic text styles on DFText: .display, .title, .headline, .body, .label, .caption
  • DFTextStyle now exposes .lineSpacing and .tracking in addition to .font
  • DFTypographyTokens constructor accepts custom DFTextStyle values per scale level
  • .dfTextStyle(_:) cascade modifier — apply to a container to style all child DFText instances

Fixed

  • theme.colors.surfaceElevated resolving to wrong adaptive color on macOS 15 in dark mode
  • DFDivider .labeled style label text truncating on narrow layouts
  • DFSkeleton gradient bounds calculation off-by-one on non-3x displays

[1.0.0]

Initial public release.

Added

  • DFTheme — central theme value type with seven token namespaces
  • DFThemePreset — paired light/dark DFTheme with .dfThemePreset(_:) modifier
  • DFColorTokens (19 semantic color properties)
  • DFSpacingTokens (xs / sm / md / lg / xl / xxl)
  • DFRadiusTokens (none / sm / md / lg / full)
  • DFTypographyTokens (display / title / headline / body / label / caption)
  • DFAnimationTokens (fast / default / slow)
  • DFShadowTokens (none / sm / md / lg)
  • DFComponentTokens with per-component overrides for button, text field, card, avatar, badge, icon
  • Four built-in presets: .slate, .aurora, .copper, .sage
  • DFPlatformContext and DFPlatformVariant for internal cross-platform adaptation
  • Buttons: DFButton.filled, .outlined, .ghost, .tinted, .glass; DFButtonRole; DFButtonStyle protocol
  • Inputs: DFTextField, DFSecureField, DFToggle, DFSlider, DFPicker, DFDatePicker, DFCheckbox — each with style protocols and .glass variants
  • Validation: DFValidationState enum
  • Layout: DFCard.elevated, .outlined, .filled, .glass; DFCardStyle protocol
  • Primitives: DFBadge, DFAvatar, DFIcon, DFText, DFDivider — each with style protocols
  • Lists: DFList, DFListRow with accessories (.navigation, .checkmark, .toggle, .badge, .custom)
  • Tables: DFTable with DFTableColumn, sort support, and DFColumnWidth
  • Loading: DFProgressBar, DFSkeleton
  • Navigation: DFSidebar, DFTabBar, dfNavigationBar modifier — all cross-platform, no #if os() required
  • Overlays: DFModal, DFSheet, DFPopover, DFTooltip
  • Feedback: DFAlert, DFAlertAction, DFAlertActionRole; DFToast, DFToastQueue, DFToastMessage, DFToastSeverity
  • Swift 6 strict concurrency — all public types conform to Sendable

[0.6.0]

Beta milestone: navigation components stabilized.

Added

  • DFSidebar with DFSidebarItem, DFSidebarSection, and three style variants
  • DFTabBar with DFTabItem and three style variants
  • dfNavigationBar view modifier with display modes and style variants
  • DFPlatformContext injected alongside DFTheme by .dfTheme(_:)

Fixed

  • DFModal not presenting on macOS when called from a toolbar button
  • DFSheet detent .medium overshooting target height on devices with notch

[0.5.0]

Beta milestone: overlay and feedback components added.

Added

  • DFModal, DFSheet, DFPopover, DFTooltip
  • DFAlert with DFAlertConfiguration, DFAlertAction, DFAlertActionRole
  • DFToast, DFToastQueue, DFToastMessage, DFToastSeverity

[0.4.0]

Beta milestone: list and data-display components added.

Added

  • DFList with optional delete and reorder support
  • DFListRow with all accessory types
  • DFTable and DFTableColumn
  • DFProgressBar with linear and circular styles
  • DFSkeleton with four shape variants and shimmer animation

[0.3.0]

Beta milestone: primitive components added.

Added

  • DFBadge — numeric, text, and dot variants with four styles
  • DFAvatar — initials fallback, URL image, presence badge
  • DFIcon — SF Symbol and custom image with five sizes
  • DFText — six semantic text styles
  • DFDivider — horizontal, vertical, and labeled variants

[0.2.0]

Beta milestone: layout component and all input controls added.

Added

  • DFCard with press animation and four style variants
  • DFTextField, DFSecureField, DFValidationState
  • DFToggle, DFSlider, DFPicker, DFDatePicker, DFCheckbox

[0.1.0]

Alpha release: theming system and DFButton.

Added

  • DFTheme, DFThemePreset, .dfTheme(_:), .dfThemePreset(_:)
  • All seven token namespaces
  • .slate, .aurora, .copper, .sage presets
  • DFButton with .filled, .outlined, .ghost styles

For migration guides between major versions, see the Releases page.

Clone this wiki locally