mirror of
https://github.com/Dokploy/templates.git
synced 2026-07-15 14:52:05 -05:00
[PR #978] [MERGED] feat: per-template metadata (blueprints/<id>/meta.json) — no more meta.json merge conflicts #16286
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/Dokploy/templates/pull/978
Author: @Siumauricio
Created: 7/8/2026
Status: ✅ Merged
Merged: 7/8/2026
Merged by: @Siumauricio
Base:
canary← Head:feat/per-template-meta📝 Commits (1)
c3de62ffeat: per-template metadata — eliminate meta.json merge conflicts📊 Changes
455 files changed (+7982 additions, -8469 deletions)
View changed files
📝
.github/workflows/validate-meta.yml(+21 -60)📝
.github/workflows/validate.yml(+6 -129)📝
AGENTS.md(+19 -42)📝
CONTRIBUTING.md(+6 -6)📝
README.md(+1 -1)📝
app/package.json(+4 -3)➕
app/public/.gitignore(+1 -0)📝
app/vite.config.ts(+2 -4)➕
blueprints/ackee/meta.json(+16 -0)➕
blueprints/activepieces/meta.json(+17 -0)➕
blueprints/actualbudget/meta.json(+17 -0)➕
blueprints/adguardhome/meta.json(+18 -0)➕
blueprints/adminer/meta.json(+18 -0)➕
blueprints/adventurelog/meta.json(+19 -0)➕
blueprints/affinepro/meta.json(+18 -0)➕
blueprints/agent-zero/meta.json(+17 -0)➕
blueprints/agentdvr/meta.json(+20 -0)➕
blueprints/akaunting/meta.json(+19 -0)➕
blueprints/alarik/meta.json(+17 -0)➕
blueprints/alist/meta.json(+17 -0)...and 80 more files
📄 Description
Why
Almost every PR in this repo adds an entry to the single root
meta.json, so any two template PRs conflict with each other and every merge tocanaryinvalidates all open PRs (see e.g. #812, and the 11 PRs whose conflicts had to be resolved by hand this week).What
blueprints/<id>/meta.json(one JSON object, same shape as the old array entries). 442 files migrated withbuild-scripts/explode-meta.js— the regenerated aggregate is byte-identical to the old rootmeta.json(after alphabetical sort).meta.jsonis generated at build time bybuild-scripts/generate-meta.jsintoapp/public/meta.json(gitignored).pnpm devandpnpm buildrun it automatically, so the app keeps fetching/meta.jsonwith zero frontend changes and the deployed artifact is unchanged.validate-meta.ymlandvalidate.ymlnow rungenerate-meta.js --check, which validates required fields,id== folder name, logo file existence and folder↔meta bidirectionality (same rules as before, but errors point at the exact template). A committed rootmeta.jsonis rejected with a helpful message.meta.json,dedupe-and-sort-meta.js,build-scripts/process-meta.js(all obsolete — duplicates are impossible by construction and sorting happens at generation).Verification
explode→generateproduces a byte-identicalmeta.json(442/442 entries).pnpm install && pnpm buildinapp/→dist/meta.json+ 442 blueprints copied. ✅generate-meta.js --checkpasses on the migrated tree with 0 errors/warnings.Open PRs transition
Existing open PRs still edit the root
meta.json; after this merges, their meta diff must move toblueprints/<id>/meta.json. I have maintainer tooling ready to do that automatically for every open PR that allows maintainer edits (same mechanism used for this week's conflict fixes); the few that don't allow edits will get a comment with instructions.🤖 Generated with Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.