Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 27 additions & 4 deletions apps/docs/.astro/astro/content.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/.astro/settings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"_variables": {
"lastUpdateCheck": 1780853643721
"lastUpdateCheck": 1784334507362
}
}
10 changes: 9 additions & 1 deletion apps/docs/src/content.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 };
34 changes: 34 additions & 0 deletions apps/docs/src/content/changelogs/v0.1.0.md
Original file line number Diff line number Diff line change
@@ -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
23 changes: 23 additions & 0 deletions apps/docs/src/content/changelogs/v0.1.1.md
Original file line number Diff line number Diff line change
@@ -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
48 changes: 48 additions & 0 deletions apps/docs/src/content/docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
30 changes: 30 additions & 0 deletions apps/docs/src/pages/docs/changelog.astro
Original file line number Diff line number Diff line change
@@ -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)
);
---

<Layout
title="Changelog"
category="Release"
description="All notable changes to Dequel, tracked per release."
currentSlug="changelog"
>
<h1>Changelog</h1>
<p>All notable changes to Dequel, tracked per release.</p>

{changelogs.map(async (entry) => {
const { Content } = await render(entry);
return (
<section>
<h2>{entry.data.version} — {entry.data.date}</h2>
<Content />
</section>
);
})}

{!changelogs.length && <p>No changelogs yet.</p>}
</Layout>
Loading