Releases: studiometa/foehn-framework
Releases · studiometa/foehn-framework
0.4.1
What's Changed
Changed
- Installer: Copy
.env.exampleto.envduringcomposer install([aabcca6], [#86]) - Starter: Remove
.envhook from DDEV config ([aabcca6], [#86]) - Starter: Remove project name from DDEV config to inherit from folder ([8525092])
Fixed
- Starter: Add
index.phpfile 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
FoehnConfigparameter name (discoveryCacheStrategy) ([df9c428], [#85]) - Starter: Fix controllers to implement
TemplateControllerInterface([df9c428], [#85]) - Starter: Fix taxonomies to extend
Timber\Term([df9c428], [#85]) - Starter: Add
front-pageto ArchiveController templates ([df9c428], [#85]) - Starter: Fix deprecated
post.previewusage in card-post template ([df9c428], [#85]) - Starter: Move
index.phpto 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-project0.4.0
What's Changed
Added
- Transform repository into a monorepo with three packages ([3c65232], [#83]):
studiometa/foehn— core framework (moved topackages/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
GenericLoginErrorssecurity hook to prevent username enumeration on login ([74ca34f]) - Add
vlucas/phpdotenvas framework dependency for.envfile 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/foehntostudiometa/foehn-framework([09f8e64]) - Starter theme follows documented conventions:
Controllers/,ContextProviders/,Taxonomies/separate fromModels/,templates/withlayouts/components/pages/([07d8858], [cf0ff30]) - Update all documentation to use
templates/directory andTaxonomies/namespace ([ed29249]) - Update Mago guard rules:
Modelsrestricted toTimber\Post, newTaxonomiesrule ([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-project0.3.0
What's Changed
Added
- Add
Cache::tags()for tagged cache invalidation (43f1f95, #78) - Add
DiscoveryLocationandWpDiscoveryItemsfor location-aware discovery (758b19f, #79) - Add
ClassScannerfor dedicated PSR-4 class scanning (50466bf, #79) - Add
QueryFiltersConfigandQueryFiltersHookfor URL-based archive filtering (a487181, #77) - Add
QueryExtensionwithquery_*Twig helpers for filter UI building (5911c2c, #77) - Add Render API REST endpoint for cacheable template rendering via AJAX (7d9f33a, #67)
- Make
FoehnConfigdiscoverable viaapp/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
WpDiscoveryinterface with Tempest conventions:discover()now receivesDiscoveryLocation, items managed viaWpDiscoveryItems(758b19f, #79) - BREAKING: Discovery cache format changed to location-grouped structure (
array<string, array<string, list<array>>>) (758b19f, #79)
Fixed
Full Changelog: https://github.com/studiometa/foehn/blob/0.3.0/CHANGELOG.md
Installation
composer require studiometa/foehn:^0.3.00.2.4
What's Changed
Fixed
Full Changelog: https://github.com/studiometa/foehn/blob/0.2.4/CHANGELOG.md
Installation
composer require studiometa/foehn:^0.2.40.2.3
What's Changed
Added
- Add
BlockMarkupExtensionwithwp_block_start(),wp_block_end()andwp_block()Twig functions for block pattern templates (b94e17c, #63) - Add
Cachehelper for WordPress transients withremember()pattern (aa974a8, #64) - Add
Loghelper for debug logging with PSR-3 style levels (aa974a8, #64)
Removed
- Remove
Validatorhelper, recommend third-party packages instead (54bfe25)
Fixed
Full Changelog: https://github.com/studiometa/foehn/blob/0.2.3/CHANGELOG.md
Installation
composer require studiometa/foehn:^0.2.30.2.2
What's Changed
Added
- Add
WebpackManifesthelper for enqueuing assets from@studiometa/webpack-configmanifests (edd6216, #60) - Bundle
studiometa/twig-toolkitextension withhtml_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.20.2.1
What's Changed
Added
- Add
WPhelper for typed access to WordPress globals (WP::db(),WP::query(),WP::post(),WP::user()) (db95247, #58) - Add
Envhelper for environment detection (Env::isProduction(),Env::isDevelopment(),Env::isDebug()) (db95247, #58) - Add
#[AsTwigExtension]attribute for declarative Twig extension registration (63edb11, #53)
Fixed
Full Changelog: https://github.com/studiometa/foehn/blob/0.2.1/CHANGELOG.md
Installation
composer require studiometa/foehn:^0.2.10.2.0
What's Changed
Added
- Add bundled Mago config for theme conventions enforcement (329c89b, #52)
- Add enhanced CLI scaffolding commands with
--dry-runsupport (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 andAcfOptionsServicehelper (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
DisableBlockStylescleanup 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 optionsResponsiveImageBuilder: desktop/mobile image variantsSpacingBuilder: padding top/bottom controlsBackgroundBuilder: color, image, and overlay background
Changed
- BREAKING: Rename ViewComposer to ContextProvider (8a4c503, #50)
#[AsViewComposer]→#[AsContextProvider]ViewComposerInterface→ContextProviderInterfacecompose()method →provide()methodViewComposerRegistry→ContextProviderRegistryViewComposerDiscovery→ContextProviderDiscoverymake:view-composerCLI →make:context-provider
Full Changelog: https://github.com/studiometa/foehn/blob/0.2.0/CHANGELOG.md
Installation
composer require studiometa/foehn:^0.2.00.1.0
What's Changed
Changed
- REST routes without explicit permission now require
edit_postscapability instead of just authentication (cb284f8, #32)
Added
- Add
debugconfig option for logging discovery failures viatrigger_error()(3d295e9, #31) - Add
ValidatesFieldstrait for optional ACF block field validation (04c283c, #24) - Add
rest_default_capabilityconfig option to customize default REST route permission (343e094, #32) - Add
discovery:warmCLI 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_fieldsconfig option (default: true) to enable/disable
- Add
make:controllercommand to scaffold template controllers (fe277ae, #20) - Add
make:hookscommand to scaffold hook classes (2e98402, #20) - Add
--fieldsflag tomake:acf-blockfor auto-generating ACF fields (45a067d, #20) - Add
VideoEmbedhelper 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
- Cleanup:
- Add
hooksconfig option inKernel::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_dirconfig 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()andapply()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,hooksconfig, and built-in hooks (3ec60b1, !17) - Document
VideoEmbedhelper, ACF field transformation, andmake:controller/make:hooksCLI commands (433abae, !21) - Add GitHub Pages deployment workflow (02d6425, #3)
Changed
- Decouple discoveries from Tempest's
Discoveryinterface, replace withWpDiscovery+IsWpDiscovery(748aace, #7) - Rewrite
DiscoveryRunnerto own the full lifecycle: class scanning via Composer PSR-4, phasedapply()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