Commit Graph

86 Commits

Author SHA1 Message Date
b4c3a99d67 tts: 删除减负区标题与说明文字(03/Assist、减负区、描述) 2026-09-18 11:29:31 +08:00
e46cd69c56 ui: 生成语音按钮移到错别字按钮后面
- 生成语音按钮从输入区底部移到工具栏,紧跟在“✓ 错别字”之后
- 底部仅保留音色清单状态文字
2026-09-17 20:17:06 +08:00
3ef24ba854 feat: improve AI Lab OCR and TTS workspace 2026-09-17 18:11:05 +08:00
3bd536e37f ui: download button label to 下载音频 2026-09-12 16:33:45 +08:00
66ed2d8c3a fix: restore result panel on return, rename via modal on player row, filename with full timestamp, show filenames in history 2026-09-12 16:14:39 +08:00
63ff0222cc feat: shorter auto TTS filenames (4 CJK/8 latin), user rename support 2026-09-12 07:37:57 +08:00
0395cd0ff2 feat: TTS download filename = text summary_voice_date 2026-09-12 07:25:01 +08:00
6acd57ab6e fix: tts settings audit target_id must be UUID 2026-09-12 06:16:19 +08:00
0a4f6c555e docs: record follow-up releases a06b5f4..86fc51e 2026-09-12 06:10:55 +08:00
86fc51e486 feat: admin TTS settings (db-backed) with probe-before-save; worker uses dynamic tts config 2026-09-12 06:08:27 +08:00
af5b4afebf feat: redirect to home after logout (header and account) 2026-09-12 03:37:41 +08:00
d296b7aa72 feat: header reflects auth state (account/logout); fix admin api requests losing Content-Type (user delete 422) 2026-09-12 03:25:46 +08:00
a06b5f44c4 style: unify all button hover to cyan ghost style, drop orange 2026-09-12 03:15:12 +08:00
bbc7622d1b docs: record 2026-09-12 production deployment (49a916b) 2026-09-12 03:11:19 +08:00
49a916bbf4 feat: home menu link, button restyle with brand icon, CMS zh labels/i18n and logout button 2026-09-12 03:00:43 +08:00
8e74bc71e9 chore: exclude apps/ from root tsconfig so www builds standalone on server 2026-09-12 01:51:53 +08:00
7fa81481df fix(cms): keep admin root route segments undefined to avoid 404 after login 2026-09-12 01:37:16 +08:00
c6d323081c docs: record 2026-09-11 production deployment (ad87a71) 2026-09-11 22:06:39 +08:00
ad87a71edf fix: use brand logo as favicon
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-11 19:48:25 +08:00
5b9d74acb7 feat: add user profile management and admin user deletion 2026-09-11 18:22:48 +08:00
57c854a3f2 fix: preserve cms base url after login 2026-09-11 17:39:32 +08:00
080af1151b fix: use full navigation for cms entry 2026-09-11 17:29:55 +08:00
70f64b69e6 fix: redirect cms root to admin 2026-09-11 17:23:00 +08:00
be7e1f4e00 fix: expose cms management entry 2026-09-11 16:52:29 +08:00
c439ccb2d1 feat: add captcha and unique username login 2026-09-11 16:25:32 +08:00
de6fdb02c3 feat: add email or sms registration verification 2026-09-11 16:22:57 +08:00
8a7dd626f8 fix: clarify email verification is enabled 2026-09-11 15:19:59 +08:00
ef2cae59ad feat: require email verification for registration 2026-09-11 15:17:02 +08:00
b805887882 fix: clarify production registration messaging 2026-09-11 15:03:06 +08:00
32a397afe0 Revert "feat: add temporary coming soon homepage"
This reverts commit 97abca8f0f.
2026-09-11 14:51:33 +08:00
97abca8f0f feat: add temporary coming soon homepage 2026-09-10 19:59:25 +08:00
f613fc5680 docs: record production deployment and smtp alert template 2026-09-10 19:48:25 +08:00
df6a0e46a6 docs: rework offsite backup into a real, restorable archive
Move backup to /volume2/NetBackup (DSM shared folder, kts_bak read/write) and
change the design from a --delete mirror to an additive, date-stamped archive:
per-run pg_dump snapshots for the DBs and per-run full tar.gz snapshots for
audio, each kept for 7 generations, transferred over encrypted SSH with
post-transfer SHA256 verification (success only when byte-identical). This
removes the --delete risk (source-side deletion no longer wipes the backup),
enables restore-to-a-date, and is verified by an actual restore from the NAS
into isolated DBs (0 errors, quota/ledger and audio associations consistent).
2026-09-10 17:48:51 +08:00
62dba45799 docs: correct offsite backup to /volume1/NetBackup via tar-over-SSH
Moved the backup out of the NAS home dir to /volume1/NetBackup/kaotings per
request. Synology restricts rsync-over-SSH to registered shared folders and
scp/sftp yields root-owned files that the backup account cannot rotate, so the
backup now uses tar over SSH (kts_bak-owned, rotatable, encrypted, key auth).
Document the transport rationale and the DSM shared-folder upgrade path for
incremental rsync.
2026-09-10 16:25:45 +08:00
99976ef77f docs: record configured offsite NAS backup (rsync over SSH)
Offsite backup to the Synology NAS (103.40.14.100:52200) is now configured:
pg_dump of business+CMS DBs (keep 7 per series) plus rsync of the audio dir,
encrypted over SSH with key auth, on a daily 03:00 systemd timer. Document the
destination, transport, script, timer, and restore-from-NAS procedure; mark the
backup-location item resolved (retention/threshold/owner still pending).
2026-09-10 15:24:04 +08:00
34c2b436f0 docs: Phase 5 acceptance, deployment, operations and phase report
Record the task/quota exception matrix (isolated fault injection) results,
the admin quota concurrency fix, the isolated restore drill (business/CMS/audio,
with the pre-existing missing-audio finding), upstream security launch blocker,
and remaining minor items. Each item marked pass / fail / awaiting-external with
test version and evidence. Do not mark reliability/launch-blocking items complete.
2026-09-10 05:01:27 +08:00
8657f447a1 fix(api): make quota adjustment consistent with concurrent freeze/settlement
Admin quota adjustment now takes the per-user advisory lock and a FOR UPDATE
row lock on the quota account before projecting the balance, so the check
covers both used and reserved amounts and stays transactionally consistent
with task freeze and settlement. Settlement and lease-recovery paths also
lock the quota row explicitly.

Add the isolated Phase 5 exception-matrix harness (fault injection against a
dedicated DB + fake upstream) covering last-quota contention, concurrent
admin reduce, freeze/reduce stress, bad/oversized/timeout upstream, storage
failure, cross-period settlement and queued/running restart recovery.
Add test-only deps, provisioning helper (secrets via env) and test README.
2026-09-10 04:38:47 +08:00
956862215d docs: record P4-04..P4-07 admin acceptance and leftover items 2026-09-10 02:59:36 +08:00
2aa1af97a4 feat(admin): build real admin UI for users, VIP/quota, TTS and audit 2026-09-10 02:34:27 +08:00
8aae84b404 feat(admin): P4-04..P4-06 admin API for users, VIP/quota, TTS and audit 2026-09-10 02:30:29 +08:00
be297f2fb2 chore: decommission CMS one-shot seed route and document slug query 2026-09-10 02:03:02 +08:00
3af0a03da2 docs: record Phase 4 CMS acceptance results 2026-09-10 01:30:47 +08:00
e5492ceccb fix: seed-admin route must not destroy shared payload pool 2026-09-10 01:21:55 +08:00
14d26c765a feat: add controlled one-shot CMS admin seed route 2026-09-10 01:18:20 +08:00
bd192d9a3c fix: add CMS initial migration for reproducible schema 2026-09-10 01:00:25 +08:00
187de3165b fix: restore Next basePath with Caddy passthrough 2026-09-10 00:31:22 +08:00
37164dd8ef fix: normalize optional segments in Payload admin route 2026-09-10 00:18:02 +08:00
1df151dd0a fix: delegate CMS prefix handling to Caddy 2026-09-09 23:05:48 +08:00
2b9baf2f5e fix: type generated Payload import map 2026-09-09 22:42:48 +08:00
f5cc7b45c7 fix: wire Payload CMS server functions and import map 2026-09-09 22:37:10 +08:00