carpenter 0.2.1
carpenter: ^0.2.1 copied to clipboard
A semantic and adaptive UI platform for Flutter applications across desktop, web, and mobile.
0.2.1 #
- Added adaptive contextual actions so secondary pointer presses and touch
long-presses invoke the same semantic
CarpenterActionDescriptorset. - Made table and tree-table action lanes remain pinned to the trailing edge while horizontally scrolling data columns move underneath them.
- Reused
CarpenterTableColumn.actionsandCarpenterTreeTableColumn.actionsbuilders for inline, overflow, and contextual action presentation instead of requiring duplicate application action definitions. - Kept the legacy
CarpenterTreeTable.actionsandsecondaryActionsshorthand source-compatible while projecting those actions into the same pinned and contextual behavior.
0.2.0 #
Carpenter 0.2.0 is a migration release that consolidates the application, resource, command, collection, and semantic presentation contracts introduced since 0.1.8.
Migration notes #
CarpenterResourceController.datais now read-only to consumers. UsereplaceDataorupdateDatafor local reconciliation and optimistic changes.CarpenterResourceControlleris an application extension point again and exposesdidChangeData(previous, next)for derived state such as command availability. The base controller owns the corresponding notification.- Resource refresh failures no longer erase already loaded data. Existing data
remains visible and
refreshFailureexposes the failure separately; initial load failures remain blocking. - Resource
refreshCommandandretryCommandnow fail their command lifecycle when the underlying load fails, while directrefresh()remains a state-driven, non-throwing controller API. - Command availability no longer retains stale
disabledReasonvalues across later availability transitions. - Presentation-only command surfaces consume an already-recorded asynchronous command failure instead of leaking a second uncaught Future error. Direct command/executor calls still propagate failures to programmatic callers.
Application and behaviour #
- Added a semantic command execution lifecycle with started, succeeded, and failed events, command effects, refresh scopes, blocking effects, and a shared executor boundary.
- Added application command policy helpers for centralized success/failure feedback, undo handling, and semantic invalidation without coupling commands to a particular state-management or cache implementation.
- Added shared request-gate cancellation and stale-request protection used by application resource and collection lifecycles.
- Centralized loading behaviour below application pages so loading ownership and presentation can be reused without duplicating page-specific machinery.
- Unified command-to-action projection so buttons, shortcuts, toolbars, table rows, and other action surfaces share the same command availability and execution semantics.
Collections and actions #
- Added a shared grid layout resolver used by ordinary and tree tables for consistent fixed/flexible sizing and capped-flex redistribution.
- Unified toolbar, table, and tree-table adaptive actions behind the shared action-strip and overflow behaviour.
- Added semantic table action lanes with stable geometry and compact preferred widths instead of ad-hoc action-column sizing.
- Made tree-table actions ordinary columns through
CarpenterTreeTableColumn.actions, while retaining the legacy top-level action shorthand as a compatibility path. - Expanded table and tree-table column contracts with semantic text, number, status, alignment, vertical alignment, width, and resizing behaviour.
- Unified table/tree cell geometry, metrics, typography, borders, selection, hover treatment, and animated Gravity chevrons for tree disclosure.
Components and foundation #
- Promoted
CarpenterFieldShellto the public shared field primitive and routed text-editing and selectable fields through the same label, feedback, spacing, and semantic structure. - Added richer field feedback and semantic surface coverage for validation, accessibility, and state presentation.
- Expanded semantic theme roles and generated Mordant component/metric tokens used by controls, tables, typography, loading, and application surfaces.
- Added conceptual public entrypoints for application, components, collections,
foundation, layout, and patterns while retaining the umbrella
package:carpenter/carpenter.dartentrypoint.
Quality #
- Strengthened pull-request verification to require repository formatting, library analysis, all non-golden package tests, and successful Widgetbook and example web builds.
- Added public-entrypoint, command-policy, request-gate, resource lifecycle, field-shell, grid-layout, table, tree-table, action, and theme regression coverage.
0.1.8 #
- Added a controlled, keyboard-accessible joined selection-button group for switching local content scopes without a navigation sidebar.
- Unified tree-table headers and rows with Carpenter table geometry, spacing, borders, hover transitions, selection states, and vertical alignment.
- Replaced tree disclosure markers with animated Gravity chevrons, added typed entity icons, and animated branch and root-content transitions.
- Allowed explorer pages to omit navigation when their content scope is exposed by another control.
0.1.7 #
- Added opt-in desktop multiple-selection semantics for trees and tree tables: unmodified activation replaces selection, Ctrl/Cmd toggles, and Shift selects a visible range while preserving the source-compatible toggle default.
- Added caller-owned scroll controllers to trees and tree tables for restoring explorer position per location.
- Added immutable local explorer history with independent back and forward stacks that does not depend on application router history.
0.1.6 #
- Made typed dialog close callbacks route-aware so a delayed asynchronous action cannot pop the page below an already dismissed dialog.
0.1.5 #
- Added typed
showCarpenterDialog<T>route composition with result-bearing actions and automatic capture of the nearest Carpenter theme and rootrem, including support for locally hosted Carpenter subtrees during incremental migrations from other UI systems. - Kept tree row geometry keys outside default drag feedback so draggable trees
no longer duplicate
GlobalKeyinstances while a row is moving.
0.1.4 #
- Unified page viewport ownership so
CarpenterPageowns ordinary document scrolling while explorer and collection content can explicitly keep a child-owned viewport, eliminating duplicated page inset and nested scrolling. - Made the flow-native
CarpenterPageSectioncanonical and removed the hidden legacy section implementation from the page-block compatibility layer. - Added independent tree selection and activation, keyboard activation,
filtering with retained ancestor paths, and
CarpenterTreeController.revealfor controlled navigation to nested nodes. - Extended
CarpenterTreeTablewith the same tree interaction contracts and added fixed/flexible column widths plus semantic column alignment. - Moved display/title sizing from runtime
CarpenterTextscaling into Mordant typography tokens and regenerated the checked-in token output. - Added project-shaped Widgetbook coverage for page composition, tree-table filtering/reveal/activation, and regression tests for filtered paths and controller reveal-path discovery.
0.1.3 #
- Stabilized collection hover styling so state transitions animate color without re-running row layout geometry on every animation tick.
- Avoided redundant drag-and-drop target rebuilds while the pointer remains in the same accepted payload, operation, and before/inside/after position.
- Extended
CarpenterProgresswith an indeterminate mode by makingvalueoptional while preserving determinate progress for finite values. - Animated determinate progress changes with Carpenter motion tokens and drove indeterminate progress from the existing Mordant loading-cycle token, with reduced-motion handling retained.
- Added regression coverage for stable list/tree hover geometry, drag hover rebuilds, and determinate/indeterminate progress semantics.
0.1.2 #
- Stabilized default drag feedback geometry so flex and stretched children keep the rendered source size while moving through an overlay.
- Kept Kanban columns as stable drop targets, including empty columns, while retaining precise card insertion positioning for non-empty columns.
- Made
CarpenterSelect,CarpenterComboBox, andCarpenterAutosuggestself-manage transient overlay visibility by default while preserving an optional controlledopen/onOpenChangedmode. - Added
CarpenterPageBodyfor standard scrollable page padding and vertical rhythm without repeatingListViewand spacer boilerplate on every screen. - Exported bundled Gravity UI icons through the main
carpenter.dartbarrel so ordinary applications can use one package import. - Fixed
CarpenterTreeView.actionsso semantic row actions without icons render as compact text actions instead of asserting at runtime. - Reworked the example into a connected feature workspace with live controlled Kanban and generic reordering, a keyboard-friendly tree explorer, persistent notifications, record breadcrumbs, and a production-shaped typed form using masked, number, date, time, range, select, autosuggest, combo, and file inputs.
- Rewrote package and example documentation around the current public API, state-ownership model, routes, commands, and real application composition.
0.1.1 #
- Added adaptive breadcrumbs with overflow navigation for deep paths.
- Added controlled numeric, time, and date-range inputs, including numeric input formatting and validation support in the shared field pipeline.
- Added badges, avatar groups with automatic overflow, and persistent notification lists with unread state, actions, and caller-owned dismissal.
- Added interactive Widgetbook playgrounds and behavioural tests for the new components.
- Added
CarpenterMaskedInputand rebuilt date, time, and date-range controls as masked text fields with trailing adaptive picker actions. - Refined breadcrumbs to the compact text-and-chevron presentation used by the example while retaining deep-path overflow behaviour.
- Added the typed drag-and-drop kernel with payloads, move/copy/link operation negotiation, shared sessions, draggable adapters, drop targets, and before/inside/after positioning.
0.1.0 #
- Added the framework-only
Applicationroot with Carpenter theme and unit scopes plus Navigator and Router integration. - Added semantic action prominence variants, the utility action color role, and matching role support for buttons and icon buttons.
- Added independently configurable logical start/end shape roles for controls and status indicators.
- Replaced loading content substitution with a token-driven animated striped background that preserves action content and geometry.
- Added generated OKLCH palette tokens and expanded the Widgetbook catalog.
- Added warning, success, and info action roles, role-tinted action state backgrounds, and the revised loading-stripe direction.
- Added extra-small and extra-large control/icon size roles, tokenized loading rotation, and generator-backed OKLCH ramps for every semantic palette.
- Added semantic field infrastructure, text input and text area controls, tri-state checkbox, generic radio groups, switches, and interactive Widgetbook playgrounds for the complete Basic control set.
- Added full mouse text-selection gestures, semantic color roles for checkbox, radio, and switch controls, and size-dependent rounded shape tokens.
- Added shared anchored-overlay infrastructure plus controlled popover, menu, action dropdown, and semantic tooltip components.
- Added typed Select, ComboBox, Autosuggest, queued toast presentation, modal dialogs, and a shared overlay lifecycle and option-navigation runtime.
- Added the backend-neutral Collections Kernel and a controlled structured-data Table with typed columns, stable-key selection, pagination, resizing, and keyboard navigation.
- Added semantic application shell, navigation and adaptive regions, page headers, overflow toolbars, controlled split views, and master/detail layout.
- Added controlled collection, report, object, form, and master/detail page patterns with unified zero, empty-result, loading, and initial-error states.
- Expanded Layout and Page Patterns Widgetbook cases with deterministic network-like loading, cursor pagination, refresh failures, and async actions.
- Added Foundation color catalogs, role and size comparison cases, and Layout/Page Pattern-only semantic viewport presets with an off mode.
- Hardened Table body sizing for short viewport constraints used by adaptive page patterns.
0.1.0-dev.1 #
- Established the initial publishable Flutter package.
- Added the development example application.
- Added Widgetbook development catalog.
- Added package documentation and publication quality gates.