services resolve dc3/data against the process cwd, so a driver started
from its module directory writes dc3-driver/<module>/dc3/data/... that
the root-anchored dc3/data/ pattern never matched; use **/dc3/data/
(any depth) and add the sqlite -shm/-wal/-journal sidecars that *.db
alone does not cover
* 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>
* 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
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.
The existing .gitignore relied on non-standard globs ("*target",
"*logs") and missed several categories that contributors regularly
hit: Java class/jar artifacts, JVM crash dumps, common secret
extensions, full IDE templates (IntelliJ/Eclipse/VS Code), editor
swap and backup files, OS junk on macOS/Windows/Linux, Python venvs
(now used by the mkdocs build), and Node fallbacks for any future
frontend tooling.
Reorganize into labelled sections and add the missing patterns. Use
"target/" instead of "*target" and "*.log" + "logs/" instead of
"*logs". Deliberately avoid a bare "bin/" entry so dc3/bin/ shell
scripts stay tracked.
git check-ignore confirms target/ is still ignored, dc3/bin and
.env.example are not affected, and the only currently tracked file
matching a new rule is an existing client.key under
dc3-common-mqtt/src/main/resources/certs/ which is unaffected because
git already tracks it.
Drop the stale `test-results/.last-run.json` Playwright artifact at the
backend repo root and extend `.gitignore` to cover surefire, failsafe and
jacoco report directories plus testcontainers state, in preparation for
the upcoming test infrastructure bootstrap.