Files
cobble/package.json
T
tben f7ef218507
CI / check (push) Canceled after 0s
Take the Gitea registry out of CI and mirror it separately
The Gitea registry is on a VPN, which a GitHub runner can never reach, so
the mirror step in the release workflow could only ever fail: its last four
releases reported a step that did nothing. The workflow now builds and
pushes to GHCR alone, which is the registry the installer defaults to, and
nothing in CI mentions Gitea.

The image reaches the Gitea registry through `scripts/mirror-gitea.sh`
(`bun run mirror:gitea`) instead, run in parallel with a release and from the
VPN side: it copies from the Gitea host over ssh, where skopeo can see both
registries, so nothing has to be installed there. `skopeo copy --all` keeps
the manifest list and its signatures, and every destination tag is read back
and compared with GHCR's digest, so a partial copy fails loudly instead of
being assumed to have worked. `latest` and `major.minor` are only moved while
that release still owns them in GHCR, so mirroring an older release never
rolls them back.

Neither direction can fail the other now, which is the point: a registry that
is down, slow or full no longer takes a release with it.
2026-10-23 12:03:23 +01:00

88 lines
3.0 KiB
JSON

{
"name": "cobble",
"version": "0.1.5",
"module": "index.ts",
"type": "module",
"private": true,
"scripts": {
"dev": "bun src/server.ts",
"gen:favicon": "bun src/scripts/generate-brand-assets.ts",
"build": "bunx bunext build",
"db:schema": "bunx bun-sqlite schema -t",
"db:admin": "bunx bun-sqlite admin",
"db:backup": "bunx bun-sqlite backup",
"seed": "bun src/scripts/seed-super-admin.tsx",
"seed:bots": "bun src/scripts/seed-bots.ts",
"media:prune-text": "bun src/scripts/prune-media-text-content.ts",
"start": "MAIN_SERVER=1 NODE_ENV=production bun src/server.ts",
"typecheck": "tsc --noEmit",
"test": "bun test",
"check:bundle": "bun src/scripts/check-bundle-size.ts",
"publish:github": "bash scripts/publish-github.sh",
"publish:gitea": "bash scripts/publish-gitea.sh",
"mirror:gitea": "bash scripts/mirror-gitea.sh"
},
"devDependencies": {
"@next/mdx": "^16.3.0",
"@types/ace": "^0.0.52",
"@types/bun": "latest",
"@types/lodash": "^4.17.25",
"@types/mdx": "^2.0.14",
"@types/node": "^26.2.0",
"@types/nodemailer": "^8.0.1",
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"@types/sanitize-html": "^2.16.2",
"@types/turndown": "^5.0.6",
"@types/web-push": "^3.6.4",
"tailwindcss": "^4.3.3"
},
"peerDependencies": {
"typescript": "^7.0.2"
},
"dependencies": {
"@floating-ui/dom": "1.8.0",
"@modelcontextprotocol/sdk": "^1.32.1",
"@moduletrace/bun-sqlite": "^1.3.0",
"@moduletrace/bunext": "^1.3.3",
"@moduletrace/twui": "^0.1.6",
"@tiptap/extension-bubble-menu": "3.32.0",
"@tiptap/extension-mention": "3.32.0",
"@tiptap/extension-placeholder": "3.32.0",
"@tiptap/markdown": "3.32.0",
"@tiptap/pm": "3.32.0",
"@tiptap/react": "3.32.0",
"@tiptap/starter-kit": "3.32.0",
"ace-builds": "^1.44.0",
"dayjs": "^1.11.23",
"gray-matter": "^4.0.3",
"html-to-react": "^1.7.0",
"lodash": "^4.18.1",
"lucide-react": "^1.59.0",
"mammoth": "^1.12.1",
"mdx": "^0.3.1",
"next-mdx-remote": "^6.0.0",
"nodemailer": "^9.0.5",
"openai": "^7.4.0",
"pdf-lib": "^1.17.1",
"react-code-blocks": "^0.1.6",
"react-markdown": "^10.1.0",
"react-responsive-modal": "^7.2.0",
"rehype-prism-plus": "^2.0.2",
"remark-breaks": "4.0.0",
"remark-gfm": "^4.0.1",
"sanitize-html": "^2.18.1",
"sharp": "^0.35.3",
"tailwind-merge": "^3.6.0",
"turndown": "^7.2.4",
"unpdf": "^1.8.0",
"use-sync-external-store": "file:./packages/use-sync-external-store-esm",
"web-push": "^3.6.7",
"xlsx": "^0.18.5",
"zod": "4.1.12"
},
"overrides": {
"use-sync-external-store": "file:./packages/use-sync-external-store-esm"
}
}