LabKit MATLAB Workbench

history

Debug workflows, launcher tools, and changelog governance

id: LK-20260707-debug-workflows-launcher-tools-and-changelog-governance
date: 2026-07-07
sequence: 39
type: feat
compatibility: compatible
component: `labkit_launcher` | `1.2.4 -> 1.2.5`
component: `labkit_launcher` | `1.2.5 -> 1.2.6`
component: `labkit_launcher` | `1.2.6 -> 1.2.7`
component: `labkit.ui` | `5.0.0 -> 5.0.1`
component: `labkit.ui` | `5.0.1 -> 5.0.2`
component: `labkit_DICPreprocess_app` | `1.3.4 -> 1.3.5`
component: `labkit_BatchImageCrop_app` | `1.6.6 -> 1.6.7`
component: `labkit_FocusStack_app` | `1.4.5 -> 1.4.6`
component: `labkit_FigureStudio_app` | `0.1.4 -> 0.1.5`
scope: Debug workflows, launcher tools, and changelog governance

Context

The first complete debug sample packs exposed several false failures. A modal file chooser could be mistaken for a stalled callback, DIC could read an older ROI snapshot than the editor displayed, duplicate crops needed confirmation before export, and Focus Stack's folder workflow was hard to reach from its sample instructions.

The launcher was also becoming a practical maintenance and distribution tool. Code Analyzer reports needed a durable home outside launcher source, individual apps needed an offline package format, and private app workspaces needed to remain discoverable without entering the public repository.

Finally, the growing changelog needed to explain the direction of the project, not merely repeat tags and commit subjects.

Decision and rationale

Use v3.1.0 as a stabilization release for reproducible debug workflows. Treat native modal dialogs as active UI, read live editor state when it is newer than the stored snapshot, and make required gestures visible in the app. Move code analysis and packaging into dedicated tools, let the launcher invoke them, and keep private app discovery separate from public release contents.

Changes

User and data impact

The supplied debug packs could be followed without producing a false crash report or an apparently disabled workflow. DIC mask export used the anchors currently visible in the editor, duplicate crops remained blocked until their centers were confirmed, and Focus Stack offered a direct folder action.

Maintainers gained timestamped HTML and JSON Code Analyzer reports. A selected app could be packaged for production or offline use without tests, unrelated apps, or repository metadata. Private apps could live beside the checkout, appear in the ordinary launcher, and retain their own repository and history.

Compatibility and migration

Validation

PR #34 updated debug sample, ROI, crop, folder-loading, launcher-tool, deployment, and private-workspace tests before its squash merge. Tag v3.1.0 points to release commit 9db01952; the exact local command sequence was not recorded in this page.

Evidence

Known limitations and follow-up

The first deployment tool packaged one app at a time. Multi-app bundles were added later. The changelog model introduced here was subsequently replaced by component-linked history pages generated with the documentation site.