mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-10-06 23:26:55 +01:00
|
Some checks are pending
Validate knowledge index / validate-index (push) Waiting to run
Validate AL review fixtures / validate-review-fixtures (push) Waiting to run
Validate skill index and report schemas / validate-contract (push) Waiting to run
Validate frontmatter and structure / validate (push) Waiting to run
* Add UI knowledge: notification recall Id and Page Management document routing Two ui articles with compiled good/bad samples: - notification-recall-needs-known-id: a notification that the code also recalls needs a fixed Id (single instance; recall before re-send) or per-record tracking through codeunit "Notification Lifecycle Mgt." (SendNotification[WithAdditionalContext] / RecallNotificationsForRecord, HandleDelayedInsert semantics). Never-recalled notifications are exempt. - list-page-document-routing-uses-page-management: open documents from a mixed-type list with PageManagement.PageRun(Rec) instead of a hand-written case "Document Type" / Page.Run; register new tables through OnConditionalCardPageIDNotFound. Single-type opens and tables Page Management does not route are exempt. Wired into al-ui-review (entry gate now covers notification send/recall outside pages, tokens, high-signal mappings) and registered both pairs in the ui review-fixtures override. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Address review: scope shared notification Ids, routed-table definition, pinned links - notification-recall-needs-known-id: a fixed Id shared across records is valid for one-at-a-time warnings (Sales Line blocked-item, Over-Receipt Mgt. pass a fixed Id to SendNotification after Recall); the per-record anti-pattern now requires several records' notifications to be visible at once. Recall wording follows Learn (including its false-return reasons) and cites Base App's recall-before-send practice. - list-page-document-routing-uses-page-management: definition covers opening a routed table directly or after Get; cite archive line lists, Copy Document Mgt. ShowSalesDoc/ShowPurchDoc and Office handler; no "document types added later" overclaim (GetSalesHeaderPageID has no else for the extensible enum); full GetPageID resolution order; drop the IRS single-page subscriber. - al-ui-review: non-page files admitted by the notification clause are checked only against notification knowledge; description updated; drop the "Document Type" token; case-insensitive token matching; cues aligned with both articles. - Pin BCApps links to 837ef802485ee457e52310d2ecaa08b93d0122fd. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Address review: notification recall defect is a lost identity, not an unassigned or generated Id - notification-recall-needs-known-id: the defect is a Recall() whose Id cannot be the sent one (fresh local Notification, new CreateGuid at recall time) while neither the sent instance nor its Id is kept. A retained global instance (CreateGuid once in OnOpenPage, or Id left for Send to assign), a generated Id saved after Send and reassigned before Recall, and correctly tracked per-record Ids are explicitly not findings. Findings require evidence that the recalled identity differs from or cannot recover the sent identity. Notification Lifecycle Mgt. is recommended for per-record tracking, not mandatory. Cites VAT Bus. Post. Grp. Part, Certificate, and Data Search Lines, and the lifecycle helper's Send-then-read-Id sequence. - good sample: adds a page with a retained global Notification (CreateGuid in OnOpenPage, Send in an action, Recall in a later action and OnClosePage) and a pageextension that saves the Send-assigned Id and recalls it from a later action. Bad sample comments name the lost identity. - al-ui-review: notification cue requires that evidence and lists the retained-instance, saved-Id, and direct per-record tracking controls as exclusions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| bound-page-field-inherits-source-field-tooltip.md | ||
| caption-capitalization-noun-phrase-vs-sentence-phrase.good.al | ||
| caption-capitalization-noun-phrase-vs-sentence-phrase.md | ||
| control-add-in-accessibility-is-developer-responsibility.md | ||
| control-add-in-has-no-bc-color-tokens.md | ||
| control-addin-package-resource-ajax-needs-withcredentials.bad.js | ||
| control-addin-package-resource-ajax-needs-withcredentials.good.js | ||
| control-addin-package-resource-ajax-needs-withcredentials.md | ||
| control-addin-throttle-al-calls-and-payload-size.bad.js | ||
| control-addin-throttle-al-calls-and-payload-size.good.js | ||
| control-addin-throttle-al-calls-and-payload-size.md | ||
| cosmetic-styles-need-no-textual-context.md | ||
| default-descending-sort-on-historical-pages.bad.al | ||
| default-descending-sort-on-historical-pages.good.al | ||
| default-descending-sort-on-historical-pages.md | ||
| dropdown-fieldgroup-respects-lookup-page-visibility.bad.al | ||
| dropdown-fieldgroup-respects-lookup-page-visibility.good.al | ||
| dropdown-fieldgroup-respects-lookup-page-visibility.md | ||
| factbox-design.md | ||
| fasttab-field-importance.md | ||
| grid-data-table-heuristic.good.al | ||
| grid-data-table-heuristic.md | ||
| group-caption-quality-is-not-an-accessibility-issue.md | ||
| group-labeled-first-child-exception.bad.al | ||
| group-labeled-first-child-exception.good.al | ||
| group-labeled-first-child-exception.md | ||
| group-show-caption-false-outside-grid-is-not-a-violation.md | ||
| layout-table-with-captions-is-valid.md | ||
| list-page-document-routing-uses-page-management.bad.al | ||
| list-page-document-routing-uses-page-management.good.al | ||
| list-page-document-routing-uses-page-management.md | ||
| no-nested-grids.bad.al | ||
| no-nested-grids.md | ||
| notification-recall-needs-known-id.bad.al | ||
| notification-recall-needs-known-id.good.al | ||
| notification-recall-needs-known-id.md | ||
| on-drill-down-on-non-editable-fields-renders-as-link.md | ||
| page-background-tasks.md | ||
| page-client-expression-must-not-use-in-list.bad.al | ||
| page-client-expression-must-not-use-in-list.good.al | ||
| page-client-expression-must-not-use-in-list.md | ||
| page-design-must-match-bc-page-type-conventions.bad.al | ||
| page-design-must-match-bc-page-type-conventions.good.al | ||
| page-design-must-match-bc-page-type-conventions.md | ||
| prefer-actionref-syntax-for-promoted-actions.md | ||
| promoted-action-groups.md | ||
| rolecenter-permission-gating-must-use-accessbypermission.bad.al | ||
| rolecenter-permission-gating-must-use-accessbypermission.good.al | ||
| rolecenter-permission-gating-must-use-accessbypermission.md | ||
| semantic-style-in-cuegroup-exception.good.al | ||
| semantic-style-in-cuegroup-exception.md | ||
| semantic-styles-need-independent-textual-meaning.bad.al | ||
| semantic-styles-need-independent-textual-meaning.good.al | ||
| semantic-styles-need-independent-textual-meaning.md | ||
| set-selection-filter-list-scope.bad.al | ||
| set-selection-filter-list-scope.good.al | ||
| set-selection-filter-list-scope.md | ||
| show-caption-false-allowed-on-non-editable-fields.good.al | ||
| show-caption-false-allowed-on-non-editable-fields.md | ||
| show-caption-in-promptdialog-prompt-area.good.al | ||
| show-caption-in-promptdialog-prompt-area.md | ||
| show-caption-in-repeater-allowed.good.al | ||
| show-caption-in-repeater-allowed.md | ||
| show-caption-on-editable-fields.bad.al | ||
| show-caption-on-editable-fields.good.al | ||
| show-caption-on-editable-fields.md | ||
| showmandatory-on-code-required-page-fields.bad.al | ||
| showmandatory-on-code-required-page-fields.good.al | ||
| showmandatory-on-code-required-page-fields.md | ||
| standalone-content-in-layout-table.good.al | ||
| standalone-content-in-layout-table.md | ||
| style-expr-text-vs-boolean.good.al | ||
| style-expr-text-vs-boolean.md | ||
| tabular-intent-requires-data-table-conditions.bad.al | ||
| tabular-intent-requires-data-table-conditions.md | ||
| updatepropagation-both-refreshes-main-page.bad.al | ||
| updatepropagation-both-refreshes-main-page.good.al | ||
| updatepropagation-both-refreshes-main-page.md | ||
| validate-request-page-input-in-onqueryclosepage.bad.al | ||
| validate-request-page-input-in-onqueryclosepage.good.al | ||
| validate-request-page-input-in-onqueryclosepage.md | ||