Pure Ash-introspection helpers the generator and the shared screens build on. Kept public + side-effect free so the resource→UI mapping is unit- testable without a device (and without mob_dev).
Summary
Functions
Public attributes to DISPLAY, primary key + autogenerated timestamps last.
Stringified value of field on record (nil-safe).
Public, writable, non-generated attributes — what the create form edits.
Only types a <TextField> can carry for now (string-castable scalars).
Route segment for a resource: MyApp.Blog.Post → "post".
One-line label for a record row: the first non-pk display attribute's value (fallback: the primary key).
Human title for a resource: MyApp.Blog.Post → "Post".
Functions
Public attributes to DISPLAY, primary key + autogenerated timestamps last.
Stringified value of field on record (nil-safe).
Public, writable, non-generated attributes — what the create form edits.
Only types a <TextField> can carry for now (string-castable scalars).
Route segment for a resource: MyApp.Blog.Post → "post".
One-line label for a record row: the first non-pk display attribute's value (fallback: the primary key).
Human title for a resource: MyApp.Blog.Post → "Post".