This report summarizes scanner evidence for flarum/framework. SynthScan examined 311,794 lines of code across 3791 source files, recording 270 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 1.3 (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? 181 finding(s).
Are imports declared and package/API names verified? 33 finding(s).
Are wrappers, guards, and repeated structures necessary? 198 finding(s).
Which changes need focused human review? 270 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 270 distinct pattern matches across 7 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 |
|---|---|---|---|---|
| MEDIUM | framework/core/less/admin/AnnouncementsPage.less | 1 | // ── Widget wrapper ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | framework/core/less/admin/AnnouncementsPage.less | 49 | // ── List (responsive wrapping grid) ────────────────────────────────────────── | COMMENT |
| MEDIUM | framework/core/less/admin/AnnouncementsPage.less | 118 | // ── Item card ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 28 | // ── tabs ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 39 | // ── the shared card ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 72 | // ── Flarum itself ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 136 | // ── the row above the extension grid ───────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 157 | // ── extension cards ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 312 | // ── chips ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 335 | // ── "update available" ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 366 | // ── the banner's list of what is actually out of date ──────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 400 | // ── search ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 454 | // ── a run in progress ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 642 | // ── this host ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 683 | // ── the dashboard banner ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 701 | // ── Sources: repositories, stability, credentials ──────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 738 | // ── the rows ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 817 | // ── the footer where things are added ─────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 851 | // ── the callout ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 885 | // ── rollback copies ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 932 | // ── the command-line PHP setting (This host) ───────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 954 | // ── Sources, redesigned ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 1626 | // ── recent updates ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 1677 | // ── release notes modal ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/less/admin.less | 1711 | // ── alerts and confirmations ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | …package-manager/js/src/admin/components/SourcesTab.tsx | 117 | // ── at a glance ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …package-manager/js/src/admin/components/SourcesTab.tsx | 172 | // ── repositories ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …package-manager/js/src/admin/components/SourcesTab.tsx | 398 | // ── stability ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …package-manager/js/src/admin/components/SourcesTab.tsx | 479 | // ── credentials ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …package-manager/js/src/admin/components/SourcesTab.tsx | 741 | // ── plumbing ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …sions/package-manager/tests/unit/CrashRecoveryTest.php | 168 | // ── helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/tests/unit/RepinTest.php | 47 | // ── what the SERVER will allow ─────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/tests/unit/RepinTest.php | 120 | // ── what the RUN actually writes ───────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/tests/unit/RepinTest.php | 164 | // ── and that the permission actually travels ───────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/tests/unit/RepinTest.php | 220 | // ── helpers ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/tests/unit/PruneTest.php | 134 | // ── what is kept ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/tests/unit/PruneTest.php | 226 | // ── what is removed ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/tests/unit/PruneTest.php | 263 | // ── fails closed ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/tests/unit/PruneTest.php | 302 | // ── the deletion itself ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/tests/unit/PruneTest.php | 377 | // ── the end-to-end promise ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/tests/unit/PruneTest.php | 420 | // ── settings and wiring ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nsions/package-manager/tests/unit/ResumabilityTest.php | 183 | // ── helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/package-manager/tests/unit/InProcessComposerTest.php | 74 | // ── runner selection ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/package-manager/tests/unit/InProcessComposerTest.php | 101 | // ── state restoration ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/package-manager/tests/unit/InProcessComposerTest.php | 175 | // ── the VCS-needs-git refusal ─────────────────────────────────────── | COMMENT |
| MEDIUM | …s/package-manager/tests/unit/InProcessComposerTest.php | 247 | // ── a real in-process resolve, no network ─────────────────────────── | COMMENT |
| MEDIUM | …s/package-manager/tests/unit/InProcessComposerTest.php | 319 | // ── post-swap steps run only on fresh code ────────────────────────── | COMMENT |
| MEDIUM | …s/package-manager/tests/unit/InProcessComposerTest.php | 380 | // ── helpers ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tensions/package-manager/tests/unit/StepRunnerTest.php | 254 | // ── helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …sions/package-manager/tests/unit/UpdateCommandTest.php | 56 | // ── what it refuses ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …sions/package-manager/tests/unit/UpdateCommandTest.php | 226 | // ── what it does ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …sions/package-manager/tests/unit/UpdateCommandTest.php | 423 | // ── helpers ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/tests/unit/ConfigTest.php | 53 | // ── credentials ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/tests/unit/ConfigTest.php | 113 | // ── repositories ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/tests/unit/ConfigTest.php | 203 | // ── stability ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/package-manager/tests/unit/ConfigTest.php | 236 | // ── the file itself ───────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ore/js/dist-typings/common/utils/fontAwesomeIcons.d.ts | 33 | export declare function fetchUnreadableStylesheets(assetsBaseUrl: string | null | undefined): Promise<void> | null; | CODE |
| LOW | …st-typings/common/utils/setRouteWithForcedRefresh.d.ts | 8 | export default function setRouteWithForcedRefresh(route: string, params?: null, options?: Mithril.RouteOptions): void; | CODE |
| LOW | …rk/core/js/src/admin/components/PermissionDropdown.tsx | 17 | function filterByRequiredPermissions(groupIds: string[], permission: string) { | CODE |
| LOW | framework/core/js/src/forum/components/ReplyComposer.js | 9 | function minimizeComposerIfFullScreen(e) { | CODE |
| LOW | …ework/core/js/src/forum/components/EditPostComposer.js | 8 | function minimizeComposerIfFullScreen(e) { | CODE |
| LOW | framework/core/js/src/common/utils/styleSelectedText.ts | 119 | function newlinesToSurroundSelectedText(textarea: HTMLTextAreaElement): Newlines { | CODE |
| LOW | …/core/js/src/common/utils/setRouteWithForcedRefresh.ts | 9 | export default function setRouteWithForcedRefresh(route: string, params = null, options: Mithril.RouteOptions = {}) { | CODE |
| LOW | framework/core/js/src/common/utils/fontAwesomeIcons.ts | 247 | export function fetchUnreadableStylesheets(assetsBaseUrl: string | null | undefined): Promise<void> | null { | CODE |
| LOW | framework/core/js/src/common/helpers/listItems.tsx | 36 | function withoutUnnecessarySeparators(items: ModdedChildrenWithItemName[]): ModdedChildrenWithItemName[] { | CODE |
| LOW | …/unit/Foundation/ExtensionDependencyResolutionTest.php | 244 | public function getExtensionDependencyIds() | CODE |
| LOW | framework/core/tests/unit/Queue/RoutingQueueTest.php | 90 | public function creationTimeOfOldestPendingJob($queue = null) | CODE |
| LOW | …ork/core/tests/integration/extenders/ValidatorTest.php | 21 | private function extendToRequireLongPassword(): void | CODE |
| LOW | …ork/core/tests/integration/extenders/ValidatorTest.php | 33 | private function extendToRequireLongPasswordViaInvokableClass(): void | CODE |
| LOW | …work/core/tests/integration/forum/GlobalLogoutTest.php | 78 | public static function canGloballyLogoutDataProvider(): array | CODE |
| LOW | …e/tests/integration/queue/QueueServiceProviderTest.php | 238 | public function creationTimeOfOldestPendingJob($queue = null) | CODE |
| LOW | …sts/integration/queue/NotificationQueueRoutingTest.php | 204 | public function creationTimeOfOldestPendingJob($queue = null) | CODE |
| LOW | …re/tests/integration/api/settings/MailSettingsTest.php | 35 | public function smtpDriverWithWhitespaceIsInvalidated() | CODE |
| LOW | …re/tests/integration/api/settings/MailSettingsTest.php | 72 | public function smtpDriverWithValidSettingsIsNotInvalidated() | CODE |
| LOW | …re/tests/integration/api/settings/MailSettingsTest.php | 96 | public function mailgunDriverWithWhitespaceIsInvalidated() | CODE |
| LOW | …re/tests/integration/api/settings/MailSettingsTest.php | 125 | public function mailgunDriverWithValidSettingsIsNotInvalidated() | CODE |
| LOW | framework/core/tests/integration/api/posts/ListTest.php | 48 | private function forbidGuestsFromSeeingForum() | CODE |
| LOW | …/core/tests/integration/api/access_tokens/ListTest.php | 124 | public static function canViewTokensDataProvider(): array | CODE |
| LOW | …/core/tests/integration/api/access_tokens/ListTest.php | 139 | public static function cannotSeeTokenValuesDataProvider(): array | CODE |
| LOW | …/core/tests/integration/api/access_tokens/ListTest.php | 160 | public static function needsPermissionToUseUserfilterDataProvider(): array | CODE |
| LOW | …ore/tests/integration/api/access_tokens/DeleteTest.php | 181 | public static function canDeleteTokensDataProvider(): array | CODE |
| LOW | …ore/tests/integration/api/access_tokens/DeleteTest.php | 196 | public static function cannotDeleteTokensDataProvider(): array | CODE |
| LOW | …tests/integration/api/access_tokens/PermissionTest.php | 81 | public static function usersWithPermissionDataProvider(): array | CODE |
| LOW | …tests/integration/api/access_tokens/PermissionTest.php | 89 | public static function usersWithoutPermissionDataProvider(): array | CODE |
| LOW | …k/core/tests/integration/api/users/GroupSearchTest.php | 223 | private function createMultipleUsersAndGroups() | CODE |
| LOW | framework/core/tests/integration/api/users/ShowTest.php | 35 | private function forbidGuestsFromSeeingForum() | CODE |
| LOW | framework/core/tests/integration/api/users/ShowTest.php | 40 | private function forbidMembersFromSearchingUsers() | CODE |
| LOW | …mework/core/tests/integration/api/users/DeleteTest.php | 80 | public static function unauthorizedUsersProvider() | CODE |
| LOW | …/core/tests/integration/api/notifications/ListTest.php | 305 | protected function seedRenamedDiscussionNotifications(int $count): void | CODE |
| LOW | …ore/tests/integration/api/notifications/DeleteTest.php | 67 | public static function canDeleteAllNotifications(): array | CODE |
| LOW | …work/core/tests/integration/slugger/SlugDriverTest.php | 87 | public static function fromUserSlugVariantsDataProvider(): array | CODE |
| LOW | …work/core/tests/integration/slugger/SlugDriverTest.php | 96 | public static function slugInstancePairDataProvider(): array | CODE |
| LOW | …sts/integration/console/InfoCommandMemoryLimitTest.php | 56 | protected function webServerMemoryLimitFiles(): array | CODE |
| LOW | …sts/integration/console/InfoCommandMemoryLimitTest.php | 61 | protected function webServerMemoryLimitConfDirs(): array | CODE |
| LOW | framework/core/src/Database/Migrator.php | 167 | protected function resolveAndRunClosureMigration(string $path, string $file, string $direction = 'up'): void | CODE |
| LOW | framework/core/src/Database/AbstractModel.php | 159 | public function releaseAfterSaveCallbacks(): array | CODE |
| LOW | framework/core/src/Database/AbstractModel.php | 171 | public function releaseAfterDeleteCallbacks(): array | CODE |
| LOW | framework/core/src/Extend/Frontend.php | 363 | private function registerDocumentAttributes(Container $container): void | CODE |
| LOW | …work/core/src/Install/Controller/InstallController.php | 115 | private function getConfirmedAdminPassword(array $input): string | CODE |
| LOW | framework/core/src/Post/Post.php | 135 | public function scopeWhereVisibleToInDiscussion(Builder $query, User $actor, Discussion $discussion): Builder | CODE |
| LOW | framework/core/src/Extension/ExtensionManager.php | 576 | protected function subExtensionConfsFromJson(array $package, string $packagePath): ?array | CODE |
| LOW | framework/core/src/Extension/Extension.php | 325 | public function getExtensionDependencyIds(): array | CODE |
| LOW | framework/core/src/Frontend/Compiler/LessCompiler.php | 430 | private function applyImportOverridesToContent(string $content): string | CODE |
| LOW | framework/core/src/Notification/Notification.php | 105 | public function scopeWhereSubjectVisibleTo(Builder $query, User $actor): Builder | CODE |
| LOW | framework/core/src/Foundation/Application.php | 91 | protected function registerBaseServiceProviders(): void | CODE |
| LOW | framework/core/src/Foundation/Application.php | 211 | public function registerCoreContainerAliases(): void | CODE |
| LOW | framework/core/src/Foundation/Config.php | 81 | public function sessionCookieExpiresOnClose(): ?bool | CODE |
| LOW | …mework/core/src/Foundation/ApplicationInfoProvider.php | 117 | public function identifyDatabaseDriverMismatch(): ?string | CODE |
| LOW | …mework/core/src/Foundation/ApplicationInfoProvider.php | 147 | public function identifyDatabaseVersionStatus(): ?array | CODE |
| LOW | …/core/src/Foundation/Concerns/InteractsWithLaravel.php | 150 | public function registerConfiguredProviders(): void | CODE |
| LOW | framework/core/src/Foundation/Console/InfoCommand.php | 201 | private function detectWebServerPhpVersion(): ?string | CODE |
| LOW | framework/core/src/Foundation/Console/InfoCommand.php | 242 | protected function webServerMemoryLimitFiles(): array | CODE |
| LOW | framework/core/src/Foundation/Console/InfoCommand.php | 268 | protected function webServerMemoryLimitConfDirs(): array | CODE |
| LOW | framework/core/src/Foundation/Console/InfoCommand.php | 283 | protected function detectWebServerMemoryLimit(): ?string | CODE |
| LOW | framework/core/src/User/UserServiceProvider.php | 73 | protected function registerDisplayNameDrivers(): void | CODE |
| LOW | framework/core/src/User/User.php | 305 | public function getHasUploadedAvatarAttribute(): bool | CODE |
| 82 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …re/js/tests/integration/common/gambits/IGambit.test.ts | 255 | expect(gambit.toFilter(['email:foo@bar.com', 'foo@bar.com'], false)).toStrictEqual({ email: 'foo@bar.com' }); | CODE |
| LOW | …re/js/tests/integration/common/gambits/IGambit.test.ts | 259 | expect(gambit.fromFilter('foo@bar.com', false)).toBe('email:foo@bar.com'); | CODE |
| LOW | …e/js/tests/integration/common/components/Input.test.ts | 23 | expect(input).toHaveElementAttr('input', 'placeholder', 'Lorem'); | CODE |
| LOW | …ore/js/dist-typings/common/components/SearchModal.d.ts | 53 | * @example `lorem ipsum is:unread dolor` => `lorem ipsum <mark>is:unread</mark> dolor` | COMMENT |
| LOW | framework/core/js/src/common/components/SearchModal.tsx | 234 | * @example `lorem ipsum is:unread dolor` => `lorem ipsum <mark>is:unread</mark> dolor` | COMMENT |
| LOW | framework/core/tests/unit/Locale/TranslatorTest.php | 37 | $this->assertSame("test1 ' test1", $translator->trans('test1', ['placeholder' => "'"])); | CODE |
| LOW | framework/core/tests/unit/Locale/TranslatorTest.php | 38 | $this->assertSame("test1 test2 ' test2 test1", $translator->trans('test1', ['placeholder' => $translator->trans( | CODE |
| LOW | framework/core/tests/unit/Locale/TranslatorTest.php | 62 | $this->assertSame("test1 ' {placeholder} test1", $translator->trans('test3', ['placeholder' => "'"])); | CODE |
| LOW | …ore/tests/unit/Notification/NotificationMailerTest.php | 65 | $token->token = 'fake-token'; | CODE |
| LOW | …ore/tests/unit/Notification/NotificationMailerTest.php | 133 | $user->shouldReceive('getAttribute')->with('email')->andReturn('user@example.com'); | CODE |
| LOW⚡ | framework/core/tests/unit/Mail/MailerTest.php | 84 | $this->users->shouldReceive('findByEmail')->with('user@example.com')->andReturn(null); | CODE |
| LOW⚡ | framework/core/tests/unit/Mail/MailerTest.php | 91 | return $context['recipient_email'] === 'user@example.com' | CODE |
| LOW⚡ | framework/core/tests/unit/Mail/MailerTest.php | 92 | && $context['recipient_name'] === 'Jane Doe' | CODE |
| LOW⚡ | framework/core/tests/unit/Mail/MailerTest.php | 102 | ['userEmail' => 'user@example.com', 'username' => 'Jane Doe'], | CODE |
| LOW⚡ | framework/core/tests/unit/Mail/MailerTest.php | 102 | ['userEmail' => 'user@example.com', 'username' => 'Jane Doe'], | CODE |
| LOW | framework/core/tests/unit/Mail/MailerTest.php | 113 | $this->users->shouldReceive('findByEmail')->with('user@example.com')->andReturn($user); | CODE |
| LOW | framework/core/tests/unit/Mail/MailerTest.php | 121 | && $event->recipientEmail === 'user@example.com'; | CODE |
| LOW | framework/core/tests/unit/Mail/MailerTest.php | 141 | ['userEmail' => 'user@example.com', 'username' => 'Jane Doe'], | CODE |
| LOW | framework/core/tests/unit/Mail/MailerTest.php | 141 | ['userEmail' => 'user@example.com', 'username' => 'Jane Doe'], | CODE |
| LOW | …mework/core/tests/unit/Forum/Auth/RegistrationTest.php | 29 | $this->registration->provide('email', 'user@example.com'); | CODE |
| LOW | …mework/core/tests/unit/Forum/Auth/RegistrationTest.php | 32 | $this->assertEquals(['email' => 'user@example.com', 'username' => 'testuser'], $this->registration->getProvided( | CODE |
| LOW | …/tests/integration/mail/PlainTextEmailEscapingTest.php | 42 | 'userEmail' => 'admin@example.com', | CODE |
| LOW | …/tests/integration/mail/PlainTextEmailEscapingTest.php | 83 | $view->share(['forumTitle' => 'Test Forum', 'userEmail' => 'admin@example.com', 'username' => 'Admin']); | CODE |
| LOW | …/integration/mail/AbandonedExtensionsEmailBodyTest.php | 42 | 'userEmail' => 'admin@example.com', | CODE |
| LOW | framework/core/src/Install/Console/FileDataProvider.php | 91 | $this->adminUser['email'] ?? 'admin@example.com' | CODE |
| LOW | …sts/integration/api/RegisterWithRandomUsernameTest.php | 52 | 'nickname' => 'John Doe', | CODE |
| LOW | …sts/integration/api/RegisterWithRandomUsernameTest.php | 70 | $this->assertEquals('John Doe', $user->nickname); | CODE |
| LOW | …sts/integration/api/RegisterWithRandomUsernameTest.php | 82 | 'nickname' => 'John Doe', | CODE |
| LOW | …/integration/api/RegisterWithoutRandomUsernameTest.php | 54 | 'nickname' => 'John Doe', | CODE |
| LOW | …/integration/api/RegisterWithoutRandomUsernameTest.php | 79 | 'nickname' => 'John Doe', | CODE |
| LOW | …/integration/api/RegisterWithoutRandomUsernameTest.php | 94 | $this->assertEquals('John Doe', $user->nickname); | CODE |
| LOW | …ensions/nicknames/tests/integration/api/SearchTest.php | 32 | ['id' => 2, 'username' => 'jd123', 'nickname' => 'Jane Doe', 'email' => 'jd@machine.local', 'is_email_co | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | framework/core/less/common/Iconography.less | 1 | // Which glyph each icon is, and how icons size, stack and spin. This names no | COMMENT |
| LOW | framework/core/less/common/App.less | 381 | // positioned but still descend from this element, so any non-visible | COMMENT |
| LOW | framework/core/less/common/App.less | 401 | .Header-title { | COMMENT |
| LOW | framework/core/less/common/mixins/clearfix.less | 1 | // Clearfix | COMMENT |
| LOW | framework/core/js/tsconfig.json | 1 | // NOTE: | COMMENT |
| LOW | …ore/js/tests/unit/forum/states/PostStreamState.test.ts | 61 | return ids.map((id) => app.store.getById<Post>('posts', id)!); | COMMENT |
| LOW | …ework/core/js/tests/unit/common/ExportRegistry.test.ts | 181 | } finally { | COMMENT |
| LOW | …re/js/tests/integration/common/gambits/IGambit.test.ts | 361 | COMMENT | |
| LOW | framework/core/js/src/forum/components/PostStream.js | 561 | // target post out of view. During settling, a ResizeObserver watches for | COMMENT |
| LOW | …tests/integration/mail/SafeSubstitutionRestoreTest.php | 121 | COMMENT | |
| LOW | framework/core/tests/integration/forum/LogoutTest.php | 81 | // We need a fresh app instance that doesn't exempt the logout route, so we | COMMENT |
| LOW | framework/core/src/Frontend/FrontendServiceProvider.php | 121 | $fontAwesome = $container->make(FontAwesome::class); | COMMENT |
| LOW | …mework/core/src/Frontend/Compiler/RevisionCompiler.php | 61 | // Render the output once and derive the revision from it. The revision | COMMENT |
| LOW | framework/core/src/Frontend/Compiler/LessCompiler.php | 101 | // here would refuse those too. | COMMENT |
| LOW | framework/core/src/Notification/Notification.php | 161 | $data = $attributes['data']; | COMMENT |
| LOW | framework/core/src/Mail/MailServiceProvider.php | 121 | $views->share('logoUrl', $logoPath ? $filesystemFactory->disk('flarum-assets')->url($logoPath) : null); | COMMENT |
| LOW | framework/core/src/Forum/ValidateCustomLess.php | 61 | // the compile still returns 422 but leaves the value stored, whereas | COMMENT |
| LOW | …ork/core/src/Api/Endpoint/Concerns/HasEagerLoading.php | 201 | // instead of it. | COMMENT |
| LOW | framework/core/src/Api/Resource/DiscussionResource.php | 241 | ->get(function (Discussion $discussion, Context $context) { | COMMENT |
| LOW | framework/core/src/Api/Resource/UserResource.php | 401 | // Whether a user is an admin, and what else they may do, is | COMMENT |
| LOW | extensions/package-manager/less/admin.less | 1 | // The Extension Manager — admin | COMMENT |
| LOW | …s/sticky/tests/integration/api/ListDiscussionsTest.php | 281 | // Natural last_posted_at order — no sticky pinning on a non-tag filter. | COMMENT |
| LOW | …integration/api/discussions/SubscriptionFilterTest.php | 221 | $this->assertEmpty($ids, 'An unrecognised subscription value should return no results, not crash'); | COMMENT |
| LOW | …ts/integration/visibility/DiscussionVisibilityTest.php | 141 | COMMENT | |
| LOW | extensions/realtime/js/src/forum/extend/DialogList.ts | 1 | // Dialog list realtime integration (new messages, typing indicator) has moved | COMMENT |
| LOW | extensions/realtime/js/src/forum/extend/Application.ts | 141 | // updates go missing until the page is reloaded. iOS also bfcaches pages | COMMENT |
| LOW | extensions/realtime/js/src/forum/extend/Application.ts | 161 | // strategy tree and a full `livesLeft`, making the recovery survive | COMMENT |
| LOW | extensions/realtime/js/src/forum/extend/Post.ts | 1 | // Flag realtime integration has moved to flarum/flags. That extension registers | COMMENT |
| LOW | …ions/realtime/js/src/forum/extend/Tags/IndexTyping.tsx | 41 | // Surface a dot on the relevant tags while someone is composing a NEW discussion | COMMENT |
| LOW | extensions/realtime/src/Push/NotificationDriver.php | 21 | // in core's own queued Notification\Job\SendNotificationsJob). Dispatching the broadcast | COMMENT |
| LOW | extensions/realtime/src/Push/Payload/Generator.php | 101 | // relationship is only usable if the record it points at is | COMMENT |
| LOW | …sions/nicknames/tests/integration/api/EditUserTest.php | 181 | COMMENT | |
| LOW | extensions/deck/less/forum.less | 1 | // Deck lays out core's own components (DiscussionList, NotificationList, | COMMENT |
| LOW | extensions/approval/less/forum.less | 1 | // A pending post reads as de-emphasised in its entirety, as it always has. What | COMMENT |
| LOW | .github/workflows/REUSABLE_backend.yml | 161 | COMPOSER_ROOT_VERSION: dev-main | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | extensions/mentions/js/src/forum/utils/reply.js | 30 | if (app.composer.bodyMatches('flarum/forum/components/EditPostComposer') && app.composer.body.attrs.post.discussion() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | framework/core/js/src/common/Model.ts | 129 | // For every relationship field, we need to check if we've | COMMENT |
| LOW | …/core/src/Frontend/Compiler/Source/SourceCollector.php | 73 | // so we need to check if the $source is an instance of one of those classes/interfaces (could be a parent class | COMMENT |
| LOW | extensions/flags/src/AuditIntegration.php | 46 | // Because flarum/flags calls this every time a post is deleted, we need to check if there were actual flags | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | framework/core/src/Foundation/Console/InfoCommand.php | 106 | "Don't forget to turn off debug mode! It should never be turned on in a production system." | CODE |