Skip to content

lablink-allocator-service Changelog

All notable changes to lablink-allocator-service will be documented here.

The format is based on Keep a Changelog.

0.4.0

Bug Fixes

  • fix(allocator): retry assign_vm when SKIP LOCKED hides a transiently locked seat (#499)

Chores

  • chore: bump allocator/client to 0.4.0 and CLI to 0.3.0 (#501)

Documentation

  • docs: demo videos for the Bring-Your-Own clients page (#486)

Features

  • feat: default the client AMI to a per-region Deep Learning Base AMI (#489)

0.3.0

Bug Fixes

  • fix: render BYO register command on one line in admin onboarding page (#480)
  • fix(allocator+client): stop the viewer's 20-min idle kill and let H.264 streaming engage (#478)
  • fix(client+allocator): remove xscreensaver and raise viewer default stream quality (#476)
  • fix(allocator): auto-reconnect the noVNC viewer + document expected tunnel churn (#475)
  • fix(client+allocator): find tutorial-subfolder projects and heal a lost session anchor (#471)

Chores

  • chore: bump allocator/client to 0.3.0 and CLI to 0.2.0 (#481)

Documentation

  • docs: refresh architecture/workflows pages and generate API endpoints from route docstrings (#470)

Features

  • feat: KasmVNC 1.5.0 with H.264 video streaming (NVENC-capable) (#477)
  • feat: add Back to Admin Panel link on the allocator logs page (#469)

Refactoring

  • refactor(allocator): dict rows for operations/schedules/metrics — delete the positional-column contracts (#468)

0.2.1

Bug Fixes

  • fix: two errors-view gaps found by live-testing a failing startup script (#460)
  • fix(allocator): stop shipping the string "None" as the tutorial repository (#459)

Chores

  • chore(release): allocator/client v0.2.1, cli v0.1.0 (#465)

Features

  • feat(allocator): add an errors-only filter to the log pages (#457)

Refactoring

  • refactor(allocator): fix database identity, leaving only db.password configurable (#461)

0.2.0

Bug Fixes

  • fix(allocator): refuse to start on an unsubstituted placeholder credential (#443)
  • fix: bump Terraform to 1.9.8 to stop S3 backend state corruption (#437)
  • fix(allocator): branch BYO onboarding command on manual.connectivity (#421)
  • fix(allocator): stop one rotation timeout from permanently wedging a client (#415)
  • fix(client+allocator): report the overlay hostname Tailscale actually assigned (#412)
  • fix(allocator): stop library modules configuring logging at import time (#410)
  • fix(allocator+cli): clone the configured repository on BYO clients (#405) (#408)
  • fix(allocator+cli): report the real public URL behind Tailscale Funnel (#396) (#403)
  • fix: copy button on BYO onboarding page fails without a secure context (#388)
  • fix(allocator): relieve DB pool pressure under client-VM scale (#370)
  • fix(allocator): make VM assignment atomic to stop double-booking under load (#372)
  • fix(security): prevent command injection via crd_command (#329)
  • fix: defer VM status='running' until container startup completes (#321)
  • fix: clear VM assignment on auto-reboot so VMs become available for reassignment (#312)

Chores

  • chore: bump package versions for the OpenTofu release (#448)
  • chore: retire Dependabot, bump lagging actions, fix broken README install commands (#425)
  • chore(allocator): rename admin button to "Delete VMs" (#367)

Documentation

  • docs: correct stale and nonexistent references across READMEs and guides (#426)

Features

  • feat(allocator): report Postgres connection usage on /api/health/connections and /admin (#434)
  • feat(allocator): serve the allocator's own logs at /admin/allocator-logs (#422)
  • feat: publish the allocator at an admin-chosen hostname via Cloudflare Tunnel (#420)
  • feat: reverse_tunnel connectivity — client dials out over the allocator's existing HTTPS address (#419)
  • feat(allocator+cli): real-time progress tracking for launch/destroy operations (#398)
  • feat(allocator): rework /admin/instances dashboard (issue #377) (#397)
  • feat: expose self-hosted allocator to participants via Tailscale Funnel (#390)
  • feat: retry client startup script with backoff + success check (#392)
  • feat: add mesh-overlay connectivity for off-LAN manual clients (#387)
  • feat(allocator): add "Back to Admin Dashboard" link to /admin/instances (#386)
  • feat(allocator): wire POST /destroy to OperationsWorker (PR 2/6) (#384)
  • feat(allocator): async operations worker — core infra (PR 1/6) (#383)
  • feat(allocator): admin VNC access (peek/connect/release) (#382)
  • feat: wizard monitoring toggle + sync lablink stats with admin UI (#368)
  • feat: Tier 1 monitoring & stats (opt-in, disabled by default) (#366)
  • feat: heartbeat liveness signal for silent-failure detection (#323)
  • feat: warm reboot for assigned VMs to preserve container state (#322)
  • feat: add VM metrics export endpoint and CLI command (CSV + JSON) (#319)
  • feat: dynamic health checks with adaptive polling for deployment metrics (#318)

Other Changes

  • Refactor: Cleanup dead/duplicate code (#395)
  • ship startup script to manual/BYO clients via register response (#364)
  • PR D5: Provisioning rewire + admin button-gating (#363)
  • cli: ship manual BYO docker container logs to allocator (#362)
  • client: emit chronological tagged stream to docker logs (#361)
  • PR D4: retire API_TOKEN (unify M2M auth on client_secret) (#358)
  • PR D3: operator-side manual mode (configure wizard + compose deploy) (#357)
  • PR D2: lablink register CLI for manual BYO clients (#354)
  • PR D1: manual provider + LAN-direct browser connectivity (#353)
  • PR C: registration API + per-client credentials (AWS-only) (#352)
  • PR B: provider abstraction seam (behavior-preserving AWS extraction) (#351)
  • PR A: swap CRD → KasmVNC on the AWS path (nginx-fronted, allocator-proxied WS) (#344)

Refactoring

  • refactor: switch the AWS provisioning path from Terraform to OpenTofu (#446)
  • refactor: cut duplicated caches, HTTP plumbing, and command-file prose (#441)
  • refactor(allocator): split main.py into route blueprints (#406)
  • refactor(allocator): split database.py into a db/ package (#401)
  • refactor: remove monitoring feature (schema, CLI cost branch, docs) (#346)
  • refactor(allocator): replace shared DB conn + RLock with ThreadedConnectionPool (#327)

0.1.2

Bug Fixes

  • fix: increase destroy timeout and handle missing tfvars gracefully (#305)
  • fix: resolve VM log shipping data loss from Docker json-file driver stall (#304)
  • fix: use terraform destroy for client VMs and read deploy config on destroy (#301)
  • fix: prevent injection using scp (#300)

Chores

  • chore: bump version (#307)

Features

  • feat: add log viewer TUI and reduce allocator log noise (#302)
  • feat: add launch-client CLI command for client VM creation (#299)
  • feat: standardize resource naming with deployment_name and environment (#296)
  • feat: add lablink CLI tool to replace template repo deployment (#284)

Refactoring

  • refactor: remove code redundancy across packages (#306)

0.1.1

Bug Fixes

  • fix: GPU health sets to NULL after assignment (#291)
  • fix: gzip client VM user_data to stay within AWS 16KB limit (#290)
  • fix: replace shared cursor with scoped cursors in database class (#289)
  • fix: add missing auth header to client container metrics POST (#287)

Chores

  • chore: bump allocator package to version 0.1.1 (#292)

Documentation

  • docs: add configuration examples and fix project docs (#288)

0.1.0

Bug Fixes

  • fix: removes default values for admin user name and password for security (#281)
  • fix: pin all dependencies and fix Dependabot security alerts (#270)
  • fix: correct total startup duration calculation (#269)
  • fix(allocator): Fix VM startup race condition and organize logging (#262)
  • fix(terraform): Preserve bash variables in custom startup scripts (#259)
  • fix(docs): Correct module names for API reference generation (#255)

Chores

  • chore: bump allocator and client to 0.1.0 (#285)
  • chore: update uv lock according to the new pyproject (#278)
  • chore(deps): consolidate Dependabot dependency updates (#277)
  • chore: add standardized name for client resources (#271)

Documentation

  • docs: Sync configuration reference with current allocator schema (#261)

Features

  • feat: replace CloudWatch logging with self-hosted log shipper (#279)
  • feat: add bearer token auth to API endpoints (#282)
  • feat: add auto-reboot system with SSH and stop/start fallback (#272)
  • feat: Add ci-test environment support (#227)
  • feat: Add config validation CLI for allocator service (#204)

Other Changes

  • Optimize Docker images: lighter base, cleanup, and dockerignore (#263)
  • Feat: Add Destruction Scheduler for Client VMs (#249)
  • Simplify domain and SSL configuration (#230)
  • Add Configs for Monitoring (#238)
  • Bug: Timing Data not Updated When Numerous VMs Running (#243)
  • Change uv Installation Methods and Add More Packages to the Client (#236)
  • fix ui for admin (#237)
  • Remove Credentials Features for Better UX (#234)
  • New Timing Measurement Methods for Client VMs (#229)
  • configurable region for backend (#228)
  • Add Coverage Requirement in the CI and Add More Tests (#226)
  • Fix: remote-exec provisioner timeout during client VM creation (#220)
  • Add Unset AWS Credentials Functionality for Admin Users (#219)
  • Add Tests for database.py (#223)
  • Add a Custom Startup Script Feature without Affecting the Core Startup script (#211)
  • add ci-test backend for terraform in allocator (#214)
  • Fix Bugs in Allocator Logging and Configs (#210)
  • Remove remaining infrastructure code migrated to lablink-template (#208)

0.0.3a2

Bug Fixes

  • fix: Sanitize URLs to remove prepended dots in allocator and client services (#199)

0.0.3a1

Bug Fixes

  • fix: Add safety check for leading dots in hostname and bump version (#197)
  • fix: Handle empty subdomains in get_allocator_url (#196)
  • fix: update module path in Dockerfile to lablink_allocator_service (#194)

0.0.3a0

Other Changes

  • Fix: Skip Terraform tests in publish workflow (#193)
  • Restructure packages and create infrastructure template (#189)

0.0.2a0

Initial release.


For more details, see the GitHub Releases page.