Skip to content

v0.2.3 ~ Customer places load - #85

Merged
roncodes merged 14 commits into
mainfrom
release/v0.2.3
Oct 14, 2026
Merged

roncodes merged 14 commits into
mainfrom
release/v0.2.3

Conversation

@roncodes

@roncodes roncodes commented Oct 9, 2026 •

Copy link
Copy Markdown
Member

Fix

An order's customer resolves to customer-contact or customer-vendor. Neither had a serializer of its own, so their embedded place and places were treated as plain relationship identifiers, and the place's own type attribute (apartment, house, office...) was read as the model name. Loading the order then failed with "Encountered a relationship identifier with type 'apartment' ... No model was found for 'apartment'".

Both subtypes now extend the customer (contact) serializer, which declares place and places as embedded. EmbeddedRecordsMixin normalizes a non-polymorphic embedded relationship with its declared model (place), so a place's type stays an ordinary attribute. Vendors already use the same approach for personnels.

Release

  • Version 0.2.3
  • RELEASE.md updated

@codecov

codecov Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (fe72c85) to head (8f3d95e).
⚠️ Report is 15 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main       #85    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files          116       121     +5     
  Lines         2936      3157   +221     
  Branches       698       777    +79     
==========================================
+ Hits          2936      3157   +221     
Flag Coverage Δ
fleetops-data 100.00% <100.00%> (ø)

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

Files with missing lines Coverage Δ
...itializers/register-shared-resource-descriptors.js 100.00% <100.00%> (ø)
addon/utils/identity-stub.js 100.00% <100.00%> (ø)
addon/utils/placeholder-images.js 100.00% <100.00%> (ø)
addon/utils/resource-descriptors/helpers.js 100.00% <100.00%> (ø)
addon/utils/resource-descriptors/shared.js 100.00% <100.00%> (ø)

Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update fe72c85...8f3d95e. Read the comment docs.

🚀 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.

roncodes and others added 13 commits October 9, 2026 11:37
…e, order, vendor and fleet identity descriptors with every extension

The resource identity descriptors for the resources every extension can see
through this package's models now live here, together with the thin pill,
summary, identity-cell and select-option wrappers that name the resource type
for ember-ui's generic components, and the styled placeholder silhouettes they
fall back to.

An instance initializer registers the descriptors whenever the host or an
engine boots, filling in only keys nobody has registered, so a Storefront or
Ledger table renders a driver as an identity cell on a deep link without
loading the FleetOps engine. Opening a resource loads FleetOps on demand and
hands the record to its action service, so the engine bundle is only fetched
on click. FleetOps replaces these with its own openers when it boots.

Covered at 100% by unit tests for the helpers, descriptors, placeholder images
and initializer, and a rendering test that proves every wrapper resolves and
passes its resource type through.
feat(descriptors): share the core FleetOps resource identity descriptors with every extension
…urvive a universe without an extension manager

typeLabel('fleet-ops:contact') read as "Fleet ops"; the part after the colon is
the type when nothing precedes the extension prefix. extensionManager() now
guards the universe service's lazy manager lookup, which throws on a host
that has none, so canOpen stays false instead of failing.
…rop the engine keyword

In the console build the addon-tree hbs-only wrappers were never compiled: ember-cli-htmlbars only
colocates an addon's templates when it finds ember-cli-babel among that addon's child addons, and
fleetops-data (a plain addon flagged ember-engine, shared by the host and two lazy engines) lost
that lookup, so every .js module shipped while all 32 wrapper components vanished and engines
failed with 'Could not find module .../components/cell/vehicle-identity'. App-tree templates are
compiled by each consumer (host, fleetops, storefront) in its own namespace, which is what the
wrappers are for.
feat(identity-stub): share the identity stub builder; typeLabel reads a bare fleet-ops type
… opens its Fleet-Ops page instead of a panel whose components only Fleet-Ops can render
fix(descriptors): open Fleet-Ops records on their page outside Fleet-Ops
docs(release): v0.2.3 notes cover the shared descriptors
@roncodes
roncodes merged commit 4911b06 into main Oct 14, 2026
4 checks passed
@roncodes
roncodes deleted the release/v0.2.3 branch October 14, 2026 04:51
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