diff --git a/CHANGELOG.md b/CHANGELOG.md
index d58b183..f0da1a6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -46,6 +46,7 @@ This file is the running release and change log for CODEXIUM. Keep it updated wh
- Workbench now surfaces day-level capacity directly in the planner, including hot-station day counts on heatmap cells, selected-day station load breakdowns, and per-station hot-day chips in station grouping mode
- Workbench exception prioritization now scores and ranks projects, work orders, agenda rows, and dispatch exceptions by lateness, blockage, shortage, readiness, and overload pressure, with inline priority chips for faster triage
- Workbench now surfaces top-priority action lanes for `DO NOW`, `UNBLOCK`, and `RELEASE READY` records so planners can jump straight into ranked dispatch queues before working deeper lists
+- Workbench action lanes now support direct follow-through from the lane cards themselves, including queue-release and the first inline build/buy/open actions without requiring a second step into the focus drawer
- Project-side milestone and work-order rollups surfaced on project list and detail pages
- Inventory SKU master builder with family-level sequence codes, branch-aware taxonomy management, and generated SKU previews on the item form
- Thumbnail image attachment staging on inventory item create/edit pages, with upload-on-save and replacement/removal support
@@ -102,6 +103,7 @@ This file is the running release and change log for CODEXIUM. Keep it updated wh
### Changed
+- Shipping-label PDFs now render inside an explicit single-page 4x6 canvas with tighter print-safe spacing and overflow-safe text wrapping to prevent second-sheet runover on label printers
- Project records now persist milestone plans directly on create/edit instead of treating schedule checkpoints as freeform notes only
- Company theme colors and font now persist correctly across refresh through startup brand-profile hydration in the frontend theme provider
- Demand-planning purchase-order draft generation now links sales-order lines only when the purchase item matches the originating sales item
diff --git a/client/src/modules/workbench/WorkbenchPage.tsx b/client/src/modules/workbench/WorkbenchPage.tsx
index aa8c04b..a56f19c 100644
--- a/client/src/modules/workbench/WorkbenchPage.tsx
+++ b/client/src/modules/workbench/WorkbenchPage.tsx
@@ -1083,6 +1083,9 @@ export function WorkbenchPage() {
records={actionLanes.doNow}
selectedId={selectedFocus?.id ?? null}
onSelect={setSelectedFocusId}
+ onTaskAction={handleTaskAction}
+ onQueueRelease={addRecordToQueue}
+ queuedWorkOrderIds={queuedWorkOrderIds}
/>
@@ -1346,12 +1355,18 @@ function ActionLane({
records,
selectedId,
onSelect,
+ onTaskAction,
+ onQueueRelease,
+ queuedWorkOrderIds,
}: {
title: string;
accent: string;
records: FocusRecord[];
selectedId: string | null;
onSelect: (id: string) => void;
+ onTaskAction: (action: PlanningTaskActionDto) => void | Promise;
+ onQueueRelease: (record: FocusRecord) => void;
+ queuedWorkOrderIds: string[];
}) {
return (
@@ -1364,26 +1379,48 @@ function ActionLane({
) : (