Skip to content

feat(cli): add guided system and component authoring workflows - #364

Merged
callinmullaney merged 35 commits into
mainfrom
develop
Aug 31, 2026
Merged

feat(cli): add guided system and component authoring workflows#364
callinmullaney merged 35 commits into
mainfrom
develop

Conversation

@callinmullaney

@callinmullaney callinmullaney commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Promotes the completed Emulsify CLI 2.4.0 feature set from develop to main.

This release makes Emulsify CLI easier to use without requiring prior knowledge of every command and expands the CLI from consuming component systems into authoring them. Users can now create and detach systems, generate multiple component types through guided workflows, and eject the CLI's built-in templates for project-specific customization.

Interactive commands provide prompts and review steps when running in a terminal, while CI and other non-interactive environments remain explicit, deterministic, and fail fast with actionable instructions.

Guided CLI workflows

  • Prompts for missing arguments when commands run in an interactive terminal.
  • Preserves immediate, actionable errors in CI, scripts, and other non-TTY environments.
  • Updates emulsify system install with descriptive system and variant choices plus a final review step before files are changed.
  • Adds interactive component selection to emulsify component install, including an option to install every available component.
  • Guides emulsify component create through component name, type, and directory selection.
  • Regroups root help output by task and adds clearer guidance for new users.
  • Honors NO_COLOR and suppresses ANSI formatting when output is not connected to a terminal.

System authoring

  • Adds emulsify system create for scaffolding standalone, distributable component systems.
  • Generates valid system and variant configuration, an example component, repository documentation, a .gitignore, and a license placeholder.
  • Supports optional Git initialization and dry-run previews.
  • Prevents an existing target directory from being unintentionally overwritten.
  • Adds emulsify system detach to remove the configured system and variant while preserving installed components, project assets, and cached repositories.
  • Reuses the new system-creation workflow when users choose to create a custom system during installation, removing the previous duplicate scaffolding path.

Together, system detach and system create provide a clearer path for teams that want to evolve installed components into a reusable component system of their own.

Component authoring

  • Introduces --type as the primary component-generation option:
    • twig
    • twig-sdc
    • react
    • web-component
  • Retains --format default and --format sdc as deprecated compatibility aliases.
  • Preserves existing .cli/templates/default/ and .cli/templates/sdc/ project overrides.
  • Adds React and Web Component templates and corresponding Storybook stories.
  • Derives and validates custom-element tag names for Web Components.
  • Adds --tag-name for explicitly setting a Web Component tag name.
  • Honors explicit component types in non-interactive commands even when project detection would omit that type from the interactive wizard.
  • Aligns overwrite behavior around --force while retaining compatible --yes behavior where previously supported.

Custom component templates

  • Adds emulsify component eject-templates to copy the CLI's built-in templates into .cli/templates/.
  • Supports interactive multi-type selection, an explicit component type, and --all.
  • Supports --dry-run previews and protects existing customizations unless --force is provided.
  • Ensures ejected templates reproduce the same generated output as the built-in templates.
  • Safely reports or rolls back incomplete template-ejection operations without deleting destinations the command did not create.

Reliability and cross-platform support

  • Writes project configuration atomically to reduce the risk of partial or corrupted updates.
  • Adds a safe configuration helper for removing system and variant properties.
  • Falls back gracefully on filesystems that do not support hard links.
  • Bounds remote repository tag lookups to prevent commands from waiting indefinitely.
  • Improves path handling, fixtures, packaging checks, and test behavior across Linux, macOS, and Windows.
  • Expands unit, end-to-end, release, and packed-install coverage.

Documentation

Updates the project README and detailed documentation to cover:

  • Guided and non-interactive command behavior
  • System creation, installation, and detachment
  • Twig, Twig SDC, React, and Web Component generation
  • Component-template ejection and customization
  • Deprecated compatibility options
  • Dry-run and overwrite behavior
  • Updated command reference and examples

Compatibility

This release does not intentionally remove any existing workflows.

  • --format default and --format sdc remain supported as deprecated aliases.
  • Existing component-template override directories continue to resolve.
  • Non-interactive scripts remain supported and do not unexpectedly open prompts.
  • Explicit command options continue to take precedence over automatic project detection.

Related Work

Verification

  • npm run build
  • npm run type
  • npm test
  • npm run pack:dry-run
  • npm run smoke:pack
  • Build, typecheck, unit, release, and end-to-end checks pass on Ubuntu
  • Build, typecheck, unit, release, and end-to-end checks pass on macOS
  • Build, typecheck, unit, release, and end-to-end checks pass on Windows

Checklist

  • I added or updated tests for behavior changes.
  • I updated documentation for user-facing changes.
  • I did not manually change the package version; the release workflow owns it.

Callin Mullaney and others added 30 commits August 30, 2026 01:12
@callinmullaney callinmullaney changed the title Release: 2.4.0 release(2.4.0): add guided system and component authoring workflows Aug 31, 2026
@callinmullaney callinmullaney changed the title release(2.4.0): add guided system and component authoring workflows feat(cli): add guided system and component authoring workflows Aug 31, 2026
@callinmullaney
callinmullaney merged commit ca7cd28 into main Aug 31, 2026
9 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 2.4.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant