record:activity maps sys_activity.type onto feed-item kinds through a hardcoded table, and scheduled has no entry — so a scheduled (not-yet-held) meeting is discarded before any filter runs and can never appear on any activity timeline, whatever the page authors.
Measured
From the shipped bundle (@objectstack/console 17.1.0, dist/assets/plugins-views-BaBStVok.js):
Ya={created:'field_change',updated:'field_change',deleted:'field_change',assigned:'field_change',shared:'field_change',system:'system',completed:'task',commented:undefined,mentioned:undefined,login:undefined,logout:undefined};functionto(e,t){letn=Ya[String(e?.type)];returnn ? {…} : null;}// unmapped -> dropped'scheduled' is not a key, so Ya['scheduled'] is undefined and the row is dropped by to() — upstream of showCompleted, upstream of types, upstream of everything a page can configure.
Executed over a lead's real rows:
created -> field_change
updated -> field_change
completed -> task
scheduled -> undefined <- dropped, 1 of 6 rows never reaches the timeline
system -> system
Who writes scheduled
HotCRM's schedule_meeting action — shipped for crm_lead, crm_contact, crm_account, crm_opportunity and crm_case — writes sys_activity rows with type: EVENT_STATUS === 'held' ? 'completed' : 'scheduled'. The held branch reaches the timeline; the scheduled branch is written, stored, queryable, and invisible on the surface built to display it. commented and mentioned are unmapped the same way, which is more surprising still on a component whose own props include showCommentInput / enableMentions.
The other half: declared kinds nothing can produce
FeedItemType (@objectstack/spec/ui) publishes 13 kinds:
comment | field_change | task | event | email | call | note | file |
record_create | record_delete | approval | sharing | system
Only three are reachable through Ya from sys_activity: field_change, task, system. The other ten are authorable — they parse, they typecheck, build accepts them — and no data path produces them. An author filtering to types: ['event'] to show meetings gets an empty tab and no diagnostic; that is a declared surface enforced by nothing, and it reads to an author (or to an AI writing metadata) as a working feature.
Suggested direction
Either extend the map so the vocabulary sys_activity actually stores reaches the timeline (scheduled → event is the obvious pairing and would make the declared event kind reachable at the same time), or narrow FeedItemType to the kinds a producer exists for. The present state is the worst of both: the enum promises ten kinds that cannot arrive, and a real stored row silently does not.
Found while fixing objectstack-ai/hotcrm#1209; not worked around there, per 「平台相关的功能应该在平台中实现」.
record:activitymapssys_activity.typeonto feed-item kinds through a hardcoded table, andscheduledhas no entry — so a scheduled (not-yet-held) meeting is discarded before any filter runs and can never appear on any activity timeline, whatever the page authors.Measured
From the shipped bundle (
@objectstack/console17.1.0,dist/assets/plugins-views-BaBStVok.js):'scheduled'is not a key, soYa['scheduled']isundefinedand the row is dropped byto()— upstream ofshowCompleted, upstream oftypes, upstream of everything a page can configure.Executed over a lead's real rows:
Who writes
scheduledHotCRM's
schedule_meetingaction — shipped forcrm_lead,crm_contact,crm_account,crm_opportunityandcrm_case— writessys_activityrows withtype: EVENT_STATUS === 'held' ? 'completed' : 'scheduled'. The held branch reaches the timeline; the scheduled branch is written, stored, queryable, and invisible on the surface built to display it.commentedandmentionedare unmapped the same way, which is more surprising still on a component whose own props includeshowCommentInput/enableMentions.The other half: declared kinds nothing can produce
FeedItemType(@objectstack/spec/ui) publishes 13 kinds:Only three are reachable through
Yafromsys_activity:field_change,task,system. The other ten are authorable — they parse, they typecheck,buildaccepts them — and no data path produces them. An author filtering totypes: ['event']to show meetings gets an empty tab and no diagnostic; that is a declared surface enforced by nothing, and it reads to an author (or to an AI writing metadata) as a working feature.Suggested direction
Either extend the map so the vocabulary
sys_activityactually stores reaches the timeline (scheduled→eventis the obvious pairing and would make the declaredeventkind reachable at the same time), or narrowFeedItemTypeto the kinds a producer exists for. The present state is the worst of both: the enum promises ten kinds that cannot arrive, and a real stored row silently does not.Found while fixing objectstack-ai/hotcrm#1209; not worked around there, per 「平台相关的功能应该在平台中实现」.