From bbaaf9c3bc4f56a70b64bd55d2b047c0caa7d881 Mon Sep 17 00:00:00 2001 From: lftobs Date: Sat, 18 Jul 2026 01:07:56 +0100 Subject: [PATCH 1/3] docs: add v0.1.1 and v0.2.0 to changelog --- apps/docs/src/content/docs/changelog.md | 48 +++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/apps/docs/src/content/docs/changelog.md b/apps/docs/src/content/docs/changelog.md index da489ff..c615fbc 100644 --- a/apps/docs/src/content/docs/changelog.md +++ b/apps/docs/src/content/docs/changelog.md @@ -5,6 +5,54 @@ description: All notable changes to Dequel, tracked per release. slug: changelog --- +## 0.2.0 — 2026-07-17 + +### Features + +- PAM-based SSH authentication for project deployments +- Deploy to a specific commit SHA, not just branch HEAD +- Drizzle ORM migrations and a new deploy UI +- Toggle to clear build cache on next deploy +- `dequel update` command for self-updating the platform +- Mobile-responsive navigation and layouts +- Automatic cleanup of old Docker images and build artifacts + +### Improvements + +- GitHub OAuth now persists sessions across restarts and auto-detects the public URL from proxy headers +- PAM authentication moved to a standalone HTTP service for reliability +- Auth timeout and libc compatibility fixes +- Grafana dashboards and logging overhauled +- Install script improved for broader shell compatibility +- GitHub repo picker simplified to owner-affiliated repos only +- Docs navigation reorganized and UI polished + +### Bug Fixes + +- Migration errors and UI log display issues resolved +- Project deletion now properly cascades to related records + +## 0.1.1 — 2026-06-19 + +### Added + +- Per-project Grafana dashboards automatically created on successful deployment +- Configurable `CADDY_BASE_DOMAIN` for public ingress with automatic Let's Encrypt SSL +- Dynamic `railpack.json` generation with deployment abort support +- GitHub webhook management and project management API endpoints +- Project source and port configuration options +- SMTP configuration and system settings API + +### Changed + +- Monitoring stack hardened: Prometheus now validates TSDB blocks and quarantines corrupted ones on startup +- `PUBLIC_URL` is now derived from `CADDY_BASE_DOMAIN` instead of requiring separate configuration +- Refactored infrastructure monitoring configs into dedicated files for maintainability + +### Fixed + +- Container network reconciliation now force-disconnects stale network references before starting containers + ## 0.1.0 — 2026-06-08 ### Added From 98fe1fc1874454705dd261d351675664e900c3d2 Mon Sep 17 00:00:00 2001 From: lftobs Date: Sat, 18 Jul 2026 01:33:51 +0100 Subject: [PATCH 2/3] docs: dynamic changelog from content collection --- apps/docs/src/content.config.ts | 10 ++++++- apps/docs/src/content/changelogs/v0.1.0.md | 34 ++++++++++++++++++++++ apps/docs/src/content/changelogs/v0.1.1.md | 23 +++++++++++++++ apps/docs/src/pages/docs/changelog.astro | 30 +++++++++++++++++++ 4 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 apps/docs/src/content/changelogs/v0.1.0.md create mode 100644 apps/docs/src/content/changelogs/v0.1.1.md create mode 100644 apps/docs/src/pages/docs/changelog.astro diff --git a/apps/docs/src/content.config.ts b/apps/docs/src/content.config.ts index 98b1621..90dc20e 100644 --- a/apps/docs/src/content.config.ts +++ b/apps/docs/src/content.config.ts @@ -12,4 +12,12 @@ const docs = defineCollection({ }), }); -export const collections = { docs }; +const changelogs = defineCollection({ + loader: glob({ pattern: "*.md", base: "./src/content/changelogs" }), + schema: z.object({ + version: z.string(), + date: z.string(), + }), +}); + +export const collections = { docs, changelogs }; diff --git a/apps/docs/src/content/changelogs/v0.1.0.md b/apps/docs/src/content/changelogs/v0.1.0.md new file mode 100644 index 0000000..9a23869 --- /dev/null +++ b/apps/docs/src/content/changelogs/v0.1.0.md @@ -0,0 +1,34 @@ +--- +version: 0.1.0 +date: "2026-06-08" +--- + +### Added + +- Initial deployment platform with Git, ZIP, and Docker Compose source deploy +- Automatic build detection via Railpack +- Managed PostgreSQL and MySQL database provisioning +- Custom domain attachment with automatic SSL via Caddy / Let's Encrypt +- CPU-threshold based horizontal auto-scaling with configurable cooldown +- Per-project environment variable management with redeploy hooks +- Persistent Docker volume attachments +- Full observability stack: Prometheus, Loki, Grafana, cAdvisor +- CPU / memory threshold alerts via email or webhook +- API key management for programmatic access +- Job queue via Redis for async operations +- Deployment rollback support +- Boot-time reconciliation of container state +- Unified project versioning via root `VERSION` file and sync script +- One-command install script (`install.sh`) for quick setup +- Automated release pipeline via GitHub Actions +- Changelog page in documentation site +- Vercel deployment configuration for documentation site + +### Changed + +- `docker-compose.yml` now references images from `ghcr.io/dequel/*` with local build as fallback +- README updated with new install flow + +### Fixed + +- Railpack build timeout handling and log scrolling diff --git a/apps/docs/src/content/changelogs/v0.1.1.md b/apps/docs/src/content/changelogs/v0.1.1.md new file mode 100644 index 0000000..55bb037 --- /dev/null +++ b/apps/docs/src/content/changelogs/v0.1.1.md @@ -0,0 +1,23 @@ +--- +version: 0.1.1 +date: "2026-06-19" +--- + +### Added + +- Per-project Grafana dashboards automatically created on successful deployment +- Configurable `CADDY_BASE_DOMAIN` for public ingress with automatic Let's Encrypt SSL +- Dynamic `railpack.json` generation with deployment abort support +- GitHub webhook management and project management API endpoints +- Project source and port configuration options +- SMTP configuration and system settings API + +### Changed + +- Monitoring stack hardened: Prometheus now validates TSDB blocks and quarantines corrupted ones on startup +- `PUBLIC_URL` is now derived from `CADDY_BASE_DOMAIN` instead of requiring separate configuration +- Refactored infrastructure monitoring configs into dedicated files for maintainability + +### Fixed + +- Container network reconciliation now force-disconnects stale network references before starting containers diff --git a/apps/docs/src/pages/docs/changelog.astro b/apps/docs/src/pages/docs/changelog.astro new file mode 100644 index 0000000..52cc31c --- /dev/null +++ b/apps/docs/src/pages/docs/changelog.astro @@ -0,0 +1,30 @@ +--- +import { getCollection, render } from 'astro:content'; +import Layout from '../../layouts/Layout.astro'; + +const changelogs = (await getCollection('changelogs')).sort((a, b) => + b.data.date.localeCompare(a.data.date) +); +--- + + +

Changelog

+

All notable changes to Dequel, tracked per release.

+ + {changelogs.map(async (entry) => { + const { Content } = await render(entry); + return ( +
+

{entry.data.version} — {entry.data.date}

+ +
+ ); + })} + + {!changelogs.length &&

No changelogs yet.

} +
From 6c3acc7e77382bc0842f4ed9ba68d2415cbca9d5 Mon Sep 17 00:00:00 2001 From: lftobs Date: Sat, 18 Jul 2026 01:43:18 +0100 Subject: [PATCH 3/3] refactor(docs): migrate changelog to content collection Split single changelog file into individual versioned files within a new `changelogs` content collection. --- apps/docs/.astro/astro/content.d.ts | 31 +++++++++++++++++++++++++---- apps/docs/.astro/settings.json | 2 +- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/apps/docs/.astro/astro/content.d.ts b/apps/docs/.astro/astro/content.d.ts index a3ac838..57c8503 100644 --- a/apps/docs/.astro/astro/content.d.ts +++ b/apps/docs/.astro/astro/content.d.ts @@ -140,10 +140,33 @@ declare module 'astro:content' { >; type ContentEntryMap = { - "docs": { -"changelog.md": { - id: "changelog.md"; - slug: "changelog"; + "changelogs": { +"v0.1.0.md": { + id: "v0.1.0.md"; + slug: "v010"; + body: string; + collection: "changelogs"; + data: any +} & { render(): Render[".md"] }; +"v0.1.1.md": { + id: "v0.1.1.md"; + slug: "v011"; + body: string; + collection: "changelogs"; + data: any +} & { render(): Render[".md"] }; +"v0.2.0.md": { + id: "v0.2.0.md"; + slug: "v020"; + body: string; + collection: "changelogs"; + data: any +} & { render(): Render[".md"] }; +}; +"docs": { +"auth.md": { + id: "auth.md"; + slug: "auth"; body: string; collection: "docs"; data: any diff --git a/apps/docs/.astro/settings.json b/apps/docs/.astro/settings.json index 3a7f780..be2c74f 100644 --- a/apps/docs/.astro/settings.json +++ b/apps/docs/.astro/settings.json @@ -1,5 +1,5 @@ { "_variables": { - "lastUpdateCheck": 1780853643721 + "lastUpdateCheck": 1784334507362 } } \ No newline at end of file