The @emdash-cms/auth package needs its node_modules (ulidx, etc.) to be
linked. Running pnpm install after copying it restores the proper links.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The exports map in package.json is needed at build time to resolve
"@emdash-cms/auth/adapters/kysely". Copying just dist/ loses the
exports field in package.json causing resolution to fail.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The @emdash-cms/auth package needs its built dist/ folder copied,
not the raw src. Also builds auth package after core.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Resolves build error: Rollup failed to resolve import
"@emdash-cms/auth/adapters/kysely" from emdash middleware.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The blog template's db.ts imported 'mysql' from 'emdash/db' but the
patched source only exports sqlite, libsql, and postgres adapters.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add .env.example documenting SQLite/PostgreSQL/MySQL config
- Add src/lib/db.ts with getDatabaseConfig() helper that parses
DATABASE_URL and returns the appropriate db config
- Update astro.config.mjs to use getDatabaseConfig() instead of
hardcoded sqlite path
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Changed from plain <img> to <Image> component so locally
uploaded images display correctly on the posts list page.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Changed database path to ./storage/data.db
- Changed uploads path to ./storage/uploads
- Updated Dockerfile to create storage/uploads dir (not uploads)
- Updated entrypoint.sh to check /app/storage/data.db
- Removed COPY of uploads from builder to runner
Now all persistent data is in /app/storage/:
- /app/storage/data.db (SQLite database)
- /app/storage/uploads/ (uploaded media)
Easypanel mount: emdash-storage → /app/storage
To update EmDash: change version in package.json → push → redeploy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add 3 second delay to wait for Easypanel volume mount
- Check file size as backup (seeded DB > 1KB, empty < 1KB)
- Check content table count as primary validation
- Safer fallback if any check fails
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Change ternary src check to simple truthy check so image
displays when set, otherwise shows nothing instead of code window.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Check for content entries, not just file existence. If data.db
exists but has no content, still run seed to populate.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove emdash seed from Dockerfile build stage (no longer overwrites DB)
- Add entrypoint.sh that checks if data.db exists before seeding
- First launch: seed runs to populate DB
- Subsequent redeploys: DB exists, seed skipped, data preserved
- Also remove COPY data.db from runner stage (volume mount handles persistence)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Change field types from "text" to "richtext" and wrap content in PortableText
components. This enables proper inline live editing instead of jumping to backend.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds content binding on Base component for homepage live editing navigation.
Uses homepage.id (entry ULID) not homepage.data.id (not in homepage schema).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use Image component instead of img tag. Add hero_image to hero-visual
container with {...homepage.edit.hero_image} for live editing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Added {...homepage.edit.X} spread attributes to all editable elements
(hero, features, comparison, CTA sections). This is what the live
editing UI needs to enable inline editing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Singleton collections don't support live editing in EmDash.
Converting to regular collection enables live editing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PortableText blocks in EmDash require a _key field. Added
to widgetAreas, sections, and all content entries.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Image fields in EmDash seed content use { url, alt } format directly,
not {$media: { url, alt, filename } }
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add homepage singleton collection with 30+ editable fields
- Update index.astro to fetch from getEmDashEntry("homepage", "homepage-main")
- Update Base.astro footer tagline/copyright from EmDash
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>