Skip to content

Commit 323330e

Browse files
JOYclaude
andcommitted
feat: add CHANGELOG.md and sync-changelog workflow
Moved from DOS/DOS.AI (private) to DOS/DOS.AI-Docs (public) for free unlimited GitHub Actions minutes. Workflow triggers on CHANGELOG.md push: - Parses platform entries + fetches OpenClaw GitHub releases - LLM rewrites to user-friendly copy via inference.dos.ai - Upserts to dosai.changelog table in Supabase Requires repo secrets: SUPABASE_SERVICE_KEY, DOS_API_KEY Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 1bc68ae commit 323330e

4 files changed

Lines changed: 511 additions & 132 deletions

File tree

.github/workflows/sync-changelog.yml

Lines changed: 10 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -4,120 +4,23 @@ on:
44
push:
55
branches: [main]
66
paths:
7-
- 'changelog.md'
7+
- 'CHANGELOG.md'
88
workflow_dispatch:
99

10-
env:
11-
SUPABASE_URL: https://gulptwduchsjcsbndmua.supabase.co
12-
1310
jobs:
1411
sync:
1512
runs-on: ubuntu-latest
1613
steps:
1714
- uses: actions/checkout@v4
1815

19-
- name: Parse changelog.md and sync to Supabase
20-
run: |
21-
node << 'SCRIPT'
22-
const fs = require('fs');
23-
const https = require('https');
24-
25-
const content = fs.readFileSync('changelog.md', 'utf8');
26-
const lines = content.split('\n');
27-
28-
const typeMap = {
29-
'New': 'feature',
30-
'Improved': 'improvement',
31-
'Fixed': 'fix',
32-
'Breaking': 'breaking',
33-
};
34-
const productMap = {
35-
'Dashboard': 'dashboard',
36-
'Agents': 'agents',
37-
'Integrations': 'integrations',
38-
'Platform': 'platform',
39-
'DOSClaw': 'dosclaw',
40-
'API Gateway': 'gateway',
41-
'DOSafe': 'dosafe',
42-
'Inference': 'inference',
43-
};
44-
45-
const entries = [];
46-
let currentDate = null;
47-
let currentType = null;
48-
49-
for (const line of lines) {
50-
// ## March 27, 2026
51-
const dateMatch = line.match(/^## (.+)$/);
52-
if (dateMatch) {
53-
const d = new Date(dateMatch[1].trim());
54-
currentDate = isNaN(d) ? null : d.toISOString().split('T')[0];
55-
currentType = null;
56-
continue;
57-
}
58-
59-
// ### New / Fixed / Improved / Breaking
60-
const typeMatch = line.match(/^### (.+)$/);
61-
if (typeMatch) {
62-
currentType = typeMap[typeMatch[1].trim()] || null;
63-
continue;
64-
}
65-
66-
// - `Product` **Title** — Description
67-
const entryMatch = line.match(/^- `([^`]+)` \*\*([^*]+)\*\* — (.+)$/);
68-
if (entryMatch && currentDate && currentType) {
69-
const product = productMap[entryMatch[1]] || entryMatch[1].toLowerCase();
70-
entries.push({
71-
date: currentDate,
72-
product,
73-
type: currentType,
74-
title: entryMatch[2].trim(),
75-
description: entryMatch[3].trim(),
76-
source: 'auto',
77-
});
78-
}
79-
}
80-
81-
if (entries.length === 0) {
82-
console.log('No entries parsed');
83-
process.exit(0);
84-
}
85-
86-
console.log(`Parsed ${entries.length} entries`);
87-
88-
// Call Supabase RPC
89-
const body = JSON.stringify({
90-
p_entries: entries,
91-
p_write_key: process.env.CHANGELOG_WRITE_KEY,
92-
});
93-
94-
const url = new URL(`${process.env.SUPABASE_URL}/rest/v1/rpc/insert_changelog`);
95-
const options = {
96-
hostname: url.hostname,
97-
path: url.pathname,
98-
method: 'POST',
99-
headers: {
100-
'Content-Type': 'application/json',
101-
'apikey': process.env.SUPABASE_ANON_KEY,
102-
'Authorization': `Bearer ${process.env.SUPABASE_ANON_KEY}`,
103-
'Content-Profile': 'dosai',
104-
'Content-Length': Buffer.byteLength(body),
105-
},
106-
};
16+
- uses: denoland/setup-deno@v2
17+
with:
18+
deno-version: v2.x
10719

108-
const req = https.request(options, (res) => {
109-
let data = '';
110-
res.on('data', (chunk) => data += chunk);
111-
res.on('end', () => {
112-
console.log(`Supabase response (${res.statusCode}):`, data);
113-
process.exit(res.statusCode >= 200 && res.statusCode < 300 ? 0 : 1);
114-
});
115-
});
116-
req.on('error', (e) => { console.error(e); process.exit(1); });
117-
req.write(body);
118-
req.end();
119-
SCRIPT
20+
- name: Sync changelog
12021
env:
121-
SUPABASE_URL: ${{ env.SUPABASE_URL }}
122-
SUPABASE_ANON_KEY: ${{ secrets.SUPABASE_ANON_KEY }}
123-
CHANGELOG_WRITE_KEY: ${{ secrets.CHANGELOG_WRITE_KEY }}
22+
SUPABASE_SERVICE_KEY: ${{ secrets.SUPABASE_SERVICE_KEY }}
23+
VLLM_API_KEY: ${{ secrets.DOS_API_KEY }}
24+
VLLM_URL: https://inference.dos.ai
25+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
26+
run: deno run --allow-net --allow-read --allow-env scripts/sync-changelog.ts

CHANGELOG.md

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# Changelog
2+
3+
All notable changes to the DOS.AI platform are documented here.
4+
This file is the source of truth — synced to `dosai.changelog` on deploy.
5+
6+
Format: `- **type** [product] Title — Description`
7+
Types: `feature`, `fix`, `improvement`, `breaking`
8+
Products: `dosclaw`, `dashboard`, `gateway`, `dosafe`, `inference`
9+
10+
---
11+
12+
## 2026-03-29
13+
14+
- **feature** [dosclaw] Instance ID Badge — Each agent now shows a short instance ID (e.g. #568bc2) in the header for quick identification when reporting issues
15+
- **fix** [dosclaw] Open Console Instant Load — Console button now appears immediately on page load instead of after a 4–5s delay
16+
- **fix** [dosclaw] Provisioning Progress Bar — Redeploy now shows the same step-by-step progress bar as initial deploy
17+
- **fix** [dosclaw] Agent Health Stability — Gateway marked healthy only after 3 consecutive successful health checks, preventing premature "Open Console" during boot
18+
- **feature** [dashboard] Language Switcher — Added support for Chinese, Japanese, Korean, Thai, and Indonesian in addition to Vietnamese and English
19+
20+
## 2026-03-28
21+
22+
- **feature** [dosclaw] WhatsApp Dual-Mode — Support both shared bot and native QR code connection for WhatsApp
23+
- **feature** [dosclaw] Discord Connect UI — New Discord integration panel with bot invite flow and connection status
24+
- **fix** [dosclaw] Shared Bot Status — Channel cards now correctly show shared bot connection state for all supported platforms
25+
- **fix** [dosclaw] WhatsApp QR Generation — Fixed CLI flags and stream header parsing for reliable QR code display
26+
- **fix** [dosclaw] Container Lifecycle — Confirm dialogs for stop/restart; fixed upgrade race condition and lxcfs mount errors on restart
27+
- **fix** [dosclaw] Agent Entrypoint — Phased background installs to prevent OOM during boot; pinned dependency versions for reproducibility
28+
- **improvement** [dosclaw] Agent Identity — Agent name and persona now managed via IDENTITY.md for cleaner runtime separation
29+
30+
## 2026-03-26
31+
32+
- **feature** [dosclaw] Instance Sizing — Choose Standard (1 vCPU, 2 GB, $5) or Plus (2 vCPU, 4 GB, $10) when creating agents
33+
- **fix** [dosclaw] Version Selector Filter — Hide architecture-specific tags (-arm64, -amd64), show only multi-arch versions
34+
- **fix** [dosclaw] Token Preservation — Fixed bug where disabling/enabling channels erased encrypted bot tokens
35+
36+
## 2026-03-25
37+
38+
- **feature** [dashboard] Alert Notifications — Telegram alerts for provisioning failures and container resource limits
39+
- **feature** [dosclaw] Auto-capture Owner Chat ID — Bot automatically captures owner's Telegram chat ID on first message for alert delivery
40+
41+
## 2026-03-24
42+
43+
- **feature** [dosclaw] Version Pinning — Pin agents to a specific OpenClaw version or follow latest
44+
- **feature** [dosclaw] Agent Upgrade — One-click upgrade to latest OpenClaw image with graceful container recreation
45+
- **feature** [dosclaw] Brave Search Integration — Connect Brave Search API key to enable web_search tool
46+
- **feature** [dosclaw] GitHub Integration — Connect GitHub token for code-related agent skills
47+
48+
## 2026-03-23
49+
50+
- **feature** [dosclaw] Standalone Agent Containers — No HiClaw Manager dependency, agents run independently with trusted-proxy auth
51+
- **feature** [dosclaw] Bot Personality System — First-run onboarding: name, creature, vibe, emoji
52+
- **feature** [dosclaw] Agent Templates — 5 templates (Personal Assistant, Sales TikTok, CS Shopee, Content Creator, Custom)
53+
- **feature** [dosclaw] Credit-based Pricing — Free=1 trial bot 7d, Plus=1 free, Pro=3 free, extra bots charged from credits
54+
- **feature** [dosclaw] Console Proxy — Trusted-proxy auth for browser-based agent console
55+
- **improvement** [dashboard] Agent Creation Flow — 2-step UI: template selection then configure screen
56+
- **breaking** [dosclaw] Removed CoPaw Runtime — All agents now use OpenClaw runtime only
57+
58+
## 2026-03-21
59+
60+
- **feature** [gateway] Go API Gateway on Cloud Run — Replaced Cloudflare Worker with full Go backend at api.dos.ai
61+
- **feature** [gateway] LLM Inference Proxy — vLLM primary + fallback providers, SSE streaming
62+
- **feature** [gateway] API Key Auth — dos_sk_* format, SHA-256 hash lookup, sliding window rate limiting
63+
- **feature** [gateway] Credit Billing — Balance check, token-based deduction, credit management
64+
65+
## 2026-03-20
66+
67+
- **feature** [dosclaw] Agent Knowledge Base — File upload with RAG indexing for agent context
68+
- **feature** [dosclaw] Agent Backup/Restore — Export and import agent configurations
69+
- **feature** [dosclaw] Default Permissions — Allow-all or ask-permission modes per agent
70+
71+
## 2026-03-15
72+
73+
- **feature** [dosafe] SPAI Detector — Spectral analysis for modern AI image detection (CVPR 2025)
74+
- **feature** [dosafe] Context-Aware Ensemble — Dynamic model weights based on image metadata (editor, compression, beauty app)
75+
- **feature** [dosafe] Exact Match Safety Cap — Reverse search exact matches cap AI score (3+ matches -> 45%)
76+
- **improvement** [gateway] LLM Prompt V3 — Calibrated for DINOv3 + SPAI + CommFor ensemble
77+
78+
## 2026-03-10
79+
80+
- **feature** [dosafe] Web Search + LLM Analysis — 4th data source for entity risk assessment (Serper/SerpApi + vLLM)
81+
- **feature** [dosafe] Partner API — Public API at dosafe.io/api/v1 with API key auth and scoped permissions
82+
83+
## 2026-03-08
84+
85+
- **feature** [dosclaw] Onboarding Wizard — Full CLI setup: security, model, channels, skills, hooks, hatching
86+
- **feature** [dosclaw] Plan Enforcement — Soft warning for plan limits instead of hard block
87+
- **feature** [dashboard] Channel Selector — Telegram, Discord, WhatsApp (coming soon) for agent creation
88+
89+
## 2026-03-01
90+
91+
- **feature** [gateway] DOSafe Integration — Entity check, bulk check, URL check, text/image AI detection endpoints
92+
- **feature** [gateway] Agent Management API — Full CRUD + lifecycle (start, stop, upgrade, restart)
93+
- **feature** [gateway] Anonymous IP Quota — 20 checks/day for DOSafe public endpoints
94+
- **improvement** [gateway] User Quota Persistence — Moved from in-memory to Supabase
95+
96+
## 2026-02-15
97+
98+
- **feature** [dashboard] Organization Management — Create and manage organizations
99+
- **feature** [dashboard] API Key Management — Create, list, revoke keys with usage tracking
100+
- **improvement** [dashboard] Dark Mode — Fixed flash on select dropdowns
101+
- **fix** [dashboard] Token Refresh — Fixed billing precision issues
102+
103+
## 2026-02-01
104+
105+
- **feature** [dashboard] Supabase Auth Migration — OAuth, password login, logout, identity management
106+
- **feature** [dashboard] Avatar Upload — Profile photo upload with organization support
107+
- **feature** [dashboard] Billing System — Credit-based billing with Stripe integration
108+
- **improvement** [dashboard] Server-side OAuth — Redirect to avoid /login flash

0 commit comments

Comments
 (0)