Repository navigation
Tags
Tags
Version 0.62.0 ### Features * **projects:** let users star projects and list the starred ones on the dashboard ([#2435](#2435)) ([0aabcc3](0aabcc3)) * **categories:** add an optional description to categories ([#2436](#2436)) ([1ec7c46](1ec7c46)) * **files:** support Markdown (`.md`) and CSV (`.csv`) files ([#2432](#2432)) ([87d6bd7](87d6bd7)) * **backend:** add `GET /triggers/:uuid` endpoint ([#2315](#2315)) ([aeceee4](aeceee4)) * **backend:** enforce mission-level read access controls on `GET /triggers` and `GET /triggers/:uuid` ([#2315](#2315)) ([e4be1a9](e4be1a9)) * **frontend:** add `getTrigger` service method backed by the new `/triggers/:uuid` endpoint ([#2315](#2315)) ([6742b38](6742b38)) * **frontend:** load the current trigger when opening the edit drawer ([#2315](#2315)) ([6b18be3](6b18be3)) ### Bug Fixes * **backend:** pin response headers on presigned download links ([#2434](#2434)) ([4d0df7f](4d0df7f)) * **backend:** hold API keys to their mission scope when reading a trigger ([#2315](#2315)) ([9b9f3ed](9b9f3ed)) * **backend:** use object-form TypeORM `select`/`relations` options ([#2315](#2315)) ([a7db990](a7db990)) * **queueConsumer:** register `ProjectStarEntity` so the service still boots ([#2435](#2435)) ([f38b8f8](f38b8f8)) * **projects:** reset pagination on scope change and link the starred shortcut ([#2435](#2435)) ([8e28e13](8e28e13)) * **categories:** regenerate migration and address review feedback ([#2436](#2436)) ([55568a8](55568a8)) * **frontend:** let the title section reach the screen edge on phones ([b0a7f54](b0a7f54)) ### Code Refactoring * **backend:** move trigger read authz into `CanReadTriggerGuard` and SQL access constraints ([#2315](#2315)) ([5a3d05d](5a3d05d)) * **CLI/SDK:** unify the duplicate single-trigger route constants ([#2315](#2315)) ([2c4f9bd](2c4f9bd)) ### Miscellaneous Chores * **CLI/SDK:** change `getTrigger` from `PATCH` to `GET` ([#2315](#2315)) ([d6bd660](d6bd660)) * **db:** add migrations `1790072293884-add-md-and-csv-to-file-type-enum`, `1790077978542-add-project-stars`, and `1790078942466-add-category-description` * **deps:** merge open dependency-bump PRs [#2428](https://github.com/leggedrobotics/kleinkram/pull/2428)-[#2431](https://github.com/leggedrobotics/kleinkram/pull/2431) into dev ([#2433](#2433)) ([d0ccd9e](d0ccd9e)) * **release:** bump version to 0.62.0 via `pnpm run bump:minor`
Version 0.61.0 ## [0.61.0](v0.60.0...v0.61.0) (2026-09-13) ### Features * **actions:** toggle line wrapping in the action log viewer ([#2421](#2421)) ([2f829d0](2f829d0)) * **backend:** allow sorting the projects table by total file size (`sortBy=size`) ([#2416](#2416)) ([fef60ab](fef60ab)) * **backend:** allow sorting the projects table by mission count (`sortBy=nrOfMissions`) ([#2417](#2417)) ([b1b9d02](b1b9d02)) * **files:** record real recording window (`recordingStartDate`, `recordingEndDate`) and duration instead of upload time ([#2418](#2418)) ([0260d5b](0260d5b)) * **files:** backfill recording window of already ingested files via background queue and maintenance endpoint ([#2418](#2418)) ([d30d572](d30d572)) * **files:** display recording start date, recording duration, and separate upload time in file header ([#2418](#2418)) ([ea4d468](ea4d468)) * **frontend:** responsive mobile layout and card designs across all pages, dialogs, and drawers ([#2415](#2415)) ([1adaabb](1adaabb)) * **frontend:** progressive coarse-to-fine loading of topic previews with high-rate topic downsampling ([#2414](#2414)) ([d8c3559](d8c3559)) * **frontend:** interactive NavSatFix track viewer with OpenStreetMap integration, altitude chart, and synchronized cross-hover ([#2414](#2414)) ([b3d7753](b3d7753)) * **frontend:** rebuild image sequence player with real-time playback, speed controls, and timeline scrubbing ([#2414](#2414)) ([6e21142](6e21142)) * **frontend:** rework upload dialog with multi-selection cards, inline renames, and client-side validation ([#2413](#2413)) ([f0d2f00](f0d2f00)) ### Bug Fixes * **backend:** scope and stabilise the project size sort query ([#2416](#2416)) ([87c688e](87c688e)) * **files:** prevent stalling, race conditions, and invalid date parsing during recording times backfill ([#2418](#2418)) ([1bb1008](1bb1008)) * **frontend:** prevent topic previews from crashing on BigInt division with error boundaries ([#2414](#2414)) ([b3d8c8f](b3d8c8f)) * **frontend:** include channel ID in MCAP message identity to avoid duplicate collisions across channels ([#2414](#2414)) ([6885ea3](6885ea3)) * **frontend:** detect unsupported compressed video formats and report errors instead of retrying ([#2414](#2414)) ([ae0fe04](ae0fe04)) * **frontend:** propagate inline file renames to upload state and guard upload actions against invalid files ([#2413](#2413)) ([fde0c2a](fde0c2a)) ([bd0c697](bd0c697)) * **frontend:** align mission page header with project page header and stack title and description ([#2411](#2411)) ([5208ae6](5208ae6)) ([27f45b5](27f45b5)) * **frontend:** ensure dialogs, drawers, bulk action bars, and topic tables fit phone viewports ([#2415](#2415)) ([4bfaf33](4bfaf33)) ([b99357a](b99357a)) ### Miscellaneous Chores * **db:** add migration `1789212851248-add-file-recording-times` for file recording window columns ([#2418](#2418)) * **deps:** merge open dependency-bump PRs: `@aws-sdk` (3.1127.0), `@opentelemetry` (0.222.0), `@types/node` (26.4.1), and `webpack` (5.110.3) ([#2422](#2422)) ([1affe11](1affe11))
Version 0.60.0 ## [0.60.0](v0.59.0...v0.60.0) (2026-09-08) ### ⚠ BREAKING CHANGES * **api:** REST routes are now pluralized resources (`/projects`, `/missions`, `/files`, `/actions`, ...) instead of RPC-style endpoints. Tag endpoints and DTOs are renamed to metadata. Clients built against the 0.59 API must be updated; the CLI/SDK shipped with this release already targets the new routes. ([#2289](#2289)) * **cli/sdk:** the `klein action` commands are renamed to `klein template` / `klein execution`. `klein list` is no longer a core command; aliases are kept for backwards compatibility. ([#2237](#2237)) ([#2264](#2264)) * **cli/sdk:** files in state `CANCELED` are hidden by default in `klein file list`; pass the new filter options to include them. ([#2346](#2346)) * **deps:** backend stack bumped to NestJS 12, TypeORM 1 and ioredis 6; frontend to Quasar app-vite 3. A migration for TypeORM 1 junction-table FK cascade defaults must be applied when upgrading. ([#2356](#2356)) ([#2357](#2357)) ### Features * **actions:** implement action cancellation support across the stack ([#2291](#2291)) ([9abad3a](9abad3a)) * **actions:** run untrusted action containers with hardened defaults (resolves #122) ([#2290](#2290)) ([84a2309](84a2309)) * **actions:** artifact expiration handling (backend, frontend, CLI/SDK) ([8f5d7e5](8f5d7e5)) * **access-groups:** add group audit logs (#2140) ([#2183](#2183)) ([1da53ee](1da53ee)) * **access-groups:** add user permission management (promote / demote) for access groups ([4504135](4504135)) * **access-groups:** warn when removing your own project DELETE rights ([b9a6fdb](b9a6fdb)) * **backend:** add whitelist and blacklist filtering options to `GET /files` ([#2346](#2346)) ([9f10b1d](9f10b1d)) * **backend:** pre-flight storage capacity check on `/files/temporaryAccess` before uploads to SeaweedFS ([04bae7a](04bae7a)) * **backend:** S3 lifecycle rule aborting incomplete multipart uploads (#2171) ([#2174](#2174)) ([f2c211f](f2c211f)) * **cli/sdk:** full support for action templates and executions (create, version, list, launch, delete, artifact download) ([#2237](#2237)) ([0c46f71](0c46f71)) * **cli/sdk:** add triggers functionality ([#2261](#2261)) ([9418729](9418729)) * **cli/sdk:** filtering options for listing executions matching backend capabilities ([f2983cb](f2983cb)) * **cli/sdk:** hide `CANCELED` files by default and add filter options to `klein file list` ([4886414](4886414)) * **cli/sdk:** exponential retry backoff for file uploads and improved error handling for network and HTTP errors ([#2264](#2264)) ([d9b02a8](d9b02a8)) ([7f391e0](7f391e0)) * **frontend:** move tag values into a side panel (#1912) ([#2176](#2176)) ([338d452](338d452)) * **frontend:** visual feedback on the tag copy button ([a1799cc](a1799cc)) * **queueConsumer:** clean-up job for canceled file uploads ([#2286](#2286)) ([7b122a4](7b122a4)) ### Bug Fixes * **actions:** keep `CANCELLED` a terminal action state and tolerate deleted actions in queue lifecycle hooks ([#2373](#2373)) * **api:** overhaul the cancel-upload pipeline and fix race conditions ([#2286](#2286)) * **api-dto:** stop coercing `"false"` query parameters to `true` ([#2371](#2371)) * **backend:** close two authorization holes in the endpoint guards and scope API key file listings ([#2376](#2376)) * **backend:** stop partial metadata updates from wiping a mission ([#2374](#2374)) * **backend:** never let a metadata-types request fall back to a wipe ([#2372](#2372)) * **backend:** paginate the mission list query and add a stable ordering tie-breaker ([#2375](#2375)) * **backend:** return project accesses in the access group list so the project count in the user list is correct (#2179) ([#2184](#2184)) * **backend:** authorize the target mission of a fi 8000 le move and reject API key moves via PUT ([#2380](#2380)) * **backend:** fix metadata update mapping and tag deletion (#2238) ([#2288](#2288)) ([b9e46c0](b9e46c0)) * **backend:** missing affiliation group assignment ([#2181](#2181)) ([302054f](302054f)) * **backend:** stop the response validator rejecting empty response DTOs, increase skip validation upper bound * **backend:** fix ReadActionGuard and secure actions endpoints ([#2289](#2289)) * **cli/sdk:** key the metadata merge by type uuid and resolve metadata type names case-insensitively on exact equality only ([5a0c9d8](5a0c9d8)) * **cli/sdk:** fix HTTP delete requests, deserializer file categories, and SeaweedFS insufficient-storage error handling ([#2283](#2283)) * **docker:** pin SeaweedFS to 4.17 to fix IAM issues ([#2225](#2225)) ([7b0ad23](7b0ad23)) * **docker:** remove unused symlink command from docs service ([#2224](#2224)) * **frontend:** expose `BACKEND_URL` from `process.env` in production builds (dev deployment login broken) ([#2378](#2378)) * **frontend:** make the edit dialog move files again and give delete immediate feedback ([#2380](#2380)) * **frontend:** make action template version restore actually open the restore drawer ([#2381](#2381)) * **frontend:** show a permission error instead of "invalid mission name" on mission rename ([#2379](#2379)) * **frontend:** audit logs TDZ error on access group details page ([#2227](#2227)) ([346d4a7](346d4a7)) * **frontend:** project access rights management logic and tooltip ([2558802](2558802)) * **frontend:** design of running actions in the landing page card (#2110) ([b35ee4d](b35ee4d)) * **frontend:** file state filter parsing ([#2346](#2346)) * **build:** emit a single production bundle for the distroless image, export PassportModule for NestJS 12, skip better-sqlite3 compilation ([#2356](#2356)) ### Code Refactoring * **api:** pluralize controller routes and move from RPC style to RESTful resources; rename tag services and DTOs to metadata ([#2289](#2289)) ([c41f373](c41f373)) * **backend:** consolidate project, mission and file guards into parameterizable guards using route metadata ([95535a0](95535a0)) * **backend:** break down FileService and AccessService, inject sub-services directly ([#2289](#2289)) * **backend:** move validation logic from controllers to DTO class-validators; declarative serialization via class-transformer ([#2289](#2289)) * **cli/sdk:** rename action terminology to templates and executions; separate data access (routes.py) from service layer (core.py) ([#2237](#2237)) ([30c26ac](30c26ac)) * **cli/sdk:** improve separation of concerns for file transfers ([#2283](#2283)) ### Miscellaneous Chores * **deps:** update all dependencies (September 2026): NestJS 12, TypeORM 1, ioredis 6, Quasar app-vite 3, ESLint 10, prettier 3.9, vite 8, echarts 6, vue-router 5 ([#2356](#2356)) ([d4ceb11](d4ceb11)) ([283a43d](283a43d)) * **db:** migrations for group audit logs, promote/demote user, `CANCELED` file state, and TypeORM 1 junction-table FK cascade defaults ([#2357](#2357)) * **docs:** document `migration:show`, backend working directory and the release checklist; require a compatibility review for migrations ([#2377](#2377)) * **ci:** bump GitHub Actions; fix dependabot author matching and same-repo head branch cleanup in the automated dependency workflow * **ci:** bump Node to 22.22.0 for tests; wait for Loki before starting test cases * **tests:** discover guarded routes automatically, cover guard access sources and API key mission scope, add API-key file rename test ([#2382](#2382))
PreviousNext