Skip to content

Releases: studiometa/foehn-framework

0.4.1

10 Feb 13:40
0.4.1
6d900fd

Choose a tag to compare

What's Changed

Changed

  • Installer: Copy .env.example to .env during composer install ([aabcca6], [#86])
  • Starter: Remove .env hook from DDEV config ([aabcca6], [#86])
  • Starter: Remove project name from DDEV config to inherit from folder ([8525092])

Fixed

  • Starter: Add index.php file required by WordPress for standalone themes ([df9c428], [#85])
  • Starter: Disable DDEV settings management ([df9c428], [#85])
  • Starter: Refactor menus and image sizes to use dedicated classes ([df9c428], [#85])
  • Starter: Fix FoehnConfig parameter name (discoveryCacheStrategy) ([df9c428], [#85])
  • Starter: Fix controllers to implement TemplateControllerInterface ([df9c428], [#85])
  • Starter: Fix taxonomies to extend Timber\Term ([df9c428], [#85])
  • Starter: Add front-page to ArchiveController templates ([df9c428], [#85])
  • Starter: Fix deprecated post.preview usage in card-post template ([df9c428], [#85])
  • Starter: Move index.php to correct theme folder ([f1526a3])

Full Changelog: https://github.com/studiometa/foehn-framework/blob/0.4.1/CHANGELOG.md

Installation

# Core framework
composer require studiometa/foehn:^0.4.1

# New project from starter
composer create-project studiometa/foehn-starter my-project

0.4.0

10 Feb 08:42

Choose a tag to compare

What's Changed

Added

  • Transform repository into a monorepo with three packages ([3c65232], [#83]):
    • studiometa/foehn — core framework (moved to packages/foehn/)
    • studiometa/foehn-installer — Composer plugin that generates WordPress web root, symlinks, and wp-config.php ([fd46199])
    • studiometa/foehn-starter — starter theme with models, taxonomies, hooks, controllers, templates, and DDEV config ([48d7ce0])
  • Add GenericLoginErrors security hook to prevent username enumeration on login ([74ca34f])
  • Add vlucas/phpdotenv as framework dependency for .env file loading ([4a467ea])
  • Add monorepo split CI workflow to distribute packages to read-only repos on tag push ([03365b6], [d185927])
  • Add DDEV configuration for starter theme with automated WordPress setup ([41bc400])

Changed

  • BREAKING: Repository renamed from studiometa/foehn to studiometa/foehn-framework ([09f8e64])
  • Starter theme follows documented conventions: Controllers/, ContextProviders/, Taxonomies/ separate from Models/, templates/ with layouts/components/pages/ ([07d8858], [cf0ff30])
  • Update all documentation to use templates/ directory and Taxonomies/ namespace ([ed29249])
  • Update Mago guard rules: Models restricted to Timber\Post, new Taxonomies rule ([ed29249])

Full Changelog: https://github.com/studiometa/foehn-framework/blob/0.4.0/CHANGELOG.md

Installation

# Core framework
composer require studiometa/foehn:^0.4.0

# New project from starter
composer create-project studiometa/foehn-starter my-project

0.3.0

09 Feb 19:46

Choose a tag to compare

What's Changed

Added

  • Add Cache::tags() for tagged cache invalidation (43f1f95, #78)
  • Add DiscoveryLocation and WpDiscoveryItems for location-aware discovery (758b19f, #79)
  • Add ClassScanner for dedicated PSR-4 class scanning (50466bf, #79)
  • Add QueryFiltersConfig and QueryFiltersHook for URL-based archive filtering (a487181, #77)
  • Add QueryExtension with query_* Twig helpers for filter UI building (5911c2c, #77)
  • Add Render API REST endpoint for cacheable template rendering via AJAX (7d9f33a, #67)
  • Make FoehnConfig discoverable via app/foehn.config.php (0aaafb3, #80)
  • Add API documentation for all config classes, discovery system, and view engine (556dd93, #80)
  • Add configuration and custom discovery guides (59f39e3, #80)
  • Add comprehensive migration guide from wp-toolkit to Føhn (bc3227a, #81)

Changed

  • BREAKING: Align WpDiscovery interface with Tempest conventions: discover() now receives DiscoveryLocation, items managed via WpDiscoveryItems (758b19f, #79)
  • BREAKING: Discovery cache format changed to location-grouped structure (array<string, array<string, list<array>>>) (758b19f, #79)

Fixed

  • Fix user config files being overwritten by framework defaults (95ba3d7, #74)

Full Changelog: https://github.com/studiometa/foehn/blob/0.3.0/CHANGELOG.md

Installation

composer require studiometa/foehn:^0.3.0

0.2.4

09 Feb 10:07
0.2.4
e0f69f4

Choose a tag to compare

What's Changed

Fixed

  • Include Timber global context (site, theme, user, etc.) in TimberViewEngine (af343d8, #66)

Full Changelog: https://github.com/studiometa/foehn/blob/0.2.4/CHANGELOG.md

Installation

composer require studiometa/foehn:^0.2.4

0.2.3

05 Feb 16:13
0.2.3
524555b

Choose a tag to compare

What's Changed

Added

  • Add BlockMarkupExtension with wp_block_start(), wp_block_end() and wp_block() Twig functions for block pattern templates (b94e17c, #63)
  • Add Cache helper for WordPress transients with remember() pattern (aa974a8, #64)
  • Add Log helper for debug logging with PSR-3 style levels (aa974a8, #64)

Removed

  • Remove Validator helper, recommend third-party packages instead (54bfe25)

Fixed

  • Fix static analysis issues (76a4828)
  • Fix VitePress build by escaping Twig syntax in docs (90e4906)

Full Changelog: https://github.com/studiometa/foehn/blob/0.2.3/CHANGELOG.md

Installation

composer require studiometa/foehn:^0.2.3

0.2.2

05 Feb 14:46
0.2.2
194d811

Choose a tag to compare

What's Changed

Added

  • Add WebpackManifest helper for enqueuing assets from @studiometa/webpack-config manifests (edd6216, #60)
  • Bundle studiometa/twig-toolkit extension with html_classes(), html_styles(), html_attributes() and {% element %} tag (5a7b8cf, #62)

Full Changelog: https://github.com/studiometa/foehn/blob/0.2.2/CHANGELOG.md

Installation

composer require studiometa/foehn:^0.2.2

0.2.1

05 Feb 13:55
0.2.1
12efeae

Choose a tag to compare

What's Changed

Added

  • Add WP helper for typed access to WordPress globals (WP::db(), WP::query(), WP::post(), WP::user()) (db95247, #58)
  • Add Env helper for environment detection (Env::isProduction(), Env::isDevelopment(), Env::isDebug()) (db95247, #58)
  • Add #[AsTwigExtension] attribute for declarative Twig extension registration (63edb11, #53)

Fixed

  • Fix ViewEngineInterface not registered in DI container for constructor injection (1f5db42, #57)

Full Changelog: https://github.com/studiometa/foehn/blob/0.2.1/CHANGELOG.md

Installation

composer require studiometa/foehn:^0.2.1

0.2.0

05 Feb 11:52
0.2.0
f2e787b

Choose a tag to compare

What's Changed

Added

  • Add bundled Mago config for theme conventions enforcement (329c89b, #52)
  • Add enhanced CLI scaffolding commands with --dry-run support (4e0f58b, #51)
  • Add #[AsImageSize] attribute for declarative image size registration with auto theme support (614faa0, #47)
  • Add #[AsAcfOptionsPage] attribute for ACF options pages with auto-discovery and AcfOptionsService helper (4b52d3d, #49)
  • Add #[AsAcfFieldGroup] attribute for non-block ACF field groups with simplified location syntax (296e69f, #48)
  • Add #[AsMenu] attribute for declarative navigation menu registration with auto-context injection (2ce9f77, #46)
  • Add theme conventions documentation with directory structure, naming rules, and migration guide (7f180c4, #43)
  • Add DisableBlockStyles cleanup hook to dequeue Gutenberg block styles (a6152ef, #44)
  • Add built-in ACF field fragments for reusable field groups (0b1c707, #45):
    • ButtonLinkBuilder: link with style/size options
    • ResponsiveImageBuilder: desktop/mobile image variants
    • SpacingBuilder: padding top/bottom controls
    • BackgroundBuilder: color, image, and overlay background

Changed

  • BREAKING: Rename ViewComposer to ContextProvider (8a4c503, #50)
    • #[AsViewComposer]#[AsContextProvider]
    • ViewComposerInterfaceContextProviderInterface
    • compose() method → provide() method
    • ViewComposerRegistryContextProviderRegistry
    • ViewComposerDiscoveryContextProviderDiscovery
    • make:view-composer CLI → make:context-provider

Full Changelog: https://github.com/studiometa/foehn/blob/0.2.0/CHANGELOG.md

Installation

composer require studiometa/foehn:^0.2.0

0.1.0

04 Feb 23:16
0.1.0
5493a0b

Choose a tag to compare

What's Changed

Changed

  • REST routes without explicit permission now require edit_posts capability instead of just authentication (cb284f8, #32)

Added

  • Add debug config option for logging discovery failures via trigger_error() (3d295e9, #31)
  • Add ValidatesFields trait for optional ACF block field validation (04c283c, #24)
  • Add rest_default_capability config option to customize default REST route permission (343e094, #32)
  • Add discovery:warm CLI command to pre-warm discovery cache during deployment (685132d, #30)
  • Add security documentation for shortcode output escaping with comprehensive XSS prevention guide (316cbff, #29)
  • Transform ACF block fields via Timber's ACF integration (8e0d11e, !19):
    • Transforms raw ACF values (image IDs, post IDs) to Timber objects
    • Supports: image, gallery, file, post_object, relationship, taxonomy, user, date_picker
    • Handles nested fields recursively (repeater, flexible_content, group)
    • New acf_transform_fields config option (default: true) to enable/disable
  • Add make:controller command to scaffold template controllers (fe277ae, #20)
  • Add make:hooks command to scaffold hook classes (2e98402, #20)
  • Add --fields flag to make:acf-block for auto-generating ACF fields (45a067d, #20)
  • Add VideoEmbed helper and Twig extension for YouTube/Vimeo URL transformation (c19eefb, #18)
  • Add opt-in reusable hook classes for common WordPress patterns (1bac8e8, #13):
    • Cleanup: CleanHeadTags, CleanContent, CleanImageSizes, DisableEmoji, DisableFeeds, DisableOembed, DisableGlobalStyles
    • Security: SecurityHeaders, DisableVersionDisclosure, DisableXmlRpc, DisableFileEditor, RestApiAuth
    • GDPR: YouTubeNoCookieHooks
  • Add hooks config option in Kernel::boot() to activate opt-in hook classes (1bac8e8, #13)
  • Add #[AsTimberModel] attribute for Timber class map registration without post type/taxonomy registration (b6fd69a, #11)
  • Auto-initialize Timber in Kernel bootstrap with timber_templates_dir config option (fae5391, #12)
  • Add hierarchical, menuPosition, labels, rewrite (array|false|null) to #[AsPostType] (b544790, #7)
  • Add labels, rewrite (array|false|null) to #[AsTaxonomy] (b544790, #7)
  • Add WordPress function stubs for unit testing apply() code paths (e3988c7, #7)
  • Add discover() and apply() tests for all 11 discovery classes — 359 tests, 1067 assertions (d7cbe4c, #7)
  • Add discovery cache for production performance (adc01ed, #2)
  • Add VitePress documentation with guides and API reference (d80fe88, #3)
  • Document #[AsTimberModel], timber_templates_dir, hooks config, and built-in hooks (3ec60b1, !17)
  • Document VideoEmbed helper, ACF field transformation, and make:controller/make:hooks CLI commands (433abae, !21)
  • Add GitHub Pages deployment workflow (02d6425, #3)

Changed

  • Decouple discoveries from Tempest's Discovery interface, replace with WpDiscovery + IsWpDiscovery (748aace, #7)
  • Rewrite DiscoveryRunner to own the full lifecycle: class scanning via Composer PSR-4, phased apply() at correct WP hooks (b3d5134, #7)
  • Tempest is now used only for the DI container, not for discovery (b3d5134, #7)

Fixed

  • Fix discovery system conflicts with Tempest lifecycle — double discovery, incorrect timing, uninitialized properties (748aace, #7)
  • Fix root path passed to Tempest causing "Could not locate composer.json" error (f0b4f27, #5)

Full Changelog: https://github.com/studiometa/foehn/blob/0.1.0/CHANGELOG.md

Installation

composer require studiometa/foehn:^0.1.0