Skip to content

feat: add customInputs node for declarative wizard question sequences#15655

Draft
qfai wants to merge 1 commit intodevfrom
feat/custom-inputs-node
Draft

feat: add customInputs node for declarative wizard question sequences#15655
qfai wants to merge 1 commit intodevfrom
feat/custom-inputs-node

Conversation

@qfai
Copy link
Copy Markdown
Contributor

@qfai qfai commented Apr 7, 2026

Add a generic 'customInputs' node type to constructNode.ts that allows wizard JSON to declare arbitrary question sequences without TypeScript code changes. Supports:

  • text inputs (with optional password masking)
  • singleSelect dropdowns (with static options)
  • singleFile browser
  • folder picker
  • conditional inputs (multi-level menus via condition on inputs)

User answers are stored in inputs._customInputs and automatically injected into the template replace map, so template .tpl files can reference them as {{inputName}}.

This enables dynamic template publish to onboard new templates with custom wizard flows without requiring a new extension release.

Add a generic 'customInputs' node type to constructNode.ts that allows
wizard JSON to declare arbitrary question sequences without TypeScript
code changes. Supports:
- text inputs (with optional password masking)
- singleSelect dropdowns (with static options)
- singleFile browser
- folder picker
- conditional inputs (multi-level menus via condition on inputs)

User answers are stored in inputs._customInputs and automatically
injected into the template replace map, so template .tpl files can
reference them as {{inputName}}.

This enables dynamic template publish to onboard new templates with
custom wizard flows without requiring a new extension release.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@qfai qfai temporarily deployed to engineering April 7, 2026 08:22 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:22 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@qfai qfai temporarily deployed to engineering April 7, 2026 08:26 — with GitHub Actions Inactive
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 7, 2026

Codecov Report

❌ Patch coverage is 35.08772% with 37 lines in your changes missing coverage. Please review.
✅ Project coverage is 92.85%. Comparing base (858d4de) to head (7b5a582).

Files with missing lines Patch % Lines
...ges/fx-core/src/question/scaffold/constructNode.ts 32.69% 35 Missing ⚠️
...omponent/generator/templates/templateReplaceMap.ts 60.00% 1 Missing and 1 partial ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##              dev   #15655      +/-   ##
==========================================
- Coverage   92.93%   92.85%   -0.09%     
==========================================
  Files         623      623              
  Lines       38444    38499      +55     
  Branches     6985     7003      +18     
==========================================
+ Hits        35729    35747      +18     
- Misses       1984     2019      +35     
- Partials      731      733       +2     
Files with missing lines Coverage Δ
...omponent/generator/templates/templateReplaceMap.ts 93.84% <60.00%> (-2.88%) ⬇️
...ges/fx-core/src/question/scaffold/constructNode.ts 68.90% <32.69%> (-29.63%) ⬇️

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant