Joplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS.
This report summarizes scanner evidence for laurent22/joplin, a TypeScript project with 56,953 GitHub stars. SynthScan examined 1,158,289 lines of code across 5991 source files, recording 850 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 1.2 (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? 728 finding(s).
Are imports declared and package/API names verified? 58 finding(s).
Are wrappers, guards, and repeated structures necessary? 204 finding(s).
Which changes need focused human review? 850 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 850 distinct pattern matches across 16 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 | docker-compose.transcribe.yml | 1 | # Standalone docker-compose for Joplin Transcribe | COMMENT |
| LOW | lint-staged.config.js | 1 | module.exports = { | COMMENT |
| LOW | docker-compose.server.yml | 1 | # This is a sample docker-compose file that can be used to run Joplin Server | COMMENT |
| LOW | docker-compose.db-dev.yml | 1 | # For development this compose file starts the database only. The app can then | COMMENT |
| LOW | .yarn/joplin-empty-package/index.js | 1 | // Empty stub. Used via the root `resolutions` map to neutralise packages | COMMENT |
| LOW | packages/app-clipper/popup/src/bridge.js | 141 | // | COMMENT |
| LOW | packages/app-clipper/popup/src/bridge.js | 401 | // | COMMENT |
| LOW | packages/app-clipper/content_scripts/index.js | 301 | // Because cleanUpElement is going to modify the DOM and remove elements we don't want to work | COMMENT |
| LOW | …ckages/app-clipper/content_scripts/setUpEnvironment.js | 1 | // Our TypeScript config generates files that use CommonJS `export`s, which | COMMENT |
| LOW | packages/renderer/MdToHtml.ts | 581 | // | COMMENT |
| LOW | packages/renderer/jest.config.js | 1 | // For a detailed explanation regarding each configuration property, visit: | COMMENT |
| LOW | packages/renderer/jest.config.js | 21 | // collectCoverage: false, | COMMENT |
| LOW | packages/renderer/jest.config.js | 41 | // "lcov", | COMMENT |
| LOW | packages/renderer/jest.config.js | 81 | // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a | COMMENT |
| LOW | packages/renderer/jest.config.js | 101 | COMMENT | |
| LOW | packages/renderer/jest.config.js | 121 | COMMENT | |
| LOW | packages/renderer/jest.config.js | 161 | COMMENT | |
| LOW | packages/renderer/jest.config.js | 181 | COMMENT | |
| LOW | packages/renderer/InMemoryCache.ts | 1 | // There are plenty of packages for in-memory caching but each have their | COMMENT |
| LOW | packages/renderer/htmlUtils.ts | 241 | // anyway. | COMMENT |
| LOW | packages/renderer/htmlUtils.ts | 301 | // For compatibility reasons, support rewriting name= as id=. | COMMENT |
| LOW | packages/renderer/MdToHtml/rules/mermaid_render.js | 1 | /* global mermaid */ | COMMENT |
| LOW | packages/renderer/MdToHtml/rules/katex_mhchem.js | 121 | // | COMMENT |
| LOW | packages/renderer/MdToHtml/rules/katex_mhchem.js | 141 | // buffer.rdt == arrow, script above, type | COMMENT |
| LOW | packages/renderer/MdToHtml/rules/katex_mhchem.js | 201 | // | COMMENT |
| LOW | packages/renderer/MdToHtml/rules/katex.ts | 61 | COMMENT | |
| LOW | packages/renderer/MdToHtml/rules/katex.ts | 81 | // \pdv: {tokens: Array(15), numArgs: 2} | COMMENT |
| LOW | packages/renderer/MdToHtml/rules/sanitize_html.ts | 21 | } | COMMENT |
| LOW | packages/renderer/assets/mermaid/mermaid_render.js | 1 | /* global mermaid */ | COMMENT |
| LOW | packages/tools/build-translation.ts | 141 | // `(0,locale1._)('some string')`, which cannot be detected by xgettext. | COMMENT |
| LOW | packages/tools/compileSass.js | 1 | const sass = require('sass'); | COMMENT |
| LOW | packages/tools/compileSass.js | 21 | // const mapString = results.map(r => r.map.toString()).join('\n'); | COMMENT |
| LOW | packages/tools/website/build.ts | 81 | // if (tocHtml_[locale.lang]) return tocHtml_[locale.lang]; | COMMENT |
| LOW | packages/tools/website/build.ts | 101 | // { | COMMENT |
| LOW | packages/tools/website/build.ts | 221 | // function makeHomePageMd(readmePath: string) { | COMMENT |
| LOW | packages/tools/website/build.ts | 241 | md += `\n\n* * *\n\n[<i class="fab fa-discourse"></i> Discuss on the forum](${discussLink})`; | COMMENT |
| LOW | packages/tools/website/build.ts | 321 | const pathPrefix = localeName !== 'en_GB' ? `/${locale.pathPrefix}` : ''; | COMMENT |
| LOW | packages/tools/website/build.ts | 341 | // targetDocDir = `${docDir}/${locale.pathPrefix}`; | COMMENT |
| LOW | packages/tools/website/build.ts | 581 | showImproveThisDoc: !isNews, | COMMENT |
| LOW | packages/tools/website/build.ts | 601 | // openGraph: { | COMMENT |
| LOW | packages/tools/website/utils/applyTranslations.ts | 41 | }; | COMMENT |
| LOW | packages/turndown-plugin-gfm/src/tables.js | 81 | }, | COMMENT |
| LOW | packages/fork-uslug/lib/uslug.ts | 1 | // Based on @joplin/fork-uslug | COMMENT |
| LOW | packages/plugins/ToggleSidebars/webpack.config.js | 221 | if (!configName) throw new Error('A config file must be specified via the --joplin-plugin-config flag'); | COMMENT |
| LOW | packages/app-desktop/InteropServiceHelper.ts | 81 | return new Promise<Buffer | null>((resolve, reject) => { | COMMENT |
| LOW | packages/app-desktop/InteropServiceHelper.ts | 121 | // takes the `htmlFile` variable as input. | COMMENT |
| LOW | packages/app-desktop/app.ts | 261 | // console.info(misspelledWord, dictionarySuggestions); | COMMENT |
| LOW | packages/app-desktop/app.ts | 861 | // rootFolderCount: 20, | COMMENT |
| LOW | packages/app-desktop/app.ts | 881 | // this.dispatch({ | COMMENT |
| LOW | packages/app-desktop/jest.config.js | 1 | // For a detailed explanation regarding each configuration property, visit: | COMMENT |
| LOW | packages/app-desktop/jest.config.js | 21 | // collectCoverage: false, | COMMENT |
| LOW | packages/app-desktop/jest.config.js | 41 | // coverageThreshold: undefined, | COMMENT |
| LOW | packages/app-desktop/jest.config.js | 61 | // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will u | COMMENT |
| LOW | packages/app-desktop/jest.config.js | 81 | // notify: false, | COMMENT |
| LOW | packages/app-desktop/jest.config.js | 101 | // A path to a custom resolver | COMMENT |
| LOW | packages/app-desktop/jest.config.js | 141 | // The glob patterns Jest uses to detect test files | COMMENT |
| LOW | packages/app-desktop/bridge.ts | 261 | // We wait to give the "beforeSend" event handler time to process the crash dump and write | COMMENT |
| LOW | packages/app-desktop/bridge.ts | 301 | public altInstanceId() { | COMMENT |
| LOW | packages/app-desktop/global.d.ts | 1 | // Declare codemirror module so that we can import it using the import syntax. | COMMENT |
| LOW | packages/app-desktop/runForTesting.sh | 1 | #!/bin/bash | COMMENT |
| 300 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | Joplin_install_and_update.sh | 154 | #----------------------------------------------------- | COMMENT |
| MEDIUM⚡ | Joplin_install_and_update.sh | 156 | #----------------------------------------------------- | COMMENT |
| MEDIUM⚡ | Joplin_install_and_update.sh | 159 | #----------------------------------------------------- | COMMENT |
| MEDIUM⚡ | Joplin_install_and_update.sh | 199 | #----------------------------------------------------- | COMMENT |
| MEDIUM⚡ | Joplin_install_and_update.sh | 201 | #----------------------------------------------------- | COMMENT |
| MEDIUM⚡ | Joplin_install_and_update.sh | 227 | #----------------------------------------------------- | COMMENT |
| MEDIUM⚡ | Joplin_install_and_update.sh | 233 | #----------------------------------------------------- | COMMENT |
| MEDIUM⚡ | Joplin_install_and_update.sh | 309 | #----------------------------------------------------- | COMMENT |
| MEDIUM⚡ | Joplin_install_and_update.sh | 311 | #----------------------------------------------------- | COMMENT |
| MEDIUM⚡ | Joplin_install_and_update.sh | 319 | #----------------------------------------------------- | COMMENT |
| MEDIUM⚡ | Joplin_install_and_update.sh | 325 | #----------------------------------------------------- | COMMENT |
| MEDIUM | Joplin_install_and_update.sh | 16 | #----------------------------------------------------- | COMMENT |
| MEDIUM | Joplin_install_and_update.sh | 18 | #----------------------------------------------------- | COMMENT |
| MEDIUM | Joplin_install_and_update.sh | 109 | #----------------------------------------------------- | COMMENT |
| MEDIUM | Joplin_install_and_update.sh | 111 | #----------------------------------------------------- | COMMENT |
| MEDIUM | Joplin_install_and_update.sh | 123 | #----------------------------------------------------- | COMMENT |
| MEDIUM | Joplin_install_and_update.sh | 125 | #----------------------------------------------------- | COMMENT |
| MEDIUM | Joplin_install_and_update.sh | 174 | #----------------------------------------------------- | COMMENT |
| MEDIUM | Joplin_install_and_update.sh | 182 | #----------------------------------------------------- | COMMENT |
| MEDIUM | Joplin_install_and_update.sh | 249 | #----------------------------------------------------- | COMMENT |
| MEDIUM | packages/tools/release-website.sh | 5 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | packages/tools/release-website.sh | 7 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | packages/tools/release-website.sh | 25 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | packages/tools/release-website.sh | 28 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | packages/tools/release-website.sh | 62 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | packages/tools/release-website.sh | 64 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | packages/app-desktop/runForTesting.sh | 8 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/app-desktop/runForTesting.sh | 11 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/app-desktop/runForTesting.sh | 15 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/app-desktop/runForTesting.sh | 17 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/app-desktop/runForTesting.sh | 21 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/app-desktop/runForTesting.sh | 23 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/app-desktop/runForTesting.sh | 29 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/app-desktop/runForTesting.sh | 31 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/app-desktop/runForTesting.sh | 36 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/app-desktop/runForTesting.sh | 38 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/app-desktop/runForTesting.sh | 42 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/app-desktop/runForTesting.sh | 44 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/app-desktop/runForTesting.sh | 48 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/app-desktop/runForTesting.sh | 50 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .github/scripts/run_ci.sh | 291 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | .github/scripts/run_ci.sh | 296 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | .github/scripts/run_ci.sh | 305 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | .github/scripts/run_ci.sh | 312 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 3 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 5 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 79 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 81 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 110 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 112 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 125 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 127 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 182 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 185 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 203 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 207 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 219 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 223 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 239 | # ============================================================================= | COMMENT |
| MEDIUM | .github/scripts/run_ci.sh | 243 | # ============================================================================= | COMMENT |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/tools/release-android.ts | 68 | function increaseGradleVersionCode(content: string) { | CODE |
| LOW | packages/tools/release-android.ts | 80 | function increaseGradleVersionName(content: string) { | CODE |
| LOW | packages/tools/build-translation.ts | 330 | function translationStatusToMdTable(status: TranslationStatus[]) { | CODE |
| LOW | packages/tools/release-clipper.ts | 24 | async function updateManifestVersionNumber(manifestPath: string) { | CODE |
| LOW | packages/tools/setupNewRelease.ts | 83 | async function updateClipperManifestVersion(manifestPath: string, majorMinorVersion: string) { | CODE |
| LOW | packages/tools/setupNewRelease.ts | 94 | async function updatePluginGeneratorTemplateVersion(manifestPath: string, majorMinorVersion: string) { | CODE |
| LOW | packages/tools/tool-utils.ts | 79 | export async function completeReleaseWithChangelog(changelogPath: string, newVersion: string, newTag: string, appName: s | CODE |
| LOW | packages/tools/tool-utils.ts | 135 | export function resolveRelativePathWithinDir(baseDir: string, ...relativePath: string[]): string { | CODE |
| LOW | packages/tools/website/updateDownloadPage.ts | 9 | async function createDownloadButtonsHtml(readmeMd: string): Promise<Record<string, string>> { | CODE |
| LOW | packages/tools/website/utils/parser.ts | 36 | export function replaceGitHubByWebsiteLinks(md: string) { | CODE |
| LOW | packages/react-native-saf-x/src/index.ts | 208 | export function getPersistedUriPermissions() { | CODE |
| LOW | packages/react-native-saf-x/src/index.ts | 213 | export function releasePersistableUriPermission(uriString: string) { | CODE |
| LOW | packages/plugins/ToggleSidebars/api/types.ts | 246 | export function isContextMenuItemLocation(location: MenuItemLocation): boolean { | CODE |
| LOW | …ckages/app-desktop/gui/NoteContentPropertiesDialog.tsx | 57 | export default function NoteContentPropertiesDialog(props: NoteContentPropertiesDialogProps) { | CODE |
| LOW | packages/app-desktop/gui/ShareNoteDialog.tsx | 81 | function renderEncryptionWarningMessage() { | CODE |
| LOW | packages/app-desktop/gui/MenuBar.tsx | 45 | function pluginMenuItemsCommandNames(menuItems: MenuItem[]): string[] { | CODE |
| LOW | packages/app-desktop/gui/NoteEditor/NoteEditor.tsx | 688 | function renderResourceWatchingNotification() { | CODE |
| LOW | packages/app-desktop/gui/NoteEditor/NoteEditor.tsx | 804 | function renderConvertHtmlToMarkdown(): React.ReactNode { | CODE |
| LOW | …ktop/gui/NoteEditor/NoteBody/CodeMirror/utils/index.ts | 2 | export function cursorPositionToTextOffset(cursorPos: { line: number; ch: number }, body: string) { | CODE |
| LOW | …i/NoteEditor/NoteBody/CodeMirror/v5/utils/useKeymap.ts | 30 | function editorCommandToCodeMirror(command: string) { | CODE |
| LOW | …pp-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx | 1626 | function renderLeftExtraToolbarButtons() { | CODE |
| LOW | …pp-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx | 1640 | function renderRightExtraToolbarButtons() { | CODE |
| LOW | …sktop/gui/NoteEditor/NoteBody/TinyMCE/plugins/lists.js | 1510 | function findContainerListTypeFromEvent(event) { | CODE |
| LOW | …sktop/gui/NoteEditor/NoteBody/TinyMCE/plugins/lists.js | 1520 | function findContainerListTypeFromElement(element) { | CODE |
| LOW | …sktop/gui/NoteEditor/NoteBody/TinyMCE/plugins/lists.js | 1535 | function addJoplinChecklistCommands(editor, ToggleList) { | CODE |
| LOW | …p/gui/NoteEditor/utils/usePluginServiceRegistration.ts | 4 | export default function usePluginServiceRegistration(ref: Ref<unknown>) { | CODE |
| LOW | …s/app-desktop/gui/NoteEditor/utils/resourceHandling.ts | 41 | export async function handleResourceDownloadMode(noteBody: string) { | CODE |
| LOW | …s/app-desktop/gui/NoteEditor/utils/resourceHandling.ts | 137 | export async function getResourcesFromPasteEvent(event: { preventDefault: ()=> void } | null) { | CODE |
| LOW | …ckages/app-desktop/gui/NoteEditor/utils/useFormNote.ts | 46 | function installResourceChangeHandler(onResourceChangeHandler: ()=> void) { | CODE |
| LOW | …ckages/app-desktop/gui/NoteEditor/utils/useFormNote.ts | 53 | function uninstallResourceChangeHandler(onResourceChangeHandler: ()=> void) { | CODE |
| LOW | …es/app-desktop/gui/utils/convertToScreenCoordinates.ts | 3 | export default function convertToScreenCoordinates(windowContentZoomFactor: number, o: unknown): unknown { | CODE |
| LOW | …esktop/gui/ResizableLayout/utils/useLayoutItemSizes.ts | 19 | function containsFlexibleDescendant(item: LayoutItem): boolean { | CODE |
| LOW | …esktop/gui/ResizableLayout/utils/useLayoutItemSizes.ts | 182 | export function calculateMaxSizeAvailableForItem(item: LayoutItem, parent: LayoutItem, sizes: LayoutItemSizes): Size { | CODE |
| LOW | …pp-desktop/gui/ResizableLayout/utils/validateLayout.ts | 144 | function updateContainerVisibility(_itemIndex: number, itemDraft: LayoutItem, _parent: LayoutItem) { | CODE |
| LOW | …/app-desktop/gui/NoteListControls/NoteListControls.tsx | 178 | function onSortOrderFieldButtonClick() { | CODE |
| LOW | …/app-desktop/gui/NoteListControls/NoteListControls.tsx | 182 | function onSortOrderReverseButtonClick() { | CODE |
| LOW | …esktop/services/plugins/UserWebviewDialogButtonBar.tsx | 29 | export default function UserWebviewDialogButtonBar(props: Props) { | CODE |
| LOW⚡ | packages/app-mobile/utils/appReducer.ts | 28 | function removeAdjacentNoteDuplicates(items: Route[]) { | CODE |
| LOW⚡ | packages/app-mobile/utils/appReducer.ts | 32 | function removeAdjacentFolderDuplicates(items: Route[]) { | CODE |
| LOW⚡ | packages/app-mobile/utils/appReducer.ts | 36 | function removeAdjacentTagDuplicates(items: Route[]) { | CODE |
| LOW⚡ | packages/app-mobile/utils/appReducer.ts | 40 | function removeAdjacentTagScreenDuplicates(items: Route[]) { | CODE |
| LOW⚡ | packages/app-mobile/utils/appReducer.ts | 44 | function removeLatestFolderIfSelected(items: Route[], route: Route) { | CODE |
| LOW⚡ | packages/app-mobile/utils/appReducer.ts | 50 | function removeLatestTagScreenIfSelected(items: Route[], route: Route) { | CODE |
| LOW | packages/turndown/src/commonmark-rules.js | 623 | function imageMarkdownFromAttributes(attributes) { | CODE |
| LOW | packages/turndown/src/node.js | 22 | function isNonBreakingSpaceHeading (node) { | CODE |
| LOW | packages/plugin-repo-cli/index.ts | 24 | function pluginInfoFromSearchResults(results: PackageInfo[]): NpmPackage[] { | CODE |
| LOW | packages/plugin-repo-cli/index.ts | 52 | async function extractPluginFilesFromPackage(existingManifests: PluginManifests, workDir: string, packageName: string, d | CODE |
| LOW | packages/plugin-repo-cli/lib/checkIfPluginCanBeAdded.ts | 7 | function caseInsensitiveFindManifest(manifests: PluginManifests, manifestId: string): PluginManifest | null { | CODE |
| LOW | packages/plugin-repo-cli/lib/overrideUtils.ts | 48 | function pluginManifestOverridesPath(repoDir: string): string { | CODE |
| LOW | packages/server/public/js/main.js | 11 | function setupPasswordStrengthHandler() { | CODE |
| LOW | packages/server/public/js/main.js | 26 | function checkPasswordEventHandler() { | CODE |
| LOW | packages/server/src/middleware/notificationHandler.ts | 17 | async function handleChangeAdminPasswordNotification(ctx: AppContext) { | CODE |
| LOW | packages/server/src/middleware/notificationHandler.ts | 155 | async function handleConfirmEmailNotification(ctx: AppContext): Promise<NotificationView> { | CODE |
| LOW | packages/server/src/middleware/notificationHandler.ts | 171 | // async function handleSqliteInProdNotification(ctx: AppContext) { | COMMENT |
| LOW | packages/server/src/utils/stripe.ts | 52 | export function subscriptionItemByStripeSub(stripeSub: Stripe.Subscription): Stripe.SubscriptionItem { | CODE |
| LOW | packages/server/src/utils/stripe.ts | 69 | export async function cancelSubscriptionByUserId(models: Models, userId: Uuid) { | CODE |
| LOW | packages/server/src/utils/csrf.ts | 40 | export async function createCsrfTokenFromContext(ctx: AppContext, throwOnError = true) { | CODE |
| LOW | packages/server/src/utils/testing/fileApiUtils.ts | 106 | // export async function getDirectoryChildrenContext(sessionId: string, path: string, pagination: Pagination = null): Pr | COMMENT |
| LOW | packages/server/src/utils/testing/testUtils.ts | 611 | export async function createApplicationCredentials(userId: string, applicationAuthId: string) { | CODE |
| LOW | packages/server/src/utils/testing/serializedItems.ts | 61 | export function makeResourceSerializedBody(resource: ResourceEntity = {}): string { | CODE |
| 80 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | readme/cla/consent_records/zainAwan9175_157986920.json | 159 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/Shresthap21_122041239.json | 54 | "body": "Fixes #14352\r\n\r\n## Problem\r\nWhen `markdown.plugin.externalEmbed` is enabled, YouTube videos were being | CODE |
| MEDIUM | readme/cla/consent_records/Shresthap21_122041239.json | 255 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n## Wal | CODE |
| MEDIUM | readme/cla/consent_records/mshibanami_1333214.json | 54 | "body": "Fixes #10328\r\n\r\nThis is a follow-up pull request to another pull request, https://github.com/laurent22/jo | CODE |
| MEDIUM | readme/cla/consent_records/varunkumar-22_219557905.json | 283 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/Arunava07M_225518570.json | 82 | "body": "This PR addresses issue #14637. I noticed the \"Cut\" and \"Copy\" actions were missing from the context menu | CODE |
| MEDIUM | readme/cla/consent_records/Arunava07M_225518570.json | 283 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generate | CODE |
| MEDIUM | readme/cla/consent_records/Om7035_130749526.json | 54 | "body": "## Description\r\nFixes keyboard shortcut recognition for international keyboard layouts, specifically resolv | CODE |
| MEDIUM | …adme/cla/consent_records/trueharmonyalan_92385446.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generate | CODE |
| MEDIUM | …adme/cla/consent_records/trueharmonyalan_92385446.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generate | CODE |
| MEDIUM | readme/cla/consent_records/Ehtesham-Zahid_98094052.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generate | CODE |
| MEDIUM | readme/cla/consent_records/krishan3333_179947642.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/Vinayreddy765_195867846.json | 283 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generate | CODE |
| MEDIUM | readme/cla/consent_records/arnavgogia20_242623817.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/EvoChronyX_168897432.json | 82 | "body": "## Description\r\nThis PR resolves the line-wrap indentation misalignment in the Markdown editor. Previously, | CODE |
| MEDIUM | readme/cla/consent_records/angeladev333_101032795.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generate | CODE |
| MEDIUM | readme/cla/consent_records/Zakii360_269820836.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/calvinc0_184913204.json | 265 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | …e/cla/consent_records/ARPIT-NAYAK-LEGEND_86902713.json | 292 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/vignezkumaran_184732703.json | 283 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generate | CODE |
| MEDIUM | readme/cla/consent_records/brenobaptista_47641641.json | 525 | "body": "Weird, thanks for checking though!\r\n\r\nTo me for Gear Lever that looks correct, but since you've split it | CODE |
| MEDIUM | readme/cla/consent_records/brenobaptista_47641641.json | 525 | "body": "Weird, thanks for checking though!\r\n\r\nTo me for Gear Lever that looks correct, but since you've split it | CODE |
| MEDIUM | readme/cla/consent_records/naveen-rahul_266127151.json | 283 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/parththirwani_124462644.json | 292 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- This is an auto-generated comme | CODE |
| MEDIUM | readme/cla/consent_records/manjhss_121970162.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generate | CODE |
| LOW | readme/cla/consent_records/pedr_5051088.json | 263 | "body": "> If I remember it correctly the `Ctrl+Shift+V` is also for \"Paste as Text\". #7045\r\n\r\nThis is true. Wo | CODE |
| MEDIUM | readme/cla/consent_records/Prasad8830_144712280.json | 141 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | …me/cla/consent_records/Mohamed-Ahmed597_228269719.json | 283 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/Veivel_25278964.json | 292 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/Pixels57_111073325.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- This is an auto-generated comme | CODE |
| MEDIUM | readme/cla/consent_records/Vansh5632_140490653.json | 59 | "body": "### Description\r\n\r\nThis commit introduces a new feature that allows users to create notes within shared f | CODE |
| MEDIUM | readme/cla/consent_records/anuradha1304_150290402.json | 265 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- This is an auto-generated comme | CODE |
| MEDIUM | readme/cla/consent_records/slimuCS_125249013.json | 150 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generate | CODE |
| MEDIUM | readme/cla/consent_records/KEERTHIAANAND_190023726.json | 141 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/kaushalv17_188165803.json | 292 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/Jean-Regis-M_190766850.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | …dme/cla/consent_records/Mahaprasadnanda_140647643.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generate | CODE |
| MEDIUM | readme/cla/consent_records/moaaz-ae_145723871.json | 292 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generate | CODE |
| MEDIUM | …adme/cla/consent_records/adityaonrepeat_211822601.json | 292 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generate | CODE |
| MEDIUM | readme/cla/consent_records/jellyfrostt_73933245.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/dfrobese_22085580.json | 292 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- This is an auto-generated comme | CODE |
| MEDIUM | readme/cla/consent_records/aayushirajesh_150602036.json | 265 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/ddg22004_125038348.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/karan10i_68427055.json | 319 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- This is an auto-generated comme | CODE |
| MEDIUM | …adme/cla/consent_records/KanhaiyaPandey_109562285.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/itisrohit_93656009.json | 265 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generate | CODE |
| MEDIUM | readme/cla/consent_records/dipanshurdev_124811276.json | 141 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- This is an auto-generated comme | CODE |
| MEDIUM | readme/cla/consent_records/RiyanshiTomar_189696797.json | 292 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | …/cla/consent_records/himanshumishra1309_155083001.json | 73 | "body": "### Description\r\nCurrently, when a user clicks \"Enable encryption\", the app asks for their password but m | CODE |
| MEDIUM | …/cla/consent_records/himanshumishra1309_155083001.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- This is an auto-generated comme | CODE |
| MEDIUM | readme/cla/consent_records/hizawye_48360743.json | 54 | "body": "## Summary\n- fix OCR language resolution for Norwegian locales\n- map `nob` and `nno` to `nor` for OCR only\ | CODE |
| MEDIUM | readme/cla/consent_records/Payel-Manna_180408698.json | 283 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- This is an auto-generated comme | CODE |
| MEDIUM | readme/cla/consent_records/PragdGn_118760508.json | 292 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- This is an auto-generated comme | CODE |
| MEDIUM | readme/cla/consent_records/WhiskerLogic_119903759.json | 54 | "body": "## Problem\r\nThe desktop app crashes with \"Cannot read properties of undefined (reading 'key')\" when Resiz | CODE |
| MEDIUM | …/cla/consent_records/developerzohaib786_170199792.json | 292 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/rattnak_82812258.json | 283 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- This is an auto-generated comme | CODE |
| MEDIUM | …s/app-desktop/gui/NoteEditor/utils/resourceHandling.ts | 216 | // Use path.relative for robust containment check - startsWith can falsely match sibling paths | COMMENT |
| MEDIUM | packages/utils/markdown.ts | 55 | // Definitely won't work in all cases but for our particular use case, | COMMENT |
| MEDIUM | packages/lib/shim.ts | 104 | // to any other packages using the shim. Essentially, only one package should | COMMENT |
| MEDIUM | packages/lib/SyncTargetAmazonS3.js | 123 | // If you save the config on desktop, restart the app and attempt a sync, we should get a clearer error message because | COMMENT |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/cla/consent_records/Siddhartha-singh01_237545817.json | 409 | "body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution pol | CODE |
| LOW | …me/cla/consent_records/Manik-Khajuria-5_186909428.json | 464 | "body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution pol | CODE |
| LOW | readme/cla/consent_records/krishan3333_179947642.json | 419 | "body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution pol | CODE |
| LOW | readme/cla/consent_records/Dipro-cyber_185552207.json | 1384 | "body": "> Desktop: Fixes #14386: Title bar color mismatch with selected theme#14596\r\n\r\nI'm closing this pull req | CODE |
| LOW | readme/cla/consent_records/Mahathi-s154_202117698.json | 419 | "body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution pol | CODE |
| LOW | readme/cla/consent_records/SergioChan_10103766.json | 383 | "body": "@SergioChan, don't forget to sign the cla", | CODE |
| LOW | readme/cla/consent_records/Prasad8830_144712280.json | 509 | "body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution pol | CODE |
| LOW | readme/cla/consent_records/SinhaS12_203195422.json | 250 | "body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution pol | CODE |
| LOW | …me/cla/consent_records/Mohamed-Ahmed597_228269719.json | 473 | "body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution pol | CODE |
| LOW | readme/cla/consent_records/slimuCS_125249013.json | 428 | "body": "Hello, do not quote the bot when putting your signature, simply put the signature in its own comment.\r\n\r\ | CODE |
| LOW | readme/cla/consent_records/sablekunal_186178187.json | 428 | "body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution pol | CODE |
| MEDIUM | readme/cla/consent_records/kaushalv17_188165803.json | 527 | "body": "Hi @personalizedrefrigerator, thanks for the review!\r\n\r\nI'll attach a screen recording shortly demonstra | CODE |
| LOW | …dme/cla/consent_records/Mahaprasadnanda_140647643.json | 419 | "body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution pol | CODE |
| LOW | readme/cla/consent_records/harryfrzz_168866097.json | 428 | "body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution pol | CODE |
| LOW | …adme/cla/consent_records/KanhaiyaPandey_109562285.json | 464 | "body": "Wow the things we can do these days with AI. I definitely wasn't expecting a re-implementation of rsync logi | CODE |
| MEDIUM | readme/cla/consent_records/k33pn3xtlvl_81777961.json | 1038 | "body": "@k33pn3xtlvl, we plan to release a new version 2.10 of the CLI app and hopefully your feature can be include | CODE |
| LOW | readme/cla/consent_records/Anurag-M1_104443086.json | 455 | "body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution pol | CODE |
| LOW | readme/cla/consent_records/mayhemking007_84394327.json | 328 | "body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution pol | CODE |
| MEDIUM | …/cla/consent_records/himanshumishra1309_155083001.json | 1004 | "body": "All tests have officially passed! Let me know if you need anything else from my end.", | CODE |
| MEDIUM | readme/cla/consent_records/sudokillnine_46093340.json | 356 | "body": "Thank you for the pull request!\r\n\r\nA few notes:\r\n- **Ubuntu incompatibility**: Be aware that Ubuntu 24 | CODE |
| MEDIUM⚡ | readme/cla/consent_records/wittymap_119261743.json | 345 | "body": "I feel this whole topic of uninstallation on linux is closely mirroring community editable post [Unofficial | CODE |
| LOW⚡ | readme/cla/consent_records/wittymap_119261743.json | 345 | "body": "I feel this whole topic of uninstallation on linux is closely mirroring community editable post [Unofficial | CODE |
| LOW | readme/cla/consent_records/Nagmani001_163531400.json | 419 | "body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution pol | CODE |
| MEDIUM | readme/cla/consent_records/maggie897_207411958.json | 388 | "body": "\r\n\r\nhttps://github.com/user-attachments/assets/45c22e54-165b-451d-bef0-285acc7fa4f5\r\n\r\nHere is a qui | CODE |
| LOW | readme/cla/consent_records/rattnak_82812258.json | 428 | "body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution pol | CODE |
| LOW | packages/plugins/ToggleSidebars/api/types.ts | 217 | // If adding an item here, don't forget to update isContextMenuItemLocation() | COMMENT |
| LOW | packages/app-desktop/locales/id_ID.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/tr_TR.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/pt_PT.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/es_ES.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/ja_JP.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/zh_CN.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/el_GR.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/it_IT.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/ro.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/ca.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/ko.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/nl_NL.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/de_DE.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/pt_BR.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/zh_TW.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/fr_FR.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/cs_CZ.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-desktop/locales/pl_PL.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/id_ID.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/tr_TR.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/pt_PT.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/es_ES.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/ja_JP.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/zh_CN.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/el_GR.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/it_IT.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/ro.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/ca.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/ko.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/nl_NL.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/de_DE.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/pt_BR.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/zh_TW.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| LOW | packages/app-mobile/locales/fr_FR.json | 1 | {"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current | CODE |
| 35 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | packages/fork-sax/examples/pretty-print.js | 12 | print('\n') | CODE |
| HIGH⚡ | packages/fork-sax/examples/pretty-print.js | 15 | print(' ') | CODE |
| HIGH⚡ | packages/fork-sax/examples/pretty-print.js | 22 | print('<' + tag.name) | CODE |
| HIGH⚡ | packages/fork-sax/examples/pretty-print.js | 24 | print(' ' + i + '="' + entity(tag.attributes[i]) + '"') | CODE |
| HIGH⚡ | packages/fork-sax/examples/pretty-print.js | 26 | print('>') | CODE |
| HIGH⚡ | packages/fork-sax/examples/pretty-print.js | 33 | print(text) | CODE |
| HIGH⚡ | packages/fork-sax/examples/pretty-print.js | 39 | print('</' + tag + '>') | CODE |
| HIGH⚡ | packages/fork-sax/examples/pretty-print.js | 44 | print('<![CDATA[' + data + ']]>') | CODE |
| HIGH⚡ | packages/fork-sax/examples/pretty-print.js | 49 | print('<!--' + comment + '-->') | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/fork-htmlparser2/src/__fixtures__/Stream/03-Atom.json | 204 | "data": ["John Doe"] | CODE |
| LOW⚡ | packages/turndown-plugin-gfm/test/index.html | 13 | <div class="input"><strike>Lorem ipsum</strike></div> | CODE |
| LOW⚡ | packages/turndown-plugin-gfm/test/index.html | 14 | <pre class="expected">~Lorem ipsum~</pre> | CODE |
| LOW⚡ | packages/turndown-plugin-gfm/test/index.html | 18 | <div class="input"><s>Lorem ipsum</s></div> | CODE |
| LOW⚡ | packages/turndown-plugin-gfm/test/index.html | 19 | <pre class="expected">~Lorem ipsum~</pre> | CODE |
| LOW⚡ | packages/turndown-plugin-gfm/test/index.html | 23 | <div class="input"><del>Lorem ipsum</del></div> | CODE |
| LOW⚡ | packages/turndown-plugin-gfm/test/index.html | 24 | <pre class="expected">~Lorem ipsum~</pre> | CODE |
| LOW | …ges/app-desktop/integration-tests/models/MainScreen.ts | 56 | await expect(this.noteEditor.noteTitleInput).toHaveJSProperty('placeholder', 'Creating new note...', { timeout: 4_000 | CODE |
| LOW | …teEditor/NoteBody/WhiteboardEditor/nodes/GroupNode.tsx | 86 | {label || <span className="placeholder">{_('Group')}</span>} | CODE |
| LOW | packages/app-desktop/gui/ChatPanel/ChatPanel.tsx | 293 | { role: ChatRole.System, content: 'placeholder' }, | CODE |
| LOW | packages/turndown/test/index.html | 13 | <div class="input"><p>Lorem ipsum</p></div> | CODE |
| LOW | packages/turndown/test/index.html | 14 | <pre class="expected">Lorem ipsum</pre> | CODE |
| LOW | packages/server/src/models/SubscriptionModel.test.ts | 72 | const { subscription, user } = await models().subscription().saveUserAndSubscription('user@example.com', 'Test', Accou | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 4 | test('should detect `- lorem ipsum` as list item ', () => { | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 5 | expect(markdownUtils.isListItem('- lorem ipsum')).toBe(true); | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 7 | test('should detect `+ lorem ipsum` as list item ', () => { | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 8 | expect(markdownUtils.isListItem('+ lorem ipsum')).toBe(true); | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 10 | test('should detect `* lorem ipsum` as list item ', () => { | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 11 | expect(markdownUtils.isListItem('* lorem ipsum')).toBe(true); | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 15 | test('should detect `1. lorem ipsum` as list item ', () => { | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 16 | expect(markdownUtils.isListItem('1. lorem ipsum')).toBe(true); | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 18 | test('should detect `1) lorem ipsum` as list item ', () => { | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 19 | expect(markdownUtils.isListItem('1) lorem ipsum')).toBe(true); | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 22 | test('should detect `+ [x] lorem ipsum` as list item ', () => { | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 23 | expect(markdownUtils.isListItem('+ [x] lorem ipsum')).toBe(true); | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 27 | test('should NOT detect `-lorem ipsum` as list item ', () => { | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 28 | expect(markdownUtils.isListItem('-lorem ipsum')).toBe(false); | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 30 | test('should NOT detect `+lorem ipsum` as list item ', () => { | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 31 | expect(markdownUtils.isListItem('+lorem ipsum')).toBe(false); | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 33 | test('should NOT detect `*lorem ipsum` as list item ', () => { | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 34 | expect(markdownUtils.isListItem('*lorem ipsum')).toBe(false); | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 38 | test('should NOT detect `1.lorem ipsum` as list item ', () => { | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 39 | expect(markdownUtils.isListItem('1.lorem ipsum')).toBe(false); | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 41 | test('should NOT detect `1)lorem ipsum` as list item ', () => { | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 42 | expect(markdownUtils.isListItem('1)lorem ipsum')).toBe(false); | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 45 | test('should NOT detect `+[x]lorem ipsum` as list item ', () => { | CODE |
| LOW⚡ | packages/lib/markdownUtils.test.ts | 46 | expect(markdownUtils.isListItem('+[x]lorem ipsum')).toBe(false); | CODE |
| LOW | packages/lib/models/Revision.test.ts | 10 | const testBody = `Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the in | CODE |
| LOW | packages/lib/models/Revision.test.ts | 13 | sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker includi | CODE |
| LOW | …ages/app-cli/tests/support/plugins/dialog/src/index.ts | 51 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna a | CODE |
| LOW | …ages/app-cli/tests/support/plugins/dialog/src/index.ts | 51 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna a | CODE |
| LOW⚡ | packages/app-cli/tests/support/test_notes/md/sample.md | 3 | lorem ipsum  | CODE |
| LOW⚡ | packages/app-cli/tests/support/test_notes/md/sample.md | 10 |  lorem ipsum | CODE |
| LOW⚡ | packages/app-cli/tests/support/test_notes/md/sample.md | 13 |  lorem ipsum | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | readme/cla/consent_records/varunkumar-22_219557905.json | 82 | "body": "fixes #14396\r\n\r\n### AI Assistance Disclosure\r\nAI tools were used to assist with:\r\n- Translating my de | CODE |
| HIGH | …me/cla/consent_records/Kartikeya-guthub_207419836.json | 500 | "body": "> As per the [PR guidelines](https://github.com/joplin/gsoc/blob/master/pull_request_guidelines.md) could yo | CODE |
| HIGH | …me/cla/consent_records/SinisterDeveloper_80232412.json | 82 | "body": "### Resolves high priority issue #9432\r\n\r\n## Summary\r\n\r\nI have added a Dialog to the app setup sequen | CODE |
| HIGH | readme/cla/consent_records/Ashutoshx7_181958559.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| HIGH⚡ | readme/cla/consent_records/wittymap_119261743.json | 345 | "body": "I feel this whole topic of uninstallation on linux is closely mirroring community editable post [Unofficial | CODE |
| HIGH⚡ | readme/cla/consent_records/wittymap_119261743.json | 345 | "body": "I feel this whole topic of uninstallation on linux is closely mirroring community editable post [Unofficial | CODE |
| HIGH | readme/cla/consent_records/Nagmani001_163531400.json | 274 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| HIGH | …-desktop/gui/NoteEditor/utils/resourceHandling.test.ts | 77 | `<img src="${resourceSrc}" alt="A screenshot AI-generated content."/>`, | CODE |
| HIGH | …-desktop/gui/NoteEditor/utils/resourceHandling.test.ts | 102 | `<img width="625" height="284" src="${resourceSrc}" alt="A screenshot AI-generated content."/>`, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | readme/cla/consent_records/fobo66_4471821.json | 498 | "body": "It worked on Windows, but not on macOS. Although notifications seem to be broken: I can see this crash in th | CODE |
| CRITICAL | packages/app-desktop/ElectronAppWrapper.ts | 292 | this.win_.webContents.session.webRequest.onBeforeSendHeaders( | CODE |
| CRITICAL | packages/lib/services/synchronizer/syncInfoUtils.ts | 394 | filtered.ppk.value.privateKey.ciphertext = `${filtered.ppk.value.privateKey.ciphertext.substr(0, 20)}...${filtered.pp | CODE |
| CRITICAL | Assets/WebsiteAssets/js/jquery-3.6.0.min.js | 2 | !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):f | CODE |
| CRITICAL | Assets/WebsiteAssets/js/jquery-3.2.1.slim.min.js | 3 | }),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/lib/htmlUtils.ts | 188 | // Step 1: Merge adjacent lines into paragraphs, with each line separated by | COMMENT |
| LOW | packages/lib/htmlUtils.ts | 213 | // Step 2: Convert the remaining empty lines to <br/> tags. Note that `n` | COMMENT |
| LOW | packages/lib/htmlUtils.ts | 231 | // Step 3: Actually convert the empty lines to <br/> tags | COMMENT |
| LOW | packages/lib/services/plugins/api/types.ts | 802 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …app-cli/tests/support/plugins/codemirror6/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …es/app-cli/tests/support/plugins/settings/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …s/app-cli/tests/support/plugins/ai_search/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …pp-cli/tests/support/plugins/nativeModule/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …app-cli/tests/support/plugins/json_export/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | packages/app-cli/tests/support/plugins/toc/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …cli/tests/support/plugins/multi_selection/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …p-cli/tests/support/plugins/selected_text/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …p-cli/tests/support/plugins/post_messages/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …kages/app-cli/tests/support/plugins/toast/api/types.ts | 689 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …ges/app-cli/tests/support/plugins/imaging/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …cli/tests/support/plugins/external_assets/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …/tests/support/plugins/note_list_renderer/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …ages/app-cli/tests/support/plugins/dialog/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …tests/support/plugins/withExternalModules/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …-cli/tests/support/plugins/content_script/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …es/app-cli/tests/support/plugins/jpl_test/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …tests/support/plugins/editor_context_menu/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …s/app-cli/tests/support/plugins/user_data/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …ckages/app-cli/tests/support/plugins/menu/api/types.ts | 781 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …es/app-cli/tests/support/plugins/load_css/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …support/plugins/codemirror_content_script/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …li/tests/support/plugins/register_command/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …ages/app-cli/tests/support/plugins/worker/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …ages/app-cli/tests/support/plugins/events/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …ges/app-cli/tests/support/plugins/ai_chat/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …pport/plugins/codemirror5-and-codemirror6/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …s/app-cli/tests/support/plugins/clipboard/api/types.ts | 676 | * For example, if your plugin rendered the following code block, | COMMENT |
| LOW | …generator-joplin/generators/app/templates/api/types.ts | 802 | * For example, if your plugin rendered the following code block, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …dme/cla/consent_records/henriqueeapsilva_94613613.json | 351 | "body": "> Sorry I don't understand what problems is being fixed. Is there an issue that explains this?\r\n\r\n@henri | CODE |
| HIGH | readme/cla/consent_records/Mighil31_47496035.json | 59 | "body": "<!--\r\n\r\nPlease prefix the title with the platform you are targetting:\r\n\r\nHere are some examples of go | CODE |
| HIGH | readme/cla/consent_records/Mighil31_47496035.json | 59 | "body": "<!--\r\n\r\nPlease prefix the title with the platform you are targetting:\r\n\r\nHere are some examples of go | CODE |
| HIGH | readme/cla/consent_records/Dipro-cyber_185552207.json | 554 | "body": "> Thank you for the pull request!\r\n> \r\n> > Screen.Recording.2026-03-06.123622.online-video-cutter.com.mp | CODE |
| HIGH | readme/cla/consent_records/Polaris66_64375061.json | 758 | "body": "> Surely it's possible to detect whether it's Option+Down or Alt+Down and do something different depending o | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/lib/services/plugins/api/JoplinViews.ts | 17 | * ## Creating a view | COMMENT |
| MEDIUM | packages/app-cli/app/command-apidoc.ts | 374 | lines.push('#### Creating a note with a specific ID'); | CODE |
| MEDIUM | …pp-cli/tests/support/plugins/menu/api/JoplinViews.d.ts | 12 | * ## Creating a view | COMMENT |
| MEDIUM | packages/app-cli/tests/html_to_md/pre_1.html | 8 | <span class="comment"># Create a GitHub release with notes from a file and copy the URL to clipboard:</span> | CODE |
| MEDIUM | …r-joplin/generators/app/templates/api/JoplinViews.d.ts | 14 | * ## Creating a view | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | Joplin_install_and_update.sh | 203 | # Check if it's in the latest version | COMMENT |
| LOW⚡ | Joplin_install_and_update.sh | 221 | # Check if it's an update or a new install | COMMENT |
| LOW | .github/workflows/github-actions-main.yml | 202 | # Check if status code is correct | COMMENT |
| LOW | .github/workflows/github-actions-main.yml | 215 | # Check if the body response is correct | COMMENT |
| LOW | .github/scripts/publish_docker_manifest.sh | 10 | # Check if it's a server release, otherwise exit | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …adme/cla/consent_records/fortyoneplustwo_26662250.json | 283 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| MEDIUM | readme/cla/consent_records/dfrobese_22085580.json | 292 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- This is an auto-generated comme | CODE |
| MEDIUM | …/cla/consent_records/developerzohaib786_170199792.json | 292 | "body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<detai | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/lib/htmlUtils.ts | 188 | // Step 1: Merge adjacent lines into paragraphs, with each line separated by | COMMENT |
| LOW | packages/lib/htmlUtils.ts | 213 | // Step 2: Convert the remaining empty lines to <br/> tags. Note that `n` | COMMENT |
| LOW | packages/lib/htmlUtils.ts | 231 | // Step 3: Actually convert the empty lines to <br/> tags | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.transcribe.yml | 6 | # Usage: | COMMENT |