You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: apps/AGENTS.md
+6-3Lines changed: 6 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,11 +13,11 @@ Apps are first-class deliverables. Do not treat them as examples for a hidden pl
13
13
14
14
## App Ownership
15
15
16
-
- Keep domain formulas, thresholds, integration rules, option defaults, plot labels, result fields, export columns, failed-row behavior, alerts, and log wording app-local unless the user explicitly approves a boundary change.
16
+
- Keep domain formulas, thresholds, integration rules, option defaults, plot labels, result fields, export columns, failed-row behavior, alert wording/trigger decisions, and log wording app-local unless the user explicitly approves a boundary change.
17
17
- For a new app cold start, create the standard app shape directly and use the
18
18
smallest genuinely similar app as a reference. Keep the first version focused
19
19
on the real workflow rather than placeholder behavior.
20
-
- When a documented UI tool owns app-neutral controls or interaction mechanics, consume it instead of reimplementing widget state or normalization. Keep app calculations, summaries, alerts, and exports local.
20
+
- When a documented UI tool owns app-neutral controls or interaction mechanics, consume it instead of reimplementing widget state or normalization. Keep app calculations, summaries, alert text, and exports local.
21
21
- Use `labkit.ui.app.create` with `labkit.ui.spec.*` for app GUIs. Do not
22
22
reintroduce the removed `labkit.ui.app.createShell` or legacy view helpers.
23
23
- Use `labkit.ui.app.dispatchRequest` for debug launch routing and `labkit.ui.diag.createContext` only when an app has an app-specific nonstandard request path.
@@ -33,6 +33,9 @@ Apps are first-class deliverables. Do not treat them as examples for a hidden pl
33
33
`debug.reportException(component, event, ME)` before showing an alert,
34
34
logging a recovery message, or returning. Do not swallow import, export,
35
35
preview, or tool errors without a framework debug/crash report.
36
+
- App alerts must call `labkit.ui.app.showAlert(fig, message, titleText)`
37
+
instead of raw `uialert`. Apps still own the title, message, and decision to
38
+
alert; the framework owns hidden-test-safe modal mechanics.
36
39
- Apps with custom preview scroll, drawing, ROI, scale-bar, or other axes interaction should create a `labkit.ui.tool.createRuntime` and pass that runtime into reusable tools. Do not set preview-tool `WindowScrollWheelFcn`, `WindowButtonMotionFcn`, `WindowButtonUpFcn`, or axes `ButtonDownFcn` directly in app code.
37
40
- DTA-backed apps use `labkit.dta.*` for discovery, loading, pulse detection, and parsed curve/table access. Task queues, duplicate policy, current selection, analysis state, and export workflow stay app-owned.
38
41
- RHS-backed apps use `labkit.rhs.*` for discovery, header inspection,
@@ -50,7 +53,7 @@ Apps are first-class deliverables. Do not treat them as examples for a hidden pl
50
53
shared `+app` package name creates MATLAB package-resolution ambiguity.
51
54
- Apps put the ordinary data-only spec in `+<app_slug>/+ui/buildSpec.m`.
52
55
The public app entry point delegates to package-root `run.m`; that runner
53
-
owns state, callback closures, alerts, log wording, and refresh order.
0 commit comments