v0.15.0
-
@lowdefy/modules-mongodb-activities: ### Minor Changes
-
#111
8923ca1Thanks @Yianni99! - Add the open-tasks component — a compact card list of an entity's open
kind: taskdocs, reading activities' ownactionscollection filtered by
entity_type/entity_id(the shapecreate-task/update-taskwrite) and
an open status (current stage notdone). It's the activities-owned
sibling of theworkflowsmodule'sopen-actionscard, styled to match
it so a host can compose both side by side into one "what's open" row.
Takesentity_type+entity_idvars and an optionalon_clickaction
list for wiring a host'stask-modalinstance. Reads no workflow-engine
data. -
#111
8923ca1Thanks @Yianni99! - Add exported task CRUD —create-task/update-taskAPIs writing
kind: taskdocs into activities'actions-collection, and a paired
task-modalcomponent. Two seams keep this from being a lossy
generalization of deals' original deal-only implementation: an arbitrary
entity link (payloadentity_type/entity_id, not a hardcoded reference,
so a task can hang off a deal, a meeting, or any entity) and a
consumer-supplied emitted event (task-modal'seventsvar supplies the
type+ Nunjucks display template per create/complete/reopen transition,
forwarded through to the events module'snew-event).task-modalalso
takes the assignee-options source as a var (assignee_options+
optionalassignee_search) instead of hardcoding a request. -
@lowdefy/modules-mongodb-deals: ### Minor Changes
-
#111
1ed7317Thanks @Yianni99! - Add the deals module: a workflow-driven deal/opportunity workspace (list,
create, and a master-detail workspace) that orchestrates the workflows, events,
activities, files, companies, and contacts modules. The pipeline is a workflows
workflow selected via theworkflow_typevar; thedealscollection is
host-app-owned and mapped in. Ships pagesall/new/view, a create/update/
task/outcome API surface, adeal-status-chipcomponent, and app-configurable
stages/outcomes/reasons/filters/card-fields plus main/info-grid/sidebar/card slots. -
#111
ab684abThanks @Yianni99! - Align the deals module with the sibling entity modules (companies / contacts /
activities) for consistency: addlabel/label_pluralvars so a host can
relabel the entity (used across the menu, page titles, breadcrumbs, and the
New button); extract the create-form body to aform_dealcomponent and the
list action to abutton_new_dealcomponent; adopt thecontent_widthpage
var, vertical field labels, and the shared Cancel/Create button conventions on
the create page; align the list "New" and filter "Clear" buttons; and
genericize leftover "sales-pipeline" wording now that the module is
workflow-agnostic. -
#111
c772d6fThanks @Yianni99! - Add anentity_connection_idvar (defaultdeals) replacing the hardcoded
dealsliteral everywhere the module matches or passes a workflow doc's
entity.connection_id— the list/detail aggregations (get_selected_deal,
get_active_deals, get_deals_list, get_selected_deal_open_actions), the outcome
modal's get-entity-workflows refetch, the deal view and compact list-item
get-entity-workflows payloads, and theentity_connection_idpassed to the
embeddedactions-on-entitycomponent. Lets a host map its deals collection
under any connection id, as long as it matches the workflow config's
entity.connection_id. -
#111
b9b47bcThanks @Yianni99! - Generalize the deals create/display surface: the module no longer bakes in
domain-specific fields (material/SKU, product, sector, sub-sector,
customer-type, project-type, packaging) or their taxonomy vars. Hosts now
inject their own domain fields through a singlefieldsvar — rendered as
inputs on the create form and read-only on the deal view via
SmartDescriptions, matching howcompanies.fields.attributesworks. The
create-deal API writes a genericattributespassthrough, andproduct
(previously a top-level field with its ownproductsvar and list/header
rendering) becomes a plainattributes.producthost field.Breaking (config): consumers must move their domain fields to the new
fieldsvar and drop the removedproducts/product_hierarchy/sectors/
sub_sectors/customer_typesvars. Existing deals keep their stored
attributes.*— the generic passthrough and read side render whatever is
there.form.nameno longer auto-prefills (the shared company-selector has
no onChange hook); hosts own any prefill via afieldsblockonChange. -
#111
c772d6fThanks @Yianni99! - Stop computingdeal_value/close_datefrom host-specific workflow action
fields in the list/detail aggregations (get_selected_deal, get_active_deals,
get_deals_list) — read them as plain stored fields ($value/$close_date,
each with an$ifNullfallback) the same waydeal.outcomeis already
read back after being stamped on write. Also drops the module's inline
volumes rounding/projection; the module ships no volumes tile of its own —
hosts supply one through the existingcomponents.info_grid_slotsvar. An
unstamped deal now renders0/—for value/close date instead of an
app-specific computed number.
Patch Changes
-
#111
8923ca1Thanks @Yianni99! - Close two reuse gaps in the deal view left over from adopting workflows'
actions-on-entity: it never dropped the sharedcheck-action-modal, so a
check-kind action clicked in the phase view full-page-navigated to its own
action page instead of opening in place; and the deal-outcome modal
hand-rolled its ownget-entity-workflowsrefetch +entity_workflows
reseed after submitting the win/loss outcome action, instead of the exported
entity-workflows-refetchsequence.The deal view (
pages/view.yaml) now dropscheck-action-modalnext to
actions-on-entity, with anon_completethat runsentity-workflows-refetch
plus a re-seed of the open-tasks card (mirroring the existing deal-switch and
task-save refreshes) so both cards and the stepper stay live after a check
action completes.components/detail/deal_outcome_modal.yamlnow calls
entity-workflows-refetchinstead of its own copy of the same two actions. -
#111
8923ca1Thanks @Yianni99! - Replace the single merged open-items card (components/detail/section_actions.yamlcomponents/detail/action_card.yaml.njk) with the two cards it used to
combine, now composed side by side: theworkflowsmodule'sopen-actions
and theactivitiesmodule's newopen-tasks. Deletes the merged card,
its now-deadopen_actions_all/open_actionsseeding (actions/compute_open_actions.yaml
and all its call sites), theget_selected_deal_open_actionsrequest, and
deals' ownactions-collectionconnection (its only remaining reader) —
the workflows engine keeps its own, separate actions collection. Task
creation/edit now refetchesopen-tasks' own request instead.
-
#111
8923ca1Thanks @Yianni99! - Stop shipping a second, deal-only task implementation — delete
components/detail/task_modal.yaml,api/create-task.yaml, and
api/update-task.yaml, and consume activities' new exportedtask-modal
component (with activities'create-task/update-taskAPIs underneath)
instead. The deal view passesentity_type: deal, the deal id, and its
deal-task-created/deal-task-completed/deal-task-reopenedevent
config, so task creation still writes to the sameactionscollection,
links to the deal, and emits the same event display markup as before.
get_task_assignee_optionsstays in deals and is now passed to the shared
modal as its assignee-options source. -
#111
8923ca1Thanks @Yianni99! - Stop shipping a second, deal-only note-capture modal — delete
components/detail/add_note_modal.yamland consume events' new exported
note-capturecomponent (writing through events' ownnew-eventapi)
instead. The deal view passes itsget_mentionable_usersrequest as the
mention source, the deal id underreference_field: deal_ids, the deal's
company_id, and itsdeal-noteevent type/display template, so notes
still emit the same event type, references, and display markup as
before.get_mentionable_usersstays in deals since it queries the
app's own users. -
@lowdefy/modules-mongodb-events: ### Minor Changes
-
#111
8923ca1Thanks @Yianni99! - Add exportednote-capture— an@mentionrich-text note-capture modal
writing through this module's ownnew-eventapi, generalised from
deals' original deal-onlyadd_note_modal. Four seams keep this from
being a lossy generalization: amentionable_usersoptions source (plus
optionalmentionable_users_request_idto refetch on open) soevents
never queries an app's users itself, anentity_id+reference_field
pair naming the emitted event's primary reference array (e.g.
deal_ids), an optionalcompany_idfor a secondarycompany_ids
reference, and atype+title_templatepair controlling the emitted
event's type and Nunjucks display copy. -
@lowdefy/modules-mongodb-workflows: ### Minor Changes
-
#111
8923ca1Thanks @Yianni99! - Add the open-actions component — a compact, colour-keyed card list of an
entity's OPEN workflow actions, for hosts that want a lighter summary than
the fullactions-on-entitystepper. Takes the sameentity_id+
entity_connection_idvars, fetches via the existingget-entity-workflows
endpoint, flattens every workflow's groups, and keeps only non-terminal
actions (everything exceptdone/not-required), styled off the
action_statusesenum. Actions-only — never reads tasks or activities.