A lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. It runs in the web browser, on the desktop, on mobile, and inside Jupyter notebooks.
This report summarizes scanner evidence for opengeos/GeoLibre, a TypeScript project with 8,326 GitHub stars. SynthScan examined 1,172,036 lines of code across 3030 source files, recording 3927 pattern matches distributed across 19 syntactic categories. The legacy adjusted pattern signal is 3.8 (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? 3375 finding(s).
Are imports declared and package/API names verified? 348 finding(s).
Are wrappers, guards, and repeated structures necessary? 2942 finding(s).
Which changes need focused human review? 3927 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 3927 distinct pattern matches across 19 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/tests/test_deployment_policy.py | 33 | def test_good_fixtures_round_trip(name): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 39 | def test_schema_key_is_accepted_and_dropped(): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 49 | def test_bad_cases_fail_with_expected_error(name): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 57 | def test_python_constants_match_schema(): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 95 | def test_blank_env_leaves_file_value(tmp_path): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 104 | def test_capabilities_env_forms(): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 114 | def test_embed_origins_deduped_and_normalized(): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 119 | def test_app_name_truncated_with_log(): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 134 | def test_ai_enabled_without_proxy_env_fails(tmp_path): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 140 | def test_geolens_bare_host_gets_https(): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 145 | def test_write_policy_is_atomic_and_world_readable(tmp_path): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 154 | def test_file_embed_origin_with_query_or_fragment_is_rejected(origin): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 162 | def test_file_embed_origin_with_bad_port_or_host_is_rejected(origin): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 178 | def test_services_file_with_bom_is_read(tmp_path): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 185 | def test_url_query_is_not_logged(): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 194 | def test_malformed_bracketed_host_is_a_clean_error(url): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 200 | def test_embed_origins_env_is_deduplicated(): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 210 | def test_url_errors_do_not_echo_a_query_token(url): | CODE |
| LOW⚡ | docker/tests/test_deployment_policy.py | 216 | def test_whitespace_in_env_url_names_the_env_var(): | CODE |
| LOW | docker/tests/test_deployment_policy.py | 78 | def test_no_input_gives_empty_policy(): | CODE |
| LOW | docker/tests/test_deployment_policy.py | 82 | def test_env_overrides_file_with_one_log_line(tmp_path): | CODE |
| LOW | docker/tests/test_sidecar_policy.py | 18 | def test_route_ownership_contract(): | CODE |
| LOW | docker/tests/test_sidecar_policy.py | 60 | def test_disable_override_turns_unrestricted_sidecar_off(policy): | CODE |
| LOW | python/tests/test_credential_scan.py | 46 | def test_clean_bundle_reports_nothing(tmp_path: Path) -> None: | CODE |
| LOW | python/tests/test_credential_scan.py | 51 | def test_catches_inlined_env_object(tmp_path: Path) -> None: | CODE |
| LOW | python/tests/test_credential_scan.py | 63 | def test_catches_google_key_ending_in_dash(tmp_path: Path) -> None: | CODE |
| LOW⚡ | python/tests/test_credential_scan.py | 81 | def test_empty_value_does_not_fire(tmp_path: Path) -> None: | CODE |
| LOW⚡ | python/tests/test_credential_scan.py | 87 | def test_ignores_non_scannable_files(tmp_path: Path) -> None: | CODE |
| LOW⚡ | python/tests/test_credential_scan.py | 92 | def test_missing_patterns_file_fails_closed(tmp_path: Path, monkeypatch) -> None: | CODE |
| LOW⚡ | python/tests/test_credential_scan.py | 101 | def test_allowlisted_vendor_token_is_not_reported(tmp_path: Path) -> None: | CODE |
| LOW | python/tests/test_credential_scan.py | 119 | def test_matches_the_javascript_scanner(tmp_path: Path) -> None: | CODE |
| LOW⚡ | python/tests/test_layer_metadata.py | 57 | def test_layer_metadata_builds_the_camel_case_block(): | CODE |
| LOW⚡ | python/tests/test_layer_metadata.py | 72 | def test_layer_metadata_is_none_when_everything_is_blank(): | CODE |
| LOW | python/tests/test_layer_metadata.py | 87 | def test_layer_metadata_rejects_malformed_values(kwargs, message): | CODE |
| LOW | python/tests/test_layer_metadata.py | 92 | def test_dates_compare_as_instants(): | CODE |
| LOW | python/tests/test_layer_metadata.py | 106 | def test_is_valid_metadata_date(): | CODE |
| LOW | python/tests/test_layer_metadata.py | 113 | def test_normalize_layer_metadata_mirrors_the_app(): | CODE |
| LOW | python/tests/test_layer_metadata.py | 127 | def test_set_layer_metadata_round_trips_through_a_saved_file(proj, tmp_path): | CODE |
| LOW⚡ | python/tests/test_layer_metadata.py | 148 | def test_set_layer_metadata_merge_keeps_unnamed_fields(proj): | CODE |
| LOW⚡ | python/tests/test_layer_metadata.py | 156 | def test_emptying_the_metadata_removes_the_block(proj): | CODE |
| LOW⚡ | python/tests/test_layer_metadata.py | 165 | def test_set_layer_metadata_rejects_unknown_fields(proj): | CODE |
| LOW⚡ | python/tests/test_layer_metadata.py | 170 | def test_map_and_layer_handles(m): | CODE |
| LOW | python/tests/test_extension.py | 21 | def test_app_route_matches_frontend(): | CODE |
| LOW | python/tests/test_extension.py | 26 | def test_config_drop_in_enables_extension(): | CODE |
| LOW | python/tests/test_spaceborne_lidar.py | 66 | def test_detects_products_from_attributes_and_names(): | CODE |
| LOW | python/tests/test_spaceborne_lidar.py | 99 | def test_keeps_fill_rows_as_null_without_the_quality_filter(tmp_path): | CODE |
| LOW | python/tests/test_spaceborne_lidar.py | 108 | def test_filters_by_bbox_beams_and_caps_points(tmp_path): | CODE |
| LOW | python/tests/test_spaceborne_lidar.py | 124 | def test_skips_a_beam_without_land_segments(tmp_path): | CODE |
| LOW | python/tests/test_spaceborne_lidar.py | 148 | def test_rejects_a_non_lidar_file(tmp_path): | CODE |
| LOW | python/tests/test_spaceborne_lidar.py | 192 | def test_reports_when_no_footprint_survives(m, tmp_path): | CODE |
| LOW | python/tests/test_spaceborne_lidar.py | 199 | def test_along_track_distance_carries_over_invalid_coordinates(): | CODE |
| LOW | python/tests/test_spaceborne_lidar.py | 224 | def test_a_malformed_integer_fill_is_ignored(tmp_path): | CODE |
| LOW⚡ | python/tests/test_mcp_server.py | 120 | def test_workspace_rejects_a_path_outside_its_roots(tmp_path): | CODE |
| LOW⚡ | python/tests/test_mcp_server.py | 126 | def test_workspace_rejects_traversal_out_of_a_root(tmp_path): | CODE |
| LOW⚡ | python/tests/test_mcp_server.py | 132 | def test_workspace_rejects_a_symlink_escape(tmp_path): | CODE |
| LOW⚡ | python/tests/test_mcp_server.py | 145 | def test_workspace_resolves_relative_paths_against_the_first_root(tmp_path): | CODE |
| LOW⚡ | python/tests/test_mcp_server.py | 150 | def test_workspace_rejects_an_unsupported_output_extension(tmp_path): | CODE |
| LOW⚡ | python/tests/test_mcp_server.py | 156 | def test_workspace_guards_an_existing_output(tmp_path): | CODE |
| LOW⚡ | python/tests/test_mcp_server.py | 164 | def test_workspace_rejects_a_bare_dotfile_output(tmp_path): | CODE |
| LOW⚡ | python/tests/test_mcp_server.py | 171 | def test_workspace_rejects_a_root_that_is_not_a_directory(tmp_path): | CODE |
| 2648 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/tests/test_ui_controls.py | 295 | Pull the string literals out of an exported TS array constant. Args: source: Contents of the TypeScript mod | STRING |
| HIGH | python/src/geolibre/color_ramp.py | 146 | Build graduated ``vectorStyleStops`` from numeric values. Mirrors ``createGraduatedStops`` in ``StylePanel.tsx``: n | STRING |
| HIGH | python/src/geolibre/geolibre.py | 127 | Read a local vector file into a GeoJSON FeatureCollection via GeoPandas. The browser cannot read a file that lives | STRING |
| HIGH | python/src/geolibre/geolibre.py | 266 | Render a project dict as a standalone HTML page. The page embeds the GeoLibre app in an ``<iframe>`` and injects th | STRING |
| HIGH | python/src/geolibre/geolibre.py | 722 | Send a command to the running app and block for its reply. This is the low-level primitive behind the query/pro | STRING |
| HIGH | python/src/geolibre/geolibre.py | 772 | Send a command to the running app and asynchronously await its reply. Async counterpart of :meth:`request`, wit | STRING |
| HIGH | python/src/geolibre/geolibre.py | 1095 | Build an EPSG:4326 GeoDataFrame from GeoJSON features. Args: features: The features to wrap (each a | STRING |
| HIGH | python/src/geolibre/geolibre.py | 1217 | Run a processing algorithm in the app and add its result layers. Args: algorithm_id: An id from :me | STRING |
| HIGH | python/src/geolibre/geolibre.py | 1291 | Run a bundled Whitebox tool locally in the browser via WASM. Dataset parameters may be layer ids or :class:`Lay | STRING |
| HIGH | python/src/geolibre/geolibre.py | 1599 | Set a layer's descriptive (catalog) metadata. The app shows and edits it in the layer's Metadata dialog, export | STRING |
| HIGH | python/src/geolibre/geolibre.py | 2144 | Coerce assorted point inputs into a GeoJSON point FeatureCollection. Accepts the same forms as :meth:`add_geojs | STRING |
| HIGH | python/src/geolibre/geolibre.py | 2531 | Add a GeoJSON layer with data-driven (graduated) symbology. Classifies ``column`` into ``class_count`` numeric | STRING |
| HIGH | python/src/geolibre/geolibre.py | 2653 | Add a Google Earth Engine object as a raster tile layer. This follows the ``geemap``/``leafmap`` convention: Ea | STRING |
| HIGH | python/src/geolibre/geolibre.py | 2801 | Resolve a raster source to a URL the in-iframe app can fetch. An ``http(s)`` URL is used as-is. Anything else i | STRING |
| HIGH | python/src/geolibre/geolibre.py | 3079 | Add a WMS layer rendered as tiled raster (a WMS GetMap request). Args: endpoint: WMS service endpoi | STRING |
| HIGH | python/src/geolibre/geolibre.py | 3135 | Add a WMTS layer from a tile URL template. Args: url: A WMTS tile URL template (``{z}/{y}/{x}``). | STRING |
| HIGH | python/src/geolibre/geolibre.py | 3229 | Add a vector layer from a URL, a local file, or a geo object. A remote URL is handed to the in-browser vector c | STRING |
| HIGH | python/src/geolibre/geolibre.py | 3457 | Add ICESat-2 ATL06 or ATL08 footprints from an HDF5 granule. Reads the granule locally (with h5py) the way the | STRING |
| HIGH | python/src/geolibre/geolibre.py | 3517 | Add GEDI L2A, L2B or L4A shots from an HDF5 granule. Reads the granule locally (with h5py) the way the app's Ad | STRING |
| HIGH | python/src/geolibre/geolibre.py | 3603 | Pre-label a LiDAR layer with a Whitebox classifier, without the app. Runs the app's Pre-label classifiers on a | STRING |
| HIGH | python/src/geolibre/geolibre.py | 3661 | Define custom point cloud classes for the app's annotator. Custom classes (codes 19-255) extend the ASPRS stand | STRING |
| HIGH | python/src/geolibre/geolibre.py | 3723 | Add a CZML (Cesium Language) dynamic 3D scene. CZML describes time-varying scenes (satellite orbits, vehicle tr | STRING |
| HIGH | python/src/geolibre/geolibre.py | 4153 | Coerce a layer-id input into a list of layer-id strings. Accepts ``None`` (empty), a single layer id string, a | STRING |
| HIGH | python/src/geolibre/legends.py | 81 | Return a built-in legend preset by name. Args: name: A preset name (e.g. ``"nlcd"``, ``"esa_worldcover"``, | STRING |
| HIGH | python/src/geolibre/basemaps.py | 35 | Resolve a basemap name or URL to a MapLibre style URL. Args: basemap: A known basemap name (e.g. ``"liberty | STRING |
| HIGH | python/src/geolibre/authoring.py | 57 | Coerce to float, rejecting the values JSON cannot represent. ``json.loads`` turns an out-of-range literal like ``1e | STRING |
| HIGH | python/src/geolibre/authoring.py | 82 | Read a ``.geolibre.json`` file into a project dict. Args: path: Path to the project file. Returns: | STRING |
| HIGH | python/src/geolibre/authoring.py | 182 | Resolve a layer by id or by display name. An exact id match wins outright, so a layer whose *name* happens to equal | STRING |
| HIGH | python/src/geolibre/authoring.py | 219 | Resolve layer ids/names to ids, passing the basemap pseudo-id through. Args: project: The project dict. | STRING |
| HIGH | python/src/geolibre/authoring.py | 325 | Collect the distinct property values of an inlined GeoJSON layer. Lets a caller discover what a layer can be styled | STRING |
| HIGH | python/src/geolibre/authoring.py | 361 | Read one property's values across an inlined GeoJSON layer's features. Args: layer: A layer dict carrying a | STRING |
| HIGH | python/src/geolibre/authoring.py | 424 | Insert a built layer into the project's draw order. Args: project: The project dict (mutated in place). | STRING |
| HIGH | python/src/geolibre/authoring.py | 447 | Remove a layer by id or name. Any swipe control referencing the layer drops it from its side, so the saved proj | STRING |
| HIGH | python/src/geolibre/authoring.py | 496 | Change a layer's identity, visibility, or draw order. Only the arguments you pass are applied; the rest are left al | STRING |
| HIGH | python/src/geolibre/authoring.py | 531 | Merge style overrides into a layer's existing style. Args: project: The project dict (mutated in place). | STRING |
| HIGH | python/src/geolibre/authoring.py | 574 | Configure what a layer shows when a feature is clicked or hovered. A layer with no popup config keeps the app's def | STRING |
| HIGH | python/src/geolibre/authoring.py | 633 | Drop a layer's popup config, restoring the app's default popup. Args: project: The project dict (mutated in | STRING |
| HIGH | python/src/geolibre/authoring.py | 657 | Set a layer's descriptive (catalog) metadata. This is what the app's layer Metadata dialog edits and exports as a S | STRING |
| HIGH | python/src/geolibre/authoring.py | 718 | Drop a layer's descriptive metadata. Args: project: The project dict (mutated in place). ref: A lay | STRING |
| HIGH | python/src/geolibre/authoring.py | 743 | Build the ``vectorStyle*`` keys for a graduated (choropleth) symbology. Mirrors what the app's Style panel writes f | STRING |
| HIGH | python/src/geolibre/authoring.py | 798 | Symbolize an inlined GeoJSON layer as a choropleth on one column. Args: project: The project dict (mutated | STRING |
| HIGH | python/src/geolibre/authoring.py | 840 | Return ``secondaryMapViews`` validated as a list of renderable panes. Args: project: The project dict. | STRING |
| HIGH | python/src/geolibre/authoring.py | 928 | Set the saved camera the project opens at. Args: project: The project dict (mutated in place). cent | STRING |
| HIGH | python/src/geolibre/authoring.py | 986 | Frame a bounding box by computing a center and zoom for it. The saved project records a center/zoom, not a bbox to | STRING |
| HIGH | python/src/geolibre/authoring.py | 1066 | Set the project's background basemap style. Args: project: The project dict (mutated in place). bas | STRING |
| HIGH | python/src/geolibre/authoring.py | 1100 | Set the point cloud annotator's custom classes (its label schema). Replaces the custom classes and keeps the saved | STRING |
| HIGH | python/src/geolibre/authoring.py | 1254 | Add a legend control to the project. Supply the entries exactly one of three ways: a built-in preset (``builtin | STRING |
| HIGH | python/src/geolibre/authoring.py | 1339 | Show the map legend, the panel behind the app's Controls -> Legend. Unlike :func:`add_legend`, which draws hand-wri | STRING |
| HIGH | python/src/geolibre/authoring.py | 1407 | Add a colorbar control for a continuous (single-band) raster. Args: project: The project dict (mutated in p | STRING |
| HIGH | python/src/geolibre/authoring.py | 1538 | Configure the split-map (swipe) control. Args: project: The project dict (mutated in place). left_l | STRING |
| HIGH | python/src/geolibre/authoring.py | 1581 | Set or clear a layer's persistent feature filter. The filter is the project's ``filterExpression`` -- the same one | STRING |
| HIGH | python/src/geolibre/authoring.py | 1619 | Label a vector layer's features from an attribute or an expression. Unspecified options keep the layer's current la | STRING |
| HIGH | python/src/geolibre/authoring.py | 1669 | Store a plugin's saved state in the project, the way the app saves it. The blob is opaque to GeoLibre: each plugin | STRING |
| HIGH | python/src/geolibre/authoring.py | 1788 | Resolve a story chapter by id, title, or 0-based position. Args: project: The project dict. ref: A | STRING |
| HIGH | python/src/geolibre/authoring.py | 1825 | Set the story map's title block and presentation settings. Args: project: The project dict (mutated in plac | STRING |
| HIGH | python/src/geolibre/authoring.py | 1849 | Resolve the layer references in chapter opacity changes to layer ids. Args: project: The project dict. | STRING |
| HIGH | python/src/geolibre/authoring.py | 1895 | Add a chapter to the project's story map (Project -> Story Map). A camera value left out is taken from the project' | STRING |
| HIGH | python/src/geolibre/authoring.py | 1954 | Remove a story chapter by id, title, or index. Args: project: The project dict (mutated in place). | STRING |
| HIGH | python/src/geolibre/authoring.py | 1972 | Move a story chapter to a new position. Args: project: The project dict (mutated in place). ref: A | STRING |
| HIGH | python/src/geolibre/authoring.py | 2047 | Resolve a bookmark by id, name, or 0-based position. Args: project: The project dict. ref: A bookma | STRING |
| 57 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .pre-commit-config.yaml | 41 | - id: mixed-line-ending | COMMENT |
| LOW | ruff.toml | 1 | # Ruff config for the GeoLibre monorepo's Python (python/ + backend/). | COMMENT |
| LOW | playwright.config.ts | 141 | // Build without a Cesium Ion token from the shell. `vite.config.ts` bakes | COMMENT |
| LOW | docker/deployment_policy.py | 101 | disabled feature. Failing the boot instead puts the error where an operator | COMMENT |
| LOW | docker/entrypoint.sh | 1 | #!/bin/sh | COMMENT |
| LOW | docker/entrypoint.sh | 281 | # Origins allowed to drive a framed app over the embed postMessage API. Unset | COMMENT |
| LOW | docker/entrypoint.sh | 321 | # globalThis[GEOLIBRE_NASA_OPERA_NEWS_PROXY_ENDPOINT], falling back to its own | COMMENT |
| LOW | python/src/geolibre/_frontend.js | 1 | // anywidget front-end for the GeoLibre Jupyter widget. | COMMENT |
| LOW | python/src/geolibre/_frontend.js | 141 | // so trying it first avoids waiting on a failed extension probe -- the extension | COMMENT |
| LOW | python/src/geolibre/_frontend.js | 401 | COMMENT | |
| LOW | python/src/geolibre/geolibre.py | 381 | # The serialized project is the single source of truth synced over the | COMMENT |
| LOW | python/src/geolibre/project.py | 441 | # Mirrors LayerPopupConfig / PopupFieldConfig in packages/core/src/types.ts and | COMMENT |
| LOW | python/src/geolibre/project.py | 2901 | # components/gui-state.ts; PROJECT_PLUGIN_CONTROL_POSITIONS in core). | COMMENT |
| LOW | python/src/geolibre/project.py | 2921 | PUBLISHABLE_PLUGIN_SETTINGS: dict[str, tuple[str, ...] | None] = { | COMMENT |
| LOW | tests/tauri-csp.test.ts | 1 | // Guards the jsDelivr `script-src` allowlist of the desktop CSP (#2858) and the | COMMENT |
| LOW | tests/tauri-csp.test.ts | 261 | COMMENT | |
| LOW | tests/cesium-layer-sync-call-log.test.ts | 1 | import assert from "node:assert/strict"; | COMMENT |
| LOW | tests/plugin-engine-audit.test.ts | 21 | // Mapbox-capable plugins have the same problem in a different door: | COMMENT |
| LOW | tests/cesium-engine.test.ts | 21 | COMMENT | |
| LOW | backend/geolibre_server_api/geolibre_server_api/main.py | 781 | # avoids by streaming. The per-route checks stay authoritative; this only | COMMENT |
| LOW | backend/geolibre_server/notebook_client.py | 581 | :meth:`add_geojson`). | COMMENT |
| LOW | backend/geolibre_server/pyproject.toml | 21 | # default to keep the bundled sidecar small; the desktop app falls back to the | COMMENT |
| LOW | backend/geolibre_server/pyproject.toml | 41 | # the "Apache Sedona" engine of the SQL Workspace; the desktop app falls back to | COMMENT |
| LOW | backend/geolibre_server/pyproject.toml | 61 | # `%pip install` cell (which runs `sys.executable -m pip`) would otherwise fail | COMMENT |
| LOW | backend/geolibre_server/jupyter_server_config.py | 21 | # | COMMENT |
| LOW | backend/geolibre_server/jupyter_server_config.py | 61 | COMMENT | |
| LOW | backend/geolibre_server/jupyter_server_config.py | 81 | # the browser send them there; Secure is required with SameSite=None and is | COMMENT |
| LOW | …ckend/geolibre_server/geolibre_server/jupyter_relay.py | 81 | # useHttpsScheme is ever turned on) and any loopback dev origin. Matching is on | COMMENT |
| LOW | backend/geolibre_server/geolibre_server/vector_ops.py | 241 | # Surface the tool's own message rather than `float`'s raw "could not | COMMENT |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 921 | kind = str(spec.get("kind") or "") | COMMENT |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 561 | # The diff needs the table's full key set in memory; refuse | COMMENT |
| LOW | …kend/geolibre_server/geolibre_server/app/conversion.py | 101 | # ``raise SystemExit("...")`` — curated text such as "Expression may not use | COMMENT |
| LOW | …kend/geolibre_server/geolibre_server/app/conversion.py | 541 | break | COMMENT |
| LOW | backend/geolibre_server/geolibre_server/app/ml.py | 61 | _EXTERNAL_URL = os.environ.get("GEOLIBRE_ML_SAMGEO_URL") | COMMENT |
| LOW | backend/geolibre_server/geolibre_server/app/main.py | 41 | from .raster import router as raster_router | COMMENT |
| LOW | docs/plugin-api.md | 261 | // Desktop only: fetch through the native client (see "Signing in with a session cookie"). | COMMENT |
| LOW | docs/plugin-api.md | 281 | getMapboxMap?: () => import("mapbox-gl").Map | null; | COMMENT |
| LOW | scripts/embed-appimage-update-info.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/select-single-appimage.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/render-official-cask.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/render-official-cask.sh | 21 | # | COMMENT |
| LOW | scripts/render-homebrew-cask.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/render-copr-spec.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/render-copr-spec.sh | 21 | [[ "$DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]] || { echo "DATE must be YYYY-MM-DD" >&2; exit 1; } | COMMENT |
| LOW | scripts/render-aur-pkgbuild.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/render-aur-pkgbuild.sh | 21 | : "${SHA256_AMD64:?Set SHA256_AMD64 to the sha256 of the amd64 .deb}" | COMMENT |
| LOW | scripts/render-linux-metainfo.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/sync-ios-app-icon.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | packages/ui/src/components/dropdown-menu.tsx | 61 | React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent> | COMMENT |
| LOW | packages/ui/src/components/dropdown-menu.tsx | 81 | ref={ref} | COMMENT |
| LOW | packages/ui/src/components/dropdown-menu.tsx | 101 | // side with less overflow, but on a phone neither side fits: with a | COMMENT |
| LOW | packages/ui/src/components/color-field.tsx | 161 | // across environments that prerender the build. | COMMENT |
| LOW | packages/core/src/project.ts | 2281 | const { czmlData: _czmlData, ...source } = layer.source; | COMMENT |
| LOW | packages/core/src/geoarrow.ts | 1 | // Binary GeoArrow / flat columnar vector representation for GeoLibre. | COMMENT |
| LOW | packages/core/src/ellipsoids.ts | 281 | // Astrogeology equirectangular WMS layers to Web Mercator so MapLibre can render | COMMENT |
| LOW | packages/core/src/credentials.ts | 61 | // Feed toggles (one boolean per feed) plus a numeric clock speed — no URLs, | COMMENT |
| LOW | packages/core/src/runtime-env.ts | 1 | /** | COMMENT |
| LOW | packages/core/src/layer-library.ts | 1 | // The Layer Library's data layer (issue #1520): capturing a configured layer as | COMMENT |
| LOW | packages/core/src/layer-library.ts | 621 | const id = typeof candidate.id === "string" ? candidate.id.trim() : ""; | COMMENT |
| LOW | packages/core/src/deployment-capabilities.ts | 1 | // The deployment capability model (issue #1673). | COMMENT |
| 397 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/tests/test_layer_metadata.py | 34 | "contact": {"name": "Ada", "email": "ada@example.org", "organization": "TN GIS"}, | CODE |
| LOW⚡ | python/tests/test_layer_metadata.py | 64 | contact={"name": "Ada", "email": "ada@example.org", "organization": "TN GIS"}, | CODE |
| LOW | python/tests/test_layer_metadata.py | 136 | contact={"name": "Ada", "email": "ada@example.org", "organization": "TN GIS"}, | CODE |
| LOW | python/tests/test_authoring_parity.py | 650 | contact={"name": "Ada", "email": "ada@example.org", "organization": "GeoLibre"}, | CODE |
| LOW | python/src/geolibre/geolibre.py | 1626 | ... contact={"name": "Ada", "email": "ada@example.org"}, | STRING |
| LOW | tests/geocoding.test.ts | 48 | email: "me@example.org", | CODE |
| LOW | tests/geocoding.test.ts | 53 | assert.equal(url.searchParams.get("email"), "me@example.org"); | CODE |
| LOW | tests/geocoding.test.ts | 70 | email: "me@example.org", | CODE |
| LOW | tests/geocoding.test.ts | 74 | assert.equal(url.searchParams.get("email"), "me@example.org"); | CODE |
| LOW | tests/layer-descriptive-metadata.test.ts | 35 | contact: { name: "Ada Lovelace", email: "ada@example.org", organization: "TN GIS" }, | CODE |
| LOW | tests/layer-descriptive-metadata.test.ts | 132 | assert.equal(isValidMetadataEmail("ada@example.org"), true); | CODE |
| LOW | tests/layer-descriptive-metadata.test.ts | 140 | assert.equal(isValidMetadataUrl("mailto:ada@example.org"), true); | CODE |
| LOW | tests/layer-descriptive-metadata.test.ts | 357 | description: "Contact: Ada Lovelace, ada@example.org", | CODE |
| LOW | tests/layer-descriptive-metadata.test.ts | 457 | makeLayer({ descriptiveMetadata: { contact: { email: "ada@example.org" } } }), | CODE |
| LOW | tests/layer-descriptive-metadata.test.ts | 461 | { name: "ada@example.org", roles: ["producer"], description: "Contact: ada@example.org" }, | CODE |
| LOW | tests/share-fetch.test.ts | 155 | assert.equal(requestOrigin("mailto:someone@example.org"), null); | CODE |
| LOW | tests/assistant-reply-links.test.ts | 37 | "mailto:someone@example.org", | CODE |
| LOW | tests/plugin-native-fetch.test.ts | 20 | body: encode('{"email":"user@example.com"}'), | CODE |
| LOW | tests/plugin-native-fetch.test.ts | 35 | body: new URLSearchParams({ username: "user@example.com", password: "p&ss" }), | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_oidc.py | 429 | account(oauth_client, "carol", email="x@example.org") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_oidc.py | 432 | "u2", preferred_username="xavier", email="x@example.org", email_verified=True | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_oidc.py | 439 | claims = fake_idp.base_claims("u3", email="y@example.org", email_verified=True) | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_oidc.py | 442 | "y@example.org" | CODE |
| LOW | backend/geolibre_server_api/tests/test_auth_scopes.py | 190 | ("patch", "/api/account", {"email": "ada@example.org"}), | CODE |
| LOW | backend/geolibre_server_api/tests/test_oidc_interop.py | 95 | assert me["email"] == "interop@example.org" | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 200 | preferred_username="existing@example.org", | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 201 | email="existing@example.org", | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 232 | provisioned = _create_user(oauth_client, scim_token, org_id, "mail@example.org") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 235 | preferred_username="different@example.org", | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 236 | email="mail@example.org", | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 268 | claims = fake_idp.base_claims("adopter-sub", preferred_username="adopter@example.org") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 273 | orphan = _create_user(oauth_client, scim_token, org_id, "orphan@example.org") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 285 | moved = {**claims, "preferred_username": "orphan@example.org"} | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 289 | select(ScimUser).where(ScimUser.user_name == "orphan@example.org") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 301 | claims = fake_idp.base_claims("reprovision-sub", preferred_username="reprovision@example.org") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 329 | {"userName": "reprovision@example.org"}, | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 340 | user = _create_user(oauth_client, scim_token, org_id, "former@example.org") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 412 | _create_user(oauth_client, scim_token, org_id, "grace@example.org", externalId="ext-1") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 414 | _create_user(oauth_client, scim_token, org_id, "linus@example.org") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 422 | params={"filter": 'userName eq "GRACE@example.org"'}, | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 431 | assert [item["userName"] for item in page.json()["Resources"]] == ["linus@example.org"] | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 441 | oauth_client, scim_token, "POST", org_id, "/Users", {"userName": "Grace@example.org"} | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 464 | user = _create_user(oauth_client, scim_token, org_id, "grace@example.org") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 472 | {"op": "Add", "path": 'emails[type eq "work"].value', "value": "g@example.org"}, | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 480 | assert body["emails"] == [{"value": "g@example.org", "primary": True}] | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 514 | {"userName": "grace.hopper@example.org", "emails": [{"value": "gh@example.org"}]}, | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 517 | assert replaced.json()["userName"] == "grace.hopper@example.org" | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 519 | assert replaced.json()["emails"][0]["value"] == "gh@example.org" | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 537 | grace = _create_user(oauth_client, scim_token, org_id, "grace@example.org") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 538 | linus = _create_user(oauth_client, scim_token, org_id, "linus@example.org") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 617 | admin = _create_user(oauth_client, scim_token, org_id, "root@example.org") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 621 | claims = fake_idp.base_claims("root-sub", preferred_username="root@example.org") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 662 | member = _create_user(oauth_client, scim_token, org_id, "temp@example.org") | CODE |
| LOW⚡ | backend/geolibre_server_api/tests/test_scim.py | 674 | admin = _create_user(oauth_client, scim_token, org_id, "root@example.org") | CODE |
| LOW | backend/geolibre_server_api/tests/test_scim.py | 139 | assert user["userName"] == "grace@example.org" | CODE |
| LOW | backend/geolibre_server_api/tests/test_scim.py | 143 | claims = fake_idp.base_claims("entra-oid-1", preferred_username="grace@example.org") | CODE |
| LOW | backend/geolibre_server_api/tests/test_scim.py | 214 | {"userName": "existing@example.org"}, | CODE |
| LOW | backend/geolibre_server_api/tests/test_scim.py | 247 | preferred_username="mail@example.org", | CODE |
| LOW | backend/geolibre_server_api/tests/test_scim.py | 248 | email="mail@example.org", | CODE |
| LOW | backend/geolibre_server_api/tests/test_scim.py | 312 | {"userName": "reprovision@example.org"}, | CODE |
| 144 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | python/src/geolibre/project.py | 998 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/src/geolibre/project.py | 1002 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 81 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 83 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 116 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 118 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 131 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 133 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 204 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 206 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 380 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 382 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 791 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 793 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 859 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 861 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 1057 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 1059 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 1141 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 1143 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 1598 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/auth.py | 1600 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/scim.py | 189 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/scim.py | 191 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/scim.py | 302 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/scim.py | 304 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/scim.py | 395 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/scim.py | 397 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/scim.py | 674 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/scim.py | 676 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/scim.py | 745 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/geolibre_server_api/scim.py | 747 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/geolibre_server_api/tests/test_oauth.py | 45 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/geolibre_server_api/tests/test_oauth.py | 47 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/geolibre_server_api/tests/test_oauth.py | 144 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/geolibre_server_api/tests/test_oauth.py | 146 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/geolibre_server_api/tests/test_oauth.py | 323 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/geolibre_server_api/tests/test_oauth.py | 325 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/geolibre_server_api/tests/test_oauth.py | 432 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/geolibre_server_api/tests/test_oauth.py | 434 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/geolibre_server_api/tests/test_oauth.py | 571 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/geolibre_server_api/tests/test_oauth.py | 573 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/geolibre_server_api/tests/test_oauth.py | 888 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/geolibre_server_api/tests/test_oauth.py | 890 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/tests/test_oauth.py | 776 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/tests/test_oauth.py | 778 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/tests/test_oauth.py | 850 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server_api/tests/test_oauth.py | 852 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | workers/ai-proxy/worker-configuration.d.ts | 10522 | // ── Error types ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | workers/ai-proxy/worker-configuration.d.ts | 10543 | // ── Binding ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ibre-desktop/src/components/comments/CommentsPanel.tsx | 120 | // ── Display name ────────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/hatch_build.py | 16 | CODE | |
| LOW | python/tests/test_credential_scan.py | 12 | CODE | |
| LOW | python/tests/test_layer_metadata.py | 8 | CODE | |
| LOW | python/tests/test_extension.py | 8 | CODE | |
| LOW | python/tests/test_spaceborne_lidar.py | 3 | CODE | |
| LOW | python/tests/test_mcp_server.py | 8 | CODE | |
| LOW | python/tests/test_authoring.py | 7 | CODE | |
| LOW | python/tests/test_ui_controls.py | 3 | CODE | |
| LOW | python/tests/test_czml.py | 3 | CODE | |
| LOW | python/tests/test_extension_routes.py | 9 | CODE | |
| LOW | python/tests/test_server.py | 7 | CODE | |
| LOW | python/tests/test_mcp_live.py | 8 | CODE | |
| LOW | python/tests/test_async_request.py | 9 | CODE | |
| LOW | python/tests/test_authoring_parity.py | 19 | CODE | |
| LOW | python/tests/test_dash_component.py | 3 | CODE | |
| LOW | python/tests/test_map.py | 3 | CODE | |
| LOW | python/tests/test_project.py | 7 | CODE | |
| LOW | python/tests/test_color_ramp.py | 3 | CODE | |
| LOW | python/tests/test_agent_skill.py | 13 | CODE | |
| LOW | python/tests/test_scripting.py | 3 | CODE | |
| LOW | python/tests/test_mcp_network.py | 3 | CODE | |
| LOW | python/tests/test_cesium_ion.py | 3 | CODE | |
| LOW | python/tests/test_polyline.py | 3 | CODE | |
| LOW | python/src/geolibre/color_ramp.py | 9 | CODE | |
| LOW | python/src/geolibre/dash_component.py | 3 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 3 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 508 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 2985 | CODE | |
| LOW | python/src/geolibre/legends.py | 8 | CODE | |
| LOW | python/src/geolibre/__init__.py | 5 | CODE | |
| LOW | python/src/geolibre/__init__.py | 5 | CODE | |
| LOW | python/src/geolibre/__init__.py | 5 | CODE | |
| LOW | python/src/geolibre/__init__.py | 5 | CODE | |
| LOW | python/src/geolibre/__init__.py | 5 | CODE | |
| LOW | python/src/geolibre/__init__.py | 12 | CODE | |
| LOW | python/src/geolibre/__init__.py | 13 | CODE | |
| LOW | python/src/geolibre/__init__.py | 13 | CODE | |
| LOW | python/src/geolibre/__init__.py | 13 | CODE | |
| LOW | python/src/geolibre/__init__.py | 14 | CODE | |
| LOW | python/src/geolibre/__init__.py | 15 | CODE | |
| LOW | python/src/geolibre/__init__.py | 15 | CODE | |
| LOW | python/src/geolibre/__init__.py | 15 | CODE | |
| LOW | python/src/geolibre/__init__.py | 15 | CODE | |
| LOW | python/src/geolibre/basemaps.py | 3 | CODE | |
| LOW | python/src/geolibre/authoring.py | 13 | CODE | |
| LOW | python/src/geolibre/polyline.py | 3 | CODE | |
| LOW | python/src/geolibre/spaceborne_lidar.py | 20 | CODE | |
| LOW | python/src/geolibre/_server.py | 16 | CODE | |
| LOW | python/src/geolibre/project.py | 9 | CODE | |
| LOW | python/src/geolibre/_extension.py | 29 | CODE | |
| LOW | python/src/geolibre/mcp/__init__.py | 12 | CODE | |
| LOW | python/src/geolibre/mcp/__init__.py | 17 | CODE | |
| LOW | python/src/geolibre/mcp/__init__.py | 17 | CODE | |
| LOW | python/src/geolibre/mcp/network.py | 8 | CODE | |
| LOW | python/src/geolibre/mcp/live.py | 14 | CODE | |
| LOW | python/src/geolibre/mcp/workspace.py | 10 | CODE | |
| LOW | python/src/geolibre/mcp/__main__.py | 3 | CODE | |
| LOW | backend/geolibre_server_api/geolibre_server_api/auth.py | 29 | CODE | |
| LOW | backend/geolibre_server_api/geolibre_server_api/oidc.py | 12 | CODE | |
| LOW | …kend/geolibre_server_api/geolibre_server_api/egress.py | 11 | CODE | |
| 73 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/src/geolibre/geolibre.py | 615 | except Exception as exc: # noqa: BLE001 - never let one callback kill the bus | CODE |
| LOW | python/src/geolibre/geolibre.py | 2756 | except Exception as exc: | CODE |
| LOW | python/src/geolibre/geolibre.py | 2773 | except Exception as exc: | CODE |
| LOW | python/src/geolibre/geolibre.py | 2879 | except Exception: # pragma: no cover - tile renderer reports invalid rasters | CODE |
| LOW | python/src/geolibre/geolibre.py | 3058 | except Exception: | CODE |
| LOW | python/src/geolibre/pointcloud.py | 422 | except Exception: # pyproj missing, or GeoKeys it cannot read | CODE |
| LOW | python/src/geolibre/_server.py | 178 | except Exception as exc: # pragma: no cover - rio-tiler error text varies | CODE |
| LOW | backend/geolibre_server_api/geolibre_server_api/main.py | 627 | except Exception: | STRING |
| LOW | backend/geolibre_server_api/geolibre_server_api/main.py | 741 | except Exception: | STRING |
| LOW | …end/geolibre_server_api/tests/test_oidc_concurrency.py | 32 | except Exception as exc: # noqa: BLE001 - record for assertion | CODE |
| MEDIUM | …end/geolibre_server_api/tests/test_oidc_concurrency.py | 28 | def runner(index, fn): | CODE |
| LOW | …nd/geolibre_server_api/tests/test_oauth_concurrency.py | 75 | except Exception as exc: # noqa: BLE001 - record for assertion | CODE |
| MEDIUM | …nd/geolibre_server_api/tests/test_oauth_concurrency.py | 71 | def runner(index, fn): | CODE |
| LOW | …server_api/tests/test_enterprise_policy_concurrency.py | 35 | except Exception as exc: # noqa: BLE001 - record for assertion | CODE |
| MEDIUM | …server_api/tests/test_enterprise_policy_concurrency.py | 31 | def runner(index, fn): | CODE |
| LOW | …end/geolibre_server_api/tests/test_scim_concurrency.py | 32 | except Exception as exc: # noqa: BLE001 - record for assertion | CODE |
| MEDIUM | …end/geolibre_server_api/tests/test_scim_concurrency.py | 28 | def runner(index, fn): | CODE |
| LOW | …geolibre_server_api/tests/test_transfer_concurrency.py | 52 | except Exception as exc: # noqa: BLE001 - report thread failure in the test | CODE |
| MEDIUM | …geolibre_server_api/tests/test_transfer_concurrency.py | 49 | def run(name, operation): | CODE |
| LOW | …ckend/geolibre_server/geolibre_server/jupyter_relay.py | 205 | except Exception: # noqa: BLE001 - a dead peer must not fail the request | CODE |
| LOW | backend/geolibre_server/geolibre_server/sedona_ops.py | 75 | except Exception as exc: # noqa: BLE001 - report any import failure | CODE |
| LOW | backend/geolibre_server/geolibre_server/sedona_ops.py | 100 | except Exception: # noqa: BLE001 - fall through to the generic paths | CODE |
| LOW | backend/geolibre_server/geolibre_server/sedona_ops.py | 200 | except Exception: # noqa: BLE001 - no active geometry column | CODE |
| LOW | backend/geolibre_server/geolibre_server/sedona_ops.py | 238 | except Exception: # noqa: BLE001 - best-effort cleanup | CODE |
| LOW | backend/geolibre_server/geolibre_server/vector_ops.py | 77 | except Exception as exc: # noqa: BLE001 - report any import failure | CODE |
| LOW | backend/geolibre_server/geolibre_server/vector_ops.py | 287 | except Exception as exc: # noqa: BLE001 - any GEOS failure is bad input | CODE |
| LOW | backend/geolibre_server/geolibre_server/vector_ops.py | 811 | except Exception as exc: # noqa: BLE001 - surface any CRS/parse failure as 400 | CODE |
| LOW | backend/geolibre_server/geolibre_server/vector_ops.py | 1288 | except Exception: # noqa: BLE001 - keep the original geometry | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 638 | except Exception: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 1105 | except Exception: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 1136 | except Exception: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 1151 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 1163 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 1312 | except Exception as exc: | CODE |
| MEDIUM | backend/geolibre_server/geolibre_server/app/mssql.py | 76 | def pyodbc_import_error() -> Optional[str]: | CODE |
| MEDIUM | backend/geolibre_server/geolibre_server/app/mssql.py | 84 | def azure_identity_import_error() -> Optional[str]: | CODE |
| LOW⚡ | backend/geolibre_server/geolibre_server/app/mssql.py | 79 | except Exception as exc: | CODE |
| LOW⚡ | backend/geolibre_server/geolibre_server/app/mssql.py | 87 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 135 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 368 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 387 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 424 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 480 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 566 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 825 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 837 | except Exception: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 856 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 891 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 948 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 1090 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/vector.py | 107 | except Exception as exc: # noqa: BLE001 - surface a stable error to the client | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/vector.py | 308 | except Exception as exc: # noqa: BLE001 - surface a stable error to the client | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 66 | except Exception as exc: # noqa: BLE001 - report any import failure | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 217 | except Exception as exc: # noqa: BLE001 - surface a stable, scrubbed error | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 387 | except Exception as exc: # noqa: BLE001 - surface a stable, scrubbed error | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 453 | except Exception as exc: # noqa: BLE001 - surface a stable, scrubbed error | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 726 | except Exception as exc: # noqa: BLE001 - surface a stable, scrubbed error | CODE |
| LOW | …kend/geolibre_server/geolibre_server/app/conversion.py | 576 | except Exception: | CODE |
| MEDIUM | …kend/geolibre_server/geolibre_server/app/conversion.py | 848 | print(f"Error: {message}") | CODE |
| LOW | …kend/geolibre_server/geolibre_server/app/conversion.py | 1245 | except Exception as exc: | CODE |
| 28 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/src/geolibre/geolibre.py | 117 | except OSError: # pragma: no cover - best-effort cleanup at exit | CODE |
| HIGH | python/src/geolibre/geolibre.py | 696 | except RuntimeError: | CODE |
| HIGH | python/src/geolibre/geolibre.py | 594 | except RuntimeError: | CODE |
| HIGH | python/src/geolibre/pointcloud.py | 405 | except (AttributeError, ValueError): | CODE |
| HIGH | python/src/geolibre/spaceborne_lidar.py | 716 | except ValueError: | CODE |
| HIGH | backend/geolibre_server_api/geolibre_server_api/oidc.py | 586 | except IntegrityError: | CODE |
| HIGH | backend/geolibre_server_api/geolibre_server_api/oidc.py | 675 | except IntegrityError: | CODE |
| HIGH | backend/geolibre_server_api/geolibre_server_api/oidc.py | 703 | except IntegrityError: | CODE |
| HIGH | backend/geolibre_server/geolibre_server/vector_ops.py | 1217 | except ValueError: | CODE |
| HIGH | backend/geolibre_server/geolibre_server/app/whitebox.py | 92 | except ValueError: | CODE |
| HIGH | backend/geolibre_server/geolibre_server/app/whitebox.py | 208 | except RuntimeBootstrapError: | CODE |
| HIGH | backend/geolibre_server/geolibre_server/app/whitebox.py | 1047 | except (json.JSONDecodeError, AttributeError): | CODE |
| HIGH | backend/geolibre_server/geolibre_server/app/whitebox.py | 498 | except subprocess.TimeoutExpired: | CODE |
| HIGH | …kend/geolibre_server/geolibre_server/app/conversion.py | 1155 | except OSError: | CODE |
| HIGH | …kend/geolibre_server/geolibre_server/app/conversion.py | 929 | except RuntimeBootstrapError: | CODE |
| HIGH | backend/geolibre_server/geolibre_server/app/ml.py | 415 | except ValueError: | CODE |
| HIGH | …kend/geolibre_server/geolibre_server/app/pointcloud.py | 379 | except OSError: | CODE |
| HIGH | backend/geolibre_server/tests/test_mssql.py | 28 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/tests/test_layer_metadata.py | 0 | a project with one inlined geojson layer named "cities". | STRING |
| HIGH | python/tests/test_authoring.py | 0 | a project with one inlined geojson layer named "cities". | STRING |
| HIGH | python/tests/test_authoring_parity.py | 0 | a project with one inlined geojson layer named "cities". | STRING |
| HIGH | python/tests/test_layer_metadata.py | 0 | a map instance with the static server stubbed out (no bundle needed). | STRING |
| HIGH | python/tests/test_ui_controls.py | 0 | a map instance with the static server stubbed out (no bundle needed). | STRING |
| HIGH | python/tests/test_async_request.py | 0 | a map instance with the static server stubbed out (no bundle needed). | STRING |
| HIGH | python/tests/test_map.py | 0 | a map instance with the static server stubbed out (no bundle needed). | STRING |
| HIGH | python/tests/test_scripting.py | 0 | a map instance with the static server stubbed out (no bundle needed). | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/src/geolibre/geolibre.py | 243 | if (data && data.type === "geolibre:ready") load(); | CODE |
| HIGH | python/src/geolibre/mcp/server.py | 1609 | Omit it (or pass null) to clear the filter. | STRING |
| HIGH | backend/geolibre_server_api/geolibre_server_api/main.py | 2911 | # exclude_unset keeps a field the client sent as an explicit null, so | COMMENT |
| HIGH | backend/geolibre_server_api/geolibre_server_api/main.py | 2949 | # exclude_unset keeps an explicit null, which would hit the | COMMENT |
| HIGH | backend/geolibre_server_api/tests/test_auth_pats.py | 163 | password_hash text not null, | STRING |
| HIGH | backend/geolibre_server/notebook_client.py | 295 | "if (window.parent && window.parent !== window) {" | CODE |
| HIGH⚡ | backend/geolibre_server/tests/test_vector_ops.py | 1587 | assert untouched.equals(shape(BOWTIE["features"][1]["geometry"])) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | python/src/geolibre/geolibre.py | 3870 | def set_zoom(self, zoom: float) -> None: | CODE |
| LOW⚡ | python/src/geolibre/geolibre.py | 3874 | def set_bearing(self, bearing: float) -> None: | CODE |
| LOW⚡ | python/src/geolibre/geolibre.py | 3878 | def set_pitch(self, pitch: float) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 545 | def _update_project(self, mutate: Callable[[dict[str, Any]], None]) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 1478 | def set_layer_visibility(self, layer: str | Layer, visible: bool = True) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 1482 | def set_layer_opacity(self, layer: str | Layer, opacity: float) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 1641 | def set_layer_filter(self, layer: str | Layer, expression: Any) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 3824 | def set_basemap(self, basemap: str) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 3832 | def set_center(self, lng: float, lat: float, zoom: float | None = None) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 3847 | def set_renderer(self, renderer: str, *, pane_id: str | None = None) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 3935 | def _set_ui(self, **changes: Any) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 3994 | def set_identify(self, layer: str | Layer | Sequence[str | Layer] | None = "all") -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 4122 | def set_projection(self, projection: str) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 4690 | def set_style(self, **style: Any) -> None: | CODE |
| LOW | python/src/geolibre/__init__.py | 29 | __all__ = [ | CODE |
| LOW | python/src/geolibre/_extension.py | 74 | def set_extra_headers(self, path: str) -> None: | CODE |
| LOW | python/src/geolibre/mcp/__init__.py | 19 | __all__ = ["Workspace", "WorkspaceError", "build_server", "main"] | CODE |
| LOW | python/src/geolibre/mcp/live.py | 25 | __all__ = [ | CODE |
| LOW | backend/geolibre_server_api/geolibre_server_api/oidc.py | 55 | logger = logging.getLogger(__name__) | CODE |
| LOW | …nd/geolibre_server_api/geolibre_server_api/__init__.py | 5 | __all__ = ["create_app"] | CODE |
| LOW | backend/geolibre_server_api/geolibre_server_api/main.py | 107 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/geolibre_server/notebook_client.py | 72 | __all__ = [ | CODE |
| LOW | backend/geolibre_server/notebook_client.py | 508 | def set_view(self, lng: float, lat: float, *, zoom: float | None = None) -> None: | CODE |
| LOW | backend/geolibre_server/notebook_client.py | 525 | def set_basemap(self, url: str) -> None: | CODE |
| LOW⚡ | backend/geolibre_server/notebook_client.py | 731 | def set_visibility(self, layer_id: str, visible: bool) -> None: | CODE |
| LOW⚡ | backend/geolibre_server/notebook_client.py | 735 | def set_opacity(self, layer_id: str, opacity: float) -> None: | CODE |
| LOW⚡ | backend/geolibre_server/notebook_client.py | 739 | def set_style(self, layer_id: str, **style: Any) -> None: | CODE |
| LOW | …ckend/geolibre_server/geolibre_server/jupyter_relay.py | 58 | __all__ = [ | CODE |
| LOW | backend/geolibre_server/geolibre_server/sedona_ops.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/vector.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | …kend/geolibre_server/geolibre_server/app/conversion.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/obia.py | 55 | logger = logging.getLogger(__name__) | CODE |
| LOW | …kend/geolibre_server/geolibre_server/app/pointcloud.py | 44 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/sql.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/raster.py | 43 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/deployment_policy.py | 372 | CODE | |
| LOW | docker/deployment_policy.py | 441 | CODE | |
| LOW | python/hatch_build.py | 85 | CODE | |
| LOW | python/tests/test_authoring_parity.py | 513 | CODE | |
| LOW | python/tests/test_agent_skill.py | 254 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 622 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 2441 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 2645 | CODE | |
| LOW | python/src/geolibre/authoring.py | 1243 | CODE | |
| LOW | python/src/geolibre/pointcloud.py | 61 | CODE | |
| LOW | python/src/geolibre/pointcloud.py | 283 | CODE | |
| LOW | python/src/geolibre/spaceborne_lidar.py | 429 | CODE | |
| LOW | python/src/geolibre/spaceborne_lidar.py | 580 | CODE | |
| LOW | python/src/geolibre/project.py | 152 | CODE | |
| LOW | python/src/geolibre/project.py | 226 | CODE | |
| LOW | python/src/geolibre/project.py | 668 | CODE | |
| LOW | python/src/geolibre/project.py | 829 | CODE | |
| LOW | python/src/geolibre/project.py | 903 | CODE | |
| LOW | python/src/geolibre/project.py | 2518 | CODE | |
| LOW | python/src/geolibre/project.py | 2819 | CODE | |
| LOW | python/src/geolibre/project.py | 3625 | CODE | |
| LOW | python/src/geolibre/mcp/network.py | 346 | CODE | |
| LOW | python/src/geolibre/mcp/network.py | 303 | CODE | |
| LOW | backend/geolibre_server_api/geolibre_server_api/oidc.py | 101 | CODE | |
| LOW | backend/geolibre_server_api/geolibre_server_api/oidc.py | 338 | CODE | |
| LOW | backend/geolibre_server_api/geolibre_server_api/scim.py | 287 | CODE | |
| LOW | backend/geolibre_server_api/geolibre_server_api/scim.py | 750 | CODE | |
| LOW | backend/geolibre_server_api/geolibre_server_api/scim.py | 940 | CODE | |
| LOW | backend/geolibre_server_api/geolibre_server_api/scim.py | 1103 | CODE | |
| LOW | backend/geolibre_server_api/geolibre_server_api/main.py | 464 | CODE | |
| LOW | backend/geolibre_server_api/geolibre_server_api/main.py | 676 | CODE | |
| LOW | backend/geolibre_server_api/tests/test_oidc.py | 351 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/sedona_ops.py | 118 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/vector_ops.py | 648 | CODE | |
| LOW | …ckend/geolibre_server/geolibre_server/app/db_common.py | 50 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 845 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 961 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 1264 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 352 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 752 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/mssql.py | 955 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 513 | CODE | |
| LOW | …kend/geolibre_server/geolibre_server/app/conversion.py | 1159 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/appimage-update-info.test.ts | 28 | print(name, env); | CODE |
| HIGH⚡ | tests/appimage-update-info.test.ts | 38 | print("GeoLibre.Desktop_2.3.0_amd64.AppImage"), | CODE |
| HIGH⚡ | tests/appimage-update-info.test.ts | 45 | print("GeoLibre.Desktop_2.3.0_amd64.AppImage", { REPO: "giswqs/Fork" }), | CODE |
| HIGH⚡ | tests/appimage-update-info.test.ts | 52 | print("target/release/bundle/appimage/GeoLibre.Desktop_2.3.0_amd64.AppImage"), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/geolibre_server/tests/test_vector_golden.py | 63 | # --- matcher (mirror of the TS harness) ----------------------------------- | COMMENT |
| MEDIUM | backend/geolibre_server/tests/test_vector_golden.py | 68 | # Treat booleans strictly so this matches the TS harness, where `true === 1` | COMMENT |
| MEDIUM | backend/geolibre_server/tests/test_vector_golden.py | 108 | # not silently accepted as equal). Mirrors the TS harness. | COMMENT |
| MEDIUM | …lugins/src/plugins/planetary-computer-collections.json | 2502 | "description": "The [Multi-Radar Multi-Sensor (MRMS) Quantitative Precipitation Estimation (QPE)](https://www.nssl.n | CODE |
| MEDIUM | …lugins/src/plugins/planetary-computer-collections.json | 2528 | "description": "The [Multi-Radar Multi-Sensor (MRMS) Quantitative Precipitation Estimation (QPE)](https://www.nssl.n | CODE |
| MEDIUM | …lugins/src/plugins/planetary-computer-collections.json | 2554 | "description": "The [Multi-Radar Multi-Sensor (MRMS) Quantitative Precipitation Estimation (QPE)](https://www.nssl.n | CODE |
| MEDIUM | .github/workflows/ci.yml | 559 | # `!cancelled()` on the OIDC steps (and the entrypoint harness in | COMMENT |
| MEDIUM | …ibre-desktop/src/components/layout/AddNetcdfDialog.tsx | 545 | // flat wash, so fall back to the slice's own robust range when | COMMENT |
| MEDIUM | …bre-desktop/src/components/layout/NetcdfCubeWindow.tsx | 190 | // cube's robust range means a layer that records none still gets a stretch | COMMENT |
| MEDIUM | …ps/geolibre-desktop/src/hooks/useUiProfileBootstrap.ts | 10 | // so any live component instance observes the result — robust to React 18 | COMMENT |
| MEDIUM | apps/geolibre-desktop/src/lib/georeference-gdal.ts | 57 | // Round-trip through bytes to reopen as a fresh dataset (robust across the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/src/geolibre/dash_component.py | 62 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 415 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 1486 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 1781 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 2202 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 2267 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 3064 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 3443 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 3503 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 4331 | CODE | |
| LOW | python/src/geolibre/authoring.py | 558 | CODE | |
| LOW | python/src/geolibre/authoring.py | 1395 | CODE | |
| LOW | python/src/geolibre/authoring.py | 1876 | CODE | |
| LOW | python/src/geolibre/authoring.py | 2078 | CODE | |
| LOW | python/src/geolibre/spaceborne_lidar.py | 644 | CODE | |
| LOW | python/src/geolibre/project.py | 581 | CODE | |
| LOW | python/src/geolibre/project.py | 712 | CODE | |
| LOW | python/src/geolibre/project.py | 1161 | CODE | |
| LOW | python/src/geolibre/project.py | 1240 | CODE | |
| LOW | python/src/geolibre/project.py | 3713 | CODE | |
| LOW | python/src/geolibre/mcp/server.py | 573 | CODE | |
| LOW | python/src/geolibre/mcp/server.py | 727 | CODE | |
| LOW | python/src/geolibre/mcp/server.py | 1145 | CODE | |
| LOW | python/src/geolibre/mcp/server.py | 1214 | CODE | |
| LOW | python/src/geolibre/mcp/server.py | 1515 | CODE | |
| LOW | python/src/geolibre/mcp/server.py | 1619 | CODE | |
| LOW | python/src/geolibre/mcp/server.py | 1752 | CODE | |
| LOW | python/src/geolibre/mcp/server.py | 1811 | CODE | |
| LOW | backend/geolibre_server_api/geolibre_server_api/main.py | 2729 | CODE | |
| LOW | backend/geolibre_server_api/tests/helpers.py | 79 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/embed-appimage-update-info.sh | 15 | # Usage: | COMMENT |
| LOW | scripts/select-single-appimage.sh | 11 | # Usage: | COMMENT |
| LOW | scripts/render-official-cask.sh | 15 | # Usage: | COMMENT |
| LOW | scripts/render-homebrew-cask.sh | 14 | # Usage: | COMMENT |
| LOW | scripts/render-copr-spec.sh | 10 | # Usage: | COMMENT |
| LOW | scripts/render-aur-pkgbuild.sh | 11 | # Usage: | COMMENT |
| LOW | scripts/render-linux-metainfo.sh | 10 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/plugins/src/plugins/maplibre-openaerialmap.ts | 1298 | // Metadata sits before Add, as requested, so details are one click from view. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/claude-code-review.yml | 196 | # Combined with the prompt's read-scope guardrails, the untrusted head is | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | python/tests/test_scripting.py | 158 | CODE |