Skip to content

Commit 2becc8a

Browse files
author
Callin Mullaney
committed
docs!: polish 7.x release and Starterkit messaging
Clarify Drupal 11.3+ support and Drupal 12 forward compatibility. Document known breaking changes and favicon deployment ownership. Use child theme and parent theme language consistently.
1 parent 57af2f9 commit 2becc8a

10 files changed

Lines changed: 79 additions & 31 deletions

File tree

README.md

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55
## Emulsify is an open-source toolset for creating and implementing design systems on your website
66

7-
### Storybook development, Vite build, and Drupal 11.3 / Drupal 12.x theme
7+
### Storybook, Emulsify Core 4, and a Vite-based build workflow for Drupal 11.3+
88

9-
**Emulsify Drupal** provides a [Storybook](https://storybook.js.org/) component library, a [Vite](https://vite.dev/) development environment, and a starter kit theme that supports Drupal 11.3.x and Drupal 12.x.
9+
**Emulsify Drupal** provides a [Storybook](https://storybook.js.org/) component library, Emulsify Core 4 tooling, and a [Vite](https://vite.dev/)-based build workflow for Drupal 11.3+ with Drupal 12 forward compatibility. Until Drupal 12 beta or stable recommended-project releases are available, Drupal core development branch coverage is experimental.
1010

11-
The current 7.x series no longer depends on `stable9`; Emulsify now ships its own complete template layer instead of inheriting one from a Drupal base theme.
11+
The current 7.x series no longer depends on `stable9`; Emulsify now ships its own complete template layer instead of inheriting one from a Drupal parent theme.
1212

1313
## Documentation
1414

@@ -20,6 +20,7 @@ The current 7.x series no longer depends on `stable9`; Emulsify now ships its ow
2020
2. [Usage](https://www.emulsify.info/docs/emulsify-drupal/basic-usage/commands)
2121
3. [Upgrade guide](./UPGRADE.md)
2222
4. [Template override map](./docs/template-map.md)
23+
5. [Favicon generation lifecycle](./docs/favicon-generation.md)
2324

2425
## Demo
2526

@@ -29,7 +30,7 @@ The current 7.x series no longer depends on `stable9`; Emulsify now ships its ow
2930

3031
### Generate a child theme
3132

32-
If `emulsify_tools` is installed, you can generate a subtheme with the helper-module Drush command:
33+
If `emulsify_tools` is installed, you can generate a child theme with the helper-module Drush command:
3334

3435
```bash
3536
drush emulsify my_theme
@@ -41,7 +42,7 @@ The helper module also exposes the fully qualified command name:
4142
drush emulsify_tools:bake my_theme
4243
```
4344

44-
You can also generate the same subtheme with Drupal core's standard Starterkit command from the root of your Drupal site:
45+
You can also generate the same child theme with Drupal core's standard Starterkit command from the root of your Drupal site:
4546

4647
```bash
4748
php web/core/scripts/drupal generate-theme my_theme --starterkit whisk --path themes/custom
@@ -82,17 +83,26 @@ Do not enable `whisk` directly. It is a generation-only starter source.
8283

8384
The generated favicon workflow is built around one portable SVG source stored in theme settings.
8485

85-
1. Save the theme settings form to generate or update the package during normal admin changes.
86-
2. After configuration import or deploy, regenerate missing package files with `drush emulsify_tools:favicon-generate [theme_name]` before public traffic reaches the environment.
87-
3. Use `drush emulsify_tools:favicon-status [theme_name]` to inspect dependency, package, and portable-source status, or use the theme settings UI for package and source diagnostics.
88-
4. Use `drush emulsify_tools:favicon-reset [theme_name]` if you need to remove generated assets and restore the theme default favicon behavior.
86+
Emulsify Drupal owns the theme-facing parts of that workflow: the theme settings form, config defaults and schema, admin previews, frontend head tags, generated asset references in `<theme>.settings`, and sanitized SVG storage for config portability.
8987

90-
Runtime generation remains a lock-protected fallback if a request reaches an environment before deployment tasks regenerate the package. Fallback failures are logged and do not break page rendering.
88+
1. Configure the package in the theme settings form for `emulsify` or an Emulsify child theme.
89+
2. Save the theme settings form to generate or update the package during normal admin changes.
90+
3. Review package and portable-source diagnostics in the theme settings UI.
91+
92+
Emulsify Tools owns deployment-oriented Drush operations for those same
93+
settings. After configuration import or deploy, use the Emulsify Tools favicon
94+
commands to generate, inspect, or reset environment-local package files before
95+
public traffic reaches the environment. See the Emulsify Tools README for the
96+
full command documentation.
97+
98+
Runtime page requests never generate favicon files. If the configured package is missing, Emulsify skips favicon head tags until the theme settings form or the Emulsify Tools generate command creates the package.
9199

92100
Generated favicon packages require the PHP `gd` extension and the `Imagick` extension for SVG rasterization. If either extension is unavailable, the uploaded SVG can still be stored in configuration, but PNG and ICO package generation will fail until those extensions are installed.
93101

94102
The theme settings UI surfaces the current portable-source and package status. Portable SVG copies larger than 256 KB are flagged because very large config payloads are awkward to review and deploy.
95103

104+
See [docs/favicon-generation.md](./docs/favicon-generation.md) for generated files, package location, generator limits, and deployment expectations.
105+
96106
## Contributing
97107

98108
### [Code of Conduct](https://github.com/emulsify-ds/emulsify-drupal/blob/main/CODE_OF_CONDUCT.md)
@@ -117,13 +127,13 @@ To facilitate automatic semantic release versioning, we utilize the [Conventiona
117127

118128
### Release Readiness
119129

120-
Run the release guard before merging packaging or starterkit changes:
130+
Run the release guard before merging packaging, starterkit, favicon settings, or release metadata changes, and before preparing a 7.x release:
121131

122132
```bash
123133
npm run release:check
124134
```
125135

126-
Use `npm run release:check -- --skip-smoke` when you only want the static metadata, README, duplicate-script, and schema checks.
136+
Use `npm run release:check -- --skip-smoke` when you only want the static metadata, README, duplicate-script, and schema checks. The static checks verify that favicon settings stay aligned across `FaviconSettings::DEFAULTS`, `config/install/emulsify.settings.yml`, and `config/schema/emulsify.schema.yml`.
127137

128138
## Author
129139

UPGRADE.md

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,60 @@
22

33
Emulsify 7.x is a breaking release. Plan the upgrade as a theme-platform change, not a patch-level update.
44

5+
## Known Breaking Changes
6+
7+
- Drupal 10 support is removed.
8+
- Drupal 11.3+ is required.
9+
- Drupal 12 compatibility is forward-looking until Drupal 12 beta or stable releases are available.
10+
- The Stable9 parent theme is removed.
11+
- Emulsify now uses `base theme: false`.
12+
- The `drupal/components` dependency is removed.
13+
- `drupal/emulsify_tools:^2.0` is required.
14+
- Generated child theme frontend workflow moved from Webpack to Vite.
15+
- Generated child themes use Emulsify Core 4.
16+
- Whisk is now a Starterkit source and should not be enabled directly.
17+
- Favicon handling now uses a generated package workflow.
18+
- Favicon generation happens on theme settings save or through Emulsify Tools Drush commands, not on normal page requests.
19+
- Hook implementations moved to Drupal 11.3+ `#[Hook]` attributes.
20+
- Legacy 6.x procedural hook include behavior is removed.
21+
522
## Requirements
623

7-
- Drupal 11.3 through Drupal 12.x is supported.
8-
- Drupal 10 is no longer supported.
24+
- Drupal 11.3+ is supported.
25+
- Drupal 12 forward compatibility is included through the `^11.3 || ^12` core constraint.
26+
- Drupal core development branch coverage is experimental until Drupal 12 beta or stable releases are available.
27+
- Drupal 10 is no longer supported in 7.x.
928
- `drupal/emulsify_tools:^2.0` is required by both `composer.json` and `emulsify.info.yml`.
1029

1130
## Package Changes
1231

1332
- The old `drupal/components` dependency is gone.
14-
- Frontend workflow references should move from Webpack-era commands and docs to the Vite-based workflow shipped in 7.x.
15-
- `whisk` remains a starter source only. Do not enable it as a runtime base theme.
33+
- Frontend workflow references should move from Webpack-based build workflow commands and docs to the Vite-based build workflow shipped in 7.x.
34+
- `whisk` remains a starter source only. Do not enable it as a runtime parent theme.
1635

1736
## Theme Architecture Changes
1837

19-
- `stable9` is no longer the base theme. Emulsify now ships its own full template layer.
38+
- `stable9` is no longer the parent theme. Emulsify now ships its own full template layer.
2039
- Generated child themes should keep `emulsify` as their parent theme.
2140
- If you generated a child theme in the 6.x era, review any copied Twig overrides against the 7.x template surface before carrying them forward.
2241
- The current template parity inventory is documented in [docs/template-map.md](docs/template-map.md).
2342

2443
## Recommended Upgrade Path
2544

26-
1. Update the site to Drupal 11.3 or any Drupal 12 release.
45+
1. Update the site to Drupal 11.3 or a newer Drupal 11 release before moving to Emulsify 7.x.
2746
2. Require `drupal/emulsify_tools:^2.0`.
28-
3. Update the Emulsify base theme to 7.x.
47+
3. Update the Emulsify parent theme to 7.x.
2948
4. Regenerate or review custom child themes so they inherit from `emulsify`, not `stable9` or `whisk`.
30-
5. Move frontend build and local-development docs, scripts, and team habits from Webpack terminology to Vite.
31-
6. Run the release-readiness checks before merge: `npm run release:check`.
49+
5. Move frontend build and local-development docs, scripts, and team habits from Webpack-based build workflow terminology to the Vite-based build workflow.
50+
6. Run the release-readiness checks before merge or release: `npm run release:check`. The static release gate verifies that favicon defaults, install config, and schema keys stay in sync.
3251

3352
## Favicon Migration Notes
3453

3554
- Favicon settings now store a portable sanitized SVG source in theme config.
36-
- Generated favicon packages are environment-local build artifacts. After config import or deploy, regenerate them with `drush emulsify_tools:favicon-generate [theme_name]`.
37-
- Use `drush emulsify_tools:favicon-status [theme_name]` to inspect the current package and source state.
38-
- Use `drush emulsify_tools:favicon-reset [theme_name]` to remove generated assets and return to the default theme favicon behavior.
55+
- Emulsify Drupal owns the theme settings UI, config defaults and schema, admin previews, frontend head tags, generated asset references, and portable source storage.
56+
- Configure or update favicons in the theme settings form for `emulsify` or an Emulsify child theme.
57+
- Generated favicon packages are environment-local build artifacts. After config import or deploy, use Emulsify Tools to regenerate them with `drush emulsify_tools:favicon-generate [theme_name]`.
58+
- Emulsify Tools owns the full favicon Drush command documentation for `emulsify_tools:favicon-generate`, `emulsify_tools:favicon-status`, and `emulsify_tools:favicon-reset`.
59+
- Runtime page requests do not generate missing favicon package files.
3960
- PNG and ICO generation require the PHP `gd` extension and the `Imagick` extension.
61+
- Generated files, package location, source limits, and deployment expectations are documented in [docs/favicon-generation.md](docs/favicon-generation.md).

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "emulsify-ds/emulsify-drupal",
3-
"description": "The official Drupal base theme for Emulsify that generates custom themes with Storybook development + Vite Build",
3+
"description": "The official Drupal theme for Emulsify, with Storybook and a Vite-based build workflow for generated child themes",
44
"type": "drupal-theme",
55
"homepage": "http://emulsify.info",
66
"license": "GPL-2.0-only",

emulsify.info.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: Emulsify
22
type: theme
3-
description: The official base theme for Emulsify and its flexible component-driven development.
3+
description: The official Drupal parent theme for Emulsify component-driven development.
44
base theme: false
55
core_version_requirement: '^11.3 || ^12'
66
package: emulsify

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "emulsify-drupal",
33
"version": "7.0.0",
4-
"description": "Storybook development + Vite Build + Drupal 11.3-12.x theme",
4+
"description": "Storybook, Emulsify Core 4, and a Vite-based build workflow for Drupal 11.3+ with Drupal 12 forward compatibility",
55
"keywords": [
66
"component library",
77
"design system",

templates/layout/page.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Theme override to display a single page.
55
*
66
* This keeps Emulsify's page-level wrapper owned by the parent theme so
7-
* generated subthemes do not need to rely on stable9 for the default page
7+
* generated child themes do not need to rely on stable9 for the default page
88
* structure.
99
*
1010
* @see template_preprocess_page()

whisk/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "whisk",
33
"version": "1.0.0",
4-
"description": "Storybook development + Vite Build",
4+
"description": "Storybook and a Vite-based build workflow powered by Emulsify Core 4",
55
"keywords": [
66
"component library",
77
"design system",

whisk/whisk.info.emulsify.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ base theme: emulsify
33
core_version_requirement: '^11.3 || ^12'
44

55
name: whisk
6-
description: A subtheme build upon the Emulsify Design System.
6+
description: A child theme built upon the Emulsify Design System.
77
package: 'Emulsify'
88
screenshot: screenshot.png
99
version: VERSION

whisk/whisk.info.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ base theme: emulsify
33
core_version_requirement: '^11.3 || ^12'
44

55
name: Whisk Starter
6-
description: Generation-only starter source for Emulsify subthemes.
6+
description: Generation-only starter source for Emulsify child themes.
77
package: 'Emulsify'
88
screenshot: screenshot.png
99
hidden: true

whisk/whisk.starterkit.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1+
# Drupal validates starterkit path patterns against files that exist in the
2+
# source theme. Keep optional files out of these rules until they are committed.
13
ignore:
4+
# Starter-only files are used by Emulsify Drupal or Drupal core generation and
5+
# should not be copied into generated child themes.
26
- '/.DS_Store'
37
- '/assets/.DS_Store'
48
- '/config/.DS_Store'
@@ -7,5 +11,17 @@ ignore:
711
- '/whisk.info.emulsify.yml'
812
- '/whisk.starterkit.yml'
913

14+
no_edit:
15+
# These files are copied as build/tooling inputs. Automatic starterkit content
16+
# replacement can corrupt package-managed config or binary data.
17+
- '/config/emulsify-core/**'
18+
- '/screenshot.png'
19+
20+
no_rename:
21+
# Emulsify Core config paths are tool conventions, not theme machine-name
22+
# conventions, and should remain stable in generated themes.
23+
- '/config/emulsify-core/**'
24+
1025
info:
26+
core_version_requirement: '^11.3 || ^12'
1127
hidden: null

0 commit comments

Comments
 (0)