Commit Graph
14 Commits
Author SHA1 Message Date
asepharyana 90e40c4d48 fix: CI/CD — replace broken bun --cwd with turbo --filter for web build
CI / typecheck + build (turbo) (push) Canceled after 0s
The deploy workflow used 'bun --cwd apps/web run build' which does NOT
work — 'bun run' doesn't support --cwd flag. Bun prints usage and exits
0, making the step silently succeed without building. Fix: use
'bun run build --filter=@mcpedia/web' (turbo workspace filtering).

Also bump actions/checkout@v4→v5 to resolve Node 20 deprecation warning.
2026-08-21 11:20:06 +07:00
asepharyana 040d6cb4ff fix: use explicit path for indexer in deploy to avoid bun run resolving to wrong package.json 2026-08-20 23:54:31 +07:00
asepharyana c611601525 fix: remove db:push from deploy (column manually applied; push is non-interactive-unfriendly)
CI / typecheck + build (turbo) (push) Canceled after 0s
2026-08-20 23:48:42 +07:00
asepharyana 233e88e911 fix: pipe 'yes' to db:push in deploy for non-interactive confirmation 2026-08-20 23:45:05 +07:00
asepharyana 3411dcfa9f fix: make db:push non-fatal in deploy (column may pre-exist)
CI / typecheck + build (turbo) (push) Canceled after 0s
2026-08-20 23:34:51 +07:00
asepharyana 144e124bcb fix: use db:push instead of db:migrate in deploy (schema was initially pushed, not migrated)
CI / typecheck + build (turbo) (push) Canceled after 0s
2026-08-20 23:27:36 +07:00
asepharyana 7fb55590bd feat: dynamic custom frontmatter fields + CTF writeup template system
User requested dynamic (not static) fields for CTF writeup content organization.
Changes:
- DocumentMeta: removed typed CTF fields (event/challenge/category/difficulty/
  points), replaced with single extraFields?: Record<string, string>
- parseFile: any frontmatter key not in the STANDARD set becomes a dynamic
  extra field — fully content-driven, no code changes needed for new fields
- stringifyFile: writes extraFields back to YAML frontmatter for round-trip
  stability
- DocForm: '+ Add field' UI lets creators add ANY metadata key at create/edit
  time
- API routes: splitPayload() auto-separates standard vs custom fields
- Doc page: CustomFieldBadges dynamically renders any custom field with
  auto-styling for common CTF patterns (difficulty→color, points→badge)
- Added db:migrate + db:push scripts; deploy workflow now runs migrations +
  reindexes content on every deploy
- content/writeups/ctf/template/writeup-template.md (template)
- content/writeups/ctf/defcon-quals-2024/pwn-100-ret2win-alignment.md (sample)
- DB column extra_fields (jsonb) already applied to live DB
2026-08-20 23:24:57 +07:00
asepharyana c760c3c087 feat(core): dynamic custom frontmatter fields for CTF writeup metadata
CI / typecheck + build (turbo) (push) Canceled after 0s
- Add extra_fields JSONB column to documents table (migration 0003)
- CreateDocInput/UpdateDocInput: extraFields?: Record<string, string>
- parseFile: extracts non-standard frontmatter keys as extraFields
- stringifyFile: writes extraFields dynamically to YAML frontmatter
- toMeta: spreads extraFields from DB row into DocumentMeta
- DocForm: '+ Add field' UI for content creators to add any metadata
- API routes: splitPayload() separates standard vs custom fields
- Doc page: CustomFieldBadges dynamically renders any custom field
- Add db:migrate / db:push scripts + deploy workflow migration step
- Add CTF writeup template (content/writeups/ctf/template/)
- Add sample DEF CON writeup with event/challenge/category/difficulty/points
- Add @tailwindcss/typography for table rendering (prose classes)
- Add remark-gfm for GitHub Flavored Markdown table parsing
2026-08-20 23:18:57 +07:00
asepharyana 1b2e20764c ci(deploy): bump appleboy/ssh-action to @v1 (v1.1.0 had key parsing bug) 2026-08-20 12:16:59 +07:00
asepharyana 339f8432a6 ci(deploy): use appleboy/ssh-action for reliable SSH key handling
echo + manual ssh key writing got 'error in libcrypto' (key mangling)
+ 'too many authentication failures'. Switch to appleboy/ssh-action@v1.1.0
which handles key/permission/identity correctly. Also set
SSH_DEPLOY_HOST=45.127.35.244 (public IP, not Tailscale 100.x).
2026-08-20 12:14:59 +07:00
asepharyana 394f207446 ci(deploy): fix SSH host to public IP (not Tailscale 100.x)
CI / typecheck + build (turbo) (push) Canceled after 0s
2026-08-20 12:08:27 +07:00
asepharyana 9d4545885a ci(deploy): add SSH verbose + accept-new for debugging 2026-08-20 12:00:55 +07:00
asepharyana 543c34820c ci(deploy): fix SSH command quoting (newlines instead of && chaining)
CI / typecheck + build (turbo) (push) Canceled after 0s
2026-08-20 11:59:45 +07:00
asepharyana 5d9e60902f ci: add deploy.yml workflow (SSH deploy triggered on CI success)
CI only builds/tests. Deploy is a separate workflow triggered via
workflow_run after CI passes: pull → bun install → web build → restart
all 4 systemd services (web/api/mcp/worker) over SSH.

Secrets (stored in GitHub):
- SSH_DEPLOY_HOST=100.79.111.61
- SSH_DEPLOY_PORT=22
- SSH_DEPLOY_USER=code

- SSH_DEPLOY_KEY=<ed25519 deploy key added to VPS authorized_keys>
2026-08-20 11:57:11 +07:00