Dockerfile: clone patched emdash from gitea instead of using npm

Patches visual editor image upload fix from:
https://git.moreminimore.com/kunthawat/emdash-patch-imageupload.git
This commit is contained in:
Kunthawat Greethong
2026-05-03 10:52:12 +07:00
parent 13f775c57c
commit f8e8e2207b
10 changed files with 348 additions and 1 deletions

221
.omc/project-memory.json Normal file
View File

@@ -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": []
}

View File

@@ -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": []
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -1,9 +1,12 @@
FROM node:22-alpine AS deps 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 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* ./ COPY package.json pnpm-lock.yaml* ./
RUN corepack enable && corepack prepare pnpm@9.0.0 --activate RUN corepack enable && corepack prepare pnpm@9.0.0 --activate
RUN pnpm install RUN pnpm install
@@ -12,6 +15,9 @@ FROM deps AS builder
WORKDIR /app 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 --from=deps /app/node_modules ./node_modules
COPY . . COPY . .