Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
b6601d9
bump version to 0.57.0
wp99cp Dec 15, 2025
ae052ea
fix typo in URL path
wp99cp Dec 15, 2025
e9e0748
chore(deps): bump winston from 3.18.3 to 3.19.0 in /queueConsumer
dependabot[bot] Dec 15, 2025
710a55a
chore(deps-dev): bump jest and @types/jest in /backend
dependabot[bot] Dec 15, 2025
523ba3e
feat: use log streaming (fixes #1995)
wp99cp Dec 15, 2025
427e604
fix: #1994
wp99cp Dec 15, 2025
eba9f83
feat: configure vitepress to use clean URLs (fixes #1997)
wp99cp Dec 15, 2025
2d5f4ad
chore(deps): bump docker/login-action from 2 to 3
dependabot[bot] Dec 15, 2025
9765146
chore(deps): bump docker/build-push-action from 4 to 6
dependabot[bot] Dec 15, 2025
4da5a23
chore(deps): bump actions/upload-artifact from 5 to 6
dependabot[bot] Dec 15, 2025
c27c3e4
chore(deps): bump docker/setup-buildx-action from 2 to 3
dependabot[bot] Dec 15, 2025
c55c501
chore(deps): bump pnpm/action-setup from 2 to 4
dependabot[bot] Dec 15, 2025
bf9f386
chore(deps): bump @nestjs/core from 10.4.6 to 11.1.9 in /queueConsumer
dependabot[bot] Dec 15, 2025
0a3ceb1
chore(deps): bump @nestjs/swagger from 8.1.1 to 11.2.3 in /backend
dependabot[bot] Dec 15, 2025
dfe7fb9
chore(deps): bump @aws-sdk/client-s3 in /frontend
dependabot[bot] Dec 15, 2025
5f9f96b
chore(deps-dev): bump @nestjs/testing from 10.4.20 to 11.1.9 in /backend
dependabot[bot] Dec 15, 2025
0b2513f
chore(deps): bump vue-router from 4.6.3 to 4.6.4 in /frontend
dependabot[bot] Dec 15, 2025
f39ce8e
chore(deps-dev): bump eslint from 9.39.1 to 9.39.2 in /backend
dependabot[bot] Dec 15, 2025
895d3b4
chore(deps-dev): bump autoprefixer from 10.4.22 to 10.4.23 in /frontend
dependabot[bot] Dec 15, 2025
61d9894
chore(deps): bump googleapis from 166.0.0 to 168.0.0 in /queueConsumer
dependabot[bot] Dec 15, 2025
ad35e6f
chore(deps-dev): bump @types/node from 24.10.1 to 25.0.2 in /frontend
dependabot[bot] Dec 15, 2025
e81a432
chore(deps-dev): bump @types/node from 24.10.1 to 25.0.2 in /docs
dependabot[bot] Dec 15, 2025
56077b5
chore(deps): bump systeminformation in /queueConsumer
dependabot[bot] Dec 15, 2025
a8e8e8b
chore(deps-dev): bump vue-tsc from 2.2.10 to 3.1.8 in /frontend
dependabot[bot] Dec 15, 2025
868696c
chore(deps-dev): bump vite from 7.2.6 to 7.3.0 in /docs
dependabot[bot] Dec 15, 2025
74d627d
chore(deps-dev): bump @aws-sdk/client-s3 in /backend
dependabot[bot] Dec 15, 2025
3e7b770
feat: add support for floats as resource constraints
wp99cp Dec 15, 2025
810f2f0
feat: improve error msg for container exit of action containers
wp99cp Dec 15, 2025
ddce65e
feat: add actions tab to files page
wp99cp Dec 15, 2025
76aecbb
feat: improve empty state
wp99cp Dec 15, 2025
6363f31
feat: white space agnostic search for mission and file names (#1993)
wp99cp Dec 16, 2025
ab97c4f
feat: add keepPreviousData to useQuery for improved data handling
wp99cp Dec 16, 2025
330e5ec
fix: metadata creation: use dynamic value assignment based on data type
wp99cp Dec 16, 2025
e15a7a0
fix: metadata seeding: use dynamic value assignment based on data type
wp99cp Dec 16, 2025
8173c25
fix: filter by metadata
wp99cp Dec 16, 2025
3d80d19
feat: implement #1957
wp99cp Dec 16, 2025
5dcb7b3
feat: add XML support for `std_msgs/msg/String` preview
wp99cp Dec 16, 2025
32b096c
fix: internal server error for queueu (#2002)
wp99cp Dec 17, 2025
ca03053
chore: extract search into separate component (prepares for #1962)
wp99cp Dec 17, 2025
bf713d1
feat: introduce smart filter for files (#1962, #1882)
wp99cp Dec 18, 2025
e69336b
feat: searchable project and mission selection and improvements to se…
wp99cp Dec 18, 2025
9dbc72b
feat: implement advanced filter within a mission (#1962)
wp99cp Dec 19, 2025
9067a97
fix: remove code duplication
wp99cp Dec 19, 2025
08a4378
fix: remove unnecessary inner declaration of `seenNames`
wp99cp Dec 19, 2025
02cae29
Merge pull request #2025 from leggedrobotics/feat/improved-search
wp99cp Dec 19, 2025
bba814c
fix: server does not set version header (#2024)
wp99cp Dec 19, 2025
cf3565d
feat: add project size aggregation (#1837)
wp99cp Dec 19, 2025
2199c78
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/backend/…
wp99cp Dec 19, 2025
bf1727d
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/queueCon…
wp99cp Dec 19, 2025
cf972ed
Merge remote-tracking branch 'origin/dependabot/github_actions/stagin…
wp99cp Dec 19, 2025
38bee5f
Merge remote-tracking branch 'origin/dependabot/github_actions/stagin…
wp99cp Dec 19, 2025
7f9d551
Merge remote-tracking branch 'origin/dependabot/github_actions/stagin…
wp99cp Dec 19, 2025
5ab3ed2
Merge remote-tracking branch 'origin/dependabot/github_actions/stagin…
wp99cp Dec 19, 2025
b9c4451
Merge remote-tracking branch 'origin/dependabot/github_actions/stagin…
wp99cp Dec 19, 2025
a1068e0
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/queueCon…
wp99cp Dec 19, 2025
549cc65
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/backend/…
wp99cp Dec 19, 2025
e574f56
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/frontend…
wp99cp Dec 19, 2025
3c26fa6
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/backend/…
wp99cp Dec 19, 2025
a9b146e
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/frontend…
wp99cp Dec 19, 2025
cc56b38
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/backend/…
wp99cp Dec 19, 2025
7a792e4
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/frontend…
wp99cp Dec 19, 2025
eb4f58c
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/queueCon…
wp99cp Dec 19, 2025
340122d
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/frontend…
wp99cp Dec 19, 2025
b863f84
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/docs/sta…
wp99cp Dec 19, 2025
4c7c97b
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/backend/…
wp99cp Dec 19, 2025
e1a6c01
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/docs/sta…
wp99cp Dec 19, 2025
41aca2d
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/frontend…
wp99cp Dec 19, 2025
dc00412
Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/queueCon…
wp99cp Dec 19, 2025
5060c7a
chore: update dependencies
wp99cp Dec 19, 2025
b8f9e8c
chore: fix issues after s3 update (#1267)
wp99cp Dec 19, 2025
7e3e636
fix: remove conflicting pnpm version
wp99cp Dec 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions .github/workflows/build-sample-actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ jobs:
uses: actions/checkout@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3

- name: Login to Docker Hub
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
Expand All @@ -47,7 +47,11 @@ jobs:
id: tag
run: |
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
echo "tag=dev" >> $GITHUB_OUTPUT
if [ "${{ matrix.type }}" == "prod" ] && [ "${{ github.ref }}" == "refs/heads/main" ]; then
echo "tag=latest" >> $GITHUB_OUTPUT
else
echo "tag=dev" >> $GITHUB_OUTPUT
fi
echo "kleinkram_version=${{ inputs.kleinkram_version }}" >> $GITHUB_OUTPUT
elif [ "${{ matrix.type }}" == "dev" ]; then
echo "tag=dev" >> $GITHUB_OUTPUT
Expand All @@ -58,7 +62,7 @@ jobs:
fi

- name: Build and push
uses: docker/build-push-action@v4
uses: docker/build-push-action@v6
with:
context: examples/kleinkram-actions/${{ matrix.action }}
push: true
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/check-migrations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@ jobs:
uses: actions/checkout@v4

- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 10
uses: pnpm/action-setup@v4

- name: Setup Node.js
uses: actions/setup-node@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/draft-pdf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
# This should be the path to the paper within your repo.
paper-path: openjournals/paper.md
- name: Upload
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: paper
# This is the output path where Pandoc will write the compiled
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import { MigrationInterface, QueryRunner } from 'typeorm';

export class ActionTemplateFloats1765827049888 implements MigrationInterface {
name = 'ActionTemplateFloats1765827049888';

public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "action_template" ALTER COLUMN "cpuCores" TYPE double precision`,
);
await queryRunner.query(
`ALTER TABLE "action_template" ALTER COLUMN "cpuMemory" TYPE double precision`,
);
await queryRunner.query(
`ALTER TABLE "action_template" ALTER COLUMN "gpuMemory" TYPE double precision`,
);
await queryRunner.query(
`ALTER TABLE "action_template" ALTER COLUMN "maxRuntime" TYPE double precision`,
);

// Worker memory floats
// cpuMemory
await queryRunner.query(`
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='worker' AND column_name='cpuMemory') THEN
ALTER TABLE "worker" ALTER COLUMN "cpuMemory" TYPE double precision;
ELSE
ALTER TABLE "worker" ADD COLUMN "cpuMemory" double precision NOT NULL DEFAULT 512;
END IF;
END $$;
`);

// gpuMemory
await queryRunner.query(`
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='worker' AND column_name='gpuMemory') THEN
ALTER TABLE "worker" ALTER COLUMN "gpuMemory" TYPE double precision;
ELSE
ALTER TABLE "worker" ADD COLUMN "gpuMemory" double precision NOT NULL DEFAULT -1;
END IF;
END $$;
`);
}

public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "action_template" DROP COLUMN "maxRuntime"`,
);
await queryRunner.query(
`ALTER TABLE "action_template" ADD "maxRuntime" integer NOT NULL`,
);
await queryRunner.query(
`ALTER TABLE "action_template" DROP COLUMN "gpuMemory"`,
);
await queryRunner.query(
`ALTER TABLE "action_template" ADD "gpuMemory" integer NOT NULL`,
);
await queryRunner.query(
`ALTER TABLE "action_template" DROP COLUMN "cpuMemory"`,
);
await queryRunner.query(
`ALTER TABLE "action_template" ADD "cpuMemory" integer NOT NULL`,
);
await queryRunner.query(
`ALTER TABLE "action_template" DROP COLUMN "cpuCores"`,
);
await queryRunner.query(
`ALTER TABLE "action_template" ADD "cpuCores" integer NOT NULL`,
);

// Revert worker memory to integer (might fail if data is not integer, but this is best effort reversion)
await queryRunner.query(
`ALTER TABLE "worker" ALTER COLUMN "cpuMemory" TYPE integer`,
);
await queryRunner.query(
`ALTER TABLE "worker" ALTER COLUMN "gpuMemory" TYPE integer`,
);
}
}
137 changes: 137 additions & 0 deletions backend/migration/migrations/1766151003272-add-indexes.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
import { MigrationInterface, QueryRunner } from 'typeorm';

export class AddIndexes1766151003272 implements MigrationInterface {
name = 'AddIndexes1766151003272';

public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE INDEX "IDX_2b0c110b36a490a5458d253911" ON "base_entity" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_2cabb849760babe66490f024e1" ON "account" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_aa2316638d2492c7a5e8a4eccd" ON "group_membership" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_82c1e9e16eb675a12a17d17f1f" ON "topic" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_45208f047f6742a3067fd1d49c" ON "file_entity" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_cff24fb6f37558b50778134d28" ON "file_entity" ("missionUuid") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_294e1e9ea20bb504f382a0d356" ON "category" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_16daeaa9a7c1eeeb4468048d21" ON "tag" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_8102188b489ccc9e092d7c177b" ON "tag_type" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_30310b331b5091f60585828d75" ON "project" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_82e2e7d6f42e4aaac0ed332a92" ON "project_access" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_01369bae653efc42ddf9a572fb" ON "access_group" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_98fc2b4a5cf77e0786d1a43cfa" ON "mission_access" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_7d27162eb31a34e1a5607ec135" ON "ingestion_job" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_39e216d9a16251e209621e8259" ON "mission" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_6d71c0142267fbeaba6cae0e5d" ON "mission" ("projectUuid") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_2fb2f37b515e0d6a6dc4a98888" ON "apikey" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_92f09bd6964a57bb87891a2acf" ON "user" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_c28b07d4ad69e00608d9453324" ON "action_template" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_945a53fd3adb2200313ebb0766" ON "action" ("deletedAt") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_5896a6451354b0fef7e7759dbe" ON "worker" ("deletedAt") `,
);
}

public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`DROP INDEX "public"."IDX_5896a6451354b0fef7e7759dbe"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_945a53fd3adb2200313ebb0766"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_c28b07d4ad69e00608d9453324"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_92f09bd6964a57bb87891a2acf"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_2fb2f37b515e0d6a6dc4a98888"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_6d71c0142267fbeaba6cae0e5d"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_39e216d9a16251e209621e8259"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_7d27162eb31a34e1a5607ec135"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_98fc2b4a5cf77e0786d1a43cfa"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_01369bae653efc42ddf9a572fb"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_82e2e7d6f42e4aaac0ed332a92"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_30310b331b5091f60585828d75"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_8102188b489ccc9e092d7c177b"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_16daeaa9a7c1eeeb4468048d21"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_294e1e9ea20bb504f382a0d356"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_cff24fb6f37558b50778134d28"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_45208f047f6742a3067fd1d49c"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_82c1e9e16eb675a12a17d17f1f"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_aa2316638d2492c7a5e8a4eccd"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_2cabb849760babe66490f024e1"`,
);
await queryRunner.query(
`DROP INDEX "public"."IDX_2b0c110b36a490a5458d253911"`,
);
}
}
31 changes: 16 additions & 15 deletions backend/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "kleinkram-backend",
"version": "0.56.0",
"version": "0.57.0",
"description": "",
"author": "",
"license": "MIT",
Expand All @@ -26,16 +26,16 @@
"@kleinkram/backend-common": "workspace:*",
"@kleinkram/shared": "workspace:*",
"@kleinkram/validation": "workspace:*",
"@nestjs/common": "^10.4.20",
"@nestjs/common": "^11.1.9",
"@nestjs/config": "^4.0.2",
"@nestjs/core": "^10.4.5",
"@nestjs/jwt": "^11.0.1",
"@nestjs/mapped-types": "^2.0.5",
"@nestjs/core": "^11.1.9",
"@nestjs/jwt": "^11.0.2",
"@nestjs/mapped-types": "^2.1.0",
"@nestjs/passport": "^11.0.5",
"@nestjs/platform-express": "^10.4.20",
"@nestjs/schedule": "^6.0.1",
"@nestjs/swagger": "^8.0.1",
"@nestjs/typeorm": "^10.0.2",
"@nestjs/platform-express": "^11.1.9",
"@nestjs/schedule": "^6.1.0",
"@nestjs/swagger": "^11.2.3",
"@nestjs/typeorm": "^11.0.0",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/exporter-prometheus": "^0.208.0",
"@opentelemetry/exporter-trace-otlp-http": "^0.208.0",
Expand Down Expand Up @@ -73,22 +73,23 @@
"reflect-metadata": "^0.2.0",
"rxjs": "^7.8.2",
"typeorm": "^0.3.27",
"typeorm-extension": "^3.7.3",
"uuid": "^13.0.0",
"winston": "^3.18.3",
"winston-loki": "^6.0.7"
},
"devDependencies": {
"@aws-sdk/client-s3": "3.726.1",
"@aws-sdk/client-s3": "3.952.0",
"@jest/globals": "^30.2.0",
"@nestjs/cli": "^11.0.10",
"@nestjs/cli": "^11.0.14",
"@nestjs/schematics": "^11.0.9",
"@nestjs/testing": "^10.0.0",
"@nestjs/testing": "^11.1.9",
"@swc/core": "^1.13.5",
"@swc/jest": "^0.2.39",
"@types/cookie-parser": "^1.4.9",
"@types/dotenv": "^8.2.3",
"@types/express": "^5.0.3",
"@types/jest": "^29.5.2",
"@types/jest": "^30.0.0",
"@types/jsonwebtoken": "^9.0.10",
"@types/multer": "^2.0.0",
"@types/node": "^24.10.1",
Expand All @@ -101,10 +102,10 @@
"@typescript-eslint/eslint-plugin": "^8.32.1",
"@typescript-eslint/parser": "^8.25.0",
"concurrently": "^8.2.2",
"eslint": "^9.37.0",
"eslint": "^9.39.2",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.5.4",
"jest": "^29.7.0",
"jest": "^30.2.0",
"jest-junit": "^16.0.0",
"node-loader": "^2.0.0",
"prettier": "^3.6.2",
Expand Down
Loading
Loading