Files
qbit-collaboration/docs/CONTINGENT-POSSIBLE-VALUES.md
james.maesandClaude Opus 5.5 9ba6e41377 feat: contingent possible values for comment parent, feature scope name and comment field anchor
parentCommentId lists only its thread (threadId or id = ${input.threadId});
feature settings' scopeName is listed by scopeType (apps or eligible
tables) through FeatureScopeNamePossibleValueProvider; a comment's
fieldName lists the visible fields of its tableName through the reusable
RecordFieldNamePossibleValueProvider. TODOs mark the core dependsOn
switch. One test per pair.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:18:24 -05:00

2.1 KiB

Dependent possible values

QQQ 4.1.0-RC.5 has no dependsOn field property. Each pair has a TODO to add it when core ships it; automatic refresh and clearing stale selections remain frontend responsibilities.

  • collaboration_comment.parentCommentId reuses the collaboration_comment TABLE source. Its field filter is threadId EQUALS ${input.threadId} OR id EQUALS ${input.threadId}: roots have null threadId, replies carry the root ID. The OR is nested inside an outer AND because core appends search criteria to the supplied filter. This lists the root and replies of just that thread; comment posting still normalizes a selected reply to its root.
  • collaboration_feature_setting.scopeName uses collaboration_scope_name, a CUSTOM source driven by otherValues.scopeType. APP offers app names and labels. TABLE excludes collaboration_*, hidden tables and tables without a valid primary-key field (RC.5 metadata has one primary-key field). INSTANCE offers instance, since scopeName is required but the current TAGS settings reader ignores it for INSTANCE. General runtime override contracts remain deferred. Bare-ID translation prefers an app label before a table label if their names collide; searches use the selected scope's label.
  • collaboration_comment.fieldName uses reusable CUSTOM source collaboration_record_field_name. It resolves otherValues.tableName, or reads a comment via commentId/id when tableName is absent. Other forms should supply tableName (or explicit commentId); bare id fallback is for comment forms. Fields come from permission-enforced personalized metadata, excluding hidden fields, and display Label (name). Bare-ID translation retains the name because it has no table context.

The table possible-values middleware clones the field filter and calls interpretValues with the input map and FORM use case before passing it as defaultQueryFilter to SearchPossibleValueSourceAction. Tests mirror that boundary and pass otherValues to the core action. CUSTOM providers receive that map directly; searches honor explicit IDs first, otherwise case-insensitive name/label substring matching.