Skip to content

Commit 4de13a8

Browse files
authored
Merge pull request #1078 from dreamteamprod/dev
Release 0.30.0
2 parents 6c60694 + c39e427 commit 4de13a8

164 files changed

Lines changed: 33157 additions & 412 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/dependabot.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@ updates:
1818
update-types: ["version-update:semver-major"]
1919
versioning-strategy: increase
2020
target-branch: dev
21+
- package-ecosystem: "npm"
22+
directory: "/client-v3"
23+
schedule:
24+
interval: "daily"
25+
ignore:
26+
- dependency-name: "*"
27+
update-types: ["version-update:semver-major"]
28+
versioning-strategy: increase
29+
target-branch: dev
2130
- package-ecosystem: "npm"
2231
directory: "/electron"
2332
schedule:

.github/labeler.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ labels:
3333
- label: "client"
3434
files:
3535
- "electron/.*"
36+
- label: "client-v3"
37+
files:
38+
- "client-v3/.*"
3639
- label: "server"
3740
files:
3841
- "server/.*"

.github/workflows/build-server.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,23 @@ jobs:
3434
cd client
3535
npm run build
3636
37+
- name: Setup Node.js (V3)
38+
uses: actions/setup-node@v4
39+
with:
40+
node-version: '24'
41+
cache: 'npm'
42+
cache-dependency-path: 'client-v3/package-lock.json'
43+
44+
- name: Install dependencies (V3)
45+
run: |
46+
cd client-v3
47+
npm ci
48+
49+
- name: Build frontend (V3)
50+
run: |
51+
cd client-v3
52+
npm run build
53+
3754
- name: Upload frontend build
3855
uses: actions/upload-artifact@v4
3956
with:

.github/workflows/client-test.yml

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,24 @@ jobs:
2626
if: always()
2727
with:
2828
check_name: 'Client Test Results'
29-
junit_files: '**/client/junit/*.xml'
29+
junit_files: '**/client/junit/*.xml'
30+
run-client-v3-tests:
31+
runs-on: ubuntu-latest
32+
defaults:
33+
run:
34+
working-directory: ./client-v3
35+
steps:
36+
- uses: actions/checkout@v3
37+
- uses: actions/setup-node@v3
38+
with:
39+
node-version: 24
40+
- name: Install dependencies
41+
run: npm ci
42+
- name: Run tests
43+
run: npm run test:run
44+
- name: Publish Test Results
45+
uses: EnricoMi/publish-unit-test-result-action@v2
46+
if: always()
47+
with:
48+
check_name: 'Client V3 Test Results'
49+
junit_files: '**/client-v3/junit/*.xml'

.github/workflows/nodelint.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,28 @@ jobs:
5353
node-version: 24
5454
- run: npm ci
5555
- run: npm run typecheck
56+
run-node-lint-client-v3:
57+
runs-on: ubuntu-latest
58+
defaults:
59+
run:
60+
working-directory: ./client-v3
61+
steps:
62+
- uses: actions/checkout@v4
63+
- uses: actions/setup-node@v4
64+
with:
65+
node-version: 24
66+
- run: npm ci
67+
- run: npm run ci-lint
68+
run-typecheck-client-v3:
69+
runs-on: ubuntu-latest
70+
defaults:
71+
run:
72+
working-directory: ./client-v3
73+
steps:
74+
- uses: actions/checkout@v4
75+
- uses: actions/setup-node@v4
76+
with:
77+
node-version: 24
78+
- run: npm ci
79+
- run: npm run typecheck
80+

Dockerfile

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
FROM node:24-bookworm AS node_build
1+
FROM node:24-bookworm AS build_v2
22

3-
# npm 11 bundled with Node 24, no separate install needed
43
RUN mkdir -p /server/static
5-
64
COPY /client/package.json /client/package.json
75
COPY /client/package-lock.json /client/package-lock.json
86
COPY /client/.npmrc /client/.npmrc
@@ -12,7 +10,15 @@ COPY /client /client
1210
COPY /docs /docs
1311
RUN npm run build
1412

15-
COPY /server /server
13+
FROM node:24-bookworm AS build_v3
14+
15+
RUN mkdir -p /server/static/ui-new
16+
COPY /client-v3/package.json /client-v3/package.json
17+
COPY /client-v3/package-lock.json /client-v3/package-lock.json
18+
WORKDIR /client-v3
19+
RUN npm ci
20+
COPY /client-v3 /client-v3
21+
RUN npm run build
1622

1723
FROM python:3.13-bookworm
1824

@@ -22,8 +28,10 @@ RUN pip install -r requirements.txt
2228
RUN apt update
2329
RUN apt install -y nano
2430

25-
COPY --from=node_build /server /server
31+
COPY /server /server
32+
COPY --from=build_v2 /server/static /server/static
33+
COPY --from=build_v3 /server/static/ui-new /server/static/ui-new
2634
WORKDIR /server
2735
RUN mkdir conf
2836
EXPOSE 8080
29-
ENTRYPOINT ["python3", "main.py"]
37+
ENTRYPOINT ["python3", "main.py"]

client-v3/.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
node_modules/
2+
dist/
3+
dist-electron/
4+
junit/
5+
coverage/
6+
*.backup
7+
components.d.ts

client-v3/.prettierignore

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Dependencies
2+
node_modules/
3+
4+
# Build outputs
5+
dist/
6+
../server/static/
7+
8+
# Test outputs
9+
coverage/
10+
junit/
11+
12+
# Backups
13+
*.backup

client-v3/eslint.config.ts

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
import js from '@eslint/js';
2+
import pluginVue from 'eslint-plugin-vue';
3+
import vueParser from 'vue-eslint-parser';
4+
import globals from 'globals';
5+
import tsParser from '@typescript-eslint/parser';
6+
import tsPlugin from '@typescript-eslint/eslint-plugin';
7+
import prettierConfig from 'eslint-config-prettier';
8+
import prettierPlugin from 'eslint-plugin-prettier';
9+
import tseslint from 'typescript-eslint';
10+
11+
const sharedRules = {
12+
'prettier/prettier': 'error',
13+
...prettierConfig.rules,
14+
'max-len': 'off',
15+
'no-unused-vars': 'off',
16+
'vue/no-unused-vars': 'off',
17+
'no-plusplus': 'off',
18+
'no-param-reassign': [
19+
'error',
20+
{
21+
props: true,
22+
ignorePropertyModificationsFor: ['state', 'acc', 'e'],
23+
},
24+
],
25+
};
26+
27+
const tsRules = {
28+
...Object.assign({}, ...tseslint.configs.recommended.map((c) => c.rules ?? {})),
29+
'@typescript-eslint/no-explicit-any': 'off',
30+
'@typescript-eslint/no-unused-vars': 'off',
31+
};
32+
33+
const sharedGlobals = {
34+
...globals.browser,
35+
...globals.node,
36+
...globals.es2021,
37+
};
38+
39+
export default [
40+
{
41+
ignores: [
42+
'**/node_modules/**',
43+
'**/dist/**',
44+
'../server/static/**',
45+
'junit/**',
46+
'*.backup',
47+
],
48+
},
49+
js.configs.recommended,
50+
...pluginVue.configs['flat/recommended'],
51+
// TypeScript source files
52+
{
53+
files: ['**/*.ts'],
54+
plugins: {
55+
'@typescript-eslint': tsPlugin,
56+
prettier: prettierPlugin,
57+
},
58+
languageOptions: {
59+
parser: tsParser,
60+
parserOptions: { ecmaVersion: 2022, sourceType: 'module' },
61+
globals: sharedGlobals,
62+
},
63+
rules: { ...tsRules, ...sharedRules },
64+
},
65+
// Vue SFCs — all use <script lang="ts">
66+
{
67+
files: ['**/*.vue'],
68+
plugins: {
69+
'@typescript-eslint': tsPlugin,
70+
prettier: prettierPlugin,
71+
},
72+
languageOptions: {
73+
parser: vueParser,
74+
parserOptions: {
75+
parser: tsParser,
76+
ecmaVersion: 2022,
77+
sourceType: 'module',
78+
},
79+
globals: sharedGlobals,
80+
},
81+
rules: { ...tsRules, ...sharedRules },
82+
},
83+
// Test files — declare vitest globals
84+
{
85+
files: ['**/*.test.ts'],
86+
languageOptions: {
87+
globals: {
88+
describe: 'readonly',
89+
it: 'readonly',
90+
expect: 'readonly',
91+
vi: 'readonly',
92+
beforeEach: 'readonly',
93+
afterEach: 'readonly',
94+
},
95+
},
96+
},
97+
];

client-v3/index.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<title>DigiScript</title>
7+
</head>
8+
<body>
9+
<div id="app"></div>
10+
<script type="module" src="./src/main.ts"></script>
11+
</body>
12+
</html>

0 commit comments

Comments
 (0)