Mattermost is an open source platform for secure collaboration across the entire software development lifecycle..
This report summarizes scanner evidence for mattermost/mattermost, a TypeScript project with 39,481 GitHub stars. SynthScan examined 2,884,153 lines of code across 9773 source files, recording 3260 pattern matches distributed across 22 syntactic categories. The legacy adjusted pattern signal is 1.7 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 2812 finding(s).
Are imports declared and package/API names verified? 244 finding(s).
Are wrappers, guards, and repeated structures necessary? 1623 finding(s).
Which changes need focused human review? 3260 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 3260 distinct pattern matches across 22 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | webapp/platform/types/src/access_control.ts | 145 | export function combineMembershipExpressions(expressions: Array<string | undefined>): string { | CODE |
| LOW | webapp/platform/types/src/access_control.ts | 176 | export function hasOverlappingPermissionRules(rules?: AccessControlPolicyRule[]): boolean { | CODE |
| LOW | webapp/platform/types/src/access_control.ts | 269 | export function buildRulesWithPermissionRules(existingRules: AccessControlPolicyRule[], permissionRules: AccessControlPo | CODE |
| LOW | …pp/platform/components/src/hooks/useFocusTrap.test.tsx | 39 | function NestedFocusTrapsComponent() { | CODE |
| LOW | …pp/platform/components/src/hooks/useFocusTrap.test.tsx | 60 | function PointerEventsFocusTrapComponent() { | CODE |
| LOW | webapp/platform/client/src/helpers.ts | 21 | export function extractFilenameFromContentDisposition(header: string | null | undefined, fallback: string): string { | CODE |
| LOW | webapp/platform/client/src/client4.ts | 5521 | export function parseAndMergeNestedHeaders(originalHeaders: any) { | CODE |
| LOW | …/eslint-plugin/rules/no-redundant-admin-config-deps.js | 115 | function collectTopLevelConditions(node, out) { | CODE |
| LOW | webapp/channels/webpack.config.js | 324 | async function initializeModuleFederation() { | CODE |
| LOW | webapp/channels/src/entry.tsx | 42 | function appendOnDOMContentLoadedEvent(onDomContentReady: () => void) { | CODE |
| LOW | webapp/channels/src/plugins/published_editor.ts | 93 | export function isPublishedEditorComponent(id: string): id is PublishedEditorComponentId { | CODE |
| LOW | …pp/channels/src/plugins/rhs_plugin/rhs_plugin.test.tsx | 111 | function stateWithRegisteredComponent(showPopout?: boolean): DeepPartial<GlobalState> { | CODE |
| LOW | …p/channels/src/tests/helpers/plugin_error_handling.tsx | 18 | export function testPluginComponentErrorHandling(renderCallback: (pluginComponent: PluginComponent & {component: any}) = | CODE |
| LOW | webapp/channels/src/tests/helpers/line_break_helpers.ts | 83 | export function testComponentForLineBreak(generateInstance: (input: string) => JSX.Element, getValue: (container: HTMLEl | CODE |
| LOW | webapp/channels/src/utils/syntax_highlighting.tsx | 45 | export function getLanguageFromFileExtension(extension: string): string | null { | CODE |
| LOW | webapp/channels/src/utils/syntax_highlighting.tsx | 71 | export function getLanguageFromDisplayName(displayName: string): string { | CODE |
| LOW | webapp/channels/src/utils/syntax_highlighting.tsx | 75 | function getLanguageFromNameOrAlias(name: string) { | CODE |
| LOW | webapp/channels/src/utils/post_utils.ts | 290 | function canAutomaticallyCloseBackticks(message: string) { | CODE |
| LOW | webapp/channels/src/utils/post_utils.ts | 374 | export function isErrorInvalidSlashCommand(error: ServerError | null): boolean { | CODE |
| LOW | webapp/channels/src/utils/post_utils.ts | 463 | export function makeGetMentionsFromMessage(): (state: GlobalState, post: Post) => Record<string, UserProfile> { | CODE |
| LOW⚡ | webapp/channels/src/utils/post_utils.ts | 675 | export function splitMessageBasedOnCaretPosition(caretPosition: number, message: string): {firstPiece: string; lastPiece | CODE |
| LOW⚡ | webapp/channels/src/utils/post_utils.ts | 681 | export function splitMessageBasedOnTextSelection(selectionStart: number, selectionEnd: number, message: string): {firstP | CODE |
| LOW⚡ | webapp/channels/src/utils/post_utils.ts | 687 | export function areConsecutivePostsBySameUser(post: Post, previousPost: Post): boolean { | CODE |
| LOW | webapp/channels/src/utils/post_utils.ts | 751 | export function matchUserMentionTriggersWithMessageMentions(userMentionKeys: UserMentionKey[], | CODE |
| LOW | webapp/channels/src/utils/post_utils.ts | 767 | export function makeGetUniqueReactionsToPost(): (state: GlobalState, postId: Post['id']) => Record<string, Reaction> | u | CODE |
| LOW | webapp/channels/src/utils/post_utils.ts | 792 | export function makeGetUniqueEmojiNameReactionsForPost(): (state: GlobalState, postId: Post['id']) => string[] | undefin | CODE |
| LOW | webapp/channels/src/utils/post_utils.ts | 817 | export function makeGetIsReactionAlreadyAddedToPost(): (state: GlobalState, postId: Post['id'], emojiName: string) => bo | CODE |
| LOW | webapp/channels/src/utils/post_utils.ts | 842 | export function getPotentialMentionsForName(mentionName: string): string[] { | CODE |
| LOW | webapp/channels/src/utils/post_utils.ts | 867 | export function getUserOrGroupFromMentionName( | CODE |
| LOW | webapp/channels/src/utils/post_utils.ts | 889 | export function mentionsMinusSpecialMentionsInText(message: string) { | CODE |
| LOW | webapp/channels/src/utils/post_utils.ts | 902 | export function makeGetUserOrGroupMentionCountFromMessage(): (state: GlobalState, message: Post['message']) => number { | CODE |
| LOW | webapp/channels/src/utils/post_utils.ts | 926 | export function hasRequestedPersistentNotifications(priority?: PostPriorityMetadata) { | CODE |
| LOW | webapp/channels/src/utils/global_error_handler.test.ts | 22 | function dispatchUnhandledRejection(reason: unknown) { | CODE |
| LOW | webapp/channels/src/utils/burn_on_read_timer_utils.ts | 63 | export function getAriaAnnouncementInterval(remainingMs: number): number { | CODE |
| LOW⚡ | webapp/channels/src/utils/timezone.ts | 19 | export function getCurrentDateForTimezone(timezone: string) { | CODE |
| LOW⚡ | webapp/channels/src/utils/timezone.ts | 24 | export function getCurrentDateTimeForTimezone(timezone: string) { | CODE |
| LOW⚡ | webapp/channels/src/utils/timezone.ts | 29 | export function getCurrentMomentForTimezone(timezone?: string) { | CODE |
| LOW | webapp/channels/src/utils/file_utils.tsx | 46 | export function isMobileFileUploadsEnabled(config: Partial<ClientConfig>): boolean { | CODE |
| LOW | webapp/channels/src/utils/text_formatting.test.ts | 116 | function runSuccessfulAtMentionTests(leadingText = '', trailingText = '') { | CODE |
| LOW | webapp/channels/src/utils/text_formatting.test.ts | 134 | function runUnsuccessfulAtMentionTests(leadingText = '', trailingText = '') { | CODE |
| LOW | webapp/channels/src/utils/text_formatting.test.ts | 145 | function runUnsuccessfulAtMentionTestsMatchingNonSpecialMentions(leadingText = '', trailingText = '') { | CODE |
| LOW⚡ | webapp/channels/src/utils/notifications.ts | 114 | export function isNotificationAPISupported() { | CODE |
| LOW⚡ | webapp/channels/src/utils/notifications.ts | 118 | export function getNotificationPermission(): NotificationPermission | null { | CODE |
| LOW⚡ | webapp/channels/src/utils/notifications.ts | 126 | export async function requestNotificationPermission(): Promise<NotificationPermission | null> { | CODE |
| LOW | webapp/channels/src/utils/mention_search.ts | 121 | export function mentionFiltersToSearchParams(filters: MentionFilters): Record<string, string> { | CODE |
| LOW | webapp/channels/src/utils/mention_search.ts | 147 | export function mentionFiltersFromSearchParams(params: URLSearchParams): MentionFilters { | CODE |
| LOW | webapp/channels/src/utils/scheduled_post_repeat.ts | 16 | function scheduledPostHasAttachments(scheduledPost: ScheduledPost): boolean { | CODE |
| LOW | webapp/channels/src/utils/scheduled_post_repeat.ts | 22 | export function getDraftRepeatDisabledReason(draft: Pick<PostDraft, 'fileInfos' | 'uploadsInProgress' | 'type'>): Repeat | CODE |
| LOW | webapp/channels/src/utils/scheduled_post_repeat.ts | 34 | export function getScheduledPostRepeatDisabledReason(scheduledPost: ScheduledPost): RepeatDisabledReason | undefined { | CODE |
| LOW | webapp/channels/src/utils/dialog_conversion.ts | 613 | export function transformServerDialogToProps(serverDialog: ServerDialogResponse): TransformedDialogProps { | CODE |
| LOW | webapp/channels/src/utils/dialog_conversion.ts | 763 | export function convertServerDialogResponseToAppForm( | CODE |
| LOW | webapp/channels/src/utils/dialog_conversion.ts | 825 | export function convertAppFormValuesToDialogSubmission( | CODE |
| LOW | webapp/channels/src/utils/server_version.tsx | 13 | export function isServerVersionGreaterThanOrEqualTo(currentVersion: string, compareVersion: string): boolean { | CODE |
| LOW | webapp/channels/src/utils/channel_utils.tsx | 184 | export function getChannelRoutePathAndIdentifier(channel: Pick<Channel, 'type' | 'name'>, dmUsername?: string): {path: s | CODE |
| LOW | webapp/channels/src/utils/channel_utils.tsx | 218 | export function isMembershipPolicyEnforced(channel?: Pick<Channel, 'policy_enforced' | 'policy_actions'> | null): boolea | CODE |
| LOW | webapp/channels/src/utils/channel_utils.tsx | 235 | export function isChannelAccessControlled(channel?: Pick<Channel, 'policy_enforced'> | null): boolean { | CODE |
| LOW | webapp/channels/src/utils/policy_roles_adapter.ts | 109 | function mutateRolesBasedOnMapping(mappingKey: MappingKeyTypes, value: 'true' | 'false', roles: Record<string, Role>) { | CODE |
| LOW | webapp/channels/src/utils/team_utils.tsx | 7 | function compareTeamsByDisplayName(locale: string, a: Team, b: Team) { | CODE |
| LOW | webapp/channels/src/utils/admin_console_index.tsx | 104 | export function adminDefinitionsToUrlsAndTexts(adminDefinition: typeof AdminDefinition, intl: IntlShape) { | CODE |
| LOW | webapp/channels/src/utils/notification_sounds.tsx | 100 | export function getValueOfNotificationSoundsSelect(soundName?: string) { | CODE |
| 1359 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | server/docker-compose.pgvector.yml | 2 | # This file is used when MM_USE_PGVECTOR=true is set | COMMENT |
| MEDIUM | …channels/websocket/channel_created/new_sidebar_spec.js | 24 | // # Create a new channel from another session | COMMENT |
| MEDIUM | …channels/websocket/channel_created/old_sidebar_spec.js | 24 | // # Create a new channel from another session | COMMENT |
| MEDIUM | …nel_settings/more_unreads_position_with_scroll_spec.ts | 22 | // # Create a user and a team (done by apiInitSetup) | COMMENT |
| MEDIUM | …ation/channels/channel_settings/channel_header_spec.ts | 38 | // # Create a new public channel and then private channel | COMMENT |
| MEDIUM | …ation/channels/channel_settings/channel_header_spec.ts | 61 | // # Create a GM with admin, user1 and user 2 | COMMENT |
| MEDIUM | …nels/channel_settings/channel_name_validations_spec.ts | 104 | // # Create a new test channel and navigate to it | COMMENT |
| MEDIUM | …channels/channel_settings/add_users_to_channel_spec.ts | 188 | // # Create a new channel | COMMENT |
| MEDIUM⚡ | …channels/channel_settings/add_users_to_channel_spec.ts | 231 | // # Create a new user | COMMENT |
| MEDIUM⚡ | …channels/channel_settings/add_users_to_channel_spec.ts | 235 | // # Create a custom user group | COMMENT |
| MEDIUM⚡ | …channels/channel_settings/add_users_to_channel_spec.ts | 237 | // # Create a new channel | COMMENT |
| MEDIUM⚡ | …channels/channel_settings/add_users_to_channel_spec.ts | 275 | // # Create a new user | COMMENT |
| MEDIUM⚡ | …channels/channel_settings/add_users_to_channel_spec.ts | 277 | // # Create a guest user | COMMENT |
| MEDIUM⚡ | …channels/channel_settings/add_users_to_channel_spec.ts | 281 | // # Create a custom user group | COMMENT |
| MEDIUM⚡ | …channels/channel_settings/add_users_to_channel_spec.ts | 283 | // # Create a new channel | COMMENT |
| MEDIUM⚡ | …channels/channel_settings/add_users_to_channel_spec.ts | 325 | // # Create a new user | COMMENT |
| MEDIUM⚡ | …channels/channel_settings/add_users_to_channel_spec.ts | 329 | // # Create a custom user group | COMMENT |
| MEDIUM⚡ | …channels/channel_settings/add_users_to_channel_spec.ts | 331 | // # Create a new channel | COMMENT |
| MEDIUM | …ess/tests/integration/channels/autocomplete/helpers.ts | 11 | // # Create a private channel as sysadmin | COMMENT |
| MEDIUM | …ess/tests/integration/channels/autocomplete/helpers.ts | 16 | // # Create a public channel as sysadmin | COMMENT |
| MEDIUM⚡ | …ess/tests/integration/channels/autocomplete/helpers.ts | 193 | // # Create a channel as sysadmin | COMMENT |
| MEDIUM | …prise/system_console/reporting/site_statistics_spec.js | 110 | // # Create a bot and get userID | COMMENT |
| MEDIUM | …m_console/compliance/data_retention_policies_2_spec.js | 234 | // # Create a new Team and Channel | COMMENT |
| MEDIUM | …m_console/compliance/data_retention_policies_2_spec.js | 241 | // # Create a new channel in newTeam | COMMENT |
| MEDIUM | …m_console/compliance/data_retention_policies_2_spec.js | 284 | // # Create a new channel | COMMENT |
| MEDIUM | …m_console/compliance/data_retention_policies_3_spec.js | 240 | // # Create a new Channel | COMMENT |
| MEDIUM | …m_console/compliance/data_retention_policies_4_spec.js | 59 | // # Create a new team | COMMENT |
| MEDIUM | …compliance/download_bot_compliance_export_file_spec.js | 43 | //# Create a test bot | COMMENT |
| MEDIUM | …onsole/channel_moderation/higher_scoped_scheme_spec.ts | 174 | // # Create a new team override scheme and remove manage public channel members | COMMENT |
| MEDIUM | …onsole/channel_moderation/higher_scoped_scheme_spec.ts | 223 | // # Create a new team override scheme and remove manage private channel members from it | COMMENT |
| MEDIUM | …stem_console/channel_moderation/post_reactions_spec.ts | 189 | // # Create a new team override scheme | COMMENT |
| MEDIUM | …stem_console/channel_moderation/manage_members_spec.ts | 157 | // # Create a new team override scheme and remove manage members option for members | COMMENT |
| MEDIUM | …ntegration/channels/enterprise/ldap/ldap_guest_spec.ts | 188 | // # Create a new team | COMMENT |
| MEDIUM | …ation/channels/enterprise/ldap/ldap_group_sync_spec.ts | 76 | // # Create a test channel | COMMENT |
| MEDIUM | …nnels/enterprise/elasticsearch_autocomplete/helpers.ts | 45 | // # Create a channel as sysadmin | COMMENT |
| MEDIUM | …nnels/enterprise/elasticsearch_autocomplete/helpers.ts | 211 | // # Create a private channel as sysadmin | COMMENT |
| MEDIUM | …nnels/enterprise/elasticsearch_autocomplete/helpers.ts | 216 | // # Create a public channel as sysadmin | COMMENT |
| MEDIUM | …enterprise/elasticsearch_autocomplete/channels_spec.ts | 104 | // # Create a private channel where the new user is not a member of | COMMENT |
| MEDIUM | …enterprise/elasticsearch_autocomplete/channels_spec.ts | 116 | // # Create a private channel where the new user is not a member of | COMMENT |
| MEDIUM | …channels/enterprise/ldap_group/search_channels_spec.ts | 43 | // # Create a channel. | COMMENT |
| MEDIUM | …channels/enterprise/ldap_group/search_channels_spec.ts | 81 | // # Create a new channel. | COMMENT |
| MEDIUM | …channels/enterprise/ldap_group/search_channels_spec.ts | 104 | // # Create a channel. | COMMENT |
| MEDIUM | …uest_accounts/guest_invitation_email_not_cloud_spec.ts | 92 | // # Create the guest account with email and password (email is pre-filled from the invite) | COMMENT |
| MEDIUM | …enterprise/guest_accounts/guest_identification_spec.ts | 147 | // # Create an account with Email and Password. | COMMENT |
| MEDIUM | …/enterprise/guest_accounts/guest_experience_ui_spec.ts | 190 | // # Create a new team | COMMENT |
| MEDIUM | …/enterprise/guest_accounts/guest_invitation_ui_spec.ts | 55 | // # Create a private channel in the test team | COMMENT |
| MEDIUM | …ion/channels/enterprise/channel/channel_groups_spec.ts | 33 | // # Create a new team and associate one group to the team | COMMENT |
| MEDIUM | …gration/channels/enterprise/teams/search_teams_spec.js | 35 | // # Create a new team. | COMMENT |
| MEDIUM | …gration/channels/enterprise/teams/search_teams_spec.js | 69 | // # Create a new team. | COMMENT |
| MEDIUM | …gration/channels/enterprise/teams/search_teams_spec.js | 91 | // # Create a team. | COMMENT |
| MEDIUM | …els/enterprise/profile_popover/profile_popover_spec.ts | 98 | // # Create a private channel | COMMENT |
| MEDIUM | …/profile_popover/profile_popover_spec_user_a_b_spec.ts | 60 | // # Create a new team | COMMENT |
| MEDIUM | …rise/group_mentions/group_mentions_permissions_spec.ts | 127 | // # Create a new channel so that regular user can be channel admin | COMMENT |
| MEDIUM | …rise/group_mentions/group_mentions_permissions_spec.ts | 203 | // # Create a new team and channel so that regular user can be team admin | COMMENT |
| MEDIUM | …rise/group_mentions/group_mentions_permissions_spec.ts | 279 | // # Create a new channel as a sysadmin | COMMENT |
| MEDIUM | …/group_mentions/group_mentions_system_messages_spec.ts | 109 | // # Create a new channel as a regular user | COMMENT |
| MEDIUM | …/group_mentions/group_mentions_system_messages_spec.ts | 135 | // # Create a new team and channel as a sysadmin | COMMENT |
| MEDIUM | …/group_mentions/group_mentions_system_messages_spec.ts | 180 | // # Create a new channel as a sysadmin | COMMENT |
| MEDIUM | …/group_mentions/group_mentions_system_messages_spec.ts | 220 | // # Create a new channel as a sysadmin | COMMENT |
| MEDIUM | …enterprise/group_mentions/group_mentions_posts_spec.ts | 143 | // # Create a new channel as a regular user | COMMENT |
| 315 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mise.toml | 1 | # Toolchain for developers using mise. CI does not read this file -- it installs | COMMENT |
| LOW | tools/mmgotool/commands/i18n.go | 841 | texts = append(texts, form) | COMMENT |
| LOW | tools/mmgotool/commands/i18n.go | 961 | COMMENT | |
| LOW | tools/mmgotool/commands/i18n.go | 1061 | COMMENT | |
| LOW | webapp/platform/types/src/mm_blocks.ts | 1 | // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. | COMMENT |
| LOW | webapp/platform/components/src/hooks/useStackedModal.ts | 101 | // sit a full increment above the previous stacked modal: | COMMENT |
| LOW | …platform/components/src/hooks/useStackedModal.test.tsx | 201 | COMMENT | |
| LOW | webapp/channels/src/root.tsx | 1 | // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. | COMMENT |
| LOW | webapp/channels/src/plugins/interactive_dialog.test.ts | 221 | COMMENT | |
| LOW | webapp/channels/src/utils/path.ts | 1 | // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. | COMMENT |
| LOW | webapp/channels/src/utils/latinise.tsx | 381 | Ẓ: 'Z', // LATIN CAPITAL LETTER Z WITH DOT BELOW | COMMENT |
| LOW | webapp/channels/src/utils/latinise.tsx | 581 | // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER ESH WITH CURL' (ʆ) | COMMENT |
| LOW | webapp/channels/src/utils/properties.ts | 21 | export function getUserPropertyFieldLabel( | COMMENT |
| LOW | …p/channels/src/components/apps_form/apps_form_grid.tsx | 41 | // column per child field. The heading, caret and border around it are the | COMMENT |
| LOW | …p/channels/src/components/apps_form/apps_form_grid.tsx | 61 | // inputs stay labelled for screen readers. An error returned for a cell is not | COMMENT |
| LOW | …nels/src/components/apps_form/apps_form_component.scss | 121 | } | COMMENT |
| LOW | …nels/src/components/apps_form/apps_form_component.scss | 261 | // A select cell. react-select is clearable here, so its control carries a | COMMENT |
| LOW | …mponents/channel_invite_modal/channel_invite_modal.tsx | 121 | // its captured token before each step and aborts/skips state writes when | COMMENT |
| LOW | …ings_modal/channel_settings_permissions_policy_tab.tsx | 281 | // Load existing channel policy and seed permission rules state. | COMMENT |
| LOW | …ings_modal/channel_settings_permissions_policy_tab.tsx | 1161 | // rules" to match the modal's full rule-set scope. | COMMENT |
| LOW | …ents/channel_settings_modal/channel_settings_modal.tsx | 181 | COMMENT | |
| LOW | …ds/graph/page_all_access_control_field_options.test.ts | 621 | const page = deferred<PropertyFieldOptionPage>(); | COMMENT |
| LOW | …c/components/channel_attributes/banner_text_editor.tsx | 141 | // a Range: a Range points at nodes, and every insert remounts the editor, so a | COMMENT |
| LOW | …/components/channel_attributes/banner_text_editor.scss | 1 | // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. | COMMENT |
| LOW | …s/src/components/channel_attributes/banner_template.ts | 1 | // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. | COMMENT |
| LOW | …s/user_settings/general/user_settings_general.test.tsx | 1681 | expect(screen.queryByText(OMITTED_COPY)).not.toBeInTheDocument(); | COMMENT |
| LOW | …nels/src/components/admin_console/admin_definition.tsx | 161 | const SAML_SETTINGS_CANONICAL_ALGORITHM_C14N11 = 'Canonical1.1'; | COMMENT |
| LOW | …nels/src/components/admin_console/admin_definition.tsx | 181 | // parent's config/state checks; @mattermost/no-redundant-admin-config-deps enforces this. | COMMENT |
| LOW | …nels/src/components/admin_console/admin_definition.tsx | 201 | // | COMMENT |
| LOW | …nels/src/components/admin_console/admin_definition.tsx | 221 | // | COMMENT |
| LOW | …_policies/policy_details/permission_policy_details.tsx | 621 | // upper-scoped denies that the | COMMENT |
| LOW | …t_tokens_button/revoke_non_compliant_tokens_button.tsx | 21 | // System Console save-action hooks. Registered actions run after the config | COMMENT |
| LOW | …space-optimization/dashboard_checks/easy_management.ts | 81 | // if (config.GuestAccountsSettings?.RestrictCreationToDomains) { | COMMENT |
| LOW | …space-optimization/dashboard_checks/easy_management.ts | 101 | // return { | COMMENT |
| LOW | …assification_markings/classification_markings.test.tsx | 181 | } | COMMENT |
| LOW | …s/admin_console/classification_markings/utils/index.ts | 1 | // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. | COMMENT |
| LOW | …s/admin_console/classification_markings/utils/index.ts | 21 | // introduced in #36250. | COMMENT |
| LOW | …s/admin_console/classification_markings/utils/index.ts | 381 | // A user field linked to the template mirrors the classification levels as its | COMMENT |
| LOW | …nsole/board_attributes/board_attributes_table.test.tsx | 201 | const reorderField = jest.fn(); | COMMENT |
| LOW | …console/system_user_detail/system_user_detail.test.tsx | 1441 | expect(changesList).toHaveTextContent('Value unavailable'); | COMMENT |
| LOW | …nsole/access_control/policy_details/policy_details.tsx | 461 | // evaluated, and the server fails closed by denying the whole rule — so every | COMMENT |
| LOW | …onents/admin_console/access_control/editors/shared.tsx | 361 | const RESOURCE_SELECTOR = String.raw`resource\.attributes\.\w+`; | COMMENT |
| LOW | …e/access_control/editors/table_editor/table_editor.tsx | 41 | // Without this guard the condition would be filtered out by updateExpression, | COMMENT |
| LOW | …e/access_control/editors/table_editor/table_editor.tsx | 241 | // attribute those lower to a chain of `in` tests for literal options, | COMMENT |
| LOW | …e/access_control/editors/table_editor/table_editor.tsx | 421 | // from the server visual AST at parse time, or the field type when the row | COMMENT |
| LOW | …rol/modals/simulate_access/decision_details_modal.scss | 1 | // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. | COMMENT |
| LOW | …rol/modals/simulate_access/decision_details_modal.scss | 241 | border-radius: 4px; | COMMENT |
| LOW | …cess_control/modals/simulate_access/decision_chip.scss | 1 | // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. | COMMENT |
| LOW | …trol/modals/simulate_access/simulate_access_modal.scss | 1 | // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. | COMMENT |
| LOW | …trol/modals/simulate_access/simulate_access_modal.scss | 61 | flex: 1 1 auto; | COMMENT |
| LOW | …trol/modals/simulate_access/simulate_access_modal.scss | 221 | COMMENT | |
| LOW | …trol/modals/simulate_access/simulate_access_modal.scss | 261 | overflow: hidden; | COMMENT |
| LOW | …trol/modals/simulate_access/simulate_access_modal.scss | 381 | &__table th:nth-child(2), | COMMENT |
| LOW | …/modals/simulate_access/simulate_access_modal.test.tsx | 1081 | // the "Your policy" wording so the author can tell their own | COMMENT |
| LOW | …/modals/simulate_access/simulate_access_modal.test.tsx | 1281 | // The simulator OR-folds every draft rule sharing the same | COMMENT |
| LOW | …ntrol/modals/simulate_access/simulate_access_modal.tsx | 181 | // after a faster second one). | COMMENT |
| LOW | …ntrol/modals/simulate_access/simulate_access_modal.tsx | 401 | } | COMMENT |
| LOW | …ntrol/modals/simulate_access/simulate_access_modal.tsx | 481 | defaultMessage='Simulate access' | COMMENT |
| LOW | …trol/modals/simulate_access/decision_details_modal.tsx | 81 | userAttributes, | COMMENT |
| LOW | …trol/modals/simulate_access/decision_details_modal.tsx | 901 | ) { | COMMENT |
| 670 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/sharedchannel-test/test_membership.go | 30 | // ── Test: Add users and verify sync ───────────────────── | COMMENT |
| MEDIUM | tools/sharedchannel-test/test_membership.go | 54 | // ── Test: Remove one user and verify sync ─────────────── | COMMENT |
| MEDIUM | tools/sharedchannel-test/test_membership.go | 81 | // ── Test: Re-add removed user ─────────────────────────── | COMMENT |
| MEDIUM | tools/sharedchannel-test/test_membership.go | 98 | // ── Test: Bulk removal ────────────────────────────────── | COMMENT |
| MEDIUM | tools/sharedchannel-test/test_reactions.go | 48 | // ── Test: Add reaction and verify sync ────────────────── | COMMENT |
| MEDIUM | tools/sharedchannel-test/test_reactions.go | 70 | // ── Test: Remove reaction and verify sync ─────────────── | COMMENT |
| MEDIUM | tools/sharedchannel-test/test_posts.go | 40 | // ── Test: Create post and verify sync ─────────────────── | COMMENT |
| MEDIUM | tools/sharedchannel-test/test_posts.go | 62 | // ── Test: Edit post and verify sync ───────────────────── | COMMENT |
| MEDIUM | tools/sharedchannel-test/test_posts.go | 81 | // ── Test: Delete post and verify sync ─────────────────── | COMMENT |
| MEDIUM | …ings_modal/channel_settings_permissions_policy_tab.tsx | 361 | // ── List filtering & pagination ─────────────────────────────────────── | COMMENT |
| MEDIUM | …ings_modal/channel_settings_permissions_policy_tab.tsx | 391 | // ── Editor commit/cancel/draft helpers ──────────────────────────────── | COMMENT |
| MEDIUM | …ings_modal/channel_settings_permissions_policy_tab.tsx | 473 | // ── Simulation: build the synthetic draft sent to /cel/simulate ────── | COMMENT |
| MEDIUM | …ings_modal/channel_settings_permissions_policy_tab.tsx | 504 | // ── Persist to backend ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ings_modal/channel_settings_permissions_policy_tab.tsx | 630 | // ── Render: editor view ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ings_modal/channel_settings_permissions_policy_tab.tsx | 690 | // ── Render: list view ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ntrol/modals/simulate_access/simulate_access_modal.tsx | 184 | // ── User fetch (search + pagination) ───────────────────────────────── | COMMENT |
| MEDIUM⚡ | server/public/plugin/client_rpc.go | 40 | // ┌─────────────────────────┐ ┌─────────────────────────┐ | COMMENT |
| MEDIUM⚡ | server/public/plugin/client_rpc.go | 43 | // │ ┌───────────────────┐ │ hooks (calls) │ ┌───────────────────┐ │ | COMMENT |
| MEDIUM⚡ | server/public/plugin/client_rpc.go | 44 | // │ │ hooksRPCClient │──┼───────────────────►│ │ hooksRPCServer │ │ | COMMENT |
| MEDIUM⚡ | server/public/plugin/client_rpc.go | 45 | // │ └───────────────────┘ │ │ └───────────────────┘ │ | COMMENT |
| MEDIUM⚡ | server/public/plugin/client_rpc.go | 47 | // │ ┌───────────────────┐ │ API (callbacks) │ ┌───────────────────┐ │ | COMMENT |
| MEDIUM⚡ | server/public/plugin/client_rpc.go | 48 | // │ │ apiRPCServer │◄─┼────────────────────┼──│ apiRPCClient │ │ | COMMENT |
| MEDIUM⚡ | server/public/plugin/client_rpc.go | 49 | // │ └───────────────────┘ │ │ └───────────────────┘ │ | COMMENT |
| MEDIUM⚡ | server/public/plugin/client_rpc.go | 50 | // └─────────────────────────┘ └─────────────────────────┘ | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 20 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 32 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 238 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 240 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 271 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 273 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 299 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 306 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 350 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 352 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 395 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 397 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 422 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 430 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 597 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 599 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 634 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/import_imported_users_test.go | 639 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 28 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 30 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 158 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 160 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 194 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 196 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 224 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 226 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 254 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 262 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 305 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 307 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 329 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 335 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 366 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 370 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 394 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/channels/app/migration_test.go | 396 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| 136 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | webapp/platform/client/src/client4.test.ts | 546 | const userId = 'dummy-user-id'; | CODE |
| LOW⚡ | webapp/platform/client/src/client4.test.ts | 550 | const ndjsonData = '{"user_id":"dummy-user-id","channel_id":"channel1","roles":"channel_user"}\n' + | CODE |
| LOW⚡ | webapp/platform/client/src/client4.test.ts | 551 | '{"user_id":"dummy-user-id","channel_id":"channel2","roles":"channel_user channel_admin"}\n' + | CODE |
| LOW⚡ | webapp/platform/client/src/client4.test.ts | 552 | '{"user_id":"dummy-user-id","channel_id":"channel3","roles":"channel_user"}'; | CODE |
| LOW⚡ | webapp/platform/client/src/client4.test.ts | 565 | expect(result[0]).toEqual({user_id: 'dummy-user-id', channel_id: 'channel1', roles: 'channel_user'}); | CODE |
| LOW⚡ | webapp/platform/client/src/client4.test.ts | 566 | expect(result[1]).toEqual({user_id: 'dummy-user-id', channel_id: 'channel2', roles: 'channel_user channel_ad | CODE |
| LOW⚡ | webapp/platform/client/src/client4.test.ts | 567 | expect(result[2]).toEqual({user_id: 'dummy-user-id', channel_id: 'channel3', roles: 'channel_user'}); | CODE |
| LOW⚡ | …bapp/channels/src/utils/member_invite_profiles.test.ts | 70 | 'user@example.com': { | CODE |
| LOW⚡ | …bapp/channels/src/utils/member_invite_profiles.test.ts | 72 | email: 'user@example.com', | CODE |
| LOW⚡ | …bapp/channels/src/utils/member_invite_profiles.test.ts | 75 | expect(getProfileForEmail(profiles, 'USER@EXAMPLE.COM')).toEqual(profiles['user@example.com']); | CODE |
| LOW | …/channels/src/utils/message_html_to_component.test.tsx | 66 | const input = 'lorem ipsum www.dolor.com sit amet'; | CODE |
| LOW | …/channels/src/utils/message_html_to_component.test.tsx | 74 | const input = 'lorem ipsum www.dolor.com sit amet'; | CODE |
| LOW | …hannels/src/components/localized_placeholder_input.tsx | 9 | } & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'placeholder'>; | CODE |
| LOW | …nels/src/components/localized_placeholder_textarea.tsx | 9 | } & Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'placeholder'>; | CODE |
| LOW | …mponents/post_markdown/system_message_helpers.test.tsx | 85 | workspace_name: 'Acme Corp', | CODE |
| LOW | …mponents/post_markdown/system_message_helpers.test.tsx | 100 | workspace_name: 'Acme Corp', | CODE |
| LOW | …app/channels/src/components/markdown/markdown.test.tsx | 30 | email: 'test@test.com', | CODE |
| LOW | …_to_channel_modal/add_groups_to_channel_modal.test.tsx | 240 | const option: any = {id: 'id', last_picture_update: '12345', email: 'test@test.com'}; | CODE |
| LOW | …/components/advanced_text_editor/rewrite_menu.test.tsx | 307 | expect(input).toHaveAttribute('placeholder', 'Ask AI to edit message...'); | CODE |
| LOW | …/components/advanced_text_editor/rewrite_menu.test.tsx | 317 | expect(input).toHaveAttribute('placeholder', 'Create a new message...'); | CODE |
| LOW | …/components/advanced_text_editor/rewrite_menu.test.tsx | 328 | expect(input).toHaveAttribute('placeholder', 'What would you like AI to do next?'); | CODE |
| LOW | …ed_text_editor/wysiwyg_editor/wysiwyg_markdown.test.ts | 28 | ['user@example.com', 'mailto:user@example.com'], | CODE |
| LOW | …nd_button/send_post_options/core_menu_options.test.tsx | 18 | const teammateDisplayName = 'John Doe'; | CODE |
| LOW | …y_fields/hierarchical_value_menu/assignment_picker.tsx | 23 | 'menuId' | 'buttonId' | 'buttonDataTestId' | 'placeholder' | 'ariaLabel' | | CODE |
| LOW | …erty_fields/hierarchical_value_menu/policy_adapter.tsx | 65 | 'menuId' | 'buttonId' | 'buttonDataTestId' | 'placeholder' | 'ariaLabel' | | CODE |
| LOW | …onents/admin_console/unlimited_number_setting.test.tsx | 184 | expect(numberInput).toHaveAttribute('placeholder', 'Enter a number'); | CODE |
| LOW | …onents/admin_console/unlimited_number_setting.test.tsx | 197 | expect(numberInput).toHaveAttribute('placeholder', 'No Limit'); | CODE |
| LOW | …channels/src/components/admin_console/text_setting.tsx | 13 | interface Props extends Omit<WidgetTextSettingProps, 'placeholder'> { | CODE |
| LOW | …/group_settings/group_details/group_users_row.test.tsx | 16 | email='test@test.com' | CODE |
| LOW | …/group_settings/group_details/group_users_row.test.tsx | 25 | expect(screen.getByText('test@test.com')).toBeInTheDocument(); | CODE |
| LOW | …mponents/admin_console/global_attributes/utils.test.ts | 60 | await createAttributeField(' ', 'placeholder', 'text', []); | CODE |
| LOW | …tributes/attribute_details/graph/parents_pane.test.tsx | 108 | 'placeholder', | CODE |
| LOW | …tributes/attribute_details/graph/parents_pane.test.tsx | 397 | 'placeholder', | CODE |
| LOW | …tributes/attribute_details/graph/graph_values.test.tsx | 74 | expect(screen.getByTestId('attributeOptionsGraphEmpty__nameInput')).toHaveAttribute('placeholder', 'Value name') | CODE |
| LOW | …tributes/attribute_details/graph/graph_values.test.tsx | 165 | expect(screen.getByTestId('attributeOptionsGraphAddTop__nameInput')).toHaveAttribute('placeholder', 'Add a top-l | CODE |
| LOW | …tributes/attribute_details/graph/graph_values.test.tsx | 261 | expect(screen.getByTestId('attributeOptionsGraphRow__childNameInput')).toHaveAttribute('placeholder', 'Name the | CODE |
| LOW | …/src/components/block_renderer/translation/mm_block.ts | 31 | const STATIC_SELECT_REQUIRED_KEYS = ['type', 'action_id', 'placeholder']; | CODE |
| LOW⚡ | …bar/default_announcement_bar/announcement_bar.test.tsx | 29 | const wrapper = renderWithContext(<AnnouncementBar message={<span>{'Lorem Ipsum'}</span>}/>); | CODE |
| LOW⚡ | …bar/default_announcement_bar/announcement_bar.test.tsx | 31 | wrapper.getByText('Lorem Ipsum'); | CODE |
| LOW⚡ | …bar/default_announcement_bar/announcement_bar.test.tsx | 37 | const wrapper = renderWithContext(<AnnouncementBar message={<span>{'Lorem Ipsum'}</span>}/>); | CODE |
| LOW⚡ | …bar/default_announcement_bar/announcement_bar.test.tsx | 39 | userEvent.hover(wrapper.getByText('Lorem Ipsum')); | CODE |
| LOW | webapp/channels/src/components/login/login.test.tsx | 504 | await userEvent.type(emailInput, 'user@example.com'); | CODE |
| LOW | webapp/channels/src/components/login/login.test.tsx | 530 | await userEvent.type(emailInput, 'user@example.com'); | CODE |
| LOW | webapp/channels/src/components/login/login.test.tsx | 539 | expect(mockGetUserLoginType).toHaveBeenCalledWith('user@example.com'); | CODE |
| LOW | webapp/channels/src/components/login/login.test.tsx | 558 | await userEvent.type(emailInput, 'user@example.com'); | CODE |
| LOW | webapp/channels/src/components/login/login.test.tsx | 577 | await userEvent.type(emailInput, 'user@example.com'); | CODE |
| LOW | webapp/channels/src/components/login/login.test.tsx | 601 | await userEvent.type(emailInput, 'user@example.com'); | CODE |
| LOW⚡ | webapp/channels/src/components/login/login.test.tsx | 632 | await userEvent.type(emailInput, 'user@example.com'); | CODE |
| LOW⚡ | webapp/channels/src/components/login/login.test.tsx | 636 | expect(mockGetUserLoginType).toHaveBeenCalledWith('user@example.com'); | CODE |
| LOW⚡ | webapp/channels/src/components/login/login.test.tsx | 645 | expect(mockLogin).toHaveBeenCalledWith('user@example.com', 'password123', undefined); | CODE |
| LOW | webapp/channels/src/components/login/login.test.tsx | 673 | await userEvent.type(emailInput, 'user@example.com'); | CODE |
| LOW | webapp/channels/src/components/login/login.test.tsx | 698 | await userEvent.type(emailInput, 'user@example.com'); | CODE |
| LOW | webapp/channels/src/components/login/login.test.tsx | 730 | await userEvent.type(screen.getByLabelText('Email'), 'user@example.com'); | CODE |
| LOW | webapp/channels/src/components/login/login.test.tsx | 734 | expect(mockLogin).toHaveBeenCalledWith('user@example.com', 'password123', undefined); | CODE |
| LOW | …rc/components/widgets/inputs/dropdown_input_hybrid.tsx | 20 | type Props<T extends OptionType> = Omit<SelectProps<T, false>, 'onChange' | 'onInputChange' | 'isMulti' | 'placeholder'> | CODE |
| LOW | …channels/src/components/widgets/inputs/input/input.tsx | 24 | export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement | HTMLTextAreaElement>, 'placeholder | CODE |
| LOW | …components/component_library/mm_blocks_editor_utils.ts | 493 | {key: 'placeholder', label: 'placeholder', type: 'string'}, | CODE |
| LOW | …rc/packages/mattermost-redux/src/utils/helpers.test.ts | 71 | email: '#!$%&\'*+-/=?^_`{}|~@example.org', | CODE |
| LOW | webapp/channels/src/actions/views/login.test.ts | 83 | const result = await store.dispatch(getUserLoginType('user@example.com')); | CODE |
| LOW | webapp/channels/src/actions/views/login.test.ts | 100 | const result = await store.dispatch(getUserLoginType('user@example.com')); | CODE |
| 166 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | server/scripts/get_latest_release.sh | 36 | # Check if this is a release branch | COMMENT |
| LOW | …ts/integration/channels/enterprise/oauth/oauth_spec.ts | 31 | // # Set ServiceSettings to expected values | COMMENT |
| LOW | …rise/elasticsearch_autocomplete/system_console_spec.ts | 19 | // # Check if server has license for Elasticsearch | COMMENT |
| LOW | …enterprise/elasticsearch_autocomplete/channels_spec.ts | 32 | // # Check if server has license for Elasticsearch | COMMENT |
| LOW | …/channels/enterprise/ldap_group/group_mentions_spec.ts | 156 | // # Set groupID to navigate to group page directly | COMMENT |
| LOW | …enterprise/guest_accounts/guest_identification_spec.ts | 95 | // # Check if user is allowed to enforce MFA for Guest accounts. | COMMENT |
| LOW | …rise/group_mentions/group_mentions_permissions_spec.ts | 68 | // # Set groupID to navigate to group page directly | COMMENT |
| LOW | …/group_mentions/group_mentions_system_messages_spec.ts | 71 | // # Set groupID to navigate to group page directly | COMMENT |
| LOW | …enterprise/group_mentions/group_mentions_posts_spec.ts | 75 | // # Set groupID1 to navigate to group page directly | COMMENT |
| LOW | …enterprise/group_mentions/group_mentions_posts_spec.ts | 83 | // # Set groupID1 to navigate to group page directly | COMMENT |
| LOW | …on/channels/files_and_attachments/upload_files_spec.js | 407 | // # Open file preview | COMMENT |
| LOW | …_and_attachments/image_link_preview_new_window_spec.js | 42 | // # Open file preview | COMMENT |
| LOW | …nnels/files_and_attachments/file_preview_video_spec.js | 116 | // # Open file preview | COMMENT |
| LOW | …s/files_and_attachments/upload_files_not_cloud_spec.js | 67 | // # Open file preview | COMMENT |
| LOW | …s/files_and_attachments/upload_files_not_cloud_spec.js | 174 | // # Open file preview | COMMENT |
| LOW | …nnels/files_and_attachments/image_link_preview_spec.js | 222 | // # Open file preview | COMMENT |
| LOW | …els/files_and_attachments/file_preview_generic_spec.js | 110 | // # Open file preview | COMMENT |
| LOW | …nnels/files_and_attachments/file_preview_image_spec.js | 130 | // # Open file preview | COMMENT |
| LOW | …nnels/files_and_attachments/file_preview_image_spec.js | 178 | // # Open file preview | COMMENT |
| LOW | …nnels/files_and_attachments/file_preview_audio_spec.js | 117 | // # Open file preview | COMMENT |
| LOW | …tegration/channels/system_console/demoted_user_spec.js | 26 | // # Set user to be a sysadmin, so it can access the system console | COMMENT |
| LOW | …ration/channels/system_console/user_management_spec.js | 221 | // # Check if user's session is automatically logged out and the user is redirected to the login page | COMMENT |
| LOW | …ests/integration/channels/toast/permalink_post_spec.js | 30 | // # Check if ... button is visible in last post right side | COMMENT |
| LOW | …els/message_forwarding/forward_message_from_dm_spec.js | 80 | // # Check if ... button is visible in last post right side | COMMENT |
| LOW | …els/message_forwarding/forward_message_from_dm_spec.js | 123 | // # Check if ... button is visible in last post right side | COMMENT |
| LOW | …orwarding/forward_message_from_private_channel_spec.js | 72 | // # Check if ... button is visible in last post right side | COMMENT |
| LOW | …orwarding/forward_message_from_private_channel_spec.js | 115 | // # Check if ... button is visible in last post right side | COMMENT |
| LOW | …els/message_forwarding/forward_message_from_gm_spec.js | 91 | // # Check if ... button is visible in last post right side | COMMENT |
| LOW | …els/message_forwarding/forward_message_from_gm_spec.js | 134 | // # Check if ... button is visible in last post right side | COMMENT |
| LOW | …forwarding/forward_message_from_public_channel_spec.js | 121 | // # Check if ... button is visible in last post right side | COMMENT |
| LOW | …forwarding/forward_message_from_public_channel_spec.js | 143 | // # Check if ... button is visible in last post right side | COMMENT |
| LOW | …forwarding/forward_message_from_public_channel_spec.js | 209 | // # Check if ... button is visible in last post right side | COMMENT |
| LOW | …forwarding/forward_message_from_public_channel_spec.js | 229 | // # Check if ... button is visible in last post right side | COMMENT |
| LOW | …forwarding/forward_message_from_public_channel_spec.js | 250 | // # Check if ... button is visible in last post right side | COMMENT |
| LOW | …sts/integration/channels/channel/leave_channel_spec.ts | 88 | // # Set CRT to on | COMMENT |
| LOW | …egration/channels/channel/restrict_dm_channels_spec.ts | 143 | // # Check if the direct message channel is still in the sidebar | COMMENT |
| LOW | …integration/channels/integrations/integrations_spec.js | 20 | // # Set ServiceSettings to expected values | COMMENT |
| LOW | …annels/integrations/incoming_webhook/copy_icon_spec.js | 14 | // # Set ServiceSettings to expected values | COMMENT |
| LOW | …ion/channels/account_settings/account_settings_spec.ts | 33 | // # Check if profile settings modal is open | COMMENT |
| LOW | …/channels/collapsed_reply_threads/crt_settings_spec.ts | 34 | // # Set CRT to off | COMMENT |
| LOW | …/channels/collapsed_reply_threads/crt_settings_spec.ts | 40 | // # Set CRT to on | COMMENT |
| LOW | …s/accessibility/accessibility_account_settings_spec.js | 202 | // # Check if language setting gets changed after user presses space | COMMENT |
| LOW | …integration/channels/messaging/emoji_skin_tone_spec.js | 39 | // # Set viewport to desktop and post gesture with skin tone | COMMENT |
| LOW | …integration/channels/messaging/emoji_skin_tone_spec.js | 48 | // # Set viewport to mobile | COMMENT |
| LOW | …n/channels/messaging/message_edit_post_history_spec.ts | 148 | // # Check if the edit history is visible | COMMENT |
| LOW | …tion/channels/messaging/permalink_message_edit_spec.js | 50 | // # Check if url include the permalink | COMMENT |
| LOW | …tion/channels/messaging/permalink_message_edit_spec.js | 77 | // # Check if url include the permalink | COMMENT |
| LOW | …ntegration/channels/messaging/image_attachment_spec.js | 180 | // # Open file preview | COMMENT |
| LOW | …hannels/messaging/channel_read_after_permalink_spec.js | 53 | // # Check if ... button is visible in last post right side | COMMENT |
| LOW | …ration/channels/messaging/message_channel_draw_spec.js | 41 | // # Open file upload options and select draw plugin | COMMENT |
| LOW | …ration/channels/messaging/message_channel_draw_spec.js | 57 | // # Open file upload options and select draw plugin | COMMENT |
| LOW | …ration/channels/messaging/message_channel_draw_spec.js | 72 | // # Open file upload options and select "Your Computer" | COMMENT |
| LOW | …tegration/channels/messaging/message_permalink_spec.js | 50 | // # Check if ... button is visible in last post right side | COMMENT |
| LOW | …tegration/channels/messaging/message_permalink_spec.js | 99 | // # Check if url include the permalink | COMMENT |
| LOW | …ration/channels/bot_accounts/bot_api_not_cloud_spec.ts | 30 | // # Set ServiceSettings to expected values | COMMENT |
| LOW | …integration/channels/bot_accounts/display_name_spec.ts | 22 | // # Set ServiceSettings to expected values | COMMENT |
| LOW | …ts/integration/channels/bot_accounts/bot_api_2_spec.ts | 33 | // # Set ServiceSettings to expected values | COMMENT |
| LOW | …tegration/channels/bot_accounts/crud_not_cloud_spec.ts | 26 | // # Set ServiceSettings to expected values | COMMENT |
| LOW | …ts/integration/channels/bot_accounts/bot_api_1_spec.ts | 29 | // # Set ServiceSettings to expected values | COMMENT |
| LOW | e2e-tests/cypress/tests/support/index.js | 226 | // # Check if default team is present; create if not found. | COMMENT |
| 46 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | server/channels/app/plugin_api.go | 342 | session, err := api.app.ch.srv.platform.GetSessionByID(api.ctx, sessionID) | CODE |
| CRITICAL | server/channels/app/plugin_api.go | 347 | if err := api.app.ch.srv.platform.ExtendSessionExpiry(session, expiresAt); err != nil { | CODE |
| CRITICAL | server/channels/app/oauth_test.go | 285 | th.App.ch.srv.platform.SetSessionExpireInHours(session, 24) | CODE |
| CRITICAL | server/channels/app/plugin_api_test.go | 1544 | th.App.ch.srv.platform.SetSqlStore(th.GetSqlStore()) // TODO: platform: check if necessary | CODE |
| CRITICAL | server/channels/app/import_functions_test.go | 2846 | _, _, err := th.App.ch.srv.teamService.JoinUserToTeam(th.Context, th.BasicTeam, user) | CODE |
| CRITICAL | server/channels/app/searchengine.go | 59 | return a.ch.srv.platform.SearchEngine.ActiveEngine() | CODE |
| CRITICAL | server/channels/app/session_test.go | 325 | cachedSession, errGet := th.App.ch.srv.platform.GetSession(th.Context, session.Token) | CODE |
| CRITICAL | server/channels/app/plugin_requests_test.go | 94 | th.App.ch.srv.Router.ServeHTTP(rr, req) | CODE |
| CRITICAL | server/channels/app/plugin_requests_test.go | 115 | th.App.ch.srv.RootRouter.ServeHTTP(rr, req) | CODE |
| CRITICAL | server/channels/app/plugin_requests_test.go | 131 | th.App.ch.srv.Router.ServeHTTP(rr, req) | CODE |
| CRITICAL | server/channels/app/plugin_requests_test.go | 150 | th.App.ch.srv.RootRouter.ServeHTTP(rr, req) | CODE |
| CRITICAL | …ccount_settings/profile/profile_picture_change_spec.ts | 35 | getProfilePictureId().then((idNew) => expect(idNew).to.exist.and.not.to.be.equal(this.idOld)); | CODE |
| CRITICAL | …console/board_attributes/board_attributes_edge.spec.ts | 104 | await systemConsolePage.sidebar.systemAttributes.attributeManagement.link.click(); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/sharedchannel-test/test_posts.go | 143 | // Step 1: baseline sync works. | COMMENT |
| LOW⚡ | tools/sharedchannel-test/test_posts.go | 158 | // Step 2: stop Server B. | COMMENT |
| LOW⚡ | tools/sharedchannel-test/test_posts.go | 161 | // Step 3: post M2 and M3 while Server B is offline. | COMMENT |
| LOW⚡ | tools/sharedchannel-test/test_posts.go | 176 | // Step 4: wait long enough for send retries to exhaust, but short enough that | COMMENT |
| LOW⚡ | tools/sharedchannel-test/test_posts.go | 183 | // Step 5: restart Server B. | COMMENT |
| LOW⚡ | tools/sharedchannel-test/test_posts.go | 189 | // Step 6: M2 and M3 must eventually appear on Server B via the recovery path. | COMMENT |
| LOW⚡ | …src/components/claim/components/ldap_to_email.test.tsx | 66 | // Step 1: Submit the initial MFA form to trigger an error that shows the password form | COMMENT |
| LOW⚡ | …src/components/claim/components/ldap_to_email.test.tsx | 76 | // Step 2: Fill in the password form and submit | COMMENT |
| LOW | …src/components/claim/components/ldap_to_email.test.tsx | 90 | // Step 3: Submit the MFA form with the real token | COMMENT |
| LOW | server/enterprise/message_export/shared/export_data.go | 199 | // If the channel is not in channelsInThisBatch (i.e. if it didn't have a post), we need to check if it had | COMMENT |
| LOW | server/enterprise/elasticsearch/common/common_test.go | 531 | // Step 1: Start with typed MessageAttachment (as a plugin/webhook would create) | COMMENT |
| LOW⚡ | server/enterprise/elasticsearch/common/common_test.go | 556 | // Step 2: Simulate CreatePost JSON round-trip (post.go:305-315) | COMMENT |
| LOW⚡ | server/enterprise/elasticsearch/common/common_test.go | 568 | // Step 3: Simulate ESPostFromPost (what the search layer calls) | COMMENT |
| LOW⚡ | server/enterprise/elasticsearch/common/common_test.go | 573 | // Step 4: Verify all attachment fields are indexed | COMMENT |
| LOW⚡ | server/platform/shared/healthcheck/reconcile.go | 79 | // Step 1: an unreachable node yields one node-down finding, not a derived unknown per section. | COMMENT |
| LOW⚡ | server/platform/shared/healthcheck/reconcile.go | 83 | // Step 2: load this cycle's prior state so transitions can be computed against it. | COMMENT |
| LOW | server/platform/shared/healthcheck/reconcile.go | 116 | // Step 3: apply each evaluation to its finding. An unknown rule code is a programming | COMMENT |
| LOW | server/platform/shared/healthcheck/reconcile.go | 158 | // Step 4: age findings that were NOT evaluated this cycle (and aren't already unknown) to | COMMENT |
| LOW | server/platform/shared/healthcheck/reconcile.go | 202 | // Step 5: one batched write so the whole cycle lands atomically for any reader. | COMMENT |
| LOW | server/channels/app/server.go | 224 | // Step 1: Platform. | COMMENT |
| LOW | server/channels/app/server.go | 241 | // Step 2: Init Enterprise | COMMENT |
| LOW⚡ | server/channels/app/server.go | 301 | // Step 4: Start platform | COMMENT |
| LOW⚡ | server/channels/app/server.go | 309 | // Step 5: Initialize channels. | COMMENT |
| LOW | …ared_channel_global_user_sync_self_referential_test.go | 1151 | // Step 1: Create "Server A" user and sync to "Server B" | COMMENT |
| LOW | …ared_channel_global_user_sync_self_referential_test.go | 1183 | // Step 2: Simulate the synced user existing on Server B | COMMENT |
| LOW | …ared_channel_global_user_sync_self_referential_test.go | 1196 | // Step 3: Simulate connection reset by creating a new cluster A (from B's perspective) | COMMENT |
| LOW⚡ | …ared_channel_global_user_sync_self_referential_test.go | 1212 | // Step 4: Attempt B→A sync (should NOT sync the user back to A) | COMMENT |
| LOW⚡ | …ared_channel_global_user_sync_self_referential_test.go | 1216 | // Step 5: Verify the synced user was NOT sent back to A | COMMENT |
| LOW | server/channels/app/content_flagging.go | 553 | // if user is not in common or team specific reviewers, we need to check if they are | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 232 | // Step 1: Verify the channel is initially shared | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 236 | // Step 2: Create a sync message that would be sent to the remote | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 246 | // Step 3: Simulate receiving ErrChannelIsNotShared from the remote | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 250 | // Step 4: Verify the channel is no longer shared locally | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 382 | // Step 1: Verify the channel is initially shared with both remotes | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 386 | // Step 2: Create a post in the channel to trigger sync activity | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 404 | // Step 3: Create a sync message for remote 1 | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 414 | // Step 4: Simulate remote 1 returning ErrChannelIsNotShared | COMMENT |
| LOW⚡ | server/channels/app/platform/service.go | 289 | // Step 3: Search Engine | COMMENT |
| LOW⚡ | server/channels/app/platform/service.go | 293 | // Step 4: Init Enterprise | COMMENT |
| LOW⚡ | server/channels/app/platform/service.go | 297 | // Step 5: Init Metrics | COMMENT |
| LOW⚡ | server/channels/app/platform/service.go | 304 | // Step 6: Store. | COMMENT |
| LOW | server/channels/app/platform/service.go | 176 | // Step 0: Create the PlatformService. | COMMENT |
| LOW | server/channels/app/platform/service.go | 224 | // Step 1: Start logging. | COMMENT |
| LOW | server/channels/app/platform/service.go | 257 | // Step 2: Cache provider. | COMMENT |
| LOW | server/channels/app/platform/service.go | 366 | // Step 7: initialize status and session cache. | COMMENT |
| LOW | server/channels/app/platform/service.go | 396 | // Step 8: Init License | COMMENT |
| LOW | server/channels/app/platform/service.go | 410 | // Step 9: Initialize filestore | COMMENT |
| LOW | server/channels/app/platform/service.go | 436 | // Step 10: Init Metrics Server depends on step 6 (store) and 8 (license) | COMMENT |
| LOW | server/channels/app/platform/service.go | 451 | // Step 11: Init AsymmetricSigningKey depends on step 6 (store) | COMMENT |
| LOW⚡ | server/channels/api4/user_test.go | 2980 | // Step 1: member logs in and confirms their session works. | COMMENT |
| LOW⚡ | server/channels/api4/user_test.go | 2988 | // Step 2: admin changes the member's authentication method. | COMMENT |
| LOW⚡ | server/channels/api4/user_test.go | 2996 | // Step 3: original token must no longer be accepted. | COMMENT |
| LOW | …on/channels/messaging/message_reply_scrollable_spec.js | 52 | cy.uiGetReplyTextBox().type('foo', {scrollBehavior: false}); // without scrollBehavior=false cypress automatical | CODE |
| LOW⚡ | …l/system_console/abac/policies/create_policies.spec.ts | 147 | // Step 5: User who satisfies policy but NOT in channel → should NOT be auto-added | COMMENT |
| LOW⚡ | …l/system_console/abac/policies/create_policies.spec.ts | 151 | // Step 6: User who satisfies policy and IS in channel → no change (stays in channel) | COMMENT |
| LOW⚡ | …l/system_console/abac/policies/create_policies.spec.ts | 155 | // Step 7: User who does NOT satisfy policy and IS in channel → auto-removed | COMMENT |
| LOW⚡ | …l/system_console/abac/policies/create_policies.spec.ts | 349 | // Step 5: User who satisfies policy but NOT in channel → should be AUTO-ADDED | COMMENT |
| LOW⚡ | …l/system_console/abac/policies/create_policies.spec.ts | 353 | // Step 6: User who satisfies policy and IS in channel → no change (stays in channel) | COMMENT |
| LOW⚡ | …l/system_console/abac/policies/create_policies.spec.ts | 357 | // Step 7: User who does NOT satisfy policy and IS in channel → auto-removed | COMMENT |
| LOW | …/channel_classification/channel_classification.spec.ts | 321 | // Step 1: enable classification, select a level, save | COMMENT |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/sharedchannel-test/test_posts.go | 143 | // Step 1: baseline sync works. | COMMENT |
| LOW⚡ | tools/sharedchannel-test/test_posts.go | 158 | // Step 2: stop Server B. | COMMENT |
| LOW⚡ | tools/sharedchannel-test/test_posts.go | 161 | // Step 3: post M2 and M3 while Server B is offline. | COMMENT |
| LOW⚡ | tools/sharedchannel-test/test_posts.go | 176 | // Step 4: wait long enough for send retries to exhaust, but short enough that | COMMENT |
| LOW⚡ | tools/sharedchannel-test/test_posts.go | 183 | // Step 5: restart Server B. | COMMENT |
| LOW⚡ | tools/sharedchannel-test/test_posts.go | 189 | // Step 6: M2 and M3 must eventually appear on Server B via the recovery path. | COMMENT |
| LOW⚡ | …src/components/claim/components/ldap_to_email.test.tsx | 66 | // Step 1: Submit the initial MFA form to trigger an error that shows the password form | COMMENT |
| LOW⚡ | …src/components/claim/components/ldap_to_email.test.tsx | 76 | // Step 2: Fill in the password form and submit | COMMENT |
| LOW | …src/components/claim/components/ldap_to_email.test.tsx | 90 | // Step 3: Submit the MFA form with the real token | COMMENT |
| LOW | server/enterprise/elasticsearch/common/common_test.go | 531 | // Step 1: Start with typed MessageAttachment (as a plugin/webhook would create) | COMMENT |
| LOW⚡ | server/enterprise/elasticsearch/common/common_test.go | 556 | // Step 2: Simulate CreatePost JSON round-trip (post.go:305-315) | COMMENT |
| LOW⚡ | server/enterprise/elasticsearch/common/common_test.go | 568 | // Step 3: Simulate ESPostFromPost (what the search layer calls) | COMMENT |
| LOW⚡ | server/enterprise/elasticsearch/common/common_test.go | 573 | // Step 4: Verify all attachment fields are indexed | COMMENT |
| LOW⚡ | server/platform/shared/healthcheck/reconcile.go | 79 | // Step 1: an unreachable node yields one node-down finding, not a derived unknown per section. | COMMENT |
| LOW⚡ | server/platform/shared/healthcheck/reconcile.go | 83 | // Step 2: load this cycle's prior state so transitions can be computed against it. | COMMENT |
| LOW | server/platform/shared/healthcheck/reconcile.go | 116 | // Step 3: apply each evaluation to its finding. An unknown rule code is a programming | COMMENT |
| LOW | server/platform/shared/healthcheck/reconcile.go | 158 | // Step 4: age findings that were NOT evaluated this cycle (and aren't already unknown) to | COMMENT |
| LOW | server/platform/shared/healthcheck/reconcile.go | 202 | // Step 5: one batched write so the whole cycle lands atomically for any reader. | COMMENT |
| LOW | server/channels/app/server.go | 224 | // Step 1: Platform. | COMMENT |
| LOW | server/channels/app/server.go | 241 | // Step 2: Init Enterprise | COMMENT |
| LOW⚡ | server/channels/app/server.go | 301 | // Step 4: Start platform | COMMENT |
| LOW⚡ | server/channels/app/server.go | 309 | // Step 5: Initialize channels. | COMMENT |
| LOW | …ared_channel_global_user_sync_self_referential_test.go | 1151 | // Step 1: Create "Server A" user and sync to "Server B" | COMMENT |
| LOW | …ared_channel_global_user_sync_self_referential_test.go | 1183 | // Step 2: Simulate the synced user existing on Server B | COMMENT |
| LOW | …ared_channel_global_user_sync_self_referential_test.go | 1196 | // Step 3: Simulate connection reset by creating a new cluster A (from B's perspective) | COMMENT |
| LOW⚡ | …ared_channel_global_user_sync_self_referential_test.go | 1212 | // Step 4: Attempt B→A sync (should NOT sync the user back to A) | COMMENT |
| LOW⚡ | …ared_channel_global_user_sync_self_referential_test.go | 1216 | // Step 5: Verify the synced user was NOT sent back to A | COMMENT |
| LOW | server/channels/app/scheduled_recap.go | 188 | // NOTE: This method does NOT use CreateRecap because that method relies on | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 232 | // Step 1: Verify the channel is initially shared | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 236 | // Step 2: Create a sync message that would be sent to the remote | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 246 | // Step 3: Simulate receiving ErrChannelIsNotShared from the remote | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 250 | // Step 4: Verify the channel is no longer shared locally | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 382 | // Step 1: Verify the channel is initially shared with both remotes | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 386 | // Step 2: Create a post in the channel to trigger sync activity | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 404 | // Step 3: Create a sync message for remote 1 | COMMENT |
| LOW⚡ | server/channels/app/shared_channel_test.go | 414 | // Step 4: Simulate remote 1 returning ErrChannelIsNotShared | COMMENT |
| LOW⚡ | server/channels/app/platform/service.go | 289 | // Step 3: Search Engine | COMMENT |
| LOW⚡ | server/channels/app/platform/service.go | 293 | // Step 4: Init Enterprise | COMMENT |
| LOW⚡ | server/channels/app/platform/service.go | 297 | // Step 5: Init Metrics | COMMENT |
| LOW⚡ | server/channels/app/platform/service.go | 304 | // Step 6: Store. | COMMENT |
| LOW | server/channels/app/platform/service.go | 176 | // Step 0: Create the PlatformService. | COMMENT |
| LOW | server/channels/app/platform/service.go | 224 | // Step 1: Start logging. | COMMENT |
| LOW | server/channels/app/platform/service.go | 257 | // Step 2: Cache provider. | COMMENT |
| LOW | server/channels/app/platform/service.go | 366 | // Step 7: initialize status and session cache. | COMMENT |
| LOW | server/channels/app/platform/service.go | 396 | // Step 8: Init License | COMMENT |
| LOW | server/channels/app/platform/service.go | 410 | // Step 9: Initialize filestore | COMMENT |
| LOW | server/channels/app/platform/service.go | 436 | // Step 10: Init Metrics Server depends on step 6 (store) and 8 (license) | COMMENT |
| LOW | server/channels/app/platform/service.go | 451 | // Step 11: Init AsymmetricSigningKey depends on step 6 (store) | COMMENT |
| LOW⚡ | server/channels/api4/user_test.go | 2980 | // Step 1: member logs in and confirms their session works. | COMMENT |
| LOW⚡ | server/channels/api4/user_test.go | 2988 | // Step 2: admin changes the member's authentication method. | COMMENT |
| LOW⚡ | server/channels/api4/user_test.go | 2996 | // Step 3: original token must no longer be accepted. | COMMENT |
| LOW⚡ | …l/system_console/abac/policies/create_policies.spec.ts | 147 | // Step 5: User who satisfies policy but NOT in channel → should NOT be auto-added | COMMENT |
| LOW⚡ | …l/system_console/abac/policies/create_policies.spec.ts | 151 | // Step 6: User who satisfies policy and IS in channel → no change (stays in channel) | COMMENT |
| LOW⚡ | …l/system_console/abac/policies/create_policies.spec.ts | 155 | // Step 7: User who does NOT satisfy policy and IS in channel → auto-removed | COMMENT |
| LOW⚡ | …l/system_console/abac/policies/create_policies.spec.ts | 349 | // Step 5: User who satisfies policy but NOT in channel → should be AUTO-ADDED | COMMENT |
| LOW⚡ | …l/system_console/abac/policies/create_policies.spec.ts | 353 | // Step 6: User who satisfies policy and IS in channel → no change (stays in channel) | COMMENT |
| LOW⚡ | …l/system_console/abac/policies/create_policies.spec.ts | 357 | // Step 7: User who does NOT satisfy policy and IS in channel → auto-removed | COMMENT |
| LOW | …/channel_classification/channel_classification.spec.ts | 321 | // Step 1: enable classification, select a level, save | COMMENT |
| LOW | …/channel_classification/channel_classification.spec.ts | 334 | // Step 2: in the same open modal, disable classification, enable a manual banner, | COMMENT |
| LOW⚡ | …nels/team_settings/team_settings_policy_editor.spec.ts | 741 | // # Step 1: Team admin can see the policy (all channels in their team) | COMMENT |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | webapp/channels/src/utils/post_utils.ts | 711 | // Checks if a post has valid AI-generated metadata | COMMENT |
| HIGH | server/channels/app/post.go | 688 | // Populate AI-generated username from provided user ID | COMMENT |
| HIGH | server/channels/app/post.go | 696 | // Only allow AI-generated username if the user is the post creator or a bot | COMMENT |
| HIGH | server/channels/app/post_test.go | 4243 | // Try to set AI-generated user ID to a different user (not post creator, not bot) | COMMENT |
| HIGH | server/channels/app/post_test.go | 4266 | // Set AI-generated user ID to a non-existent user | COMMENT |
| HIGH | …tion/channels/multi_team_and_dm/max_gm_members_spec.js | 113 | // # Add the first user from the top of the list, as many times as requested by 'userCountToAdd' | COMMENT |
| HIGH | …tion/channels/multi_team_and_dm/max_gm_members_spec.js | 113 | // # Add the first user from the top of the list, as many times as requested by 'userCountToAdd' | COMMENT |
| HIGH | …n/channels/multi_team_and_dm/close_gm_via_menu_spec.js | 86 | // # Add the first user from the top of the list, as many times as requested by 'userCountToAdd' | COMMENT |
| HIGH | …n/channels/multi_team_and_dm/close_gm_via_menu_spec.js | 86 | // # Add the first user from the top of the list, as many times as requested by 'userCountToAdd' | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | webapp/channels/src/root.tsx | 19 | // in a minimum of places, as it is preferred to leverage react-router, configured to use this | COMMENT |
| MEDIUM | …n_console/license_settings/modals/ee_license_modal.tsx | 57 | <p>{'The subscription-only features of the Mattermost Enterprise Edition software and associated | CODE |
| MEDIUM | webapp/channels/src/i18n/pt.json | 1479 | "admin.gitlab.EnableMarkdownDesc": "1. Inicie sessão na sua conta GitLab e vá a Definições do Perfil -> Aplicações.\n2 | CODE |
| MEDIUM | webapp/channels/src/i18n/pt.json | 5991 | "help.formatting.headings.description": "Crie um título escrevendo <code>#</code> e um espaço antes do seu título. Par | CODE |
| MEDIUM | server/public/plugin/plugintest/mock/mock.go | 6 | // to fully utilize the plugintest package. | COMMENT |
| MEDIUM | …hared_channel_membership_sync_self_referential_test.go | 306 | // Wait for batch messages to be received with more robust checking | COMMENT |
| MEDIUM | …hared_channel_membership_sync_self_referential_test.go | 620 | // Wait for first sync attempt with more robust checking | COMMENT |
| MEDIUM | …hared_channel_membership_sync_self_referential_test.go | 638 | // Wait for successful sync with more robust checking | COMMENT |
| MEDIUM | …hared_channel_membership_sync_self_referential_test.go | 1569 | // // This test verifies robust handling of conflicting membership states between multiple clusters. | COMMENT |
| MEDIUM | server/channels/app/password/hashers/hashers.go | 6 | // This package allows for seamless migrations of password hashing methods. To | COMMENT |
| MEDIUM | docs/site/package-lock.json | 20021 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| MEDIUM | …/channel_settings/channel_admin_self_inclusion.spec.ts | 184 | // lowest Id, so populating multiple matches makes the assertion robust | COMMENT |
| MEDIUM | …ub/workflows/e2e-tests-playwright-rolling-upgrades.yml | 6 | # re-check a from-version after a resolver or harness change — without needing a PR. | COMMENT |
| MEDIUM | .github/workflows/e2e-tests-on-merge.yml | 114 | # Rolling upgrades: auto when the merge touches the harness or a | COMMENT |
| MEDIUM | .github/workflows/e2e-tests-ci.yml | 232 | # Rolling upgrades: opt-in on manual dispatch, or auto when the PR touches the harness. | COMMENT |
| MEDIUM | …ows/e2e-tests-playwright-rolling-upgrades-template.yml | 9 | # Shape mirrors e2e-tests-playwright-template.yml, with the upgrade harness prepended to each | COMMENT |
| MEDIUM | …ows/e2e-tests-playwright-rolling-upgrades-template.yml | 11 | # then draws normal specs against it. The harness itself never goes through test system io — | COMMENT |
| MEDIUM | …ows/e2e-tests-playwright-rolling-upgrades-template.yml | 218 | # system io's inactivity window. Workers here have the upgrade harness to get through first, so | COMMENT |
| MEDIUM | …ows/e2e-tests-playwright-rolling-upgrades-template.yml | 219 | # the gap is wider than the full suite's — see the harness note on the workers job. | COMMENT |
| MEDIUM | …ows/e2e-tests-playwright-rolling-upgrades-template.yml | 334 | # Skipped automatically when the harness above failed, since a server that did not survive | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | webapp/channels/src/utils/license_utils.test.ts | 52 | it('should return True if expiring in 5 days - non Cloud', () => { | CODE |
| HIGH⚡ | webapp/channels/src/utils/license_utils.test.ts | 65 | it('should return True if expired 1 day ago - non Cloud', () => { | CODE |
| HIGH⚡ | webapp/channels/src/utils/license_utils.test.ts | 73 | it('should return False if cloud expired 11 days ago', () => { | CODE |
| HIGH⚡ | webapp/channels/src/utils/license_utils.test.ts | 79 | it('should return True if expired 1 day ago - non Cloud', () => { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …hannels/src/components/emoji/emoji_list/emoji_list.tsx | 291 | defaultMessage="Tip: If you add #, ##, or ### as the first character on a new line containin | CODE |
| LOW | …e/system_roles/system_role/system_role_permissions.tsx | 229 | defaultMessage="Don't forget to deauthorize all other system users from administering Custom | CODE |
| LOW | webapp/channels/src/i18n/en-AU.json | 2922 | "admin.permissions.roles.system_custom_group_admin.deauthorize_reminder": "Don't forget to deauthorise all other syste | CODE |
| MEDIUM | webapp/channels/src/i18n/en-AU.json | 5614 | "emoji_list.help2": "Tip: If you add #, ##, or ### as the first character on a new line containing emoji, you can use | CODE |
| MEDIUM | server/cmd/mmctl/commands/user.go | 98 | Example: ` # if you have system permissions, you can change other user's passwords | CODE |
| MEDIUM | server/cmd/mattermost/commands/db.go | 36 | Example: ` # you can use the config flag to pass the DSN | CODE |
| MEDIUM | server/cmd/mattermost/commands/db.go | 39 | # or you can use the MM_CONFIG environment variable | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/scripts/build-offline-bundle.py | 108 | except FileNotFoundError: | CODE |
| HIGH | docs/scripts/build-offline-bundle.py | 115 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/scripts/build-offline-bundle.py | 63 | CODE | |
| LOW | .github/scripts/check_config_changes_ci.py | 481 | CODE | |
| LOW | .github/scripts/generate_changelog.py | 201 | CODE | |
| LOW | .github/scripts/generate_changelog.py | 357 | CODE | |
| LOW | .github/scripts/generate_changelog.py | 721 | CODE | |
| LOW | .github/scripts/generate_changelog.py | 844 | CODE | |
| LOW | .github/scripts/generate_changelog.py | 993 | CODE | |
| LOW | .github/scripts/generate_changelog.py | 1193 | CODE | |
| LOW | .github/scripts/test_e2e_status_workflows.py | 342 | CODE | |
| LOW | .github/scripts/test_e2e_status_workflows.py | 353 | CODE | |
| LOW | .github/scripts/test_e2e_status_workflows.py | 372 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/develop/contribute/more-info/webapp/e2e-testing.md | 23 | E2E tests are located at the root of the repository in [the `e2e-tests` folder](https://github.com/mattermost/mattermost | CODE |
| MEDIUM | .github/scripts/generate_changelog.py | 575 | # v11 file exactly. Used to scaffold e.g. mattermost-v12-changelog.mdx on the first | COMMENT |
| MEDIUM | .github/scripts/test_e2e_status_workflows.py | 216 | # Even a green orchestration result and AI verdict cannot clear upload failures. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …/packages/mattermost-redux/src/store/configureStore.ts | 52 | // @hmhealey I've added this extra argument to Thunks to store information related to the store that can't be | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/scripts/check_config_changes_ci.py | 708 | except Exception as e: | CODE |
| LOW | .github/scripts/migration_automation.py | 322 | except Exception as e: | CODE |
| LOW | .github/scripts/migration_automation.py | 332 | except Exception as e: | CODE |
| LOW | .github/scripts/migration_automation.py | 349 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ages/mattermost-redux/src/reducers/requests/helpers.ts | 17 | export function handleRequest( | CODE |
| LOW | …/integration/channels/messaging/copy_post_text_spec.js | 62 | const postCodeBlock = '```javascript\nvar foo = "bar"\nfunction doSomething()\nreturn 7;\n}\n```'; | CODE |
| LOW | …/integration/channels/messaging/copy_post_text_spec.js | 63 | const copiedCodeBlockText = 'var foo = "bar"\nfunction doSomething()\nreturn 7;\n}\n'; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | server/public/utils/page.go | 16 | // Example usage: | COMMENT |
| LOW | server/channels/app/password/hashers/hashers_dev.go | 32 | // Example usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/scripts/check_config_changes_ci.py | 624 | def update_pr_body(new_body: str) -> None: | CODE |
| LOW | .github/scripts/generate_changelog.py | 1149 | def set_github_output(name: str, value) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/scripts/build-offline-bundle.py | 11 | CODE |