Scan timing: clone 7.71s · analysis 4.4s · 33.7 MB · GitHub API rate-limit (preflight)
https://github.com/zotero/web-library
· scanned 2026-06-05 14:52 UTC (5 days, 4 hours ago)
· 10 languages
316 raw signals (68 security + 248 graph) 11/13 scanners ran 91st percentile · Javascript · medium (20-100K LoC) System graph score 75 (higher by 10)
Last scanned 5 days, 4 hours ago · v2 · 148 actionable findings from 2 signal sources. 44 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
| Component | Sub-score | Weight | Contribution |
|---|---|---|---|
structure_score |
85.0 | 0.15 | 12.75 |
security_score |
100.0 | 0.25 | 25.00 |
testing_score |
89.0 | 0.20 | 17.80 |
documentation_score |
55.0 | 0.15 | 8.25 |
practices_score |
82.0 | 0.15 | 12.30 |
code_quality |
80.0 | 0.10 | 8.00 |
| Overall | 1.00 | 84.1 |
All 1176 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
useDrag |
software | healthy | rollup.config.js:useDrag |
tagButtons |
software | healthy | test/basic-ui.test.jsx:tagButtons |
bodyParams |
software | healthy | test/recognize.test.jsx:bodyParams |
bodyParams |
software | healthy | test/attachment-details.test.jsx:bodyParams |
mockMatchMedia |
software | healthy | test/mocks/matchmedia.js:mockMatchMedia |
AutoSizer |
software | healthy | test/mocks/react-virtualized-auto-sizer.js:AutoSizer |
installUnhandledRequestHandler |
software | healthy | test/utils/xhr-mock.js:installUnhandledRequestHandler |
uninstallMockedXHR |
software | healthy | test/utils/xhr-mock.js:uninstallMockedXHR |
installMockedXHR |
software | healthy | test/utils/xhr-mock.js:installMockedXHR |
setupMSWLifecycle |
software | healthy | test/utils/msw-lifecycle.js:setupMSWLifecycle |
renderWithProviders |
software | healthy | test/utils/render.jsx:renderWithProviders |
Wrapper |
software | healthy | test/utils/render.jsx:Wrapper |
waitForPosition |
software | healthy | test/utils/common.js:waitForPosition |
resizeWindow |
software | healthy | test/utils/common.js:resizeWindow |
applyAdditionalJestTweaks |
software | healthy | test/utils/common.js:applyAdditionalJestTweaks |
getAccessibleLabel |
software | healthy | test/utils/common.js:getAccessibleLabel |
wait |
software | healthy | test/utils/common.js:wait |
isSingleColumn |
software | healthy | test/utils/common.js:isSingleColumn |
findFreePort |
software | healthy | test/utils/playwright-fixtures.js:findFreePort |
stateProcessSymbols |
software | healthy | test/utils/state.js:stateProcessSymbols |
stateProcessSymbolsReverse |
software | healthy | test/utils/state.js:stateProcessSymbolsReverse |
stateToJSON |
software | healthy | test/utils/state.js:stateToJSON |
JSONtoState |
software | healthy | test/utils/state.js:JSONtoState |
getPatchedState |
software | healthy | test/utils/state.js:getPatchedState |
getStateWithout |
software | healthy | test/utils/state.js:getStateWithout |
getPachtedStateMultiple |
software | healthy | test/utils/state.js:getPachtedStateMultiple |
getPatchedStateArray |
software | healthy | test/utils/state.js:getPatchedStateArray |
makeSuccessResponse |
software | healthy | test/utils/response.js:makeSuccessResponse |
getPort |
software | healthy | test/utils/fixed-state-server.js:getPort |
getServer |
software | healthy | test/utils/fixed-state-server.js:getServer |
handler |
software | healthy | test/utils/fixed-state-server.js:handler |
fallback |
software | healthy | test/utils/fixed-state-server.js:fallback |
loadFixtureState |
software | healthy | test/utils/fixed-state-server.js:loadFixtureState |
closeServer |
software | healthy | test/utils/fixed-state-server.js:closeServer |
setCommonHeaders |
software | healthy | test/utils/fixed-state-server.js:setCommonHeaders |
makeCustomHandler |
software | healthy | test/utils/fixed-state-server.js:makeCustomHandler |
makeGate |
software | healthy | test/utils/fixed-state-server.js:makeGate |
makeGatedHandler |
software | healthy | test/utils/fixed-state-server.js:makeGatedHandler |
makeTextHandler |
software | healthy | test/utils/fixed-state-server.js:makeTextHandler |
generateTestItems |
software | healthy | test/utils/fixed-state-server.js:generateTestItems |
generateTestTags |
software | healthy | test/utils/fixed-state-server.js:generateTestTags |
makePaginatedHandler |
software | healthy | test/utils/fixed-state-server.js:makePaginatedHandler |
MainWithState |
software | healthy | test/utils/main-with-state.jsx:MainWithState |
getSelectedIndex |
software | healthy | test/playwright/modals.desktop.test.js:getSelectedIndex |
getSelectedIndices |
software | healthy | test/playwright/modals.desktop.test.js:getSelectedIndices |
generateUnfetchedItems |
software | healthy | test/playwright/interaction.desktop.test.js:generateUnfetch… |
makeSinceHandlers |
software | healthy | test/playwright/remote-library-update.desktop.test.js:makeS… |
captureSinceRequests |
software | healthy | test/playwright/remote-library-update.desktop.test.js:captu… |
captureAllApiRequests |
software | healthy | test/playwright/remote-library-update.desktop.test.js:captu… |
summarize |
software | healthy | test/playwright/remote-library-update.desktop.test.js:summa… |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
.mocharc.json |
software | healthy | .mocharc.json |
README.md |
software | healthy | README.md |
rollup.config.js |
software | healthy | rollup.config.js |
package.json |
software | healthy | package.json |
CONTRIBUTING.md |
software | healthy | CONTRIBUTING.md |
package-lock.json |
software | healthy | package-lock.json |
no-uploads-allowed.test.jsx |
software | warning | test/no-uploads-allowed.test.jsx |
reader.test.jsx |
software | warning | test/reader.test.jsx |
init.test.jsx |
software | warning | test/init.test.jsx |
basic-ui.test.jsx |
software | healthy | test/basic-ui.test.jsx |
attachments.test.jsx |
software | warning | test/attachments.test.jsx |
items.test.jsx |
software | healthy | test/items.test.jsx |
recognize.test.jsx |
software | healthy | test/recognize.test.jsx |
readonly.test.jsx |
software | warning | test/readonly.test.jsx |
format.test.jsx |
software | warning | test/format.test.jsx |
collections.test.jsx |
software | warning | test/collections.test.jsx |
exports.test.jsx |
software | warning | test/exports.test.jsx |
parent.test.jsx |
software | warning | test/parent.test.jsx |
note-editor.test.jsx |
software | warning | test/note-editor.test.jsx |
notes.test.jsx |
software | warning | test/notes.test.jsx |
unexpected-item-type.test.jsx |
software | warning | test/unexpected-item-type.test.jsx |
config.test.jsx |
software | warning | test/config.test.jsx |
user-type.test.jsx |
software | warning | test/user-type.test.jsx |
attachment-details.test.jsx |
software | healthy | test/attachment-details.test.jsx |
item-info.test.jsx |
software | warning | test/item-info.test.jsx |
loading-screen.test.jsx |
software | warning | test/loading-screen.test.jsx |
related.test.jsx |
software | warning | test/related.test.jsx |
unexpected-url.test.jsx |
software | warning | test/unexpected-url.test.jsx |
routes.test.jsx |
software | warning | test/routes.test.jsx |
tags.test.jsx |
software | warning | test/tags.test.jsx |
groups.test.jsx |
software | warning | test/groups.test.jsx |
trash.test.jsx |
software | warning | test/trash.test.jsx |
matchmedia.js |
software | healthy | test/mocks/matchmedia.js |
noop.js |
software | warning | test/mocks/noop.js |
diff.worker.js |
software | healthy | test/mocks/diff.worker.js |
react-virtualized-auto-sizer.js |
software | healthy | test/mocks/react-virtualized-auto-sizer.js |
pdf-worker.js |
software | healthy | test/mocks/pdf-worker.js |
style-search.worker.js |
software | healthy | test/mocks/style-search.worker.js |
locales-en-us.xml.js |
software | warning | test/fixtures/locales-en-us.xml.js |
chicago-notes-bibliography-subsequent-author-title-17th-edi… |
software | warning | test/fixtures/chicago-notes-bibliography-subsequent-author-… |
modern-language-association.csl.js |
software | warning | test/fixtures/modern-language-association.csl.js |
turabian-notes-bibliography.csl.js |
software | warning | test/fixtures/turabian-notes-bibliography.csl.js |
locales-en-gb.xml.js |
software | warning | test/fixtures/locales-en-gb.xml.js |
locales-pl-pl.xml.js |
software | warning | test/fixtures/locales-pl-pl.xml.js |
test-user-add-parent-manual.json |
software | healthy | test/fixtures/response/test-user-add-parent-manual.json |
test-user-get-item-by-key-66LW9WRP-PEZF7SPI.json |
software | healthy | test/fixtures/response/test-user-get-item-by-key-66LW9WRP-P… |
test-group-copy-annotations.json |
software | healthy | test/fixtures/response/test-group-copy-annotations.json |
new-item-linked-attachment.json |
software | healthy | test/fixtures/response/new-item-linked-attachment.json |
test-user-trash-item.json |
software | healthy | test/fixtures/response/test-user-trash-item.json |
test-user-create-annotation.json |
software | healthy | test/fixtures/response/test-user-create-annotation.json |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
test |
software | healthy | test |
mocks |
software | healthy | test/mocks |
fixtures |
software | healthy | test/fixtures |
response |
software | healthy | test/fixtures/response |
state |
software | healthy | test/fixtures/state |
utils |
software | healthy | test/utils |
playwright |
software | healthy | test/playwright |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
src |
software | healthy | src |
html |
software | healthy | src/html |
js |
software | healthy | src/js |
common |
software | healthy | src/js/common |
constants |
software | healthy | src/js/constants |
component |
software | healthy | src/js/component |
editable |
software | healthy | src/js/component/editable |
form |
software | healthy | src/js/component/form |
tag-selector |
software | healthy | src/js/component/tag-selector |
common |
software | healthy | src/js/component/common |
ui |
software | healthy | src/js/component/ui |
item-details |
software | healthy | src/js/component/item-details |
modal |
software | healthy | src/js/component/modal |
embedded |
software | healthy | src/js/component/embedded |
item |
software | healthy | src/js/component/item |
items |
software | healthy | src/js/component/item/items |
actions |
software | healthy | src/js/component/item/actions |
touch-header |
software | healthy | src/js/component/touch-header |
libraries |
software | healthy | src/js/component/libraries |
reducers |
software | healthy | src/js/reducers |
libraries |
software | healthy | src/js/reducers/libraries |
hooks |
software | healthy | src/js/hooks |
actions |
software | healthy | src/js/actions |
scss |
software | healthy | src/scss |
base |
software | healthy | src/scss/base |
partials |
software | healthy | src/scss/partials |
themes |
software | healthy | src/scss/themes |
components |
software | healthy | src/scss/components |
modal |
software | healthy | src/scss/components/modal |
item |
software | healthy | src/scss/components/item |
tag |
software | healthy | src/scss/components/tag |
metadata |
software | healthy | src/scss/components/metadata |
attachment |
software | healthy | src/scss/components/attachment |
note |
software | healthy | src/scss/components/note |
abstracts |
software | healthy | src/scss/abstracts |
functions |
software | healthy | src/scss/abstracts/functions |
mixins |
software | healthy | src/scss/abstracts/mixins |
utilities |
software | healthy | src/scss/abstracts/utilities |
| Label | Layer | Status | Path |
|---|---|---|---|
UserTypeDetector |
frontend | healthy | src/js/component/user-type-detector.jsx |
Search |
frontend | healthy | src/js/component/search.jsx |
TitleUpdater |
frontend | healthy | src/js/component/title-updater.jsx |
TouchSideFooter |
frontend | healthy | src/js/component/touch-side-footer.jsx |
Editable |
frontend | healthy | src/js/component/editable.jsx |
Messages |
frontend | healthy | src/js/component/messages.jsx |
TouchDrilldown |
frontend | healthy | src/js/component/touch-drilldown.jsx |
RichEditor |
frontend | healthy | src/js/component/rich-editor.jsx |
Loader |
frontend | healthy | src/js/component/loader.jsx |
TouchHeaderWrap |
frontend | healthy | src/js/component/touch-header-wrap.jsx |
ErrorBoundary |
frontend | healthy | src/js/component/error-boundry.jsx |
Portal |
frontend | healthy | src/js/component/portal.jsx |
Router |
frontend | healthy | src/js/component/router.jsx |
Main |
frontend | healthy | src/js/component/main.jsx |
Field |
frontend | healthy | src/js/component/form/field.jsx |
Input |
frontend | healthy | src/js/component/form/input.jsx |
AutoResizer |
frontend | healthy | src/js/component/form/auto-resizer.jsx |
TextAreaInput |
frontend | healthy | src/js/component/form/text-area.jsx |
TableBody |
frontend | healthy | src/js/component/common/table-body.jsx |
Items |
frontend | healthy | src/js/component/common/items.jsx |
ReactWindowList |
frontend | healthy | src/js/component/common/react-window-list.jsx |
HeaderRow |
frontend | healthy | src/js/component/common/table-header-row.jsx |
Cell |
frontend | healthy | src/js/component/common/table-cell.jsx |
Navbar |
frontend | healthy | src/js/component/ui/navbar.jsx |
Panel |
frontend | healthy | src/js/component/ui/panel.jsx |
StandaloneAttachmentTabPane |
frontend | healthy | src/js/component/item-details/standalone-attachment.jsx |
StandaloneNote |
frontend | healthy | src/js/component/item-details/standalone-note.jsx |
ItemDetailsTabs |
frontend | healthy | src/js/component/item-details/tabs.jsx |
ItemDetailsInfoView |
frontend | healthy | src/js/component/item-details/info-view.jsx |
ScrollEffectComponent |
frontend | healthy | src/js/component/item/items/scroll-effect.jsx |
ListRow |
frontend | healthy | src/js/component/item/items/list-row.jsx |
| Label | Layer | Status | Path |
|---|---|---|---|
names |
software | healthy | test/items.test.jsx:names |
DiffWorker |
software | healthy | test/mocks/diff.worker.js:DiffWorker |
MockPDFWorker |
software | healthy | test/mocks/pdf-worker.js:MockPDFWorker |
SearchWorker |
software | healthy | test/mocks/style-search.worker.js:SearchWorker |
XMLHttpRequest |
software | healthy | test/utils/xhr-mock.js:XMLHttpRequest |
ZoteroCssEnvironment |
software | healthy | test/utils/zotero-env.js:ZoteroCssEnvironment |
Worker |
software | healthy | test/utils/common.js:Worker |
FetchEnvironment |
software | healthy | test/utils/env-with-fetch.js:FetchEnvironment |
extends |
software | healthy | test/utils/env-with-fetch.js:extends |
is |
software | healthy | test/playwright/modals.desktop.test.js:is |
PDFWorker |
software | healthy | src/js/common/pdf-worker.js:PDFWorker |
PartialWriteError |
software | healthy | src/js/common/actions.js:PartialWriteError |
ErrorBoundary |
software | healthy | src/js/component/error-boundry.jsx:ErrorBoundary |
| Label | Layer | Status | Path |
|---|---|---|---|
test-jest |
cicd | healthy | .github/workflows/ci.yml |
test-playwright |
cicd | healthy | .github/workflows/ci.yml |
build |
cicd | healthy | .github/workflows/build.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::ci |
cicd | healthy | .github/workflows/ci.yml |
gha::build |
cicd | healthy | .github/workflows/build.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-g6a4ougf |
software | healthy | /tmp/repobility-clone-g6a4ougf |
This page is publicly accessible at:
https://repobility.com/scan/6a9fbbec-f8ee-4107-b3a5-8557627a95cf/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/6a9fbbec-f8ee-4107-b3a5-8557627a95cf/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.