Repository Analysis

CherryHQ/cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs

2.1 Likely human-written View on GitHub
2.1
Adjusted Score
2.1
Raw Score
100%
Time Factor
2026-05-30
Last Push
46,589
Stars
TypeScript
Language
817,351
Lines of Code
4393
Files
912
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 11HIGH 7MEDIUM 310LOW 584

Pattern Findings

912 matches across 15 categories. Click a row to expand file-level details.

Decorative Section Separators301 hits · 940 pts
SeverityFileLineSnippet
MEDIUM…es/skills/skill-creator/eval-viewer/generate_review.py284# ---------------------------------------------------------------------------
MEDIUM…es/skills/skill-creator/eval-viewer/generate_review.py286# ---------------------------------------------------------------------------
MEDIUM…s/data/best-practice-default-values-and-nullability.md181// ─── DB schema ────────────────────────────────────────────────
MEDIUM…s/data/best-practice-default-values-and-nullability.md199// ─── Zod schema ───────────────────────────────────────────────
MEDIUM…s/data/best-practice-default-values-and-nullability.md231// ─── Service ──────────────────────────────────────────────────
MEDIUM…s/data/best-practice-default-values-and-nullability.md252// ─── Row → Entity ─────────────────────────────────────────────
MEDIUMpackages/ui/scripts/generate-avatars.ts272// ──────────────────────────────────────────────────────────
MEDIUMpackages/ui/scripts/generate-avatars.ts274// ──────────────────────────────────────────────────────────
MEDIUM…ages/ui/scripts/__tests__/svgo-convert-to-mono.test.ts19// ─── Helpers ────────────────────────────────────────────────────────
MEDIUM…ages/ui/scripts/__tests__/svgo-convert-to-mono.test.ts46// ─── Single-color fill conversion ────────────────────────────────────
MEDIUM…ages/ui/scripts/__tests__/svgo-convert-to-mono.test.ts82// ─── Multi-color opacity mapping ─────────────────────────────────────
MEDIUM…ages/ui/scripts/__tests__/svgo-convert-to-mono.test.ts103// ─── Narrow luminance range opacity spread ────────────────────────────
MEDIUM…ages/ui/scripts/__tests__/svgo-convert-to-mono.test.ts136// ─── White fill handling: backgroundWasDark ──────────────────────────
MEDIUM…ages/ui/scripts/__tests__/svgo-convert-to-mono.test.ts189// ─── url(#gradient) fills ────────────────────────────────────────────
MEDIUM…ages/ui/scripts/__tests__/svgo-convert-to-mono.test.ts189// ─── url(#gradient) fills ────────────────────────────────────────────
MEDIUM…ages/ui/scripts/__tests__/svgo-convert-to-mono.test.ts203// ─── Removal of defs/clipPath/attributes ─────────────────────────────
MEDIUM…ages/ui/scripts/__tests__/svgo-convert-to-mono.test.ts264// ─── Phase 0: Mask-based shape extraction ────────────────────────────
MEDIUM…ages/ui/scripts/__tests__/svgo-convert-to-mono.test.ts347// ─── Integration: backgroundWasDark threshold ────────────────────────
MEDIUM…ages/ui/scripts/__tests__/svgo-convert-to-mono.test.ts387// ─── Cutout / luminance mask preservation ─────────────────────────────
MEDIUMpackages/ui/scripts/__tests__/svg-utils.test.ts13// ─── colorToLuminance ───────────────────────────────────────────────
MEDIUMpackages/ui/scripts/__tests__/svg-utils.test.ts64// ─── isWhiteFill ────────────────────────────────────────────────────
MEDIUMpackages/ui/scripts/__tests__/svg-utils.test.ts96// ─── parseSvgPathBounds ─────────────────────────────────────────────
MEDIUMpackages/ui/scripts/__tests__/svg-utils.test.ts153// ─── parseViewBox ───────────────────────────────────────────────────
MEDIUMpackages/ui/scripts/__tests__/svg-utils.test.ts177// ─── isLargeShape ───────────────────────────────────────────────────
MEDIUMpackages/ui/scripts/__tests__/svg-utils.test.ts195// ─── normalizeColor ─────────────────────────────────────────────────
MEDIUMpackages/ui/scripts/__tests__/svg-utils.test.ts213// ─── isMonochromeSvg ───────────────────────────────────────────────
MEDIUM…es/ui/scripts/__tests__/svgo-remove-background.test.ts18// ─── Helpers ────────────────────────────────────────────────────────
MEDIUM…es/ui/scripts/__tests__/svgo-remove-background.test.ts35// ─── Rule 1: <rect> background ──────────────────────────────────────
MEDIUM…es/ui/scripts/__tests__/svgo-remove-background.test.ts106// ─── Rule 2: Rounded-rect path background ───────────────────────────
MEDIUM…es/ui/scripts/__tests__/svgo-remove-background.test.ts177// ─── Rule 3: Large dark traced background ────────────────────────────
MEDIUM…es/ui/scripts/__tests__/svgo-remove-background.test.ts285// ─── Rule 4: Large white background path ─────────────────────────────
MEDIUM…es/ui/scripts/__tests__/svgo-remove-background.test.ts301// ─── detectOnly mode ─────────────────────────────────────────────────
MEDIUM…es/ui/scripts/__tests__/svgo-remove-background.test.ts341// ─── Element collection: skip mask/clipPath/defs ─────────────────────
MEDIUM…es/ui/scripts/__tests__/svgo-remove-background.test.ts374// ─── Preserves non-background elements ───────────────────────────────
MEDIUM…ponents/composites/entity-selector/entity-selector.tsx97 // ── Keyboard navigation ────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/utils/normalize.ts9// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/utils/normalize.ts11// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/utils/normalize.ts103// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/utils/normalize.ts105// ─────────────────────────────────────────────────────────────────────────────
MEDIUM…kages/provider-registry/src/schemas/provider-models.ts26// ═══════════════════════════════════════════════════════════════════════════════
MEDIUM…kages/provider-registry/src/schemas/provider-models.ts28// ═══════════════════════════════════════════════════════════════════════════════
MEDIUMpackages/provider-registry/src/schemas/provider.ts15// ═══════════════════════════════════════════════════════════════════════════════
MEDIUMpackages/provider-registry/src/schemas/provider.ts17// ═══════════════════════════════════════════════════════════════════════════════
MEDIUMpackages/provider-registry/src/schemas/provider.ts40// ═══════════════════════════════════════════════════════════════════════════════
MEDIUMpackages/provider-registry/src/schemas/provider.ts46// ═══════════════════════════════════════════════════════════════════════════════
MEDIUMpackages/provider-registry/src/schemas/provider.ts171// ═══════════════════════════════════════════════════════════════════════════════
MEDIUMpackages/provider-registry/src/schemas/provider.ts173// ═══════════════════════════════════════════════════════════════════════════════
MEDIUMpackages/provider-registry/src/schemas/enums.ts11// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/schemas/enums.ts13// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/schemas/enums.ts34// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/schemas/enums.ts36// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/schemas/enums.ts59// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/schemas/enums.ts61// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/schemas/enums.ts72// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/schemas/enums.ts74// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/schemas/enums.ts83// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/schemas/enums.ts85// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/schemas/enums.ts98// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/schemas/enums.ts100// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/provider-registry/src/schemas/enums.ts126// ─────────────────────────────────────────────────────────────────────────────
241 more matches not shown…
Hyper-Verbose Identifiers380 hits · 396 pts
SeverityFileLineSnippet
LOWdocs/references/ai-core-architecture.md397async function transformMessagesAndFetch(
LOW…r-temp/tools/data-classify/scripts/check-duplicates.js6function checkDuplicatesAndChildren() {
LOWscripts/skills-common.ts53export function buildAgentsSkillsGitignore(skillNames: string[]): string {
LOWscripts/skills-common.ts71export function buildClaudeSkillsGitignore(skillNames: string[]): string {
LOWscripts/update-app-upgrade-config.ts485async function ensureReleaseAvailability(releaseInfo: ReleaseInfo): Promise<ReleaseAvailability> {
LOWscripts/skills-check.ts65function checkTrackedFilesAgainstWhitelist(skillNames: string[], errors: string[]) {
LOWscripts/check-legacy-css-vars.ts137export function findLegacyVarHitsInContent(content: string, filePath: string): Finding[] {
LOWscripts/check-pr-style-reminders.ts79function isCanonicalClassCheckFile(filePath: string): boolean {
LOWscripts/check-pr-style-reminders.ts95function getChangedCanonicalClassFiles(baseRef: string, headRef: string): string[] {
LOWscripts/check-pr-style-reminders.ts105export function parseAddedLineNumbersFromDiff(diff: string): Set<number> {
LOWscripts/check-pr-style-reminders.ts155export function parseAddedLegacyVarFindingsFromDiff(diff: string, filePath: string): PullRequestLegacyFinding[] {
LOWscripts/check-pr-style-reminders.ts204export function checkPullRequestLegacyVars({
LOWscripts/check-pr-style-reminders.ts216export async function checkPullRequestTailwindCanonicalClasses({
LOWscripts/check-pr-style-reminders.ts240export function buildPullRequestStyleRemindersComment(
LOWscripts/check-pr-style-reminders.ts261function buildLegacyVarsCommentSection(findings: PullRequestLegacyFinding[]): string {
LOWscripts/check-pr-style-reminders.ts301function buildCanonicalClassesCommentSection(findings: PullRequestTailwindCanonicalFinding[]): string {
LOWscripts/fix-tailwind-canonical-classes.ts97function canonicalizeCssVariableToken(originalToken: string, canonicalToken: string): string {
LOWscripts/fix-tailwind-canonical-classes.ts122function collectCanonicalClassFindings(
LOWscripts/fix-tailwind-canonical-classes.ts196export function findTailwindCanonicalClassFindingsInContent(
LOWscripts/update-languages.ts48function generateLanguagesFileContent(languages: Record<string, LanguageData>): string {
LOWpackages/extension-table-plus/src/cell/table-cell.ts31function createCellSelectionDecorationSet(doc: ProseMirrorNode, selection: Selection): DecorationSet {
LOW…ries/components/composites/composite-input.stories.tsx433 render: function SelectVariantInteractiveExample() {
LOW…ries/components/composites/composite-input.stories.tsx778 render: function EmailVariantInteractiveExample() {
LOW…ries/components/composites/composite-input.stories.tsx978 render: function SubscribeNewsletterExample() {
LOW…ui/stories/components/composites/menu-list.stories.tsx210function SmallMenuWithGroupsExample() {
LOW…ui/stories/components/composites/menu-list.stories.tsx270function SettingsSubmenuActiveBoldExample() {
LOW…ges/ui/stories/components/primitives/input.stories.tsx316 render: function RealTimeValidationExample() {
LOW…es/ui/stories/components/primitives/switch.stories.tsx520 render: function InteractiveLoadingExample() {
LOW…/ui/stories/components/primitives/textarea.stories.tsx97 render: function WithCharacterCountExample() {
LOW…/ui/stories/components/primitives/combobox.stories.tsx497 render: function TriggerSearchFontListExample() {
LOW…/ui/stories/components/primitives/combobox.stories.tsx535 render: function CustomFilterOptionExample() {
LOW…s/components/primitives/description-switch.stories.tsx271 render: function NotificationSettingsExample() {
LOW…s/components/primitives/description-switch.stories.tsx384 render: function ApplicationSettingsExample() {
LOW…s/components/primitives/description-switch.stories.tsx557 render: function ComplexSettingsPanelExample() {
LOWpackages/ui/scripts/generate-icons.ts149function collectStaticSvgReferences(jsCode: string): Set<string> {
LOWpackages/ui/scripts/svgo-remove-background.ts61export function createRemoveBackgroundPlugin(options: RemoveBackgroundOptions = {}) {
LOWpackages/ui/scripts/svgo-convert-to-mono.ts78export function createConvertToMonoPlugin(options: ConvertToMonoOptions = {}) {
LOWpackages/ui/src/components/primitives/calendar.tsx128function handleCalendarDropdownChange(value: string | number, onChange: DropdownProps['onChange']) {
LOWpackages/ui/src/components/icons/registry.ts212export function resolveModelToProviderIcon(modelId: string): CompoundIcon | undefined {
LOWpackages/provider-registry/src/registry-utils.ts60export function buildRuntimeEndpointConfigs(
LOWpackages/provider-registry/src/registry-loader.ts38export function readProviderModelRegistry(jsonPath: string): { version: string; overrides: ProviderModelOverride[] } {
LOWpackages/provider-registry/src/utils/normalize.ts179export function normalizeVersionSeparators(modelId: string): string {
LOWpackages/aiCore/test_utils/helpers/common.ts14export function createTestStreamingProvider(chunks: any[]) {
LOWpackages/aiCore/test_utils/helpers/common.ts62export function createDelayedAbortController(delayMs: number): AbortController {
LOWpackages/aiCore/test_utils/helpers/common.ts228export function createRateLimitedProvider(limitPerSecond: number) {
LOWpackages/aiCore/src/core/runtime/index.ts108export async function createOpenAICompatibleExecutor(
LOWsrc/renderer/databases/upgrades.ts83function mapOldStatusToBlockStatus(oldStatus: OldMessage['status']): MessageBlockStatus {
LOWsrc/renderer/databases/upgrades.ts97function mapOldStatusToNewMessageStatus(oldStatus: OldMessage['status']): NewMessage['status'] {
LOWsrc/renderer/types/mcp.ts259export function safeValidateMcpServerConfig(config: unknown) {
LOWsrc/renderer/config/models/reasoning.ts328export function isSupportedThinkingTokenModel(model?: Model): boolean {
LOWsrc/renderer/config/models/reasoning.ts335export function isSupportedReasoningEffortModel(model?: Model): boolean {
LOWsrc/renderer/config/models/reasoning.ts348export function isSupportedReasoningEffortGrokModel(model?: Model): boolean {
LOWsrc/renderer/config/models/reasoning.ts505export function isSupportedThinkingTokenQwenModel(model?: Model): boolean {
LOWsrc/renderer/config/models/reasoning.ts569export function isDoubaoThinkingAutoModel(model: Model): boolean {
LOWsrc/renderer/config/models/reasoning.ts584export function isSupportedThinkingTokenDoubaoModel(model?: Model): boolean {
LOWsrc/renderer/config/models/websearch.ts127export function isMandatoryWebSearchModel(model: Model): boolean {
LOWsrc/renderer/config/models/websearch.ts147export function isOpenRouterBuiltInWebSearchModel(model: Model): boolean {
LOWsrc/renderer/config/models/websearch.ts163export function isOpenAIWebSearchChatCompletionOnlyModel(model: Model): boolean {
LOWsrc/renderer/config/models/utils.ts32export function isSupportFlexServiceTierModel(model: Model): boolean {
LOWsrc/renderer/config/models/utils.ts42export function isSupportedFlexServiceTier(model: Model): boolean {
320 more matches not shown…
Over-Commented Block125 hits · 122 pts
SeverityFileLineSnippet
LOWdev-app-update.yml1# provider: generic
LOWtests/main.setup.ts161 clear: vi.fn(),
LOWdocs/references/file/file-manager-architecture.md961Orphan sweep is **user-triggered via the `File_RunSweep` IPC channel** — there is no startup auto-run. The cleanup UI is
LOW…kages/ui/stories/components/primitives/kbd.stories.tsx221// <Tooltip>
LOW…kages/ui/stories/components/primitives/kbd.stories.tsx241// <TooltipContent>
LOWsrc/renderer/types/index.ts521 system = 'system'
LOWsrc/renderer/utils/style.ts201// @media (max-width: ${breakpoints[key]}px) {
LOWsrc/renderer/utils/messageUtils/filters.ts201// It depends on message.askId which should still exist on the Message type.
LOWsrc/renderer/utils/__tests__/markdown.test.ts161 //
LOWsrc/renderer/components/MiniApp/MiniAppTabsPool.tsx41
LOW…c/renderer/aiCore/plugins/searchOrchestrationPlugin.ts41 return acc + part.text + '\n'
LOWsrc/renderer/aiCore/utils/options.ts581 | GoogleGenerativeAIProviderOptions
LOWsrc/renderer/hooks/useSettings.ts21
LOWsrc/renderer/hooks/useSettings.ts41 // }
LOWsrc/renderer/hooks/useSettings.ts61 // dispatch(_setTestPlan(isTestPlan))
LOWsrc/renderer/hooks/useSettings.ts81 // },
LOWsrc/renderer/hooks/useSettings.ts121// export const useEnableDeveloperMode = () => {
LOWsrc/renderer/hooks/__tests__/useMiniAppPopup.test.ts561 // Regression for https://github.com/CherryHQ/cherry-studio/pull/14049 —
LOWsrc/renderer/data/hooks/__tests__/useDataApi.test.ts501 await new Promise((r) => setTimeout(r, 30))
LOW…derer/pages/settings/McpSettings/AddMcpServerModal.tsx61// Example JSON (sse):
LOWsrc/renderer/pages/home/Messages/Tools/MessageTool.tsx61// font-size: 14px;
LOW…r/pages/home/Messages/Tools/MessageAgentTools/types.ts441// These types are all just aliases for string, duplicating BashToolOutput.
LOW…ages/mini-apps/MiniAppSettings/useMiniAppVisibility.ts41 */
LOWsrc/renderer/pages/paintings/config/aihubmixConfig.tsx261 // {
LOWsrc/renderer/pages/notes/NotesPage.tsx181 )
LOWsrc/renderer/services/ApiService.ts641// const provider = getProviderByModel(model)
LOWsrc/renderer/store/settings.ts461 name: 'settings',
LOWsrc/renderer/store/settings.ts481 // },
LOWsrc/renderer/store/settings.ts501 // state.showPrompt = action.payload
LOWsrc/renderer/store/settings.ts521 // setTrayOnClose: (state, action: PayloadAction<boolean>) => {
LOWsrc/renderer/store/settings.ts541 // },
LOWsrc/renderer/store/settings.ts561 // state.testChannel = action.payload
LOWsrc/renderer/store/settings.ts581 // setWebdavPath: (state, action: PayloadAction<string>) => {
LOWsrc/renderer/store/settings.ts601 // state.codeExecution.enabled = action.payload.enabled
LOWsrc/renderer/store/settings.ts621 // }
LOWsrc/renderer/store/settings.ts641 // setCodeViewer: (state, action: PayloadAction<{ themeLight?: string; themeDark?: string }>) => {
LOWsrc/renderer/store/settings.ts661 // setCodeFancyBlock: (state, action: PayloadAction<boolean>) => {
LOWsrc/renderer/store/settings.ts681 // },
LOWsrc/renderer/store/settings.ts701 // if (action.payload.visible) {
LOWsrc/renderer/store/settings.ts721 // state.multiModelMessageStyle = action.payload
LOWsrc/renderer/store/settings.ts741 // setShowModelNameInMarkdown: (state, action: PayloadAction<boolean>) => {
LOWsrc/renderer/store/settings.ts761 // },
LOWsrc/renderer/store/settings.ts781 // state.defaultObsidianVault = action.payload
LOWsrc/renderer/store/settings.ts801 // setMaxKeepAliveMinapps: (state, action: PayloadAction<number>) => {
LOWsrc/renderer/store/settings.ts821 // },
LOWsrc/renderer/store/settings.ts861 // },
LOWsrc/renderer/store/settings.ts921 // setTargetLanguage,
LOWsrc/renderer/store/settings.ts941 // setAssistantIconType,
LOWsrc/renderer/store/settings.ts961 // setCodeShowLineNumbers,
LOWsrc/renderer/store/settings.ts981 // setClickTrayToShowQuickAssistant,
LOWsrc/renderer/store/settings.ts1001 // setMessageNavigation,
LOWsrc/renderer/store/settings.ts1021 // setUseSystemTitleBar,
LOWsrc/renderer/store/runtime.ts21// export interface ChatState {
LOWsrc/renderer/store/runtime.ts41
LOWsrc/renderer/store/runtime.ts81const initialState: RuntimeState = {
LOWsrc/renderer/store/runtime.ts101 // ignore: false
LOWsrc/renderer/store/runtime.ts121 loadingMap: {},
LOWsrc/renderer/store/runtime.ts141 // },
LOWsrc/renderer/store/runtime.ts161 // // Chat related actions
LOWsrc/renderer/store/runtime.ts181 // },
65 more matches not shown…
Hallucination Indicators11 hits · 110 pts
SeverityFileLineSnippet
CRITICALsrc/renderer/services/ocr/clients/OcrBaseApiClient.ts23 const keys = this.provider.config.api.apiKey.split(',').map((key) => key.trim())
CRITICALsrc/main/core/window/__tests__/WindowManager.test.ts560 const reusedCalls = win.webContents.send.mock.calls.filter((c) => c[0] === 'window-manager:reused')
CRITICALsrc/main/core/window/__tests__/WindowManager.test.ts1452 const reusedCalls = win.webContents.send.mock.calls.filter((call) => call[0] === 'window-manager:reused')
CRITICALsrc/main/core/window/__tests__/WindowManager.test.ts1478 const reusedCalls = win.webContents.send.mock.calls.filter((call) => call[0] === 'window-manager:reused')
CRITICAL…nts/services/channels/adapters/feishu/FeishuAdapter.ts282 await this.client.cardkit.v1.card.settings({
CRITICAL…nts/services/channels/adapters/feishu/FeishuAdapter.ts295 await this.client.cardkit.v1.card.update({
CRITICAL…nts/services/channels/adapters/feishu/FeishuAdapter.ts337 await this.client.cardkit.v1.card.settings({
CRITICAL…nts/services/channels/adapters/feishu/FeishuAdapter.ts353 await this.client.cardkit.v1.card.update({
CRITICAL…nts/services/channels/adapters/feishu/FeishuAdapter.ts398 await this.client.cardkit.v1.card.create({
CRITICAL…nts/services/channels/adapters/feishu/FeishuAdapter.ts447 await this.client.cardkit.v1.cardElement.content({
CRITICALsrc/main/services/__tests__/MainWindowService.test.ts165 const call = win.webContents.on.mock.calls.find(([event]) => event === 'render-process-gone')
Verbosity Indicators51 hits · 93 pts
SeverityFileLineSnippet
LOWpackages/vectorstores/libsql/src/LibSQLVectorStore.ts691 // Step 1: Get vector search results
LOWpackages/vectorstores/libsql/src/LibSQLVectorStore.ts699 // Step 2: Get BM25 results
LOWpackages/vectorstores/libsql/src/LibSQLVectorStore.ts707 // Step 3: Combine results using RRF
LOW.github/workflows/sync-to-gitcode.yml254 # Step 1: Create release
LOW.github/workflows/sync-to-gitcode.yml285 # Step 2: Upload files to release
LOWsrc/renderer/components/Popups/LanTransferPopup/hook.ts169 // Step 0: Ensure handshake (connect if needed)
LOWsrc/renderer/components/Popups/LanTransferPopup/hook.ts186 // Step 1: Create temporary backup
LOWsrc/renderer/components/Popups/LanTransferPopup/hook.ts195 // Step 2: Set transferring state
LOWsrc/renderer/components/Popups/LanTransferPopup/hook.ts201 // Step 3: Send file
LOWsrc/renderer/components/Popups/LanTransferPopup/hook.ts224 // Step 4: Clean up temp file
LOWsrc/main/core/preboot/userDataLocation.ts119 // Step 1: process pending relocation, if any.
LOWsrc/main/core/preboot/userDataLocation.ts136 // Step 2: BootConfig as single source of truth.
LOWsrc/main/core/preboot/userDataLocation.ts145 // Step 3: portable fallback.
LOWsrc/main/core/preboot/userDataLocation.ts154 // Step 4: Electron default.
LOWsrc/main/core/preboot/v2MigrationGate.ts59 // Step 0: Resolve all migration-critical paths, including v1 legacy
LOW…/main/knowledge/preprocess/MineruPreprocessProvider.ts202 // Step 1: obtain the upload URL
LOW…/main/knowledge/preprocess/MineruPreprocessProvider.ts204 // Step 2: upload the file to the obtained URL
LOWsrc/main/data/migration/v2/migrators/ChatMigrator.ts226 // Step 1: Verify export files exist
LOWsrc/main/data/migration/v2/migrators/ChatMigrator.ts242 // Step 2: Load all blocks into lookup map
LOWsrc/main/data/migration/v2/migrators/ChatMigrator.ts251 // Step 3: Load assistant data for model lookup
LOWsrc/main/data/migration/v2/migrators/ChatMigrator.ts295 // Step 4: Count topics and estimate messages
LOWsrc/main/data/migration/v2/migrators/ChatMigrator.ts309 // Step 5: Validate sample data
LOW…ain/data/migration/v2/migrators/PreferencesMigrator.ts86 // Step 1: Detect conflicts between simple and complex mappings (strict mode)
LOW…ain/data/migration/v2/migrators/PreferencesMigrator.ts101 // Step 2: Process simple mappings
LOW…ain/data/migration/v2/migrators/PreferencesMigrator.ts142 // Step 3: Process complex mappings
LOWsrc/main/data/services/MessageService.ts534 // Step 1: Verify topic exists and fetch its current state.
LOWsrc/main/data/services/MessageService.ts542 // Step 2: Resolve parentId based on the three possible input states:
LOWsrc/main/data/services/MessageService.ts612 // Step 3: Insert the message using the resolved parentId.
LOWsrc/main/services/BackupManager.ts197 // Step 2: Copy IndexedDB and Local Storage directories
LOWsrc/main/services/BackupManager.ts220 // Step 3: Write metadata.json
LOWsrc/main/services/BackupManager.ts225 // Step 4: Copy Data directory (if not skipped)
LOWsrc/main/services/BackupManager.ts246 // Step 5: Create ZIP archive
LOWsrc/main/services/lanTransfer/LanTransferService.ts578 // Step 1: Send file_start
LOWsrc/main/services/lanTransfer/LanTransferService.ts581 // Step 2: Wait for file_start_ack
LOWsrc/main/services/lanTransfer/LanTransferService.ts588 // Step 3: Stream file chunks
LOWsrc/main/services/lanTransfer/LanTransferService.ts593 // Step 4: Send file_end
LOWsrc/main/services/lanTransfer/LanTransferService.ts596 // Step 5: Wait for file_complete
LOW…vices/agents/services/security/ExternalContentGuard.ts80 // Step 1: Normalize angle brackets to prevent boundary spoofing
LOW…vices/agents/services/security/ExternalContentGuard.ts83 // Step 2: Strip invisible Unicode characters
LOW…vices/agents/services/security/ExternalContentGuard.ts86 // Step 3: Detect suspicious patterns (advisory)
LOW…vices/agents/services/security/ExternalContentGuard.ts96 // Step 4: Generate random boundary ID (8 bytes hex = 16 chars)
LOW…vices/agents/services/security/ExternalContentGuard.ts99 // Step 5: Build security-wrapped message
LOWsrc/main/services/agents/services/claudecode/index.ts875 // Step 1: Resize if dimensions exceed limit
LOWsrc/main/services/agents/services/claudecode/index.ts890 // Step 2: If still over 5MB, progressively scale down
LOW…ices/channels/adapters/feishu/FeishuAppRegistration.ts58 // Step 1: init — check supported auth methods
LOW…ices/channels/adapters/feishu/FeishuAppRegistration.ts62 // Step 2: begin — start device flow
LOW…ts/services/channels/adapters/wechat/WeChatProtocol.ts290 // Step 1: get upload URL
LOW…ts/services/channels/adapters/wechat/WeChatProtocol.ts311 // Step 2: encrypt and upload
LOWsrc/main/services/__tests__/AppUpdaterService.test.ts1002 // Step 1: 1.6.3 -> 1.7.5
LOWsrc/main/services/__tests__/AppUpdaterService.test.ts1007 // Step 2: 1.7.5 -> 2.0.0
LOWsrc/main/services/__tests__/AppUpdaterService.test.ts1012 // Step 3: 2.0.0 -> 2.1.6
Magic Placeholder Names5 hits · 25 pts
SeverityFileLineSnippet
HIGHscripts/auto-translate-i18n.ts75 console.log('💡 Edit the script and replace "your-api-key-here" with your real API key')
HIGHpackages/aiCore/README.md109 apiKey: 'your-api-key'
HIGHpackages/aiCore/README.md130 apiKey: 'your-api-key'
HIGH…s/ToolSettings/ApiServerSettings/ApiServerSettings.tsx209 value={`Authorization: Bearer ${apiKey || 'your-api-key'}`}
HIGHsrc/renderer/store/mcp.ts164 BRAVE_API_KEY: 'YOUR_API_KEY'
Fake / Example Data13 hits · 13 pts
SeverityFileLineSnippet
LOW…ui/stories/components/composites/scrollbar.stories.tsx24 Line {i + 1}: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
LOW…ui/stories/components/composites/scrollbar.stories.tsx24 Line {i + 1}: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
LOW…ries/components/composites/composite-input.stories.tsx1173 placeholder="John Doe"
LOW…ges/ui/stories/components/primitives/input.stories.tsx283 <Input type="email" placeholder="email@example.com" defaultValue="user@example.com" />
LOW…ges/ui/stories/components/primitives/input.stories.tsx573 <Input id="profile-name" placeholder="John Doe" />
LOW…es/ui/stories/components/primitives/drawer.stories.tsx154 defaultValue="John Doe"
LOW…es/ui/stories/components/primitives/drawer.stories.tsx195 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et
LOW…es/ui/stories/components/primitives/drawer.stories.tsx195 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et
LOW…es/ui/stories/components/primitives/dialog.stories.tsx124 defaultValue="John Doe"
LOW…es/ui/stories/components/primitives/dialog.stories.tsx192 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et
LOW…es/ui/stories/components/primitives/dialog.stories.tsx192 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et
LOW…/stories/components/primitives/input-group.stories.tsx516 <InputGroupInput type="email" placeholder="email@example.com" defaultValue="user@example.com" />
LOW…/ui/stories/components/primitives/combobox.stories.tsx65 label: 'John Doe',
AI Slop Vocabulary4 hits · 12 pts
SeverityFileLineSnippet
MEDIUMsrc/main/core/preboot/__tests__/chromiumFlags.test.ts81 // each test is the robust pattern.
MEDIUMsrc/main/core/preboot/__tests__/v2MigrationGate.test.ts144 // is the robust pattern, no explicit doUnmock needed.
MEDIUM…c/main/core/preboot/__tests__/userDataLocation.test.ts152 // The robust pattern is: resetModules() in beforeEach + fresh
MEDIUMsrc/main/services/file/tree/search.ts97 // checkout. This is robust to: production bundle (`out/main/…`), source
Excessive Try-Catch Wrapping6 hits · 10 pts
SeverityFileLineSnippet
MEDIUM…es/skills/skill-creator/eval-viewer/generate_review.py409 print(f"Error: {workspace} is not a directory", file=sys.stderr)
LOWresources/skills/skill-creator/scripts/run_eval.py225 except Exception as e:
MEDIUMresources/skills/skill-creator/scripts/run_eval.py278 print(f"Error: No SKILL.md found at {skill_path}", file=sys.stderr)
LOWresources/skills/skill-creator/scripts/package_skill.py106 except Exception as e:
MEDIUM…es/skills/skill-creator/scripts/improve_description.py206 print(f"Error: No SKILL.md found at {skill_path}", file=sys.stderr)
MEDIUMresources/skills/skill-creator/scripts/run_loop.py265 print(f"Error: No SKILL.md found at {skill_path}", file=sys.stderr)
Deep Nesting9 hits · 9 pts
SeverityFileLineSnippet
LOW…es/skills/skill-creator/eval-viewer/generate_review.py85
LOW…es/skills/skill-creator/eval-viewer/generate_review.py149
LOW…es/skills/skill-creator/eval-viewer/generate_review.py288
LOWresources/skills/skill-creator/scripts/run_eval.py36
LOWresources/skills/skill-creator/scripts/package_skill.py42
LOW…es/skills/skill-creator/scripts/improve_description.py51
LOW…es/skills/skill-creator/scripts/aggregate_benchmark.py67
LOW…ources/skills/skill-creator/scripts/generate_report.py16
LOWresources/skills/skill-creator/scripts/utils.py7
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippet
HIGH…emp/tools/data-classify/scripts/validate-generation.js6 * Validates the quality and correctness of auto-generated code files.
Cross-Language Confusion (JS/TS)1 hit · 5 pts
SeverityFileLineSnippet
HIGHsrc/main/mcpServers/python.ts44print('python code here')`,
Slop Phrases2 hits · 3 pts
SeverityFileLineSnippet
MEDIUM…nts/composites/horizontal-scroll-container.stories.tsx121 <p className="text-sm text-gray-600">This is a sample card content for demonstration purposes.</p>
LOW.github/ISSUE_TEMPLATE/2_question.yml60 placeholder: "For example: use case, solutions you've tried, etc. Don't forget to include relevant screenshots/rec
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippet
LOW.github/workflows/auto-i18n.yml65 # Check if there are any uncommitted changes
LOW.github/workflows/github-issue-tracker.yml33 # Check if time is between 00:00 and 08:30
Unused Imports1 hit · 1 pts
SeverityFileLineSnippet
LOW…sources/skills/skill-creator/scripts/quick_validate.py7