121 Commits

Author SHA1 Message Date
pnoker 8594ad849e docs(brand): translate the svg and generator comments to english
- translate the banner template documentation and protocol-mesh comments in the eight localized banners, the template, and the social preview
- keep the localized tagline copy inside the comment blocks (it documents the LANGS table values)
- verified: all nine svg files parse as xml and the template placeholders remain intact
2026-08-25 16:13:46 +08:00
pnoker 769d1cb977 style: apply repository-wide formatting
- expand single-line Javadocs to multi-line blocks, rewrap Markdown prose, and reflow POM, YAML, and TypeScript formatting
- formatting only: no Java code lines changed, no build-file semantics changed
- verified: backend compile and check_documentation.py pass, pnpm check and pnpm lint:check pass, and the dc3 YAML files parse
2026-08-25 13:35:00 +08:00
pnoker b26c0000be feat(release): add release backfill tool and docs-linked release footer 2026-08-19 17:02:35 +08:00
pnoker 2426d1b47f ci(docs): enforce documentation consistency 2026-08-19 00:06:14 +08:00
pnoker 21017f0155 style(brand): refine repository artwork 2026-08-18 23:16:34 +08:00
pnoker fd159b7a36 fix(database): repair and validate PostgreSQL initialization 2026-08-18 08:15:12 +08:00
pnoker dabd5d9718 feat(brand): add multilingual banners with dc3 protocol mesh to readmes 2026-08-14 19:26:07 +08:00
pnoker a58064cc5c ci(release): verify releases before publishing artifacts 2026-08-12 01:04:49 +08:00
pnoker c8e65ceafa ci(web): widen deploy-pages tolerance for Pages queue stalls
The first deploy after enabling the demo.dc3.site custom domain landed in
deployment_queued and was cancelled by the Pages backend. Bump error_count
(10→20) and timeout (10m→15m) so transient queue stalls can ride through
instead of aborting.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 21:37:57 +08:00
Henry Zhang 7802eeb999 feat(web): static mock demo deployable to demo.dc3.site (#199)
* feat(web): complete static mock demo for GitHub Pages

- register core/dashboard/dictionary handlers + seed data (driver/device/
  profile/point, dictionaries, dashboard stats/topology/alerts)
- fix router-guard timing: pre-seed auth at main.ts top level before router
  install, since the initial navigation runs as a microtask ahead of the
  async mock-chunk import
- hide agentic assistant in mock mode (its chat streams over raw fetch and
  bypasses the axios adapter)
- assetUrl helper for subpath-safe public assets
- GitHub Pages deploy workflow + public/CNAME (demo.dc3.site)
- unit tests covering the mock adapter

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(web): commit mock core handler skipped by core.* gitignore

The repo-root `core.*` rule (meant for JVM crash dumps) silently skipped
dc3-web/src/mock/handlers/core.ts during `git add`, so the PR build failed
type-check with "Cannot find module './handlers/core'". Force-add the file
and add a negation exception so it can't be dropped again.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* test(web): drop `as never` cast in mock-adapter test

The AI guardrail forbids double-assertion / never-cast type laundering.
Use the real AxiosRequestConfig type and a single boundary cast to R
(the interceptor unwraps the envelope) instead of `request(config as never)`.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 21:18:10 +08:00
Henry Zhang d06abff597 chore(docs): move docs site to standalone pnoker/iot-dc3-docs repo (#177)
* chore(docs): move docs site to standalone pnoker/iot-dc3-docs repo

The VitePress docs site now lives in pnoker/iot-dc3-docs and serves docs.dc3.site from there. Remove the in-repo docs/ and all docs-only build/deploy wiring so nothing dangles.

- delete docs/ (source moved to pnoker/iot-dc3-docs)

- delete .github/workflows/docs.yml (deploy owned by iot-dc3-docs)

- drop npm /docs dependabot block; clean codeql/.gitignore docs paths

- remove Makefile docs-* targets

- relocate AI testing policy into dc3-web/tests/ so the required Web guardrail test is self-contained (was reading ../docs/...)

- rewire README image refs (7 READMEs) and in-repo doc links (README.ai.md, AGENTS.md, dc3/doc/README.md) to https://docs.dc3.site / the new repo

dc3/doc/{TITLE,CHANGE,USAGE}.md STAY - release tooling (make changelog, docker-ci) regenerates them; the docs repo snapshots them.

* fix(docs): repair pre-existing broken doc links found during migration

- 8 READMEs: /en|zh/introduction/technology-stack -> /en|zh/development/technology-stack (page lives under development/, not introduction/)

- dc3-web/tests/README.md: ../docs/test-debugging.md (missing) -> https://docs.dc3.site/en/frontend/test-debugging
2026-08-06 14:54:17 +08:00
Henry Zhang 7c76f19c1c build(deps): bump pnpm/action-setup to v6.0.10 (#171)
pnpm/action-setup was pinned to a commit running on the deprecated Node.js 20 runtime (GitHub forces Node 24 and emits a warning). Bump to v6.0.10 (0977fd9) which runs natively on Node 24, removing the deprecation warning. Updates docs.yml (1) + ci-web.yml (2).

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 10:15:59 +08:00
pnoker 4cd16d23d1 Merge remote-tracking branch 'origin/develop' into chore/promote-develop-main-2 2026-08-03 20:24:41 +08:00
Henry Zhang 8ec3d38043 ci(backend): run backend CI on every PR (fix required-checks BLOCKED) (#155)
ci-backend.yml ignored dc3-web paths on pull_request, so npm-only
dependabot PRs never triggered backend CI — but compile/Unit/Integration/
coverage are required status checks, leaving those PRs perpetually
BLOCKED (had to --admin merge). Drop the pull_request paths-ignore so
every PR runs backend CI; keep it on push (a dc3-web-only push still
skips backend CI, which is fine — the PR already ran it).
2026-08-03 14:23:49 +08:00
dependabot[bot] f817ce4e28 build(deps): bump actions/setup-node from 6.5.0 to 7.0.0 (#153)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.5.0 to 7.0.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/249970729cb0ef3589644e2896645e5dc5ba9c38...820762786026740c76f36085b0efc47a31fe5020)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 13:32:43 +08:00
dependabot[bot] 7cf76107c9 build(deps): bump actions/setup-java from 4.8.0 to 5.7.0 (#152)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4.8.0 to 5.7.0.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/c1e323688fd81a25caa38c78aa6df2d33d3e20d9...b6effb05e454b25005698d916606bdc6ffcbf961)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: 5.7.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 13:32:38 +08:00
dependabot[bot] ba2c522280 build(deps): bump actions/upload-pages-artifact from 3.0.1 to 5.0.0 (#135)
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 3.0.1 to 5.0.0.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/56afc609e74202658d3ffba0e8f6dda462b719fa...fc324d3547104276b827a68afc52ff2a11cc49c9)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Henry Zhang <pnokers@icloud.com>
2026-08-03 12:22:35 +08:00
dependabot[bot] 344e1b1072 build(deps): bump docker/metadata-action from 5.10.0 to 6.2.0 (#130)
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.10.0 to 6.2.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](https://github.com/docker/metadata-action/compare/c299e40c65443455700f0fdfc63efafe5b349051...dc802804100637a589fabce1cb79ff13a1411302)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Henry Zhang <pnokers@icloud.com>
2026-08-03 12:22:30 +08:00
dependabot[bot] 9b61f5720a build(deps): bump softprops/action-gh-release (#134)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from c12583777ecdfd3be55c69cf75464299dc01057e to 3d0d9888cb7fd7b750713d6e236d1fcb99157228.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/c12583777ecdfd3be55c69cf75464299dc01057e...3d0d9888cb7fd7b750713d6e236d1fcb99157228)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 3d0d9888cb7fd7b750713d6e236d1fcb99157228
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Henry Zhang <pnokers@icloud.com>
2026-08-03 12:05:49 +08:00
dependabot[bot] 02b8bf95af build(deps): bump ossf/scorecard-action (#131)
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 99c09fe975337306107572b4fdf4db224cf8e2f2 to 4eaacf0543bb3f2c246792bd56e8cdeffafb205a.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](https://github.com/ossf/scorecard-action/compare/99c09fe975337306107572b4fdf4db224cf8e2f2...4eaacf0543bb3f2c246792bd56e8cdeffafb205a)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  dependency-version: 4eaacf0543bb3f2c246792bd56e8cdeffafb205a
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Henry Zhang <pnokers@icloud.com>
2026-08-03 12:05:45 +08:00
Henry Zhang 8a333a2791 chore(ci): route dependabot PRs to develop (#151)
dependabot.yml had no target-branch, so updates targeted the default
branch (main). main is the release branch and was red — compiler fixes
lived only on develop — which left every open dependabot PR BLOCKED.
Set target-branch: develop on all five ecosystems so upgrades land on
the integration branch first, get validated, then promote to main.
2026-08-03 11:52:54 +08:00
dependabot[bot] ac39d9d60f build(deps): bump actions/checkout from 4.3.1 to 7.0.0 (#103)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.3.1 to 7.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/34e114876b0b11c390a56381ad16ebd13914f8d5...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-19 21:07:39 +08:00
dependabot[bot] c13feb0b7a build(deps): bump docker/login-action from 3.7.0 to 4.4.0 (#106)
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.7.0 to 4.4.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/c94ce9fb468520275223c153574b00df6fe4bcc9...af1e73f918a031802d376d3c8bbc3fe56130a9b0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-19 21:07:34 +08:00
dependabot[bot] 583bd4993f build(deps): bump docker/setup-qemu-action from 3.7.0 to 4.2.0 (#105)
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3.7.0 to 4.2.0.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/c7c53464625b32c7a7e944ae62b3e17d2b600130...96fe6ef7f33517b61c61be40b68a1882f3264fb8)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-19 21:07:29 +08:00
dependabot[bot] 96d8e61e04 build(deps): bump docker/setup-buildx-action from 3.12.0 to 4.2.0 (#104)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.12.0 to 4.2.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/8d2750c68a42422c14e847fe6c8ac0403b4cbd6f...bb05f3f5519dd87d3ba754cc423b652a5edd6d2c)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-19 20:29:04 +08:00
dependabot[bot] f64327d4ea build(deps): bump pnpm/action-setup (#102)
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from f40ffcd9367d9f12939873eb1018b921a783ffaa to b906affcce14559ad1aafd4ab0e942779e9f58b1.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](https://github.com/pnpm/action-setup/compare/f40ffcd9367d9f12939873eb1018b921a783ffaa...b906affcce14559ad1aafd4ab0e942779e9f58b1)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-19 20:29:00 +08:00
pnoker ad89fde9dc ci: pin GitHub Actions and CodeQL workflows to immutable commit hashes
Replace floating action tags with pinned commit SHAs across the CI workflows and add the CodeQL config.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-16 20:03:59 +08:00
pnoker 46d788de74 docs(i18n): make issue and PR templates bilingual
Add inline zh/en to all issue templates, ISSUE_TEMPLATE/config.yml
contact links, and PULL_REQUEST_TEMPLATE.md using a "中文 / English"
per-line layout. good-first-issue.md was English-only; now consistent
with the others. Lowers the barrier for international contributors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:24:01 +08:00
pnoker 8d08826e2a ci: optimize GitHub Actions and dependabot coverage
- codeql: add javascript-typescript scanning for dc3-web/docs frontend
- dependabot: fix docker directories (14 stale paths with no Dockerfile
  -> 4 real ones: /, /dc3-web, /dc3/dependencies/{rabbitmq,postgres})
- remove orphan codeql-config.yml (never referenced by codeql.yml)
- merge docker-ci-web.yml into docker-ci.yml as build-web job with its
  own gha cache scope; release now needs both backend and web builds

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:04:37 +08:00
pnoker cfb2183bc8 ci(docker): add 20 missing drivers to docker-ci services list (#101) 2026-06-28 23:44:04 +08:00
Henry Zhang 72a5fceac0 chore: consolidate CI, docs, and issue templates (#99)
* ci(dependabot): add cargo ecosystem, groups, and clean up stale docker directories

* docs(ai): add spring-ai-deep-dive cross-references in en and zh indexes

* docs(community): add english FAQ and frontend developer guide

* chore(issue-templates): translate all templates to english

* ci(docker): add 20 missing driver images to Dockerfile, compose, and Makefile

* fix(docs): remove Vue template syntax from panorama SVGs so they render

* docs(ai): add spring-ai-deep-dive pages in en and zh
2026-06-28 23:42:04 +08:00
pnoker 0aa5c9e620 build(deps): bump actions/dependency-review-action from 4 to 5 2026-06-28 23:09:39 +08:00
pnoker 2d1b78b747 build(deps): bump actions/upload-artifact from 4 to 7 2026-06-28 23:09:06 +08:00
pnoker b0c8e9236b build(deps): bump softprops/action-gh-release from 2 to 3 2026-06-28 23:08:39 +08:00
pnoker e8b7730cd5 build(deps): bump actions/deploy-pages from 4 to 5 2026-06-28 23:07:44 +08:00
dependabot[bot] 5d4760320f build(deps): bump actions/setup-node from 4 to 6
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 22:37:27 +08:00
pnoker f301e41c6e style: apply consistent formatting to docs, config, and root files
Line wrapping, table alignment, blank line consistency across config.mts,
i18n, locale JSONs, FAQ, quickstart, frontend/development guides,
superpowers plans, README variants, and PR template.
2026-06-28 19:57:58 +08:00
pnoker 2198d7fffe chore: merge iot-dc3-web frontend into monorepo
Merge the standalone iot-dc3-web repository into iot-dc3 as dc3-web/,
creating a single monorepo with unified versioning, CI/CD, and release
process.

- subtree-add iot-dc3-web under dc3-web/ with full commit history
- relocate nginx configs and SSL certs to dc3/dependencies/
- merge CI workflows (ci-backend.yml, ci-web.yml, docker-ci-web.yml)
- merge Issue/PR templates and dependabot config
- host frontend docs under docs/zh/frontend/
- share .husky/ hooks via root-level package.json (pnpm)
- unify versioning: single dc3/bin/tag.sh (vYYYY.M.P) for the whole repo
- update Dockerfile, docker-compose.yml, Makefile for new paths
- remove redundant directories from dc3-web/ (.claude, .github, dc3, docs, bin)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-28 14:43:22 +08:00
pnoker b8d4169e15 test(ci): fix timezone-fragile test and scope coverage check to aggregate job 2026-06-26 20:28:45 +08:00
pnoker 2ba4f73b7d docs: add PR and issue templates 2026-06-26 14:31:34 +08:00
pnoker dd3ee73fb8 ci: drop release branch, rewire triggers to develop/main and v* tags 2026-06-26 14:23:13 +08:00
pnoker 0f0eac8c29 ci: manage docs npm deps via dependabot; scope codeql security-events:write to job level 2026-06-24 19:19:48 +08:00
pnoker 181c947fe7 ci(docs): point pnpm/action-setup at docs/package.json for packageManager 2026-06-24 16:22:01 +08:00
pnoker 2030eab432 ci(docs): build on Node 22 and use packageManager pnpm (fix node:sqlite / pnpm Node>=22.13 requirement) 2026-06-24 16:19:49 +08:00
pnoker a6846212fc docs(site): logo-blue retheme, grouped sidebar, frosted header, flat cards; relocate vitepress project under docs/
Theme: brand palette to logo azure (#1296db family) with AA-tuned links, neutralized backgrounds/shadows, per-section sidebar group headers with pill active state, borderless frosted nav, flat translucent feature cards; mermaid + theme-color recolored to blue.

Build: move package.json/pnpm-lock/pnpm-workspace/node_modules under docs/; scripts to 'vitepress dev/build/preview'; CI docs.yml uses working-directory docs + cache-dependency-path docs/pnpm-lock.yaml.
2026-06-24 16:12:03 +08:00
pnoker c3b7934670 ci(security): audit controller authorization 2026-06-10 20:37:48 +08:00
Vickey 00433f67a4 build: align docs build scripts and CI pnpm version
- add docs:dev/docs:build/docs:preview scripts and refresh the package
  description
- bump CI pnpm to 11.2.2 and build docs via pnpm run build
2026-06-09 18:15:12 +08:00
Vickey 27bcf1383b fix: address code review — security, thread safety, performance, and null safety
Security (CRITICAL):
- KeyUtil: read JWT signing key from DC3_SECURITY_KEY env/property
- UserPasswordServiceImpl: read default password from DC3_SECURITY_DEFAULT_PASSWORD env
- KeyLoader: read OPC-UA keystore password from OPCUA_KEYSTORE_PASSWORD env
- WebFilterConfig: return 401 on malformed X-Auth-User header
- AlgorithmConstant: document deprecated hardcoded constants

Thread safety (HIGH):
- Fix TOCTOU races in 4 driver connectors (computeIfAbsent)
- Fix PlcS7 lock leak, OpcUa connect timeout (5s)
- CoapClientManager: synchronize setURI to prevent URI race
- PointValueJob, MqttScheduleJob: add @DisallowConcurrentExecution
- SystemHealthServiceImpl: preserve interrupt flag
- WindowSampleBuffer: local AtomicInteger → int

Performance (MEDIUM):
- EntityStateExpiryScanner: batch alarm saves (saveBatch)
- ImportDeviceServiceImpl: batch config saves
- ResourceRegistrySyncServiceImpl: batch-load nodes, eliminate N+1 COUNTs
- DriverSenderServiceImpl: debug-gate hot-path logging
- PointServiceImpl: stream().count() → size()

Null safety (LOW):
- RegexUtil: null guards on isName/isPhone/isMail/isPassword/isHost
- HostUtil: null-check getNetworkInterfaces() return
- TimeUtil: log parse failures instead of silent null

Infrastructure:
- Add spring-boot-starter-cache + @EnableCaching CacheConfig
- Replace embedded modbus4j/plc-s7 jars with external Maven dependencies
- Add dc3-driver-modbus-rtu module
2026-05-26 08:40:25 +08:00
Vickey 14faabedc7 style: apply consistent formatting across GitHub workflows, docs and common modules 2026-05-19 00:15:07 +08:00
Vickey 9e9c1dc2e8 docs(site): switch documentation framework from MkDocs Material to VitePress
The MkDocs Material site felt visually dated. Switch to VitePress to
get a fresher default theme (the same one Vue, Vite, Pinia and
Element Plus use) and align the docs toolchain with the project's
Node ecosystem.

- Replace mkdocs.yml/requirements-docs.txt with package.json
  (pnpm scripts), pinned vitepress 1.5+, and pnpm-lock.yaml.
- Add docs/.vitepress/config.mts: zh-CN, /iot-dc3/ base, cleanUrls,
  per-section sidebars, local search with Chinese UI strings, edit
  link, light/dark theme labels in Chinese.
- Rewrite docs/index.md as layout: home with hero, six feature
  cards, and platform/architecture/license blocks underneath.
- docs/assets/ -> docs/public/ rename (VitePress static-asset
  convention). This rename was already absorbed by an unrelated
  upstream commit; only the architecture page reference is updated
  to /images/architecture-cn.png.
- Convert MkDocs snippets to VitePress <!--@include:-->:
  - community/{contributing,code-of-conduct,security} pull repo-root
    governance files,
  - development/changelog and guide/usage pull the docker-ci-
    referenced dc3/doc/{CHANGE,USAGE}.md.
- Wrap R<T> in inline code in architecture/modules.md so the Vue
  parser does not treat it as an unclosed HTML tag.
- Rewrite .github/workflows/docs.yml: pnpm/action-setup@v4 +
  setup-node@v4 (pnpm cache) + pnpm install --frozen-lockfile +
  pnpm docs:build + upload-pages-artifact (docs/.vitepress/dist)
  + deploy-pages. Trigger paths include docs/, package.json,
  pnpm-lock.yaml, governance files, and the two dc3/doc/ files
  referenced via include.
- Update .gitignore: drop /site/ and the Python-only venv entries,
  add docs/.vitepress/{cache,dist}/ and a Node/pnpm section.
- Adjust dc3/doc/README.md wording to mention VitePress include
  syntax instead of MkDocs snippets.

Verification: pnpm install + pnpm docs:build pass locally (5.44s);
the include-based pages (community/contributing, development/
changelog, guide/usage) render content from their source files; all
per-section sidebars resolve.
2026-05-18 19:53:58 +08:00