Skip to content

Release v0.6.71 - #348

Merged
roncodes merged 21 commits into
mainfrom
release/v0.6.71
Oct 5, 2026
Merged

roncodes merged 21 commits into
mainfrom
release/v0.6.71

Conversation

@roncodes

@roncodes roncodes commented Oct 3, 2026

Copy link
Copy Markdown
Member

Release branch for v0.6.71, cut from main.

This branch collects #347: resource view registries, so extensions can add columns, actions and buttons to this engine's tables and details views.

Before merging

It depends on fleetbase/ember-core v0.3.25 (fleetbase/ember-core#96) and fleetbase/ember-ui v0.4.5 (fleetbase/ember-ui#187). Once both are published:

  1. Bump @fleetbase/ember-core to ^0.3.25 and @fleetbase/ember-ui to ^0.4.5 in package.json.
  2. Refresh pnpm-lock.yaml.

Merging this tags v0.6.71. The version comes from the branch name and is checked against the version files and the first line of RELEASE.md.

shivthakker and others added 4 commits September 28, 2026 17:35
Opt-in via OrderConfig meta; orders whose config does not opt in keep
the default dispatch lifecycle and presentation.

Backend (meta.lifecycle):
- OrderConfig helpers: initial/completed/canceled/terminal codes,
  allowsDispatch, strict transitions, canTransition over the flow graph
- createRecord starts at the configured initial activity and never
  dispatches when dispatch is disabled
- Tracking number initial status comes from the owner when provided
- Order::cancel uses the config's canceled activity
- updateActivity validates targets against the configured graph when
  strict_transitions is set; dispatch endpoints refuse non-dispatch configs

Frontend:
- order-presentation service: extensions register profiles (by
  meta.presentation_profile) that compose the order form/details,
  hide fields/actions and route edits to the profiled form
- Kanban derives columns/labels from a configured lifecycle instead of
  injecting default dispatch columns
- Activity flow editor roots at the configured initial activity

Tests: OrderConfigLifecycleTest; existing suite unchanged
(ReportSchemaContractsTest fails on main as well).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Extensions can add columns, row actions, bulk actions and toolbar buttons to
fleet-ops tables through fleet-ops:table:<resource>:<slot>, and buttons and
menu items to its details panels through fleet-ops:details:<resource>:<slot>.

- @registry on every top-level Tabular/TabularActions index view and Panel
  details view; the contacts header follows the open tab's registry
- *-actions panel.view passes registry: this.detailsRegistry, so the side
  panels merge the same buttons (customer and schedule map to their resource)
- stable ids on built-in columns, actions and buttons; index query params
  include registered filter params; registries declared in extension.js

Fixes found on the way:
- driver, vehicle and trailer registeredTabs deleted `route` from the shared
  registry items (breaking those tabs in the routed details view once a side
  panel had opened) and kept only tabs without a component, which are the
  ones a panel cannot render; they now use registeredPanelTabs like the rest
- the sensor details view read the place tab registry

Requires @fleetbase/ember-core 0.3.25 and @fleetbase/ember-ui 0.4.5.
@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 (5f846a9) to head (adffe39).

Additional details and impacted files
@@             Coverage Diff             @@
##                main      #348   +/-   ##
===========================================
  Coverage     100.00%   100.00%           
  Complexity     12329     12329           
===========================================
  Files            600       600           
  Lines          46419     46419           
===========================================
  Hits           46419     46419           
Flag Coverage Δ
backend 100.00% <ø> (ø)

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

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

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

ember-core 0.3.25's loadSubjectCustomFields rejects instead of resolving with
undefined when the fields cannot be loaded. Every other caller already catches;
this one now does too, leaving the form without custom fields as before.
feat: resource view registries for fleet-ops tables and panels
…surface>:<slot>

Follows ember-core 0.3.25: tables take @registry="<extension>:<resource>:table"
and details views @registry="<extension>:<resource>:details", e.g.
fleet-ops:driver:table:columns. Legacy component and tab registries are unchanged.
…nfigured-order-lifecycle

# Conflicts:
#	addon/controllers/operations/orders/index/details.js
- Profiles hide actions by the built-in ids the order table and details use in the
  resource view registries (assign-driver, unassign-driver, update-activity,
  edit-order-details, view-label, listen-to-socket-channel, view-metadata, ...).
  The details assign/unassign item now has those ids too.
- The orders table applies a profile's hidden.actions to every row action by id,
  as the details panel does, instead of only dispatch and assign driver.
- isClosed counts the configured completed and canceled codes as terminal,
  matching OrderConfig::getTerminalActivityCodes().
- bulkDispatch no longer fatals for an order without a config.
- Restore Order::config()'s docblock, which getInitialTrackingStatus() split off.
…ycle

Configured order lifecycles and order presentation profiles
…meline

- Order Config: add a Lifecycle tab to view and edit `meta.lifecycle` (initial,
  completed, canceled and terminal activities, dispatch, strict transitions),
  with validation against the activity flow.
- Order Config: always fetch the config list. `findAll` resolved with the subset
  the store already held (e.g. an order's embedded config) and only refreshed
  in the background, so configs created later were missing from the manager.
- Order details: reload the activity timeline when the order's status changes
  outside the Update Activity modal (configured lifecycle advancing on save,
  extension actions, realtime updates).
…agement

Order config lifecycle management, full config list, live activity timeline
A configured lifecycle can loop back (active -> extended -> active) and an
activity can have several parents. addChildActivities walked the flow as a
tree and recursed forever on a cycle until JointJS overflowed the stack when
opening the Activity Flow tab. An activity already on the graph now only gets
a link from the additional parent.

The Lifecycle tab's save button sits under the form instead of in a separate
collapsible Controls panel.
Enabling a configured lifecycle only let you pick among the activities the
flow already had, which for a new config are the default dispatch ones, so a
custom lifecycle could not be built from the Order Config screen. The tab now
edits the flow too: add and remove activities (label, code, details, colour),
set the activities each one can move to, or start from a blank flow; the first
activity added becomes the initial one. Flow and meta.lifecycle save together.
The details route loaded driverAssigned but not vehicleAssigned, so a vehicle
assigned without a driver (configured lifecycles, extension flows) showed as
unassigned in the details and the edit form until something else fetched it.
@roncodes
roncodes merged commit 84dcc15 into main Oct 5, 2026
9 checks passed
@roncodes
roncodes deleted the release/v0.6.71 branch October 5, 2026 08:29
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.

2 participants