Add resizable printer cards and Queue Only mode

Features:
  - Resizable printer cards (S/M/L/XL) with toolbar controls on Printers page
  - Queue Only mode for staging prints without automatic scheduling
    - "Queue Only" option in add/edit queue modals
    - Purple "Staged" badge and Play button to release to queue
    - manual_start field in database with migration

  Fixes:
  - Improved camera stream stuck detection with automatic reconnection

  Tests:
  - Added 16 integration tests for print queue API endpoints
This commit is contained in:
maziggy
2026-01-04 09:10:06 +01:00
parent 4a80888d95
commit 8639f39028
22 changed files with 1023 additions and 442 deletions
+5
View File
@@ -789,6 +789,7 @@ export interface PrintQueueItem {
scheduled_time: string | null;
require_previous_success: boolean;
auto_off_after: boolean;
manual_start: boolean; // Requires manual trigger to start (staged)
status: 'pending' | 'printing' | 'completed' | 'failed' | 'skipped' | 'cancelled';
started_at: string | null;
completed_at: string | null;
@@ -806,6 +807,7 @@ export interface PrintQueueItemCreate {
scheduled_time?: string | null;
require_previous_success?: boolean;
auto_off_after?: boolean;
manual_start?: boolean; // Requires manual trigger to start (staged)
}
export interface PrintQueueItemUpdate {
@@ -814,6 +816,7 @@ export interface PrintQueueItemUpdate {
scheduled_time?: string | null;
require_previous_success?: boolean;
auto_off_after?: boolean;
manual_start?: boolean;
}
// MQTT Logging types
@@ -1914,6 +1917,8 @@ export const api = {
request<{ message: string }>(`/queue/${id}/cancel`, { method: 'POST' }),
stopQueueItem: (id: number) =>
request<{ message: string }>(`/queue/${id}/stop`, { method: 'POST' }),
startQueueItem: (id: number) =>
request<PrintQueueItem>(`/queue/${id}/start`, { method: 'POST' }),
// K-Profiles
getKProfiles: (printerId: number, nozzleDiameter = '0.4') =>