Minor Changes
-
f2a7e08: Column header shadowing made loud + consistent (#1255). When an i18n key
entities.{entity}.fields.{field}shadows an explicit header (per-call
column()override or inlineaddColumnheader) with a DIFFERENT value, a
one-shot dev warning announces it (deduped per entity+field; silent when the
key merely copies the header). The precedence itself is unchanged and now
documented where it lives: the catalog wins by design — an inlineheader
is the no-key fallback, not an absolute override; to pin a header, don't
create the key.Consistency fix uncovered by the warning's tests:
addColumnused to let
the inline header win at registration and only flip to the i18n value on the
first locale change — silently and inconsistently. The catalog now wins at
registration too. -
01233b5: Structural views tightened + exported (#1253 phase 2).
query,
invalidateCache,getFieldConfigandcanReadare now REQUIRED on the
EntityManagerRead/EntityManagerPermissionsviews — they are
unconditionally implemented onEntityManagerand called unguarded by list
pages; the?was a #1191 unification leftover that forced consumer-side
casts on base methods (.manager.invalidateCache()no longer needs one).
The badge/severity capability (getEntityBadges,hasSeverityMap,
getSeverity,getSeverityDescriptor) stays optional by design, documented
as such. Optionality contract documented in the interface header: required
iff qdadm composables call it unguarded, plus capability coherence.The views are now exported from the main barrel (
EntityManagerBase,
EntityManagerPermissions,EntityManagerRead,EntityManagerCrud,
EntityManagerLike,OrchestratorLike) so consumers can type manager-likes
and test doubles against the same contract.Type-only tightening: hand-rolled manager-likes missing the flipped members
stop compiling (they were one call away from a runtime crash inside list
pages). No runtime change.