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 presents the forensic synthetic code analysis of opengeos/GeoLibre, a TypeScript project with 4,924 GitHub stars. SynthScan v2.0 examined 503,611 lines of code across 1208 source files, recording 1622 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 3.5 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1622 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| 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_extension_routes.py | 53 | def test_head_probe_reaches_index_html(self): | CODE |
| LOW | python/tests/test_extension_routes.py | 59 | def test_directory_defaults_to_index(self): | CODE |
| LOW | python/tests/test_server.py | 59 | def test_full_get_returns_whole_file(served): | CODE |
| LOW | python/tests/test_server.py | 106 | def test_register_same_file_reuses_token(served): | CODE |
| LOW⚡ | python/tests/test_server.py | 117 | def test_options_preflight_allows_range(served): | CODE |
| LOW⚡ | python/tests/test_server.py | 126 | def test_register_missing_file_raises(served): | CODE |
| LOW⚡ | python/tests/test_server.py | 131 | def test_register_requires_running_server(monkeypatch, tmp_path): | CODE |
| LOW⚡ | python/tests/test_map.py | 26 | def test_remote_mode_explicit(): | CODE |
| LOW⚡ | python/tests/test_map.py | 31 | def test_remote_mode_auto_local(monkeypatch): | CODE |
| LOW⚡ | python/tests/test_map.py | 36 | def test_remote_mode_auto_jupyterhub(monkeypatch): | CODE |
| LOW⚡ | python/tests/test_map.py | 46 | def test_remote_mode_colab_forces_direct(monkeypatch): | CODE |
| LOW⚡ | python/tests/test_map.py | 54 | def test_remote_mode_non_colab_uses_remote(monkeypatch): | CODE |
| LOW⚡ | python/tests/test_map.py | 59 | def test_add_wms_appends_record_and_bumps_seq(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 80 | def test_add_vector_url_uses_control(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 87 | def test_add_geoparquet_sets_format(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 92 | def test_add_flatgeobuf_sets_format(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 97 | def test_format_convenience_methods(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 261 | def test_add_marker_single_point(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 271 | def test_add_markers_from_pairs(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 280 | def test_add_markers_from_dicts_keeps_properties(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 287 | def test_add_markers_rejects_bad_pair(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 292 | def test_add_markers_rejects_dict_missing_coords(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 297 | def test_add_markers_rejects_non_point_geojson(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 327 | def test_add_circle_markers_sets_radius(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 332 | def test_add_heatmap_sets_renderer(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 340 | def test_add_heatmap_validates_parameters(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 381 | def test_add_csv_keeps_extra_fields_under_a_string_key(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 387 | def test_add_csv_rejects_non_public_url(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 392 | def test_add_csv_rejects_oversized_file(monkeypatch, tmp_path, m): | CODE |
| LOW⚡ | python/tests/test_map.py | 400 | def test_add_gdf_requires_geo_interface(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 405 | def test_add_marker_cluster_enables_clustering(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 454 | def test_add_choropleth_style_override_wins(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 459 | def test_add_data_without_column_is_plain_geojson(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 464 | def test_add_data_with_column_is_choropleth(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 503 | def test_split_map_accepts_layer_objects_and_lists(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 512 | def test_split_map_clamps_position(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 517 | def test_split_map_rejects_bad_orientation(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 522 | def test_split_map_rejects_bad_layer_reference(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 527 | def test_split_map_rejects_bare_non_iterable(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 533 | def test_existing_plugins_block_is_not_reseeded(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 568 | def test_add_legend_from_labels_and_colors(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 575 | def test_add_legend_builtin_nlcd(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 583 | def test_add_legend_builtin_esa_alias(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 588 | def test_add_legend_unknown_builtin_raises(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 593 | def test_add_legend_requires_entries(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 598 | def test_add_legend_mismatched_labels_colors(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 603 | def test_add_legend_rejects_combined_sources(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 609 | def test_add_legend_appends_multiple(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 629 | def test_add_colorbar_custom_colors(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 636 | def test_add_colorbar_empty_custom_colors_raises(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 641 | def test_add_colorbar_bad_position_raises(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 646 | def test_add_colorbar_rejects_inverted_range(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 651 | def test_add_colormap_is_colorbar_alias(m): | CODE |
| LOW⚡ | python/tests/test_map.py | 659 | def test_legend_and_colorbar_coexist(m): | CODE |
| LOW | python/tests/test_map.py | 127 | def test_add_video_wraps_single_url(m): | CODE |
| LOW | python/tests/test_map.py | 132 | def test_add_wfs_inlines_geojson(monkeypatch, m): | CODE |
| LOW | python/tests/test_map.py | 153 | def test_add_vector_local_file_inlined(monkeypatch, m): | CODE |
| LOW | python/tests/test_map.py | 172 | def test_add_vector_local_file_warns_on_ignored_render_mode(monkeypatch, m): | CODE |
| 1071 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ruff.toml | 1 | # Ruff config for the GeoLibre monorepo's Python (python/ + backend/). | COMMENT |
| LOW | docker/entrypoint.sh | 1 | #!/bin/sh | COMMENT |
| LOW | python/src/geolibre/_frontend.js | 1 | // anywidget front-end for the GeoLibre Jupyter widget. | COMMENT |
| LOW | python/src/geolibre/_frontend.js | 41 | COMMENT | |
| LOW | python/src/geolibre/geolibre.py | 201 | COMMENT | |
| LOW | python/src/geolibre/geolibre.py | 841 | # Force the embed bridge on (isEmbedded() honours ?embed=1). Insert the | COMMENT |
| LOW | tests/viewer-plugins.test.ts | 21 | // The viewer preset looks each id up through `PluginManager.isActive`, so a | COMMENT |
| LOW | backend/geolibre_server/notebook_client.py | 561 | # JupyterLite. A handler error still raises. | COMMENT |
| LOW | backend/geolibre_server/pyproject.toml | 21 | vector = ["geopandas>=1.0", "shapely>=2.0"] | COMMENT |
| LOW | backend/geolibre_server/pyproject.toml | 41 | # launches `jupyter lab` from this uv-managed env (see src-tauri/src/lib.rs); | 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 | # host and scheme separately, so both Windows schemes are already covered. | COMMENT |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 901 | # When a root allowlist is configured and this is not a batch run, pin the | COMMENT |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 41 | # Statement timeout applied to every sidecar-issued session so a bad query or | COMMENT |
| LOW | …kend/geolibre_server/geolibre_server/app/conversion.py | 101 | # ``raise SystemExit("...")`` — curated text such as "Expression may not use | 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/color-field.tsx | 141 | ref, | COMMENT |
| LOW | packages/core/src/project.ts | 1381 | // The live time filter is derived from the Time Slider's current date, so it | COMMENT |
| LOW | packages/core/src/ellipsoids.ts | 221 | // USGS Astrogeology, the origin of every reprojected WMS basemap below. | COMMENT |
| LOW | packages/core/src/layer-style-clipboard.ts | 161 | // re-points, rather than the paste silently dropping parts of the style. | COMMENT |
| LOW | packages/core/src/store.ts | 1641 | })), | COMMENT |
| LOW | packages/core/src/store.ts | 2241 | // is excluded, so changing them never creates a history entry. | 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 | 581 | // `restoreRasterLayers` re-reads — so it needs the same validation as | COMMENT |
| LOW | packages/processing/src/wasm-convert.ts | 1 | // In-browser format conversion backed by the `geolibre-wasm/tools` WASI runner | COMMENT |
| LOW | packages/processing/src/wasm-client.ts | 341 | // The WASM binary is authoritative for the parameters it declares, and for | COMMENT |
| LOW | packages/processing/src/topology-tools.ts | 1 | // Data-quality vector tools: geometry validity (DuckDB-WASM Spatial / GEOS) | COMMENT |
| LOW | packages/processing/src/ort.ts | 1 | // Shared onnxruntime-web loader for the client-side ML tools (object detection, | COMMENT |
| LOW | packages/processing/src/cog-convert.ts | 1 | // In-browser GeoTIFF -> Cloud Optimized GeoTIFF conversion, backed by the | COMMENT |
| LOW | packages/plugins/src/plugin-manager.ts | 401 | options: { resetMissingSettings?: boolean } = {}, | COMMENT |
| LOW | packages/plugins/src/maplibre-gl-usgs-lidar.d.ts | 1 | // maplibre-gl-usgs-lidar@0.11.0 ships complete declarations at dist/index.d.ts, | COMMENT |
| LOW | packages/plugins/src/viewer-plugins.ts | 1 | // Which plugins the read-only viewer preset (`?layout=viewer`) refuses to run. | COMMENT |
| LOW | packages/plugins/src/plugins/maplibre-raster.ts | 41 | // so ordering is the map's own in both the web and desktop builds. Tauri local | COMMENT |
| LOW | packages/plugins/src/plugins/maplibre-raster.ts | 1161 | } | COMMENT |
| LOW | packages/plugins/src/plugins/vector-layer-sync.ts | 621 | extrusionBase: style.extrusionBase, | COMMENT |
| LOW | …ckages/plugins/src/plugins/maplibre-basemap-control.ts | 241 | // and the Amazon Location styles) authenticate with the user's own | COMMENT |
| LOW | …ckages/plugins/src/plugins/maplibre-basemap-control.ts | 321 | // does not evict the raster overlays without replacing the style. | COMMENT |
| LOW | packages/plugins/src/plugins/zarr-directory-store.ts | 1 | // A Zarr store that lives in a folder on disk rather than behind a URL. | COMMENT |
| LOW | packages/plugins/src/plugins/earth-engine-auth.ts | 1 | /// <reference path="../earthengine.d.ts" /> | COMMENT |
| LOW | …ckages/plugins/src/plugins/time-slider-pixel-series.ts | 461 | // manifest listing many COGs, so the covering asset has to be found | COMMENT |
| LOW | packages/plugins/src/plugins/maplibre-overture-maps.ts | 361 | COMMENT | |
| LOW | packages/plugins/src/plugins/map-projection-utils.ts | 41 | // multiple deck.gl overlays (Google Photorealistic 3D Tiles, ArcGIS I3S) each | COMMENT |
| LOW | packages/plugins/src/plugins/maplibre-components.ts | 1201 | COMMENT | |
| LOW | packages/plugins/src/plugins/shared-deck-overlay.ts | 41 | let appRef: GeoLibreAppAPI | null = null; | COMMENT |
| LOW | packages/plugins/src/plugins/maplibre-effects.ts | 61 | export const HALO_OPACITY_MAX = 1; | COMMENT |
| LOW | packages/plugins/src/plugins/maplibre-time-slider.ts | 401 | COMMENT | |
| LOW | packages/plugins/src/plugins/maplibre-time-slider.ts | 461 | // The control's range from just before the first binding overrode it, restored | COMMENT |
| LOW | packages/plugins/src/plugins/maplibre-time-slider.ts | 1101 | export function createStoreLayer(spec: SourceSpec): GeoLibreLayer { | COMMENT |
| 169 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| 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 | 60 | 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 | 449 | 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 | 653 | Build an EPSG:4326 GeoDataFrame from GeoJSON features. Args: features: The features to wrap (each a | STRING |
| HIGH | python/src/geolibre/geolibre.py | 755 | 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 | 1025 | Coerce assorted point inputs into a GeoJSON point FeatureCollection. Accepts the same forms as :meth:`add_geojs | STRING |
| HIGH | python/src/geolibre/geolibre.py | 1305 | Add a GeoJSON layer with data-driven (graduated) symbology. Classifies ``column`` into ``class_count`` numeric | STRING |
| HIGH | python/src/geolibre/geolibre.py | 1436 | 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 | 1666 | 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 | 1937 | 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/_server.py | 216 | Start (once) the static server for ``static_dir`` and return its base URL. Args: static_dir: Directory cont | STRING |
| HIGH | python/src/geolibre/_server.py | 255 | Register a kernel-side local file and return a URL the app can fetch. The bundled static server gains a ``/_geolibr | STRING |
| HIGH | python/src/geolibre/project.py | 514 | Build a vector layer backed by the maplibre-gl-vector control. Covers any GDAL-readable vector served from a URL (G | STRING |
| HIGH | python/src/geolibre/project.py | 625 | Build a PMTiles layer from a ``.pmtiles`` URL. The core sync registers the ``pmtiles://`` protocol and prepends it | STRING |
| HIGH | python/src/geolibre/project.py | 730 | Build a georeferenced video layer. Args: name: Layer display name. urls: One or more video URLs (fo | STRING |
| HIGH | python/src/geolibre/project.py | 781 | Coerce assorted inputs into a GeoJSON FeatureCollection dict. Accepts a FeatureCollection/Feature/geometry dict, a | STRING |
| HIGH | …ckend/geolibre_server/geolibre_server/jupyter_relay.py | 133 | Validate a posted command and return the envelope to broadcast. Args: payload: The decoded JSON request bod | STRING |
| HIGH | backend/geolibre_server/geolibre_server/sedona_ops.py | 116 | Run a single spatial SQL statement against the registered layers. Each entry in ``layers`` is ``{"name": <view name | STRING |
| HIGH | backend/geolibre_server/geolibre_server/vector_ops.py | 1134 | Run a single vector geometry operation. Args: tool_id: One of the keys in :data:`_DISPATCH`. geojso | STRING |
| HIGH | backend/geolibre_server/geolibre_server/app/whitebox.py | 731 | Write an embedded layer input to a temporary file. Args: param_name: Parameter name that receives the tempo | STRING |
| HIGH | backend/geolibre_server/geolibre_server/app/vector.py | 115 | Validate and normalize a write-back target path. Write-back overwrites an existing local source file, so the path m | STRING |
| HIGH | backend/geolibre_server/geolibre_server/app/vector.py | 199 | Overwrite one layer of a GeoPackage in place, preserving the others. Resolves the target table (the given ``layer`` | STRING |
| HIGH | backend/geolibre_server/geolibre_server/app/postgis.py | 160 | Validate every destination against the allowlist. Args: conninfo: The parsed libpq connection keywords of t | STRING |
| HIGH | backend/geolibre_server/geolibre_server/app/postgis.py | 276 | Open a psycopg connection with a bounded statement timeout. Args: connection: A libpq connection string (UR | STRING |
| HIGH | backend/geolibre_server/geolibre_server/app/postgis.py | 320 | Resolve geometry column, SRID, primary key and columns from the catalogs. The client only names the schema and tabl | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/geocoding.test.ts | 46 | email: "me@example.org", | CODE |
| LOW | tests/geocoding.test.ts | 51 | assert.equal(url.searchParams.get("email"), "me@example.org"); | CODE |
| LOW | tests/geocoding.test.ts | 68 | email: "me@example.org", | CODE |
| LOW | tests/geocoding.test.ts | 72 | assert.equal(url.searchParams.get("email"), "me@example.org"); | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/zh.json | 1794 | "emailPlaceholder": "you@example.org", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/zh.json | 1838 | "placeholder": { | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/zh.json | 2598 | "placeholder": "在此输入 SQL · Ctrl/Cmd+Enter 运行 · Tab 或 Ctrl+Space 自动补全", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/zh.json | 3186 | "placeholder": "在此输入 Python 代码 · Ctrl/Cmd+Enter 运行 · Tab 自动补全 · ↑/↓ 查看历史记录", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/zh.json | 3306 | "placeholder": "询问您的数据,例如“显示人口超过 5000 万的国家” · Ctrl/Cmd+Enter 发送", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/tr.json | 1835 | "emailPlaceholder": "siz@example.org", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/tr.json | 1880 | "placeholder": { | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/tr.json | 2645 | "placeholder": "SQL burada · Çalıştırmak için Ctrl/Cmd+Enter · Otomatik tamamlamak için Tab veya Ctrl+Boşluk", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/tr.json | 3243 | "placeholder": "Python burada · Çalıştırmak için Ctrl/Cmd+Enter · Otomatik tamamlamak için Tab · Geçmiş için ↑/↓", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/tr.json | 3367 | "placeholder": "Verileriniz hakkında sorun, örn. \"nüfusu 50 milyondan fazla olan ülkeleri göster\" · Göndermek için | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/nl.json | 1835 | "emailPlaceholder": "you@example.org", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/nl.json | 1880 | "placeholder": { | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/nl.json | 2645 | "placeholder": "SQL hier · Ctrl/Cmd+Enter om uit te voeren · Tab of Ctrl+Spatie om automatisch aan te vullen", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/nl.json | 3243 | "placeholder": "Python hier · Ctrl/Cmd+Enter om uit te voeren · Tab voor automatisch aanvullen · ↑/↓ voor geschieden | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/nl.json | 3367 | "placeholder": "Stel een vraag over uw gegevens, bijv. \"toon landen met een bevolking van meer dan 50 miljoen\" · C | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ja.json | 1794 | "emailPlaceholder": "you@example.org", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ja.json | 1838 | "placeholder": { | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ja.json | 2598 | "placeholder": "ここに SQL を入力 · Ctrl/Cmd+Enter で実行 · Tab または Ctrl+Space でオートコンプリート", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ja.json | 3186 | "placeholder": "ここにPythonコードを入力 ・ Ctrl/Cmd+Enterで実行 ・ Tabで自動補完 ・ ↑/↓で履歴", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ja.json | 3306 | "placeholder": "データについて質問してください。例:「人口5000万人以上の国を表示」 ・ Ctrl/Cmd+Enterで送信", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/de.json | 1835 | "emailPlaceholder": "you@example.org", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/de.json | 1880 | "placeholder": { | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/de.json | 2645 | "placeholder": "SQL hier · Strg/Cmd+Enter zum Ausführen · Tab oder Strg+Leertaste zum Autovervollständigen", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/de.json | 3243 | "placeholder": "Python hier eingeben · Strg/Cmd+Enter zum Ausführen · Tab zum Autovervollständigen · ↑/↓ für Verlauf | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/de.json | 3367 | "placeholder": "Stellen Sie eine Frage zu Ihren Daten, z. B. „Länder mit über 50 Millionen Einwohnern anzeigen“ · St | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ru.json | 1917 | "emailPlaceholder": "you@example.org", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ru.json | 1964 | "placeholder": { | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ru.json | 2739 | "placeholder": "Введите SQL здесь · Ctrl/Cmd+Enter для запуска · Tab или Ctrl+Space для автодополнения", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ru.json | 3357 | "placeholder": "Введите Python здесь · Ctrl/Cmd+Enter для запуска · Tab для автодополнения · ↑/↓ для истории", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ru.json | 3489 | "placeholder": "Спросите о своих данных, например «покажи страны с населением более 50 миллионов» · Ctrl/Cmd+Enter д | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/pt.json | 1880 | "placeholder": { | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/pt.json | 2645 | "placeholder": "SQL aqui · Ctrl/Cmd+Enter para executar · Tab ou Ctrl+Espaço para autocompletar", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/pt.json | 3243 | "placeholder": "Python aqui · Ctrl/Cmd+Enter para executar · Tab para autocompletar · ↑/↓ para histórico", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/pt.json | 3367 | "placeholder": "Pergunte sobre seus dados, ex.: \"mostrar países com população acima de 50 milhões\" · Ctrl/Cmd+Ente | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/en.json | 1835 | "emailPlaceholder": "you@example.org", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/en.json | 1880 | "placeholder": { | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/en.json | 2661 | "placeholder": "SQL here · Ctrl/Cmd+Enter to run · Tab or Ctrl+Space to autocomplete", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/en.json | 3325 | "placeholder": "Python here · Ctrl/Cmd+Enter to run · Tab to autocomplete · ↑/↓ for history", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/en.json | 3449 | "placeholder": "Ask about your data, e.g. \"show countries with population over 50 million\" · Ctrl/Cmd+Enter to sen | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ka.json | 1835 | "emailPlaceholder": "you@example.org", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ka.json | 1880 | "placeholder": { | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ka.json | 2645 | "placeholder": "SQL აქ · Ctrl/Cmd+Enter გასაშვებად · Tab ან Ctrl+Space ავტოშევსებისთვის", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ka.json | 3243 | "placeholder": "Python აქ · Ctrl/Cmd+Enter გასაშვებად · Tab ავტოშევსებისთვის · ↑/↓ ისტორიისთვის", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/ka.json | 3367 | "placeholder": "იკითხეთ თქვენი მონაცემების შესახებ, მაგ. „მაჩვენე ქვეყნები 50 მილიონზე მეტი მოსახლეობით“ · Ctrl/Cmd+ | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/it.json | 1880 | "placeholder": { | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/it.json | 2645 | "placeholder": "SQL qui · Ctrl/Cmd+Invio per eseguire · Tab o Ctrl+Spazio per completare automaticamente", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/it.json | 3243 | "placeholder": "Python qui · Ctrl/Cmd+Invio per eseguire · Tab per l'autocompletamento · ↑/↓ per la cronologia", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/it.json | 3367 | "placeholder": "Fai una domanda sui tuoi dati, es. \"mostra i paesi con popolazione superiore a 50 milioni\" · Ctrl/ | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/fr.json | 1880 | "placeholder": { | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/fr.json | 2645 | "placeholder": "SQL ici · Ctrl/Cmd+Entrée pour exécuter · Tab ou Ctrl+Espace pour l'autocomplétion", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/fr.json | 3243 | "placeholder": "Python ici · Ctrl/Cmd+Entrée pour exécuter · Tab pour l'autocomplétion · ↑/↓ pour l'historique", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/fr.json | 3367 | "placeholder": "Posez une question sur vos données, p. ex. « afficher les pays avec une population de plus de 50 mil | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/hi.json | 1835 | "emailPlaceholder": "you@example.org", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/hi.json | 1880 | "placeholder": { | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/hi.json | 2645 | "placeholder": "यहाँ SQL लिखें · चलाने के लिए Ctrl/Cmd+Enter · ऑटोकम्पलीट के लिए Tab या Ctrl+Space", | CODE |
| LOW | apps/geolibre-desktop/src/i18n/locales/hi.json | 3243 | "placeholder": "यहाँ Python लिखें · चलाने के लिए Ctrl/Cmd+Enter · ऑटोकम्प्लीट के लिए Tab · इतिहास के लिए ↑/↓", | CODE |
| 19 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/src/geolibre/geolibre.py | 387 | except Exception as exc: # noqa: BLE001 - never let one callback kill the bus | CODE |
| LOW | …ckend/geolibre_server/geolibre_server/jupyter_relay.py | 209 | except Exception: # noqa: BLE001 - a dead peer must not fail the request | CODE |
| LOW | backend/geolibre_server/geolibre_server/sedona_ops.py | 72 | except Exception as exc: # noqa: BLE001 - report any import failure | CODE |
| LOW | backend/geolibre_server/geolibre_server/sedona_ops.py | 97 | except Exception: # noqa: BLE001 - fall through to the generic paths | CODE |
| LOW | backend/geolibre_server/geolibre_server/sedona_ops.py | 178 | except Exception: # noqa: BLE001 | CODE |
| LOW | backend/geolibre_server/geolibre_server/sedona_ops.py | 196 | except Exception: # noqa: BLE001 - no active geometry column | CODE |
| LOW | backend/geolibre_server/geolibre_server/sedona_ops.py | 233 | except Exception: # noqa: BLE001 - best-effort cleanup | CODE |
| LOW | backend/geolibre_server/geolibre_server/vector_ops.py | 63 | except Exception as exc: # noqa: BLE001 - report any import failure | CODE |
| LOW | backend/geolibre_server/geolibre_server/vector_ops.py | 628 | except Exception as exc: # noqa: BLE001 - surface any CRS/parse failure as 400 | CODE |
| LOW | backend/geolibre_server/geolibre_server/vector_ops.py | 1083 | 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 | 1076 | except Exception: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 1107 | except Exception: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 1122 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 1134 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 1279 | 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 | 299 | except Exception as exc: # noqa: BLE001 - surface a stable error to the client | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 70 | except Exception as exc: # noqa: BLE001 - report any import failure | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 312 | except Exception as exc: # noqa: BLE001 - surface a stable, scrubbed error | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 471 | except Exception as exc: # noqa: BLE001 - surface a stable, scrubbed error | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 556 | except Exception as exc: # noqa: BLE001 - surface a stable, scrubbed error | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 876 | except Exception as exc: # noqa: BLE001 - surface a stable, scrubbed error | CODE |
| LOW | …kend/geolibre_server/geolibre_server/app/conversion.py | 562 | except Exception: | CODE |
| MEDIUM | …kend/geolibre_server/geolibre_server/app/conversion.py | 834 | print(f"Error: {message}") | CODE |
| LOW | …kend/geolibre_server/geolibre_server/app/conversion.py | 1166 | except Exception as exc: | CODE |
| LOW | …kend/geolibre_server/geolibre_server/app/conversion.py | 1268 | except Exception: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/runtime.py | 132 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/ml.py | 135 | except Exception as exc: # noqa: BLE001 - a probe failure means "not healthy" | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/ml.py | 242 | except Exception as exc: # noqa: BLE001 - escalate to kill on any wait failure | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/ml.py | 301 | except Exception: # noqa: BLE001 | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/sql.py | 86 | except Exception as exc: # noqa: BLE001 - surface a stable error to the client | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/raster.py | 336 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/raster.py | 613 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/raster.py | 839 | except Exception: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/raster.py | 844 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/raster.py | 1116 | except Exception as exc: | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/raster.py | 1530 | except Exception: | CODE |
| LOW | backend/geolibre_server/tests/test_postgis.py | 38 | except Exception: # pragma: no cover - depends on the optional extra | CODE |
| LOW | backend/geolibre_server/tests/test_vector_ops.py | 24 | except Exception: # pragma: no cover - depends on the optional extra | CODE |
| LOW | backend/geolibre_server/tests/test_vector_golden.py | 28 | except Exception: # pragma: no cover - depends on the optional extra | CODE |
| LOW | backend/geolibre_server/tests/test_sql.py | 12 | except Exception: # pragma: no cover - depends on the optional extra | CODE |
| LOW | backend/geolibre_server/tests/test_conversion_gdb.py | 39 | except Exception as exc: # pragma: no cover - offline environments | CODE |
| LOW | backend/geolibre_server/tests/test_conversion_gdb.py | 63 | except Exception as exc: # pragma: no cover - needs GDAL >= 3.6 | CODE |
| LOW | backend/geolibre_server/tests/test_vector.py | 19 | except Exception: # pragma: no cover - depends on the optional extra | CODE |
| LOW | apps/geolibre-desktop/src/lib/pyodide/console_api.py | 291 | except Exception: # noqa: BLE001 - any eval failure yields no completions | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/hatch_build.py | 11 | CODE | |
| LOW | python/tests/test_extension.py | 8 | CODE | |
| LOW | python/tests/test_extension_routes.py | 9 | CODE | |
| LOW | python/tests/test_server.py | 7 | 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_scripting.py | 3 | CODE | |
| LOW | python/src/geolibre/color_ramp.py | 9 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 3 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 301 | 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/basemaps.py | 3 | 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 | backend/geolibre_server/notebook_client.py | 57 | CODE | |
| LOW | …ckend/geolibre_server/geolibre_server/jupyter_relay.py | 43 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/sedona_ops.py | 16 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/vector_ops.py | 17 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 3 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/vector.py | 16 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 24 | CODE | |
| LOW | …kend/geolibre_server/geolibre_server/app/conversion.py | 3 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/runtime.py | 8 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/ml.py | 31 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/sql.py | 14 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/main.py | 14 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/raster.py | 14 | CODE | |
| LOW | backend/geolibre_server/tests/test_postgis.py | 13 | CODE | |
| LOW | backend/geolibre_server/tests/test_security.py | 3 | CODE | |
| LOW | backend/geolibre_server/tests/test_vector_ops.py | 21 | CODE | |
| LOW | backend/geolibre_server/tests/test_runtime.py | 3 | CODE | |
| LOW | backend/geolibre_server/tests/test_raster.py | 36 | CODE | |
| LOW | backend/geolibre_server/tests/test_raster.py | 44 | CODE | |
| LOW | …nd/geolibre_server/tests/test_jupyter_server_config.py | 11 | CODE | |
| LOW | backend/geolibre_server/tests/test_vector_golden.py | 13 | CODE | |
| LOW | backend/geolibre_server/tests/test_vector_golden.py | 25 | CODE | |
| LOW | backend/geolibre_server/tests/test_sql.py | 9 | CODE | |
| LOW | backend/geolibre_server/tests/test_jupyter_relay.py | 9 | CODE | |
| LOW | backend/geolibre_server/tests/test_conversion_gdb.py | 10 | CODE | |
| LOW | backend/geolibre_server/tests/test_vector.py | 16 | CODE | |
| LOW | backend/geolibre_server/tests/test_ml.py | 8 | CODE | |
| LOW | backend/geolibre_server/tests/test_notebook_client.py | 10 | CODE | |
| LOW | …ckend/geolibre_server/tests/test_whitebox_endpoints.py | 8 | 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 | package-lock.json | 12790 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| MEDIUM | package-lock.json | 18514 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| MEDIUM | package-lock.json | 19235 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-2.0.4.tgz", | CODE |
| 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 | …geolibre-desktop/public/whitebox-catalog-snapshot.json | 1 | {"tool_count":775,"tools":[{"id":"build_object_hierarchy_multiscale","display_name":"Build Object Hierarchy Multiscale", | CODE |
| 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/geolibre.py | 338 | def _update_project(self, mutate: Callable[[dict[str, Any]], None]) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 927 | def set_layer_visibility(self, layer: str | Layer, visible: bool = True) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 931 | def set_layer_opacity(self, layer: str | Layer, opacity: float) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 1906 | def set_basemap(self, basemap: str) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 1914 | def set_center(self, lng: float, lat: float, zoom: float | None = None) -> None: | CODE |
| LOW | python/src/geolibre/geolibre.py | 2429 | def set_style(self, **style: Any) -> None: | CODE |
| LOW⚡ | python/src/geolibre/__init__.py | 8 | __all__ = ["Feature", "Layer", "Map", "__version__"] | CODE |
| LOW | python/src/geolibre/_extension.py | 74 | def set_extra_headers(self, path: str) -> None: | CODE |
| LOW | backend/geolibre_server/notebook_client.py | 71 | __all__ = [ | CODE |
| LOW | backend/geolibre_server/notebook_client.py | 487 | def set_view(self, lng: float, lat: float, *, zoom: float | None = None) -> None: | CODE |
| LOW | backend/geolibre_server/notebook_client.py | 504 | def set_basemap(self, url: str) -> None: | CODE |
| LOW⚡ | backend/geolibre_server/notebook_client.py | 616 | def set_visibility(self, layer_id: str, visible: bool) -> None: | CODE |
| LOW⚡ | backend/geolibre_server/notebook_client.py | 620 | def set_opacity(self, layer_id: str, opacity: float) -> None: | CODE |
| LOW⚡ | backend/geolibre_server/notebook_client.py | 624 | def set_style(self, layer_id: str, **style: Any) -> None: | CODE |
| LOW | …ckend/geolibre_server/geolibre_server/jupyter_relay.py | 57 | __all__ = [ | CODE |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.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 | 39 | 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/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 |
|---|---|---|---|---|
| HIGH | python/src/geolibre/geolibre.py | 176 | if (data && data.type === "geolibre:ready") load(); | CODE |
| HIGH | backend/geolibre_server/notebook_client.py | 294 | "if (window.parent && window.parent !== window) {" | CODE |
| HIGH⚡ | backend/geolibre_server/tests/test_vector_ops.py | 1188 | assert untouched.equals(shape(BOWTIE["features"][1]["geometry"])) | 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 |
|---|---|---|---|---|
| LOW | python/src/geolibre/geolibre.py | 1215 | CODE | |
| LOW | python/src/geolibre/geolibre.py | 2069 | CODE | |
| LOW | python/src/geolibre/project.py | 780 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/sedona_ops.py | 115 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/vector_ops.py | 465 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 845 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 932 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 1231 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/whitebox.py | 352 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 112 | CODE | |
| LOW | backend/geolibre_server/geolibre_server/app/postgis.py | 617 | CODE | |
| LOW | …kend/geolibre_server/geolibre_server/app/conversion.py | 1093 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | workers/ai-proxy/worker-configuration.d.ts | 10493 | // ── Error types ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | workers/ai-proxy/worker-configuration.d.ts | 10514 | // ── Binding ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ibre-desktop/src/components/comments/CommentsPanel.tsx | 82 | // ── Display name ────────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/plugins/src/plugins/maplibre-openaerialmap.ts | 1290 | // 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 | 126 | # Combined with the prompt's read-scope guardrails, the untrusted head is | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/src/geolibre/geolibre.py | 2155 | CODE |