Commit Graph
54 Commits
Author SHA1 Message Date
pnoker a73ba1267a refactor(web,auth): httpOnly cookie auth + CSP + dedup + type debt
- token: httpOnly+Secure+SameSite cookie (backend Set/Clear + filter Cookie-first read), frontend axios drops X-Auth-Token, auth store uses sessionStorage flag, router guard checks flag
- security: CSP + nosniff + Referrer-Policy in index.html; delete dead getCookies/setCookies/removeCookies; remove Base64 obfuscation from storageUtil
- fix: 24 double-notification .catch failMessage removed (interceptor handles); storageUtil boolean get/set asymmetry fixed
- types: DeviceDetail/profile-detail/device-edit {} as any -> Partial<DeviceRecord>/DriverRecord/ProfileRecord
- dedup: API CRUD factory (11 modules), i18n confirmDelete interpolation (54 lines removed), CardShell unified + shared form-width mixin

Verification: vue-tsc green / 158 unit tests pass / mvn compile green
2026-08-08 18:40:58 +08:00
Henry Zhang 11fbf1d4bd feat(web): enable AI assistant with charted chat + enrich dashboard and entity data (#203)
AI assistant (was hidden in mock mode):
- Intercept /api/v3/agentic/chat/completions via a fetch mock (src/mock/fetch.ts); the assistant streams over raw fetch, not the axios adapter
- Keyword-aware scripted replies (temperature/energy/driver/point) emitting reasoning traces, text deltas and visualizations (line/area/column/bar/donut/stat/scatter)
- Show the assistant in mock builds (drop the isMock gate in Layout)
- Seed 4 multi-turn sessions (12 messages) with chart-bearing assistant replies + reasoning

Dashboard enrichment (home cards were sparse):
- Register the 8 insight endpoints the cards call (stream/device-stats/driver-stats/top/alert-aging/silent-sources/latency/activity) with realistic seed data so LiveDataFeed/AnalyticsTabs/SlaBadge/LatencyChart/ActivityHeatmap render content

Entity data (was thin):
- Drivers 8 -> 17, profiles 6 -> 14, points 18 -> 59, devices ~15 -> 65

Verification: vue-tsc green / 158 unit tests pass / build:mock succeeds
2026-08-08 00:39:41 +08:00
Henry Zhang 84110719ee feat(web): realistic mock demo + login-page entry and header icon fixes (#201)
Realistic mock:
- Generic CRUD registrar (crud.ts) + mutable in-memory db: full create/update/delete persistence for all entities
- Four structured seeds (auth/manager/data/agentic): real business data for 27 modules replacing the generic fallback stubs, with consistent relations
- Point-value 24h history curve (timeseries) + alarm/event/command history
- settings/business/agentic handlers covering all settings modules and special endpoints (tree/join queries)

Login page + header icons:
- Drop mock-mode pre-seeded token in main.ts and mock/index.ts so the demo starts at the login page (previously landed straight on home)
- Add Setting icon to the settings top-level menu (menuTree) and render icons on Layout dropdown sub-items (previously text-only)

Types: add [key:string]:unknown index signatures on entity interfaces in agentic.ts/common.ts (matches the existing DriverRecord convention)
Verification: vue-tsc green / 158 unit tests pass / build:mock succeeds / no internal address leaked in dist
2026-08-07 22:48:09 +08:00
Henry ZhangandClaude Fable 5 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 ZhangandClaude Fable 5 7c643a8e80 fix(api): dc3-api contract overhaul (auth JWT, history, presence, decision enum) (#193)
* fix(api): correct inverted enable_flag comment and document time unit

- tenant.proto enable_flag comment said "1 enabled, 0 disabled" but the
  actual EnableFlagEnum is ENABLE=0, DISABLE=1 — callers reading the
  comment would invert the flag. Correct it.
- base.proto create_time/operate_time are epoch milliseconds
  (LocalDateTimeUtil/Instant.toEpochMilli); document the unit so callers
  don't guess seconds vs millis.

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

* fix(api): carry timestamp in point-value history; explicit bool presence

#5 Point-value history: the whole chain (proto -> gRPC server ->
PointValueService -> repository -> facades -> controller -> agentic tool)
returned List<String> and dropped create_time even though the DB row
already carried it. Switch to PointValueBO / FacadePointValueBO end to
end so callers receive each value with its timestamp.

#6 Field presence: GrpcR.ok and McpIntrospectDTO.active are now optional
bool, so "unset" is distinguishable from false on the wire.

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

* fix(auth): unify JWT signing key, drop salt/password from token contract

The JWT signing key was per-principal — securityKey + ":" + salt, where
salt was the credential salt also carried through the gateway and the
token RPC. That makes the JWT key weak and widens salt exposure to every
gateway hop. Sign with the single configured securityKey (HS256) instead
and remove salt from the JWT path entirely:

- KeyUtil.generateToken/parserToken drop the salt parameter; the HMAC
  key is now just securityKey (must be >= 32 bytes for HS256).
- TokenService.generateToken/checkValid drop the salt parameter.
- token.proto GrpcLoginQuery drops salt and password — CheckValid only
  ever needed tenant, name and token.
- gateway FilterService, TokenGrpcFacade, TokenController adapted; the
  request header no longer feeds salt into validation.

The login-handshake salt (POST /token/salt, used to salt the password
client-side before verifyPassword) is unchanged — only the JWT signing
salt is removed.

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

* refactor(api): type MCP authorize decision as proto enum

The authorize-tool-call decision was a free-form string, so callers
could only compare it against literals with no compile-time check.
Introduce GrpcMcpDecision (MCP_DECISION_UNSPECIFIED / AUTHORIZED /
CONFIRM_REQUIRED / REJECTED) and type GrpcMcpToolAuthorizeDTO.decision
with it. Enum names match the existing auth-side literals, so the
mapping is a direct valueOf / name().

- McpRuntimeServer builds the enum via toGrpcDecision (unknown -> UNSPECIFIED).
- McpRuntimeGrpcFacade maps enum -> BO string via name().
- gateway unchanged: it receives the BO (string decision) through the facade.

The other string MCP fields (risk_level, status, grant_type,
principal_type) stay strings for now — their value sets are wider and
partly lowercase (OAuth grant_type), so they are a follow-up.

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

* fix(facade): align TokenLocalFacade with 3-arg checkValid (CI compile fix)

TokenLocalFacade (local impl) was missed when TokenFacade.checkValid
dropped salt; CI compiles facade-local-auth independently and caught
it. Align it + its test.

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 16:36:35 +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 ZhangandClaude Fable 5 e2527af78d fix(agentic): run markdown sanitize test under jsdom (#176)
DOMPurify does not strip <script>/on* handlers under happy-dom (the
default vitest environment), so the "strips <script> tags" assertion
has been failing on main since the sanitizer switched to DOMPurify.
Production is unaffected — real browsers sanitize correctly. Pin this
single test file to jsdom via a per-file environment annotation and add
jsdom as a devDependency; all other tests stay on happy-dom.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 12:39:45 +08:00
Henry ZhangandClaude Fable 5 73ff48bcb9 style: reformat codebase (backend java/xml, docs, web) (#175)
* style(backend): reformat and rearrange java/xml sources

Apply code cleanup across dc3-common and dc3-driver: whitespace and
indent normalization, import sorting, member rearrangement, and javadoc
normalization. No semantic changes; compilation verified.

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

* style(docs): reformat vitepress vue diagram components

Expand compact svg templates and normalize formatting across diagram
components, the seo module, and the theme stylesheet. No behavior
changes.

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

* style(docs): reformat markdown pages

Normalize markdown formatting. Restore the <script setup> component
imports that an earlier unused-import pass had wrongly stripped; every
<Diagram> tag now resolves to a backing import again.

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

* style: reformat point view and trim pom whitespace

Normalize whitespace in the point view and drop trailing whitespace in
pom.xml. No behavior changes.

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 12:13:36 +08:00
Henry Zhang 22263fc48a fix(security): patch postcss/brace-expansion CVEs + link SECURITY.md (#168)
- VulnerabilitiesID: pnpm update postcss/brace-expansion (transitive)
  — dc3-web: postcss 8.5.19+/8.5.25, brace-expansion 2.1.4/5.0.9
  (CVE path-traversal / DoS); docs: postcss 8.5.25
- SecurityPolicyID: SECURITY.md add GitHub Security Advisory
  (private vulnerability reporting) link as preferred channel

Fixes 4 dependabot alerts (PostCSS ×2, brace-expansion ×2).
2026-08-05 01:46:00 +08:00
pnoker 056bd9ae21 Merge remote-tracking branch 'origin/develop' into chore/promote-develop-main-3 2026-08-03 21:57:03 +08:00
Henry Zhang 00c67406b0 refactor(quality): fix unused-param/confusing-sig/local-temp/js-comparison (12) (#163)
- unused-parameter (7 private/non-override): drop unused params in
  Snmp getConnector/buildTarget, Sl651 handleSl651Message,
  PointCommandValidator.validateWriteValue, TypedValueConverter
  finiteFloat/finiteDouble (+ cascade callers). 3 interface default
  methods kept (contract).
- confusing-method-signature (1): AuthenticGatewayFilterFactory
  <Object> → dedicated Config type; apply(Object)→apply(Config)
- local-temp-file-info-disclosure (1): FileUtil creates temp dirs
  with owner-only rwx------ via PosixFilePermissions (Windows fallback)
- js/comparison-between-incompatible-types (1): isNull drop redundant
  val === undefined (== null loose already covers it)

Behavior-preserving. Compile + test-compile clean.
2026-08-03 21:55:13 +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 67526972aa fix(security): sanitize agentic assistant HTML with DOMPurify (XSS) (#157)
RenderedAssistantMessage rendered model output via v-html after a
hand-rolled regex sanitizer that CodeQL flagged 5 ways: bad-tag-filter,
incomplete-multi-character-sanitization (on* attributes, javascript:),
incomplete-url-scheme-check (data:/vbscript:). Replace with DOMPurify,
which covers all these plus mutation XSS. Fixes CodeQL #2146-2150.
2026-08-03 19:46:35 +08:00
7e116b9062 build(deps-dev): bump eslint-plugin-vue in /dc3-web (#140)
Bumps [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue) from 10.9.2 to 10.10.0.
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases)
- [Changelog](https://github.com/vuejs/eslint-plugin-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v10.9.2...v10.10.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-vue
  dependency-version: 10.10.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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>
Co-authored-by: pnoker <pnokers@gmail.com>
2026-08-03 14:36:11 +08:00
dependabot[bot]andHenry Zhang 152d6e9bf5 build(deps-dev): bump sass from 1.101.0 to 1.102.0 in /dc3-web (#139)
Bumps [sass](https://github.com/sass/dart-sass) from 1.101.0 to 1.102.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.101.0...1.102.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.102.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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:11:56 +08:00
dependabot[bot]andHenry Zhang 69c43f3203 build(deps-dev): bump @playwright/test from 1.61.1 to 1.62.0 in /dc3-web (#138)
Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.61.1 to 1.62.0.
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](https://github.com/microsoft/playwright/compare/v1.61.1...v1.62.0)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-version: 1.62.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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:11:52 +08:00
dependabot[bot]andHenry Zhang cce10d17e5 build(deps-dev): bump globals from 17.7.0 to 17.8.0 in /dc3-web (#137)
Bumps [globals](https://github.com/sindresorhus/globals) from 17.7.0 to 17.8.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.7.0...v17.8.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.8.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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:11:47 +08:00
pnokerandClaude Fable 5 8b7c65715a build(web): bump frontend dependencies
Batch-upgrade dc3-web dependencies (element-plus, pinia, vue-router,
@types/node, typescript-eslint, vite, vitest, and related dev tooling),
covering Dependabot PRs #125/#128/#129 that could not auto-rebase because
Dependabot cannot parse the pnpm v9 lockfile.

Keep typescript on ~6: vue-tsc 3.3.7 and its volar toolchain do not yet
support TypeScript 7 (vue-tsc crashes resolving the removed ./lib/tsc
export), which would break the type-check quality gate.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 22:22:45 +08:00
dependabot[bot] 1dbb757392 build(deps): bump pnoker/dc3-nginx from 2025.2 to 2025.9 in /dc3-web (#127)
Bumps pnoker/dc3-nginx from 2025.2 to 2025.9.

---
updated-dependencies:
- dependency-name: pnoker/dc3-nginx
  dependency-version: '2025.9'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-19 21:28:14 +08:00
dependabot[bot] 7e2d030096 build(deps): bump pnoker/dc3-node from 2025.2 to 2025.9 in /dc3-web (#126)
Bumps pnoker/dc3-node from 2025.2 to 2025.9.

---
updated-dependencies:
- dependency-name: pnoker/dc3-node
  dependency-version: '2025.9'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-19 21:28:08 +08:00
dependabot[bot] 2d064e336d build(deps-dev): bump vite from 8.1.0 to 8.1.5 in /dc3-web (#124)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 8.1.0 to 8.1.5.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.1.5/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 8.1.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-19 21:27:58 +08:00
dependabot[bot] 1d2c51098b build(deps-dev): bump vue-tsc from 3.3.5 to 3.3.7 in /dc3-web (#122)
Bumps [vue-tsc](https://github.com/vuejs/language-tools/tree/HEAD/packages/tsc) from 3.3.5 to 3.3.7.
- [Release notes](https://github.com/vuejs/language-tools/releases)
- [Changelog](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/language-tools/commits/v3.3.7/packages/tsc)

---
updated-dependencies:
- dependency-name: vue-tsc
  dependency-version: 3.3.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-19 21:27:52 +08:00
pnokerandClaude Fable 5 829e82fe28 fix(web): restore frontend testing guardrails doc and fix test path
The doc was moved from dc3-web/docs/ to docs/zh/frontend/ then deleted
as an "orphan", but ai-guardrails.test.ts still read the old path,
breaking the quality gate on every frontend PR. Restore the doc and
point the test at its current location.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 20:35:43 +08:00
pnokerandClaude Fable 5 6cd05d2c68 refactor(nginx): move SSL certs into nginx/certs directory
The nginx TLS cert lived in a top-level dependencies/conf.crt/ directory,
inconsistent with the per-component layout (grafana, postgres, rabbitmq,
nginx). Move it under dc3/dependencies/nginx/certs/dc3.site/ to sit with
the nginx config it belongs to, mirroring rabbitmq/keys/.

Update dc3-web/Dockerfile to COPY certs from the new path into
/etc/letsencrypt/live/, matching the path nginx.conf references.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:38:47 +08:00
pnokerandClaude Fable 5 956b710a6a style(web,docs): reindent Vue template interpolation blocks
Whitespace-only reindentation of multi-line {{ }} interpolation in
Point.vue and the docs architecture diagram components. No behavior change.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:31:22 +08:00
pnoker cfeb86dc9d docs: fix outdated cross-repo references in dc3-web/AGENTS.md
dc3-web is now part of iot-dc3 monorepo, not a separate repo.
Update "Cross-Repo References" section: rename to "Related Documentation",
fix paths from ../iot-dc3/ to ../ (dc3/ and pom.xml).
2026-07-13 20:12:59 +08:00
pnoker 99811cdea7 chore: consolidate dc3-web config and legal files into root
Since dc3-web is now part of the monorepo, remove duplicated files
and centralize project-wide configuration at the root level.

.gitignore:
- Merge dc3-web-specific patterns (dist/, coverage/, .vite/, *.tsbuildinfo,
  components.d.ts, .eslintcache, src-tauri/, *.db, *.sqlite, etc.) into root
- Add missing root patterns (*.crt, *.csr, *.backup, .history/, Sublime Text)
- Delete dc3-web/.gitignore

Makefile:
- Auto-generate GROUP_SERVICES_drivers from dc3-driver/ directory wildcard
- Replace 33 hand-written RUN_MODULE_ mappings with 5 explicit + foreach loop
- Fix catch-all %: rule to reject typos instead of silently succeeding

dc3-web/ legal files (7 files deleted):
- CODE_OF_CONDUCT.md, CONTRIBUTING.md — older versions, root has newer
- COPYRIGHT, LICENSE-AGPL.txt, SECURITY.md — identical to root
- LICENSE.txt — older version, root has v2026.5
- LICENSE — Apache 2.0 from standalone era, no longer applicable under AGPL
2026-07-13 19:31:43 +08:00
pnoker 76c8aafb97 security(deps): override vulnerable npm transitive deps 2026-07-10 21:53:05 +08:00
pnoker d47d125af0 style(web): reformat frontend with IDEA code style
Apply IDE formatting across all Vue, TypeScript, SCSS and test files.
No logic changes — whitespace, quotes and brace style only.
2026-07-10 00:02:51 +08:00
pnoker d228f4e252 chore: align license headers to AGPL across maven wrapper, docs and web assets 2026-07-10 00:02:18 +08:00
pnoker 4ea339ba14 chore(web): remove prettier, use IDE formatter for code style
Drop prettier, eslint-config-prettier, eslint-plugin-prettier and related
configs. Code formatting is now controlled solely by the IDE (IDEA) via
.editorconfig, eliminating the two-formatter conflict.
2026-07-10 00:01:51 +08:00
pnokerandClaude afdac8930a feat(dc3-web): add unified logger and apply prettier formatting
- Add src/utils/log.ts: environment-aware logger that gates debug/info
  to dev mode while warn/error always emit, with [dc3] prefix
- Wire logger into main.ts error handler
- Apply prettier formatting: 2→4 space indentation (index.html),
  array element line breaks (tsconfig.json), generic type formatting
  (device.ts), and trailing slash cleanup

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-09 12:52:10 +08:00
pnoker e739363df4 refactor: remove root package.json, set hooksPath directly from dc3-web 2026-06-29 18:52:14 +08:00
pnoker dc570b5537 refactor: move lint-staged governance to dc3-web, keep husky infra at root 2026-06-29 18:43:08 +08:00
pnoker b3d3962c84 refactor(dc3-web): remove Tauri desktop shell 2026-06-29 17:58:42 +08:00
pnoker a855c6f389 style(dc3-web): apply updated prettier bracket spacing and endOfLine 2026-06-29 17:50:32 +08:00
dependabot[bot] 46f2ec0880 build(deps): bump time from 0.3.37 to 0.3.51 in /dc3-web/src-tauri
Bumps [time](https://github.com/time-rs/time) from 0.3.37 to 0.3.51.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.37...v0.3.51)

---
updated-dependencies:
- dependency-name: time
  dependency-version: 0.3.51
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 22:57:59 +08:00
dependabot[bot] 5c158e5e4c build(deps): bump tokio from 1.42.0 to 1.46.1 in /dc3-web/src-tauri
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.42.0 to 1.46.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.42.0...tokio-1.46.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.46.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 22:57:09 +08:00
dependabot[bot] 4f1d912269 build(deps): bump bytes from 1.9.0 to 1.12.0 in /dc3-web/src-tauri
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.9.0 to 1.12.0.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.9.0...v1.12.0)

---
updated-dependencies:
- dependency-name: bytes
  dependency-version: 1.12.0
  dependency-type: indirect
...

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:45 +08:00
dependabot[bot] 72b75065e7 build(deps): bump crossbeam-channel from 0.5.13 to 0.5.15
Bumps [crossbeam-channel](https://github.com/crossbeam-rs/crossbeam) from 0.5.13 to 0.5.15.
- [Release notes](https://github.com/crossbeam-rs/crossbeam/releases)
- [Changelog](https://github.com/crossbeam-rs/crossbeam/blob/main/CHANGELOG.md)
- [Commits](https://github.com/crossbeam-rs/crossbeam/compare/crossbeam-channel-0.5.13...crossbeam-channel-0.5.15)

---
updated-dependencies:
- dependency-name: crossbeam-channel
  dependency-version: 0.5.15
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 22:36:15 +08:00
pnoker 7bfc9c4a87 test(web): update component test assertions for MiniAreaChart and ThingsCardActions 2026-06-28 19:57:58 +08:00
pnoker ee80e72cf7 chore(web): update project metadata, dependencies, and static assets 2026-06-28 19:57:58 +08:00
pnoker 4104c5162d style(web): apply consistent formatting to TypeScript type definitions 2026-06-28 19:57:58 +08:00
pnoker 7b16c73320 style(web): apply consistent formatting to Vue components
Template restructuring, line wrapping, and blank line consistency across
agentic chat, device/driver/point/profile cards, home components, and
settings alarm/command/event views.

Fix lint-staged ESLint path to reference dc3-web/node_modules.
2026-06-28 19:57:58 +08:00
pnoker e5b7d676d0 chore: remove unused public assets and orphan documentation
- Remove unreferenced public images (app, dashboard, error, loading-init)
- Remove dead script dc3-web/scripts/testing/changed-test-plan.mjs
- Remove orphan frontend docs (bad.md, settings-design, guardrails)
2026-06-28 19:57:58 +08:00
pnoker f29f01ccd3 fix: remove Chinese text from production code
- EventAttributeExt/CommandAttributeExt: change @Schema example from
  Chinese placeholder to 'Enter text'
- dc3-web/package.json: change description to English
2026-06-28 19:57:57 +08:00
pnokerandClaude 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 2e4645e606 Add 'dc3-web/' from commit '0c3c7a157c3f003d5d8a8077c3e3850069d19747'
git-subtree-dir: dc3-web
git-subtree-mainline: e133f5a027
git-subtree-split: 0c3c7a157c
2026-06-28 09:45:33 +08:00
pnoker ada2c16b2a chore: remove dc3-web frontend submodule from monorepo 2019-07-10 13:49:47 +08:00
pnoker b0e146d176 chore: remove express data-helper scaffold and restructure parent pom 2019-07-03 20:08:32 +08:00