What's New
Manual changelog for the documentation site. Data as of 2026-10.
2026-10 — security and operations hardening
- Meta table: every value that reaches DDL is validated and rendered strictly — typed default values, a whitelist grammar for REFERENCE display expressions (
ref.<column>,'text',||),prefix + codechecked as a whole; creating a table whose physical name already exists is refused (use Import). Every endpoint carries its ownmeta-table:*permission.meta checkalso reports registered tables without a physical table. - Operations:
staging/prodserve the actuator on a separate management port (admin8089, web8091); probes are/livezand/readyzon the business port. Log lines carry[traceId,requestId]. Prometheus discovers the backends by DNS. - Secrets: prod Redis requires
REDIS_PASSWORD; Redis values are deserialized through a type allow-list;AESEncrypterhas no built-in key any more (AES-GCM); request logs mask credential key variants (accessToken,refresh_token, …) and staging/prod do not log bodies. - CLI:
db init/db update/init/uprun the module-awareflywayMigrateAll, pass the DB credentials and fail on migration errors;doctorprints ASCII[ OK ]/[FAIL]. - C-end API: client mistakes return
404/405/400problem details instead of500. - Permissions: every admin handler has its own permission, and every checked permission is grantable through a menu or button (the scheduler, file upload/delete and CMS image upload used to check codes nobody could be given). Meta-table code generation needs
meta-table:generate;copyreturns the newtableCode. - Hardening:
500responses no longer reveal exception details outside dev/test; staging needs explicit CORS origins; API signatures cover the request body;JWT_SECRETis gone (sa-token, no JWT). - Alerts: per-application error rate with a traffic floor, whole-heap memory, two disk tiers, DB pool exhaustion; Alertmanager delivers to
ALERT_WEBHOOK_URL; prod/staging sample 10% of traces. - CLI:
initwithout--writeis a pure dry-run, and it no longer generates anAES_KEYnothing reads. - Re-review fixes: the prod/staging deploy scripts seed from the right directory;
docker-compose.prod.ymlpasses every variable the admin requires; REFERENCE columns can only join the table itself or a registered meta table; data scope fails closed; generated controllers check permissions; the alert set gainsApplicationMissing; dotted page paths get their CSP; the meta-table edit page shows the loaded definition. - Admin login in prod: the server publishes its RSA public key (
getConfig→rsaPublicKey) and the login page encrypts with RSA-OAEP / SHA-256 (WebCrypto) — before, no client could log in to a prod deployment. Undecryptable passwords are answered as wrong passwords. - Audit IPs: one trusted resolution per request; the request, operation and login logs no longer take
X-Forwarded-Forfrom anyone. Clearing an audit log needs theremovepermission. - Request log: masking is a linear scan — long values (a base64 captcha image, escape-heavy bodies) used to overflow the stack in profiles that log payloads (dev/test), turning
GET /admin/auth/captchaImageinto a 500; each request is recorded once. - Meta-table values: JSON/GEO columns accept objects and arrays; ENUM values outside the dictionary — or with no dictionary at all — are rejected; duplicates on unique columns are
10408instead of a 500. - CLI:
meta check/export/importno longer start the job scheduler (arch-forge.scheduler.enabled=false). - Structure: repositories are module-internal; other modules read through api services (ADR-0010).
common.constant.Constantswas removed (unused). module-task and admin-user got real tests and higher coverage floors. - Ops: staging Redis requires
REDIS_PASSWORDlike prod; server-web traces are sampled and namedserver-web; the request-log IP honours trusted proxies; CI also boots the prod topology (management port, probes). - Meta-table: column length / precision / scale and ARRAY element types are validated before any DDL runs.
- Admin: the xlsx / mqtt demo pages and both dependencies are gone (known vulnerabilities, no fixed release).
- Process: one ADR series (ArchForge/docs/adr),
CONTRIBUTING.mdin every repository, trunk-based CI everywhere. - Request log:
mask-fieldsentries are key fragments now (tokenalso masksaccessToken), see Configuration.
2026-04
- Contract-first and AI workflow guides; first four ADRs.
- Homepage restated around five-repo + AI agents (not a 14-feature dump).
- Comparison table talks architecture, not stale Spring Boot 2.x claims. yudao / RuoYi-Vue-Pro now ships Spring Boot 4.1 + JDK 25 on
master-jdk25(see their 2026-06 notes). - ArchForgeSpec gained GitHub Actions (OpenAPI lint + path/enum checks).
- C-end uploads reject SVG/HTML; menu types aligned to backend 1/2/3/4.
- RSA default removed; Compose passwords required; OpenAPI write paths and extra enums documented.
Hosted public demo is still not provided. Run locally.