Skip to content

Releases

v1.26.0

Choose a tag to compare

@goldnead goldnead released this 21 Oct 10:12

PersonSources::describe(): which sources did not speak. Known limits of the dry run for a known person.

v1.25.0

Choose a tag to compare

@goldnead goldnead released this 21 Oct 09:51

Person sources: a real person for the dry run, read only (ProvidesSimPersons, PersonSources).

v1.24.0

Choose a tag to compare

@goldnead goldnead released this 21 Oct 09:41

What the test person does (SimAction), state along the way, why-lines.

v1.23.0

Choose a tag to compare

@goldnead goldnead released this 21 Oct 09:35

MailPreview and registry mailPreview() for the dry run's mailbox.

v1.22.0

Choose a tag to compare

@goldnead goldnead released this 21 Oct 09:22

Dry run for one known person: starts(), timeline(), Effect::DECISION.

v1.21.0

Choose a tag to compare

@goldnead goldnead released this 21 Oct 08:51

Probelauf planner (Simulation namespace, optional paths() and react() provider halves). See CHANGELOG.

v1.20.0

Choose a tag to compare

@goldnead goldnead released this 21 Oct 06:39

Added: optional details() on map providers

MapObjectRegistry::details($type, $id, $period) asks a provider for richer panel content (facts and
short lists, e.g. a course's lessons or an automation's mails). The provider adds a public
details(string $id, MapPeriod $period): ?array without touching the interface; the registry finds it with
method_exists, cleans the blocks (known kinds only, at most 12 list items, safe links) and answers null for
providers without it, unknown ids or failures. No change for existing providers.

MapObjectRegistry::detailsAllowed($type, $id, $user) asks the provider's optional
detailsAuthorized(string $id, $user): bool. A provider that has details() but no
detailsAuthorized() is refused, so reading details is never open by default.

Fixed: the map's period wording is translated

MapPeriod::label() ("last 30 days") now comes from brand-context::messages.map_period_days, with a German
line ("letzte 30 Tage"), instead of an untranslated JSON key.

v1.19.0

Choose a tag to compare

@goldnead goldnead released this 20 Oct 15:34

Added: ProvidesMapConnections, connection rules and audit on the registry

The map can now write a real connection, not only draw one. ProvidesMapConnections documents five
public methods an addon adds to its existing map provider: connectionRules(),
connectionAuthorized(), connectionPreview(), connect() and disconnect(), all with plain
array signatures. The registry finds them with method_exists, so an addon does not reference the
interface and keeps running against an older brand-context.

MapObjectRegistry gains connectionRules() (collected per provider, a failing provider costs only
its own rules, the first rule per from, to and kind wins), ruleFor(), previewConnection() and
applyConnection() (rule, permission, preview, write, audit, and an undo payload). Every connect
and disconnect is audited with who, when, what, before and after: through statamic-activity when
installed, otherwise to the log. A failing audit never rolls the write back. No change for existing
providers.

previewConnection() now takes the user and refuses with AuthorizationException like the write
does. applyConnection() takes the before the user confirmed and throws ConnectionConflict (a
DomainException, nothing written) when the field has changed since. A disconnect may return
restore (what it removed); the undo carries it back into connect() so the exact thing returns.
MapEdge gains ownerType (the provider that derived it) so the map offers "release" only to the
owner of the line. The audit keeps only the user id (no email, no name): into statamic-activity
with a real Identity as actor, or, when that is not installed or keeps nothing, into the new
map_connection_audits table (run php artisan migrate).

Merge order of the map stack: brand-context (this) first, then the funnels map part 1, then the
addons (lead-magnets, offers, automations, products, marketing), funnels last. The addons need this
release (>= 1.19) for connections; they check method_exists and show no connection handles on an
older brand-context.

v1.18.0

Choose a tag to compare

@goldnead goldnead released this 19 Oct 07:25
569f9cd

ProvidesMapEdges, MapEdge, MapObjectRegistry::edges(), MapObject::problems. See CHANGELOG.

1.17.0

Choose a tag to compare

@goldnead goldnead released this 18 Oct 09:54
be782dc

Adds ProvidesMapObjects and MapObjectRegistry: a shared contract so the funnels map can point at objects in other addons. No change for existing addons.