Skip to content

Release v0.4.5 - #187

Merged
roncodes merged 12 commits into
mainfrom
release/v0.4.5
Oct 5, 2026
Merged

roncodes merged 12 commits into
mainfrom
release/v0.4.5

Conversation

@roncodes

@roncodes roncodes commented Oct 3, 2026

Copy link
Copy Markdown
Member

Release branch for v0.4.5, cut from main.

This branch collects #186: tables and panels render resource view registries (columns, row and bulk actions, toolbar and header buttons, menu items). It also includes the shared ActionButtons/BulkActions components and the Tabular column fixes.

It depends on fleetbase/ember-core v0.3.25 (fleetbase/ember-core#96), so merge after that is published. The ember-core service is looked up optionally, so this release also works with an older ember-core.

Merging this tags v0.4.5. The engine releases follow it.

Layout components merge what extensions register into a view's slots when
given @registry, a surface prefix such as `ledger:table:invoice`:

- Tabular: columns, row actions, bulk actions and toolbar buttons
- TabularActions: toolbar buttons and bulk actions
- Panel (and resource-context-panel's `registry` option): header buttons,
  and menu items in the existing "…" dropdown or a new one

Also:
- extract the three copies of the header-button and bulk-action markup into
  Layout::Resource::ActionButtons and Layout::Resource::BulkActions; bulk
  actions honour `permission` everywhere, and dropdown items without a
  handler no longer throw
- Tabular derives its columns instead of copying @columns once, so later
  changes (and late registrations) reach the table; the column picker's
  choices are kept by column key across recomputes
- Tabular forwards @searchDisabled and takes a <:header> block
- Table cells, filters and action-button components may be ExtensionComponent
  definitions, rendered from the extension's engine
- utils/resource-view: an optional lookup of ember-core's service (older
  ember-core builds leave views unchanged) and mergeHeaderButtons
CI's per-file gate flagged three branches in Tabular that no input can reach:
the column picker always hands back an array of columns, a missing column can
never match a visibility key, and ResourceViewService.mergeSlot already
defaults a missing list. TabularActions loses the same `?? []`.
@codecov

codecov Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (f6923a5) to head (82207f0).

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #187   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          324       325    +1     
  Lines         9137      9189   +52     
=========================================
+ Hits          9137      9189   +52     
Flag Coverage Δ
ember-ui 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
addon/components/layout/resource/panel.js 100.00% <100.00%> (ø)
...ddon/components/layout/resource/tabular-actions.js 100.00% <100.00%> (ø)
addon/components/layout/resource/tabular.js 100.00% <100.00%> (ø)
addon/utils/resource-view.js 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Covers Tabular's bulkActions getter with the registry service present but no
@registry, the last branch the coverage gate flagged.
feat: render resource view registries in tables and panels
…surface>:<slot>

Follows ember-core 0.3.25: layouts take @registry="fleet-ops:driver:table"
and @registry="ledger:invoice:details". The components only append the slot,
so this changes documentation and test fixtures.
…dencies

CI invokes the script with node rather than pnpm run, so node_modules/.bin is
not on PATH and spawning a bare `ember` failed with ENOENT.
The 100% coverage gate is what blocks a merge; the Codecov upload only reports.
cli.codecov.io refusing the TLS handshake failed two runs whose tests and
coverage gate had passed.
The field only reacted to clicks in the calendar: typed text never reached
onChange/onSelect/onDateChanged, and a value arriving after the field was set
up (a record that finished loading) never updated the calendar or the field.

- A complete, valid date typed in the picker's format is selected and reported
  like a click; an empty field clears the selection and reports it; anything
  else is reverted.
- A changed @value re-selects the date silently; the incoming value may be a
  Date, a timestamp, a string in the picker's format or an ISO string.
- Integration tests for typing and for later value changes.
…d loses focus

The picker writes its selection into the field, so blurring it after a pick
fired `change` with that text and handleTypedValue selected the date again,
reporting it a second time (filter/date range tests saw 2 reports for 1 pick).
Text that matches the current selection is now ignored, and invalid input
reverts to the whole selection rather than its first date.

Tests cover the conversions the previous commit added but never exercised
(timestamps, ISO strings, invalid Dates, blank strings), restoring the 100%
coverage gate.
@roncodes
roncodes merged commit 4b93fdf into main Oct 5, 2026
8 checks passed
@roncodes
roncodes deleted the release/v0.4.5 branch October 5, 2026 07:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant