Repository navigation
v3.0.0-alpha.2
Pre-release
Pre-release
·
45 commits
to main
since this release
Added (2026-06-02)
- A preset can extend the project
.gitignoreinstead of clobbering it. A top-level.gitignorein a preset'sfilesDiris now append-merged into the project.gitignore(only the missing patterns, under an# Added by preset '<name>'header, idempotent) rather than copied verbatim — mirroring thepackage-deps.json→package.jsonmerge. The baseline.gitignoreis owned byviterex_addon(stubs/.gitignore.example, merged duringviterex:install-stubs); the preset now layers on top of it. Nested per-directory.gitignorefiles still copy verbatim (full-path check, not basename). New pure helpersrc/utils/merge-gitignore.ts(mirrorsviterex_addon'sStubsInstaller::mergeGitignore); wired intosrc/tasks/apply-preset-files.ts. For ignores that apply to every project, add them toviterex_addon'sstubs/.gitignore.exampleinstead.
Added (2026-05-29)
- Presets can pre-fill — and thereby skip — any installer prompt. A
preset.jsonmay now set any scalar installer field (redaxoVersion,redaxoServerName,redaxoAdminUser/redaxoAdminPassword/redaxoAdminEmail/redaxoErrorEmail,redaxoLang,redaxoTimezone,skipDb,dbHost/dbPort/dbName/dbUser/dbPassword,packageManager,setupDeploy,skipGit,gitProvider/gitNamespace/gitRepoName,withTower,verbose,forcePush). When the preset supplies a value the matching prompt is skipped and a one-lineUsing values from preset '<name>': …summary is logged. Previously these fields existed onViterexConfigbut were never read from a preset (onlyredaxoLang/redaxoTimezone/layout/withTower/filesDir/addons/seed/installer/deployer fields were), so e.g. a preset'sredaxoAdminEmailwas silently ignored and prompted for anyway. Precedence is CLI flag > preset value > prompt/default. New pure, unit-tested resolversrc/utils/resolve-preset-values.ts;PresetConfig(src/types.ts) extended with the fields andCliOptionsmoved there for shared use;src/prompts.tsnow loads the preset right after the project-name prompt so all later prompts can be skipped. Notes: the git remote resolves per field — emptygitProvider("") = no remote; a non-emptygitProviderconfigures a remote withgitNamespacefrom the preset (else prompted) andgitRepoNamealways prompted (default: project name) unless the preset pins it; an omittedgitProviderruns the normal opt-in flow.dbNamestays prompted (per-project) unless the preset sets it; a presetredaxoAdminPasswordis honoured only if it meets Redaxo's 8–4096-char rule, else ignored with a warning and prompted. The--config <path>path is unchanged.
Fixed (2026-05-29)
git statusis clean immediately after install. The Git initial commit task is now the last file-touching step in the pipeline (src/pipeline.ts). Previously Build frontend (Vite output) and the browserslist refresh ran after the commit, leaving the freshly-scaffolded working tree dirty. Build frontend now runs before the commit (and absorbs thenpx update-browserslist-db@latestrefresh that used to live in Show next steps, each step warn-and-continue); the remote push, browser open, and next-steps message run after the commit and touch no tracked files.git initstill runs early (before Add submodule addons, which needs.git); only the commit moved. Task count unchanged (18); names unchanged, so--resumeis unaffected. New ordering test:src/__tests__/pipeline-order.test.ts.
Changed (2026-05-19)
- A preset's frontend now installs through the generic
filesDiroverlay. The short-lived dedicatedfrontendDirtask was folded into Apply preset files: a preset directory whose tree mirrors the project (src/…,public/…) is copied verbatim, and apackage-deps.jsonplaced in it is merged into the projectpackage.json(additive, higher-version-wins) before the dependency install instead of being copied. New helpersrc/utils/merge-package-deps.ts. Consumed by the externalviterex-massif-presetrepo ("filesDir": "frontend").