diff --git a/.omc/project-memory.json b/.omc/project-memory.json new file mode 100644 index 0000000..f6d0175 --- /dev/null +++ b/.omc/project-memory.json @@ -0,0 +1,221 @@ +{ + "version": "1.0.0", + "lastScanned": 1777640305622, + "projectRoot": "/Users/kunthawatgreethong/Gitea/claude-skill/skills/emdash-blog-template", + "techStack": { + "languages": [ + { + "name": "JavaScript/TypeScript", + "version": null, + "confidence": "high", + "markers": [ + "package.json" + ] + }, + { + "name": "TypeScript", + "version": null, + "confidence": "high", + "markers": [ + "tsconfig.json" + ] + } + ], + "frameworks": [ + { + "name": "astro", + "version": "6.0.1", + "category": "fullstack" + }, + { + "name": "react", + "version": "19.2.4", + "category": "frontend" + }, + { + "name": "react-dom", + "version": "19.2.4", + "category": "frontend" + } + ], + "packageManager": "npm", + "runtime": null + }, + "build": { + "buildCommand": "npm run build", + "testCommand": null, + "lintCommand": null, + "devCommand": "npm run dev", + "scripts": { + "dev": "astro dev", + "build": "astro build", + "preview": "astro preview", + "start": "node ./dist/server/entry.mjs", + "bootstrap": "emdash init && emdash seed", + "seed": "emdash seed", + "typecheck": "astro check" + } + }, + "conventions": { + "namingStyle": null, + "importStyle": null, + "testPattern": null, + "fileOrganization": "type-based" + }, + "structure": { + "isMonorepo": false, + "workspaces": [], + "mainDirectories": [ + "src" + ], + "gitBranches": { + "defaultBranch": "main", + "branchingStrategy": null + } + }, + "customNotes": [], + "directoryMap": { + "seed": { + "path": "seed", + "purpose": null, + "fileCount": 1, + "lastAccessed": 1777640305607, + "keyFiles": [ + "seed.json" + ] + }, + "src": { + "path": "src", + "purpose": "Source code", + "fileCount": 1, + "lastAccessed": 1777640305607, + "keyFiles": [ + "live.config.ts" + ] + }, + "src/components": { + "path": "src/components", + "purpose": "UI components", + "fileCount": 2, + "lastAccessed": 1777640305610, + "keyFiles": [ + "PostCard.astro", + "TagList.astro" + ] + }, + "src/pages": { + "path": "src/pages", + "purpose": "Page components", + "fileCount": 4, + "lastAccessed": 1777640305610, + "keyFiles": [ + "404.astro", + "index.astro", + "rss.xml.ts" + ] + }, + "src/utils": { + "path": "src/utils", + "purpose": "Utility functions", + "fileCount": 2, + "lastAccessed": 1777640305610, + "keyFiles": [ + "reading-time.ts", + "site-identity.ts" + ] + } + }, + "hotPaths": [ + { + "path": "seed/seed.json", + "accessCount": 8, + "lastAccessed": 1777683904617, + "type": "file" + }, + { + "path": "astro.config.mjs", + "accessCount": 8, + "lastAccessed": 1777714222410, + "type": "file" + }, + { + "path": "Dockerfile", + "accessCount": 6, + "lastAccessed": 1777780326438, + "type": "file" + }, + { + "path": "src/pages/posts/index.astro", + "accessCount": 4, + "lastAccessed": 1777693598936, + "type": "file" + }, + { + "path": "src/pages/index.astro", + "accessCount": 3, + "lastAccessed": 1777683879925, + "type": "file" + }, + { + "path": "entrypoint.sh", + "accessCount": 3, + "lastAccessed": 1777692330960, + "type": "file" + }, + { + "path": "src/pages/posts/[slug].astro", + "accessCount": 3, + "lastAccessed": 1777693572864, + "type": "file" + }, + { + "path": "src/live.config.ts", + "accessCount": 1, + "lastAccessed": 1777640453735, + "type": "file" + }, + { + "path": "src/components/PostCard.astro", + "accessCount": 1, + "lastAccessed": 1777640624795, + "type": "file" + }, + { + "path": "package.json", + "accessCount": 1, + "lastAccessed": 1777640708986, + "type": "file" + }, + { + "path": "src/layouts/Base.astro", + "accessCount": 1, + "lastAccessed": 1777687624083, + "type": "file" + }, + { + "path": "", + "accessCount": 1, + "lastAccessed": 1777691990220, + "type": "directory" + }, + { + "path": "src", + "accessCount": 1, + "lastAccessed": 1777693607281, + "type": "directory" + }, + { + "path": ".env.example", + "accessCount": 1, + "lastAccessed": 1777714183677, + "type": "file" + }, + { + "path": "src/lib/db.ts", + "accessCount": 1, + "lastAccessed": 1777714208103, + "type": "file" + } + ], + "userDirectives": [] +} \ No newline at end of file diff --git a/.omc/sessions/33698839-2ad1-4412-9735-43676f5e6beb.json b/.omc/sessions/33698839-2ad1-4412-9735-43676f5e6beb.json new file mode 100644 index 0000000..02ccca0 --- /dev/null +++ b/.omc/sessions/33698839-2ad1-4412-9735-43676f5e6beb.json @@ -0,0 +1,8 @@ +{ + "session_id": "33698839-2ad1-4412-9735-43676f5e6beb", + "ended_at": "2026-05-02T12:44:04.134Z", + "reason": "other", + "agents_spawned": 0, + "agents_completed": 0, + "modes_used": [] +} \ No newline at end of file diff --git a/.omc/state/checkpoints/checkpoint-2026-05-01T12-57-42-460Z.json b/.omc/state/checkpoints/checkpoint-2026-05-01T12-57-42-460Z.json new file mode 100644 index 0000000..a366fb5 --- /dev/null +++ b/.omc/state/checkpoints/checkpoint-2026-05-01T12-57-42-460Z.json @@ -0,0 +1,16 @@ +{ + "created_at": "2026-05-01T12:57:42.459Z", + "trigger": "auto", + "active_modes": {}, + "todo_summary": { + "pending": 0, + "in_progress": 0, + "completed": 0 + }, + "wisdom_exported": false, + "background_jobs": { + "active": [], + "recent": [], + "stats": null + } +} \ No newline at end of file diff --git a/.omc/state/checkpoints/checkpoint-2026-05-02T02-49-03-241Z.json b/.omc/state/checkpoints/checkpoint-2026-05-02T02-49-03-241Z.json new file mode 100644 index 0000000..819e16a --- /dev/null +++ b/.omc/state/checkpoints/checkpoint-2026-05-02T02-49-03-241Z.json @@ -0,0 +1,16 @@ +{ + "created_at": "2026-05-02T02:49:03.240Z", + "trigger": "auto", + "active_modes": {}, + "todo_summary": { + "pending": 0, + "in_progress": 0, + "completed": 0 + }, + "wisdom_exported": false, + "background_jobs": { + "active": [], + "recent": [], + "stats": null + } +} \ No newline at end of file diff --git a/.omc/state/checkpoints/checkpoint-2026-05-02T03-12-36-942Z.json b/.omc/state/checkpoints/checkpoint-2026-05-02T03-12-36-942Z.json new file mode 100644 index 0000000..a6e1d4a --- /dev/null +++ b/.omc/state/checkpoints/checkpoint-2026-05-02T03-12-36-942Z.json @@ -0,0 +1,16 @@ +{ + "created_at": "2026-05-02T03:12:36.942Z", + "trigger": "auto", + "active_modes": {}, + "todo_summary": { + "pending": 0, + "in_progress": 0, + "completed": 0 + }, + "wisdom_exported": false, + "background_jobs": { + "active": [], + "recent": [], + "stats": null + } +} \ No newline at end of file diff --git a/.omc/state/checkpoints/checkpoint-2026-05-02T03-18-55-714Z.json b/.omc/state/checkpoints/checkpoint-2026-05-02T03-18-55-714Z.json new file mode 100644 index 0000000..a8614d4 --- /dev/null +++ b/.omc/state/checkpoints/checkpoint-2026-05-02T03-18-55-714Z.json @@ -0,0 +1,16 @@ +{ + "created_at": "2026-05-02T03:18:55.713Z", + "trigger": "auto", + "active_modes": {}, + "todo_summary": { + "pending": 0, + "in_progress": 0, + "completed": 0 + }, + "wisdom_exported": false, + "background_jobs": { + "active": [], + "recent": [], + "stats": null + } +} \ No newline at end of file diff --git a/.omc/state/checkpoints/checkpoint-2026-05-02T03-24-24-820Z.json b/.omc/state/checkpoints/checkpoint-2026-05-02T03-24-24-820Z.json new file mode 100644 index 0000000..5173f5f --- /dev/null +++ b/.omc/state/checkpoints/checkpoint-2026-05-02T03-24-24-820Z.json @@ -0,0 +1,16 @@ +{ + "created_at": "2026-05-02T03:24:24.819Z", + "trigger": "auto", + "active_modes": {}, + "todo_summary": { + "pending": 0, + "in_progress": 0, + "completed": 0 + }, + "wisdom_exported": false, + "background_jobs": { + "active": [], + "recent": [], + "stats": null + } +} \ No newline at end of file diff --git a/.omc/state/checkpoints/checkpoint-2026-05-02T03-47-02-118Z.json b/.omc/state/checkpoints/checkpoint-2026-05-02T03-47-02-118Z.json new file mode 100644 index 0000000..ce0ee82 --- /dev/null +++ b/.omc/state/checkpoints/checkpoint-2026-05-02T03-47-02-118Z.json @@ -0,0 +1,16 @@ +{ + "created_at": "2026-05-02T03:47:02.117Z", + "trigger": "auto", + "active_modes": {}, + "todo_summary": { + "pending": 0, + "in_progress": 0, + "completed": 0 + }, + "wisdom_exported": false, + "background_jobs": { + "active": [], + "recent": [], + "stats": null + } +} \ No newline at end of file diff --git a/.omc/state/checkpoints/checkpoint-2026-05-02T09-30-22-645Z.json b/.omc/state/checkpoints/checkpoint-2026-05-02T09-30-22-645Z.json new file mode 100644 index 0000000..8f58787 --- /dev/null +++ b/.omc/state/checkpoints/checkpoint-2026-05-02T09-30-22-645Z.json @@ -0,0 +1,16 @@ +{ + "created_at": "2026-05-02T09:30:22.643Z", + "trigger": "auto", + "active_modes": {}, + "todo_summary": { + "pending": 0, + "in_progress": 0, + "completed": 0 + }, + "wisdom_exported": false, + "background_jobs": { + "active": [], + "recent": [], + "stats": null + } +} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index acdc314..34f1cf2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,12 @@ FROM node:22-alpine AS deps -RUN apk add --no-cache python3 make g++ sqlite +RUN apk add --no-cache python3 make g++ sqlite git WORKDIR /app +# Clone patched emdash source +RUN git clone --depth=1 https://git.moreminimore.com/kunthawat/emdash-patch-imageupload.git emdash-patch + COPY package.json pnpm-lock.yaml* ./ RUN corepack enable && corepack prepare pnpm@9.0.0 --activate RUN pnpm install @@ -12,6 +15,9 @@ FROM deps AS builder WORKDIR /app +# Copy patched emdash into node_modules +COPY --from=deps /app/emdash-patch /app/node_modules/emdash + COPY --from=deps /app/node_modules ./node_modules COPY . .