Bathymetrie-Daten Schweiz - submersion-app/submersion#1061 - #35
alpheios-one wants to merge 1002 commits into
Conversation
|
@claude bitte folgende Aufgabe umsetzen (Teil 1 von 2 - NUR Datenpfad, Aufgabe: Verbindliche Design-Entscheide:
Vorgehen:
|
|
Claude finished @alpheios-one's task in 11m 29s —— View job Auftrag: Bathymetrie-Datenschicht (Teil 1 von 2)
Todo-Liste:
Vorgehen dazu: Der STAC-Client wird generisch gegen die öffentlich dokumentierte STAC-1.0-Spezifikation implementiert (Items-Abfrage per
Branch: |
|
claude bitte die Bathymetrie-Datenschicht (Teil 1) fortsetzen und Bereits bestätigte Fakten (aus externer Recherche, als Vorgabe zu
Wichtiger Architektur-Fund aus der letzten Session (zwingend zu Aufgabe (Referenz): Verbindliche Design-Entscheide:
Vorgehen:
|
|
@claude bitte umsetzen |
|
Claude finished @alpheios-one's task in 24m 58s —— View job Auftrag: Bathymetrie-Datenschicht (Teil 1 von 2) — FortsetzungTodo-Liste:
Architektur-Entscheidungen:
Reviewer-Hinweise (aus der vorherigen Session übernommen und weiterhin gültig):
|
|
@claude bitte folgende Punkte beheben (Fortsetzung zu PR #35, Teil 1): Bug 1 - Lückenhafte Tiefenprofil-Daten:
Bug 2 - Fehlende Quellenangabe: Bug 3 - Kein 3D-Modell bei Landkoordinaten:
Vorgehen:
|
|
Claude finished @alpheios-one's task in 22m 53s —— View job Bugfixes: swissBATHY3D Integration (Fortsetzung PR #35)
Todo-Liste:
Hinweis: |
|
@claude bitte folgenden Bug beheben (Fortsetzung zu PR #35, Teil 1) - Bug 1 - Multi-Kachel-Stitching für Tiefenprofil-Pfade: Behebung:
Vorgehen:
Bug 2 (Quellenangabe) und Bug 3 (Landkoordinaten-Fallback) folgen in |
|
Claude finished @alpheios-one's task in 15m 36s —— View job Bug 1: Multi-Kachel-Stitching für Tiefenprofil-PfadeTodo-Liste:
|
|
@claude bitte folgenden Bug beheben (Fortsetzung zu PR #35, Teil 1) - Bug 2 - Fehlende Quellenangabe für swissBATHY3D: Behebung:
Vorgehen:
Bug 3 (Landkoordinaten-Fallback) folgt in einem separaten Folgeauftrag, |
|
Claude finished @alpheios-one's task in 12m 39s —— View job Bug 2: Fehlende Quellenangabe für swissBATHY3DTodo-Liste:
Korrektur zum vorherigen Hinweis: Der Branch: |
|
@claude bitte folgenden Punkt klären und absichern (Fortsetzung zu Bug 3 - Kein 3D-Modell bei Landkoordinaten (Verifikation nötig): Aufgabe:
Vorgehen:
Dies ist der letzte offene Punkt aus den drei ursprünglich gemeldeten |
|
Claude finished @alpheios-one's task in 9m 45s —— View job Bug 3: Verifikation Landkoordinaten-Fallback (Fortsetzung PR #35)Todo-Liste:
Befund: Der Bug ist bereits durch den Bug-1-Fix ( Neuer Test Hinweis: Branch: |
|
@claude bitte folgenden Bug analysieren und beheben (Fortsetzung zu Bug 4 - "Keine Bathymetrie für diesen Ort verfügbar" an Schweizer Aufgabe:
Vorgehen:
|
Bug 4: "Keine Bathymetrie für diesen Ort verfügbar" an Schweizer See-KoordinateTodo-Liste:
Root-Cause-Analyse: Tatsächliche Ursache: Fix ( Neue Tests (
Hinweis: Diese Session hat sich strikt auf Bug 4 beschränkt, wie im Auftrag gefordert. Eine verwandte Beobachtung, die nicht behoben wurde: ein 8-km-Span führt bei swissBATHY3D zu bis zu 81 sequentiellen STAC-Abfragen pro Seitenaufruf, was angesichts der OGD-Fair-Use-Klausel und der Latenz separat betrachtet werden sollte — das war aber nicht Teil dieses Auftrags. |
|
@claude bitte folgenden Punkt umsetzen (Fortsetzung zu PR #35, Teil 1) - Feature - Periodische Aktualitätsprüfung für swissBATHY3D-Kachel-Cache: Wichtiger Zusatzkontext aus Bug 4: Ein einzelner Seitenaufruf kann bei Aufgabe:
Vorgehen:
Ein manueller "Cache leeren"-Button in den Einstellungen folgt als |
|
Claude finished @alpheios-one's task in 15m 5s —— View job Feature: Periodische Aktualitätsprüfung für swissBATHY3D-Kachel-CacheTodo-Liste:
Hinweis: Branch: |
|
@claude bitte folgenden Bug analysieren und beheben (Fortsetzung zu Bug 5 - Tauchplatz-Marker stimmt nicht mit Bathymetrie-Mesh überein: Aufgabe - Root-Cause-Analyse:
Vorgehen:
|
|
Claude finished @alpheios-one's task in 21m 24s —— View job Bug 5: Tauchplatz-Marker stimmt nicht mit Bathymetrie-Mesh überein
Todo-Liste:
Wichtiger Hinweis zur Fehlermeldung: Die Root-Cause-Analyse und intensive numerische Tests (bis hin zu produktionsnahen 3×3-Kachel-Mosaiken mit echter Auflösung) zeigen, dass die reine Koordinaten-/Mesh-Mathematik den Tauchplatz zuverlässig innerhalb der Mesh-Grenzen hält — auch mit der jetzt behobenen Konstanten-Diskrepanz war der Effekt rechnerisch nur im Bereich weniger Meter bis niedriger zweistelliger Meter, nicht "deutlich ausserhalb". Neben dem jetzt behobenen Konstanten-Bug sind für das beobachtete Symptom zwei nicht-code-bezogene Erklärungen am wahrscheinlichsten und sollten beim Nachtesten berücksichtigt werden:
Falls das Problem nach diesem Fix weiterhin (mit App-Neustart bzw. geleertem Cache) reproduzierbar ist, bitte die exakte Koordinate und einen Screenshot mitgeben — das würde die Suche stark eingrenzen. Branch: |
|
@claude bitte folgenden Bug erneut und gründlicher analysieren und Bug 6 - Tauchplatz-Marker weiterhin deutlich falsch positioniert (Bug-5- Testfall 1 - Betlis / Schiffsstation Stralegg, Walensee: Testfall 2 - Ätegge, Ameiseneck, Enteneck (neuer Tauchplatz, mit Aufgabe:
Vorgehen:
|
Bug 6: Tauchplatz-Marker weiterhin falsch positioniert — gründlichere AnalyseTodo-Liste:
Root-Cause-Analyse: Das führt auf Fix ( Neue Tests:
Ehrlicher Hinweis: Diese Session hatte keinen Live-Netzwerkzugriff auf Branch: |
|
@claude bitte folgenden Punkt umsetzen (Fortsetzung zu PR #35, Teil 1) - Feature - Manueller "Cache aktualisieren"-Button für swissBATHY3D: Aufgabe:
Vorgehen:
|
|
Claude finished @alpheios-one's task in 23m 12s —— View job Feature: Manueller "Cache aktualisieren"-Button für swissBATHY3D
Todo-Liste:
Umsetzung:
Branch: |
|
@claude bitte folgenden Punkt umsetzen (Fortsetzung zu PR #35, Teil 1) - Feature - Begrenzte Parallelität beim swissBATHY3D-Kachel-Download: Aufgabe:
Vorgehen:
|
|
Claude finished @alpheios-one's task in 20m 36s —— View job Feature: Begrenzte Parallelität beim swissBATHY3D-Kachel-DownloadTodo-Liste:
Branch: |
|
@claude bitte folgende zwei Punkte nacheinander umsetzen (Fortsetzung zu ===== PUNKT A: Bug 7 - 3D-Tiefenansicht zeigt beim Wechsel des Bestätigter, reproduzierbarer Befund: Navigiert man innerhalb DERSELBEN Aufgabe - Root-Cause-Analyse auf State-Management-Ebene, NICHT auf
===== PUNKT B: Bug 8 - "Kartendaten aktualisieren"-Button aus Commit Der manuelle Cache-Aktualisierungs-Button wurde laut Session-Bericht in Aufgabe - Root-Cause-Analyse:
===== GEMEINSAMES VORGEHEN (nach beiden Punkten) =====
|
|
Claude finished @alpheios-one's task in 19m 28s —— View job Bug 7 (stale state) & Bug 8 (Button nicht sichtbar)Todo-Liste:
PUNKT A — Bug 7 (Stale State beim Tauchplatzwechsel): Konnte trotz gründlicher Analyse des kompletten Pfads (siehe vorheriger Kommentarverlauf) nicht reproduziert werden. Ein neuer Widget-Test baut exakt den Produktionspfad nach (kein Key auf PUNKT B — Bug 8 (Button nicht sichtbar): Root Cause gefunden und behoben. Der in Commit Branch: |
|
@claude bitte folgende Analyse durchführen (Fortsetzung zu PR #35, Analyse Teil 1 - Bestehende Infrastruktur für Hintergrundarbeit im Aufgabe:
Analyse Teil 2 - Laden andere Bathymetrie-Quellen (GMRT/EMODnet/ETOPO) Aufgabe:
Bitte NUR analysieren und im Kommentar zusammenfassen - keinen Code |
|
Claude finished @alpheios-one's task in 48s —— View job Analyse: Hintergrundarbeit-Infrastruktur & Kachel-Verhalten anderer Bathymetrie-QuellenTodo-Liste:
Reine Analyse - kein Code geändert, nichts committet. Teil 1: Bestehende Infrastruktur für HintergrundarbeitEs gibt KEINE generische Task-Queue/Job-Runner-Abstraktion. Jedes Feature baut seine eigene, bespoke Lösung. Der einzige wiederkehrende Mechanismus ist eine Architektur-Konvention, keine gemeinsame Bibliothek:
Konkret pro Feature:
Einschätzung swissBATHY3D: Zu beachten für eine spätere Umsetzung: Da es sich um Teil 2: Kachelungsverhalten der anderen Bathymetrie-QuellenBestätigt: swissBATHY3D ist die einzige Quelle, die intern kachelt.
Schlussfolgerung: Eine "X von Y Kacheln geladen"-Fortschrittsanzeige ist für GMRT/EMODnet/ETOPO nicht sinnvoll (binärer Lade-/Fehlerzustand, kein mehrteiliger Fortschritt) - sie sollte spezifisch für swissBATHY3D gebaut werden, nicht generisch für alle vier Quellen. Branch: |
|
@claude bitte folgende drei Punkte bearbeiten:
Reihenfolge: Alle drei Punkte analysieren und umsetzen, dann committen und pushen. Gezielten Testlauf der betroffenen Dateien, kein voller Suite-Lauf. Keinen "Fertig"-Abschlusskommentar - nur kurze Zusammenfassung pro Punkt. |
|
Claude finished @alpheios-one's task in 7m 24s —— View job Drei Punkte: Exception-Handling, Stale Debug-State, verbleibende TEMPORARY-KommentareTodo-Liste:
1. Unabgefangene Exception ( 2. Stale Debug-Panel-State ( 3. Verbleibende TEMPORARY-Kommentare ( |
…n site change, tidy debug comments - BathymetryRefreshTile._refresh() now catches errors from the manual refresh and degrades to the existing "couldn't check" snackbar instead of letting the exception crash the Settings UI. - SiteTerrainPane resets its debug-panel state (_debugExpanded/ _debugFuture/_swissBathyClearResultText) in didUpdateWidget when siteId changes, so a stale diagnostic from the previous site can't linger after navigating to a new one. - Rewrote the remaining "TEMPORARY - DEBUG ONLY, remove before upstream PR" comments in swiss_bathy_debug_info.dart to the stable wording already used elsewhere in the file, since this debug module is staying (gated behind kDebugMode), not being removed before merge. Co-authored-by: alpheios-one <275321969+alpheios-one@users.noreply.github.com>
|
@claude bitte folgenden Punkt bearbeiten: Redundanter ZIP-Download bei refreshAllCachedTiles() (swissbathy3d_source.dart:504): Bitte ein per-Href memoisiertes _downloadAndParsedRaw()-Future über den gesamten Sweep hinweg teilen, analog zum bereits bestehenden sharedRawGrids-Muster in fetch(). Konkret: einen gemeinsamen Downloader in _checkAndMaybeUpdate()/_firstOverlappingCandidate() einschleusen, sodass refreshAllCachedTiles() denselben Href innerhalb eines Sweeps nur einmal herunterlädt, unabhängig davon, wie viele gecachte Kacheln ihn referenzieren. Bitte einen Regressionstest ergänzen, der verifiziert, dass bei mehreren gecachten Kacheln mit gleichem Href während eines refreshAllCachedTiles()-Sweeps nur ein Download/Parse-Aufruf für diesen Href erfolgt. Gezielten Testlauf der betroffenen Dateien, kein voller Suite-Lauf. Committen und pushen. Keinen "Fertig"-Abschlusskommentar - nur kurze Zusammenfassung. |
|
Claude finished @alpheios-one's task in 10m 58s —— View job Fix: Redundanter ZIP-Download bei refreshAllCachedTiles()Todo-Liste:
Kein voller Suite-Lauf, wie gewünscht — nur der gezielte Testlauf zur gemeinsamen Prüfung. Zusammenfassung:
Fix (
Neuer Regressionstest ( Testlauf: Committet ( |
…sweep _checkAndMaybeUpdate() now takes its downloader as a parameter instead of always calling _downloadAndParseRaw() directly, so refreshAllCachedTiles() can share one per-href-memoized downloader across the whole sweep -- the same pattern fetch() already uses via sharedRawGrids. Multiple cached tiles commonly resolve to the same lake-wide STAC asset; without this, a version change discovered mid-sweep re-downloaded that asset once per affected tile instead of once for the whole sweep. Co-authored-by: alpheios-one <275321969+alpheios-one@users.noreply.github.com>
|
@claude bitte folgende fünf Punkte bearbeiten:
Reihenfolge: Alle fünf Punkte analysieren und umsetzen, dann committen und pushen. Für jeden Punkt bitte einen gezielten Regressionstest ergänzen, der den jeweiligen Fehlerfall abdeckt. Gezielten Testlauf der betroffenen Dateien, kein voller Suite-Lauf. Keinen "Fertig"-Abschlusskommentar - nur kurze Zusammenfassung pro Punkt. |
|
Claude finished @alpheios-one's task in 14m 32s —— View job Fünf Punkte: STAC-Paginierung, Casts, Exception-Handling, RangeErrorTodo-Liste:
Kein "Fertig"-Abschlusskommentar wie gewünscht — nur die Zusammenfassung pro Punkt. 1. STAC-Paginierung bricht still ab ( 2. Ungeprüfte Casts in 3. Ungeprüfter Cast in 4. Nicht abgefangene Exception-Typen in 5. Möglicher RangeError im Debug-Panel ( |
…RangeError - findAssetCandidates() throws SwissStacException instead of silently returning a partial candidate list when a next link still exists past the page cap, so a caller can never cache that as "no tile here". - Replace unchecked `as` casts in findAssetCandidates/_pickAsset/ _featureOverlaps/_nextPageUrl with `is` checks, so an unexpectedly shaped (but valid) STAC response throws SwissStacException or is skipped, instead of a raw TypeError escaping. - _downloadAndParseRaw wraps ZIP decode/grid parse failures (e.g. an HTML error page served as the asset) into FormatException, so they reach the existing FormatException -> BathymetryFetchException handling instead of crashing the fetch/stitch pipeline as a raw ArchiveException or similar. - SiteTerrainPane's swissBATHY3D debug panel no longer assumes scene.layers is non-empty; also guard the same unchecked .first in the main render path, which has the identical failure mode. Co-authored-by: alpheios-one <275321969+alpheios-one@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
The generator masks formatter failures, imported header temperatures are not persisted correctly, and the new clear control has an undersized touch target.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds Swiss lake bathymetry support while incorporating a broad set of application, import, media, planner, sync, platform, and test updates.
Changes:
- Adds swissBATHY3D attribution, fixtures, source probing, and terrain support.
- Expands media, species, planner, dive-computer, sync, and settings behavior.
- Updates platform packaging, native transports, documentation, and regression tests.
File summaries
| File | Description |
|---|---|
tool/generate_species_lookups.dart |
Generates species lookup sources. |
test/support/clipboard_recorder.dart |
Adds clipboard test helper. |
test/shared/widgets/nav/rail_destination_order_test.dart |
Adds Species navigation assertion. |
test/performance/README.md |
Documents profile benchmark gate. |
test/l10n/species_photos_strings_test.dart |
Tests species-photo translations. |
test/l10n/species_photo_surfaces_strings_test.dart |
Tests photo-surface translations. |
test/l10n/species_lookup_strings_test.dart |
Tests species lookup translations. |
test/helpers/revocable_client.dart |
Adds revocable HTTP test client. |
test/helpers/pdf_text.dart |
Adds PDF page counting. |
test/helpers/in_memory_seed_version_store.dart |
Adds seed-version test store. |
test/flutter_test_config.dart |
Stabilizes file-sharing tests. |
test/fixtures/macdive_xml/metric_small.xml |
Adds MacDive photo fixtures. |
test/fixtures/bathymetry/swissbathy3d_sample.asc |
Adds Swiss bathymetry fixture. |
test/features/universal_import/presentation/providers/universal_import_batch_test.dart |
Verifies import failure propagation. |
test/features/universal_import/data/services/shearwater_dive_mapper_profile_test.dart |
Updates RBT unit expectation. |
test/features/statistics/presentation/providers/statistics_providers_test.dart |
Clarifies species statistics scope. |
test/features/statistics/presentation/providers/statistics_providers_all_test.dart |
Covers empty temperature trends. |
test/features/settings/presentation/providers/settings_providers_test.dart |
Updates section identifier. |
test/features/settings/presentation/providers/load_tank_pressures_test.dart |
Updates pressure-point fixtures. |
test/features/settings/presentation/providers/export_pdf_logbook_test.dart |
Updates simple-template assertions. |
test/features/settings/presentation/pages/cloud_sync_page_test.dart |
Tests quiet authentication cancellation. |
test/features/safety/presentation/widgets/flight_window_card_test.dart |
Adds settings-provider test override. |
test/features/reef/presentation/widgets/nearby_species_tier_test.dart |
Targets the intended species chip. |
test/features/reef/domain/services/species_gbif_keys_asset_test.dart |
Tightens GBIF asset validation. |
test/features/pre_dive/domain/entities/pre_dive_entities_test.dart |
Covers equipment checklist items. |
test/features/planner/range_table_service_test.dart |
Migrates segment fixtures. |
test/features/planner/plan_slate_pdf_test.dart |
Updates plan segment and label fixtures. |
test/features/planner/plan_outcome_entity_test.dart |
Adds ceiling trace fixture. |
test/features/planner/plan_engine_scr_test.dart |
Migrates SCR segment fixtures. |
test/features/planner/plan_engine_rates_test.dart |
Migrates rate-test segments. |
test/features/planner/plan_engine_per_segment_test.dart |
Migrates per-segment fixtures. |
test/features/planner/plan_engine_issues_test.dart |
Migrates issue-test segments. |
test/features/planner/plan_engine_ccr_test.dart |
Migrates CCR segment fixtures. |
test/features/planner/dive_plan_sync_round_trip_test.dart |
Updates synchronized segment fixture. |
test/features/planner/dive_plan_repository_test.dart |
Updates repository segment assertions. |
test/features/planner/dive_plan_entity_test.dart |
Updates entity segment tests. |
test/features/planner/chart/plan_chart_geometry_test.dart |
Updates chart segment fixtures. |
test/features/media/presentation/widgets/site_media_section_test.dart |
Updates unlink result naming. |
test/features/media/presentation/widgets/perdix_overlay/perdix_face_resolver_test.dart |
Updates pressure fixtures. |
test/features/media/presentation/widgets/dive_media_section_unlink_test.dart |
Updates unlink outcome assertions. |
test/features/media/presentation/widgets/dive_media_section_selection_test.dart |
Updates selection test result. |
test/features/media/presentation/support/fake_location_service.dart |
Adds deterministic geocoder fake. |
test/features/media/presentation/support/capturing_media_repository.dart |
Adds strict media repository fake. |
test/features/media/presentation/providers/site_media_providers_test.dart |
Updates site unlink tests. |
test/features/media/presentation/pages/site_media_viewer_page_test.dart |
Aligns timestamp formatting. |
test/features/media/presentation/media_library_grouped_list_test.dart |
Adds settings test override. |
test/features/media/presentation/media_import_resolved_test.dart |
Verifies imported media IDs. |
test/features/media/data/network_cache_config_test.dart |
Tests active memory cache limits. |
test/features/media/data/media_unlink_ops_test.dart |
Updates unlink partition naming. |
test/features/media/data/media_smart_album_repository_test.dart |
Tests species filter persistence. |
test/features/media_store/transfers_page_delete_tile_test.dart |
Isolates transfer-page dependencies. |
test/features/media_store/media_verify_service_test.dart |
Tests verification breakdown counts. |
test/features/media_store/media_store_providers_test.dart |
Covers absent-runtime suspension state. |
test/features/media_store/media_storage_page_test.dart |
Updates verification summary assertion. |
test/features/marine_life/presentation/providers/species_lookup_providers_test.dart |
Tests lookup locale normalization. |
test/features/marine_life/data/services/builtin_species_seed_version_store_test.dart |
Tests catalog seed persistence. |
test/features/import_wizard/domain/models/import_step_failure_test.dart |
Tests readable import failures. |
test/features/import_wizard/domain/models/import_bundle_test.dart |
Covers cloud source types. |
test/features/import_wizard/data/adapters/universal_adapter_test.dart |
Updates packed-series snapshots. |
test/features/import_wizard/data/adapters/dive_computer_adapter_test.dart |
Updates packed-series snapshots. |
test/features/gps_log/track_parse_error_text_test.dart |
Tests track-size limits. |
test/features/equipment/presentation/pages/equipment_detail_service_test.dart |
Removes obsolete provider override. |
test/features/divers/domain/diver_copywith_clear_test.dart |
Tests profile-photo clearing. |
test/features/divers/data/repositories/diver_repository_additional_test.dart |
Tests insurance phone persistence. |
test/features/dive_planner/presentation/providers/dive_planner_providers_test.dart |
Updates segment model fixture. |
test/features/dive_planner/presentation/providers/dive_plan_notifier_replace_test.dart |
Updates replacement segment fixture. |
test/features/dive_planner/presentation/plan_gear_weights_section_test.dart |
Adds height-provider overrides. |
test/features/dive_planner/plan_gas_consumption_test.dart |
Migrates travel and hold segments. |
test/features/dive_log/presentation/widgets/pickers/species_picker_sheet_test.dart |
Updates Species terminology. |
test/features/dive_log/presentation/widgets/instrument_sample_test.dart |
Updates pressure-point fixtures. |
test/features/dive_log/presentation/widgets/edit_sections/the_dive_section_test.dart |
Removes obsolete widget assertion. |
test/features/dive_log/presentation/widgets/dive_profile_chart_ceiling_fill_test.dart |
Updates ceiling color assertion. |
test/features/dive_log/presentation/widgets/dive_list_selection_test.dart |
Updates packed-series snapshot. |
test/features/dive_log/presentation/widgets/cylinders_card_test.dart |
Updates pressure-point fixtures. |
test/features/dive_log/presentation/providers/estimated_tank_pressures_provider_test.dart |
Updates pressure-point fixtures. |
test/features/dive_log/presentation/pages/bulk_dive_edit_form_test.dart |
Covers statistics exclusion fields. |
test/features/dive_log/domain/services/profile_position_test.dart |
Updates pressure interpolation fixtures. |
test/features/dive_log/domain/codecs/sample_shift_test.dart |
Tests timestamp shifting. |
test/features/dive_log/data/services/profile_markers_service_test.dart |
Updates pressure fixtures. |
test/features/dive_log/data/services/gas_analysis_service_segment_sac_test.dart |
Updates pressure fixtures. |
test/features/dive_log/data/services/gas_analysis_service_sac_test.dart |
Updates pressure fixtures. |
test/features/dive_log/data/services/estimated_tank_pressure_synthesizer_test.dart |
Updates synthesized-pressure tests. |
test/features/dive_log/data/repositories/dive_records_filter_test.dart |
Corrects wall-clock date fixtures. |
test/features/dive_log/data/repositories/dive_ordered_ids_test.dart |
Tests calendar-date filtering. |
test/features/dive_log/data/repositories/dive_computer_repository_import_attribution_test.dart |
Uses packed pressure repository. |
test/features/dive_log/data/repositories/dive_computer_repository_error_test.dart |
Removes obsolete profile API assertion. |
test/features/dive_computer/data/services/parsed_dive_mapper_test.dart |
Updates RBT units. |
test/features/dive_computer/data/services/libdc_sample_units_test.dart |
Tests RBT conversion. |
test/features/dive_3d/application/z_axis_input_test.dart |
Updates pressure fixtures. |
test/features/bathymetry/data/gmrt_source_test.dart |
Tests GMRT capability probing. |
test/features/bathymetry/data/etopo_erddap_source_test.dart |
Tests ETOPO capability probing. |
test/features/bathymetry/application/bathymetry_providers_test.dart |
Updates source test interface. |
test/features/backup/data/services/backup_service_replace_test.dart |
Tests catalog reseeding after restore. |
test/core/utils/byte_format_test.dart |
Tests byte formatting. |
test/core/services/sync/crypto/recovery_code_test.dart |
Handles hyphenated recovery words. |
test/core/services/sync/changeset_log/publish_state_store_test.dart |
Tests publish-state detection. |
test/core/services/sync/changeset_log/peer_cursor_store_test.dart |
Tests peer-state detection. |
test/core/services/sync/changeset_log/changeset_reader_test.dart |
Tests base-download progress. |
test/core/services/sync/changeset_log/base_part_file_sink_test.dart |
Tests per-part progress. |
test/core/services/files/picked_file_materializer_test.dart |
Tests unique scratch directories. |
test/core/deco/golden/golden_vector_test.dart |
Updates ceiling API usage. |
test/core/deco/deco_model_test.dart |
Updates ceiling API usage. |
test/core/deco/buhlmann_algorithm_test.dart |
Updates ceiling calculations. |
test/core/database/performance_indexes_test.dart |
Updates packed-profile index checks. |
test/core/database/migration_v170_gas_consumption_display_test.dart |
Relaxes compatibility-floor assertion. |
test/architecture/provider_tick_build_smoke_test.dart |
Removes obsolete provider smoke test. |
scripts/release/linux_tarball_extras/uninstall.sh |
Adds Linux tarball uninstaller. |
pubspec.yaml |
Bumps version and adds test dependency. |
pubspec.lock |
Records direct dev dependency. |
packages/libdivecomputer_plugin/windows/dive_computer_host_api_impl.h |
Adds Windows USB HID stream. |
packages/libdivecomputer_plugin/windows/CMakeLists.txt |
Builds and links USB HID support. |
packages/libdivecomputer_plugin/linux/CMakeLists.txt |
Builds Linux USB HID support. |
packages/libdivecomputer_plugin/darwin/run_native_tests.sh |
Adds native USB HID tests. |
linux/runner/main.cc |
Adds headless version output. |
linux/runner/CMakeLists.txt |
Injects Linux build version. |
lib/shared/widgets/forms/unit_slider.dart |
Prevents narrow-layout overflow. |
lib/shared/widgets/forms/suggestion_form_row.dart |
Updates widget documentation. |
lib/shared/widgets/forms/form_style.dart |
Defines clear-action target size. |
lib/shared/utils/contact_import_support.dart |
Centralizes contact platform support. |
lib/main.dart |
Registers sea-area licensing. |
lib/features/weight_planner/presentation/widgets/weight_prediction_card.dart |
Displays body-composition terms. |
lib/features/weight_planner/presentation/providers/weight_planner_providers.dart |
Includes diver height in calibration. |
lib/features/universal_import/data/services/parsed_dive_profile_mapper.dart |
Converts libdc RBT units. |
lib/features/universal_import/data/parsers/macdive_xml_parser.dart |
Imports MacDive photo references. |
lib/features/trips/presentation/widgets/trip_itinerary_tab.dart |
Uses configured date formatting. |
lib/features/trips/presentation/widgets/story/trip_story_day_header.dart |
Uses configured date formatting. |
lib/features/trips/presentation/helpers/trip_scan_actions.dart |
Offers post-import site review. |
lib/features/trips/domain/constants/trip_field.dart |
Uses configured date formatting. |
lib/features/transfer/presentation/widgets/transfer_list_content.dart |
Adds cloud transfer section. |
lib/features/tank_presets/presentation/pages/tank_presets_page.dart |
Localizes built-in preset names. |
lib/features/tags/data/repositories/tag_repository.dart |
Documents statistics-scope exemptions. |
lib/features/statistics/presentation/formatters/distribution_labels.dart |
Preserves duration totals. |
lib/features/setup_wizard/presentation/widgets/steps/sync_connect_step.dart |
Uses first-contact sync detection. |
lib/features/settings/presentation/widgets/sync_maintenance_progress_dialog.dart |
Updates documentation. |
lib/features/settings/presentation/widgets/adopt_replaced_library_dialog.dart |
Uses configured date-time formatting. |
lib/features/settings/presentation/pages/storage_settings_page.dart |
Links storage usage page. |
lib/features/settings/presentation/pages/section_appearance_page.dart |
Adds GTR metric label. |
lib/features/settings/presentation/pages/medical_info_edit_page.dart |
Uses configured date formatting. |
lib/features/settings/presentation/pages/lightroom_settings_page.dart |
Uses configured date formatting. |
lib/features/settings/presentation/pages/fix_dive_times_page.dart |
Formats selected date bounds. |
lib/features/settings/presentation/pages/default_visible_metrics_page.dart |
Adds default GTR toggle. |
lib/features/settings/presentation/pages/body_weight_edit_page.dart |
Uses configured date formatting. |
lib/features/safety/presentation/widgets/chamber_tile.dart |
Uses configured month formatting. |
lib/features/safety/presentation/pages/incidents_list_page.dart |
Uses configured date formatting. |
lib/features/pre_dive/presentation/pages/pre_dive_template_edit_page.dart |
Adds equipment item labels. |
lib/features/planning/presentation/widgets/planning_tool_pane.dart |
Adds optional leading control. |
lib/features/planning/presentation/pages/planning_page.dart |
Moves gas calculators to split view. |
lib/features/planner/presentation/widgets/saved_plans_sheet.dart |
Uses configured date formatting. |
lib/features/planner/presentation/widgets/follow_dive_sheet.dart |
Uses configured date formatting. |
lib/features/planner/presentation/providers/plan_overlay_provider.dart |
Preserves plan overlay color. |
lib/features/planner/presentation/panes/plan_results_pane.dart |
Supports outer scrolling. |
lib/features/planner/presentation/panes/plan_editor_pane.dart |
Places tanks before segments. |
lib/features/planner/presentation/chart/plan_profile_chart.dart |
Updates target-depth and ghost ceiling behavior. |
lib/features/planner/domain/entities/segment_phase.dart |
Introduces derived segment phases. |
lib/features/media/presentation/widgets/media_library_filter_labels.dart |
Uses configured date formatting. |
lib/features/media/presentation/helpers/lightroom_scan_helper.dart |
Offers post-import site review. |
lib/features/media/domain/services/photo_gps_point_selector.dart |
Selects GPS photo nearest dive entry. |
lib/features/media/domain/entities/species_tag_chip.dart |
Adds species-tag presentation entity. |
lib/features/media/domain/entities/import_candidate.dart |
Returns imported media and dive IDs. |
lib/features/media/data/services/media_item_verifier.dart |
Narrows verification writes. |
lib/features/media/data/services/gps_fix.dart |
Validates media GPS coordinates. |
lib/features/media/data/services/dive_media_enricher.dart |
Excludes all signature types. |
lib/features/media/data/resolvers/media_store_resolver.dart |
Disposes resolver fetch gate. |
lib/features/media/data/repositories/media_row_mapper.dart |
Maps equipment links and buddy signatures. |
lib/features/media/data/repositories/media_library_repository.dart |
Adds species filtering. |
lib/features/marine_life/domain/entities/bundled_species_catalog.dart |
Models versioned species assets. |
lib/features/marine_life/data/services/species_lookup_service.dart |
Defines species lookup abstraction. |
lib/features/maps/domain/entities/cached_region.dart |
Reuses byte-size formatting. |
lib/features/maps/data/repositories/offline_map_repository.dart |
Accepts caller-generated region IDs. |
lib/features/import_wizard/presentation/widgets/review_step.dart |
Adds dive sorting controls. |
lib/features/import_wizard/domain/models/import_step_failure.dart |
Adds explicit step failure type. |
lib/features/import_wizard/domain/models/import_bundle.dart |
Adds cloud import sources. |
lib/features/import_wizard/data/adapters/healthkit_adapter.dart |
Uses configured date/time formatting. |
lib/features/import_wizard/data/adapters/cloud_computer_identity.dart |
Normalizes cloud device identity. |
lib/features/gps_log/presentation/track_parse_error_text.dart |
Maps oversized-track errors. |
lib/features/gps_log/data/services/track_import/track_import_service.dart |
Enforces track-point limit. |
lib/features/gas_calculators/presentation/widgets/rock_bottom_calculator.dart |
Prevents heading overflow. |
lib/features/gas_calculators/presentation/widgets/blender/blender_section_title.dart |
Makes heading spacing configurable. |
lib/features/gas_calculators/presentation/widgets/blender/blender_formatting.dart |
Localizes gas-role labels. |
lib/features/gas_calculators/presentation/widgets/blender/blender_cylinder_card.dart |
Persists blender preferences. |
lib/features/gas_calculators/presentation/widgets/best_mix_calculator.dart |
Prevents heading overflow. |
lib/features/gas_calculators/domain/tank_spec.dart |
Adds AL100 and removes blender choices. |
lib/features/gas_calculators/domain/gas_blender.dart |
Exposes gas-mix validation. |
lib/features/equipment/presentation/widgets/equipment_summary_widget.dart |
Distinguishes currencies. |
lib/features/equipment/presentation/utils/equipment_attribute_units.dart |
Displays URL attributes verbatim. |
lib/features/equipment/domain/services/gear_feature_mapper.dart |
Maps insulation level. |
lib/features/equipment/domain/entities/equipment_item.dart |
Exposes purchase metadata. |
lib/features/equipment/data/services/dive_computer_gear_linker.dart |
Updates packed-series documentation. |
lib/features/equipment/data/repositories/service_record_repository.dart |
Removes service-cost aggregation. |
lib/features/divers/presentation/widgets/diver_switcher_sheet.dart |
Displays diver profile photos. |
lib/features/divers/presentation/providers/diver_weight_entry_providers.dart |
Provides latest plausible height. |
lib/features/dive_types/data/repositories/dive_type_repository.dart |
Applies statistics scope to counts. |
lib/features/dive_sites/presentation/widgets/edit_sections/dive_info_section.dart |
Adds rating-clear tooltip. |
lib/features/dive_roles/data/repositories/dive_role_repository.dart |
Documents deletion-count exemption. |
lib/features/dive_log/presentation/widgets/run_dive_consolidation.dart |
Updates consolidation documentation. |
lib/features/dive_log/presentation/widgets/photo_marker_layout.dart |
Excludes all signatures. |
lib/features/dive_log/presentation/widgets/edit_sections/experience_section.dart |
Adds rating-clear tooltip. |
lib/features/dive_log/presentation/widgets/deco_stop_band.dart |
Supports overlay-specific fill colors. |
lib/features/dive_log/presentation/widgets/combine_dives_dialog.dart |
Updates consolidation documentation. |
lib/features/dive_log/presentation/widgets/buoyancy_section.dart |
Displays body-composition terms. |
lib/features/dive_log/presentation/utils/gtr_format.dart |
Formats gas time remaining. |
lib/features/dive_log/presentation/pages/dive_list_page.dart |
Shows statistics-exclusion badges. |
lib/features/dive_log/domain/services/unreadable_series_exception.dart |
Adds packed-series safety exception. |
lib/features/dive_log/domain/services/profile_sample_dedupe.dart |
Deduplicates packed samples. |
lib/features/dive_log/domain/services/dive_merge_builder.dart |
Preserves statistics exclusions. |
lib/features/dive_log/domain/entities/bulk_edit_request.dart |
Updates packed-series documentation. |
lib/features/dive_log/data/services/profile_markers_service.dart |
Distinguishes max-depth marker color. |
lib/features/dive_log/data/services/gas_analysis_service.dart |
Updates packed-series documentation. |
lib/features/dive_log/data/services/estimated_tank_pressure_synthesizer.dart |
Removes pressure-point IDs. |
lib/features/dive_computer/data/services/parsed_dive_mapper.dart |
Converts libdc RBT units. |
lib/features/dive_computer/data/services/libdc_sample_units.dart |
Centralizes libdc unit conversion. |
lib/features/dive_computer/data/services/dive_import_service.dart |
Forwards computer minimum temperature. |
lib/features/dive_centers/presentation/pages/dive_center_edit_page.dart |
Uses configured geocoding language. |
lib/features/dive_centers/data/repositories/dive_center_repository.dart |
Applies statistics scope to counts. |
lib/features/dive_3d/domain/spatial/bathymetry_terrain_builder.dart |
Reuses latitude conversion constant. |
lib/features/data_quality/presentation/pages/data_quality_inbox_page.dart |
Reports split failures. |
lib/features/data_quality/data/services/quality_prefilters.dart |
Queries packed profile tables. |
lib/features/dashboard/presentation/home_cards.dart |
Documents safety-card behavior. |
lib/features/cylinder_configs/domain/services/dive_tank_config_adapter.dart |
Converts saved cylinders to plan tanks. |
lib/features/courses/data/repositories/course_requirement_repository.dart |
Documents statistics exclusions. |
lib/features/courses/data/repositories/course_repository.dart |
Documents course-count semantics. |
lib/features/checklists/presentation/widgets/checklist_item_edit_sheet.dart |
Uses configured date formatting. |
lib/features/certifications/domain/constants/certification_field.dart |
Uses configured date formatting. |
lib/features/buddies/presentation/widgets/buddy_summary_widget.dart |
Displays buddy profile photos. |
lib/features/buddies/data/repositories/buddy_merge_repository.dart |
Preserves buddy photo blobs. |
lib/features/bathymetry/presentation/bathymetry_labels.dart |
Adds NOAA and Swiss labels. |
lib/features/bathymetry/data/sources/gmrt_source.dart |
Adds GMRT capability probing. |
lib/features/bathymetry/data/sources/etopo_erddap_source.dart |
Adds ETOPO capability probing. |
lib/features/bathymetry/data/sources/emodnet_source.dart |
Adds regional capability probing. |
lib/features/backup/presentation/providers/backup_providers.dart |
Injects species seed store. |
lib/features/backup/domain/entities/backup_type.dart |
Adds pre-downgrade backups. |
lib/features/auto_update/presentation/widgets/update_banner.dart |
Adds package-aware update actions. |
lib/features/auto_update/domain/linux_upgrade_command.dart |
Resolves Linux upgrade commands. |
lib/features/auto_update/domain/entities/linux_install_method.dart |
Models Linux installation method. |
lib/features/auto_update/data/services/linux_install_method_reader.dart |
Reads Linux package marker. |
lib/core/utils/geo_math.dart |
Centralizes latitude conversion. |
lib/core/utils/byte_format.dart |
Adds shared byte formatter. |
lib/core/theme/feature_accent_colors.dart |
Adds Species accent colors. |
lib/core/theme/app_theme.dart |
Removes obsolete theme barrel. |
lib/core/services/sync/changeset_log/publish_state_store.dart |
Detects prior publishing. |
lib/core/services/sync/changeset_log/peer_cursor_store.dart |
Detects prior peer synchronization. |
lib/core/services/sync/changeset_log/byte_progress_stream.dart |
Reports stream byte progress. |
lib/core/services/sync/changeset_log/base_part_file_sink.dart |
Reports downloaded parts. |
lib/core/services/suunto_cloud/suunto_api_exception.dart |
Adds Suunto API exception. |
lib/core/services/pdf_templates/pdf_template_factory.dart |
Removes professional PDF template. |
lib/core/services/media_store/icloud_media_platform.dart |
Adjusts directory download behavior. |
lib/core/services/files/picked_file_materializer.dart |
Uses unique scratch directories. |
lib/core/services/export/models/uddf_export_options.dart |
Adds raw-data export option. |
lib/core/services/export/excel/pre_dive_excel_export_service.dart |
Exports equipment checklist items. |
lib/core/services/cloud_storage/google_drive/google_sign_in_authenticator.dart |
Single-flights silent authentication. |
lib/core/services/accounts/adapters/google_drive_account_adapter.dart |
Supplies refreshable HTTP clients. |
lib/core/router/router.dart |
Removes obsolete router barrel. |
lib/core/presentation/startup_restore_status.dart |
Models startup restore state. |
lib/core/icons/submersion_icons.dart |
Adds insulation garment icons. |
lib/core/deco/vpm_b.dart |
Updates ceiling API. |
lib/core/constants/tank_preset_display.dart |
Adds localized AL100 labels. |
lib/core/constants/sort_options.dart |
Adds last-dive sorting. |
lib/core/constants/sort_options_display.dart |
Localizes new sort options. |
lib/core/constants/profile_metrics.dart |
Adds GTR metric and colors. |
lib/core/constants/dive_field.dart |
Resolves legacy field names. |
lib/core/buoyancy/gear_buoyancy_traits.dart |
Adds insulation traits. |
lib/core/accessibility/accessibility.dart |
Removes obsolete accessibility barrel. |
docs/guide/statistics.md |
Renames Marine Life to Species. |
docs/guide/dive-logging.md |
Renames Marine Life to Species. |
docs/FEATURE_ROADMAP.md |
Marks photo GPS extraction complete. |
docs/developer/testing.md |
Links local test-performance guidance. |
docs/developer/README.md |
Adds performance documentation link. |
docs/_sidebar.md |
Updates navigation links and terminology. |
assets/data/emergency_numbers.json |
Updates emergency-number coverage. |
assets/data/dive_sites.json |
Normalizes generation timestamp. |
assets/data/dive_centers.json |
Normalizes generation timestamp. |
.github/workflows/release.yml |
Verifies Linux package assets. |
Review details
- Files reviewed: 36/1791 changed files
- Comments generated: 4
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| // Already resolved by parsed_dive_mapper: the dive header's minimum | ||
| // where the computer reports one, else the coldest sample. Computers | ||
| // that log temperature only in the header (the Cressi Leonardo) have no | ||
| // other route into the dive record. | ||
| minTemperature: dive.minTemperature, |
| /// the row's 48px height. Going to Material's full 48 would push every row | ||
| /// carrying a clear icon to 66, and growing the target sideways instead | ||
| /// would overlap the fifth star's own target. | ||
| static const double clearTapTarget = 26; |
| stdout.write(format.stdout); | ||
| stderr.write(format.stderr); | ||
| stdout.writeln('Wrote ${rows.length} cases into both lookups'); |
| /// Installed from a .deb; upgraded with apt. | ||
| deb, | ||
|
|
||
| /// Installed from an .rpm; upgraded with dnf. |
|
@claude bitte folgenden Punkt bearbeiten: Weitere ungeprüfte Casts in findAssetCandidates() (swiss_stac_client.dart, Zeilen 183 und 236): Der bereits umgesetzte Fix für die ungeprüften Casts an Zeile 174 (feature as Map<String, dynamic> → is-Prüfung mit SwissStacException) deckt zwei weitere Stellen im selben Muster in derselben Methode noch nicht ab: Zeile 183 und Zeile 236. Bitte dort dasselbe Härtungsmuster anwenden wie bereits an Zeile 174 umgesetzt (is-Check statt forciertem as-Cast, SwissStacException bei unerwarteter Struktur statt TypeError). Vorgehen:
|
|
Claude finished @alpheios-one's task in 11m 53s —— View job Fix: Weitere ungeprüfte Casts in findAssetCandidates() (Zeilen 183, 236)Todo-Liste:
Zusammenfassung: Nach dem letzten Fix (
Bewusste Design-Entscheidung bei Punkt 2: Bei einer unerwarteten Struktur wird hier weiterhin Neuer Regressionstest ( |
- findAssetCandidates(): drop the leftover `as List<dynamic>?` cast on the already-validated 'features' field in favor of an `is` check. - _featureOverlaps(): replace the try/catch-wrapped `as num` casts on the bbox coordinates with explicit `is num` checks. Kept the existing, already-documented and already-tested "malformed bbox -> no overlap" skip semantics (same as the sibling per-item checks for feature/asset/ link shape) rather than escalating to SwissStacException, since a single feature's malformed bbox is a per-item issue, not a fatal parse of the whole items page. Co-authored-by: alpheios-one <275321969+alpheios-one@users.noreply.github.com>
|
@claude bitte die volle Testsuite ausführen: flutter test --reporter expanded (alle Shards) Kein Merge, keine neue Analyse, keine Implementierung - nur der volle Testlauf über das gesamte Projekt, da bisher nur gezielte Testläufe der jeweils betroffenen Dateien liefen. Bei Fehlschlägen: jeden betroffenen Test konkret benennen (Datei, Testname, Fehlermeldung), nicht nur die Anzahl der Fehlschläge angeben. Falls ein Fehlschlag zusammenhängt mit einem der zuvor umgesetzten Fixes, dies explizit kennzeichnen. Falls ein Befehl aus Tool-Berechtigungsgründen nicht ausführbar ist, dies explizit melden statt stillschweigend auszulassen. Erst wenn die volle Suite fehlerfrei durchläuft (oder ein Berechtigungsproblem klar gemeldet wurde), Abschlusskommentar posten: "Fertig - Analyse und Tests laufen fehlerfrei durch, bereit zur Prüfung." Das ist das Signal, den Pull Request zu schliessen und wieder zu öffnen, damit die GitHub-Checks neu laufen. |
|
Claude finished @alpheios-one's task in 6m 16s —— View job Volle Testsuite: flutter test --reporter expanded (alle Shards)
Todo-Liste:
Hinweis: Branch: |
|
@claude bitte den vorherigen Auftrag korrekt abschliessen: Der letzte Testlauf wurde im Hintergrund gestartet, die Session hat sich aber beendet, bevor das Ergebnis vorlag ("Volle Testsuite läuft im Hintergrund" wurde nie ausgewertet). Bitte flutter test --reporter expanded (alle Shards) diesmal synchron im Vordergrund ausführen und auf den Abschluss warten, bevor die Session beendet wird - nicht als Hintergrundprozess starten. Kein Merge, keine neue Analyse, keine Implementierung. Bei Fehlschlägen: jeden betroffenen Test konkret benennen (Datei, Testname, Fehlermeldung), nicht nur die Anzahl der Fehlschläge angeben. Falls ein Fehlschlag zusammenhängt mit einem der zuvor umgesetzten Fixes, dies explizit kennzeichnen. Falls der Befehl aus Zeit- oder Tool-Berechtigungsgründen nicht vollständig ausführbar ist, dies explizit melden statt stillschweigend auszulassen oder die Session ohne Ergebnis zu beenden. Erst wenn die volle Suite fehlerfrei durchläuft (oder ein Berechtigungsproblem klar gemeldet wurde), Abschlusskommentar posten: "Fertig - Analyse und Tests laufen fehlerfrei durch, bereit zur Prüfung." Das ist das Signal, den Pull Request zu schliessen und wieder zu öffnen, damit die GitHub-Checks neu laufen. |
|
@claude bitte den vorherigen Testsuite-Auftrag fortsetzen, diesmal nur für einen Teilbereich: Der letzte Lauf blieb bei test/core (646 Dateien, 5436 Tests, alle grün) stehen und kam bei test/features (1996 Dateien) nicht mehr zu einem dokumentierten Abschluss - vermutlich durch das ~60-Minuten-Token-Zeitlimit der Session, nicht durch einen Testfehler. Bitte in dieser Session NUR folgendes ausführen: flutter test --reporter expanded test/features (alle Unterordner) Falls auch das zu lange dauert: in sinnvolle Unter-Blöcke aufteilen (z.B. nach Feature-Gruppen), jeden Block bis zum tatsächlichen Abschluss abwarten, Zwischenstand nach jedem Block im Kommentar aktualisieren. Kein Merge, keine neue Analyse, keine Implementierung. Bei Fehlschlägen: jeden betroffenen Test konkret benennen (Datei, Testname, Fehlermeldung). Falls die Session-Zeit nicht für den gesamten test/features-Ordner reicht: den erreichten Stand (welche Unterordner fertig getestet wurden, mit Ergebnis) explizit im Kommentar festhalten, bevor die Session endet - nicht stillschweigend abbrechen. Die restlichen Verzeichnisse (test/accessibility, test/architecture, test/dives, test/l10n, test/shared, test/support, test/tool, test/app_test.dart, test/macos_entitlements_test.dart) folgen in einem separaten Folgeauftrag. Keinen "Fertig"-Abschlusskommentar in dieser Session - nur eine Zusammenfassung des erreichten Stands. |
|
Claude finished @alpheios-one's task in 6m 10s —— View job Testsuite-Fortsetzung: test/features
Todo-Liste:
Kein Merge, keine Analyse, keine Implementierung in dieser Session - reine Testausführung. |
The branch briefly reverted .github/workflows/ci.yaml to its pre-merge state because the pushing GitHub App lacked the workflows permission, then restored the lost upstream changes by hand. That restoration left one artifact behind: the "Single aggregation gate" comment block was re-attached to ci-success instead of the submodule-pointer job, and main's newer "adding a job below without adding it here makes it advisory" note was dropped. The result was a comment-only diff with no functional change and a lost upstream comment, unrelated to swissBATHY3D. Restore ci.yaml to exactly what this branch forked from so the file carries no diff at all and main's own version wins on merge.
swiss_bathy_debug_info.dart was development scaffolding built while chasing the Walensee identical-mesh bug. It ships no user-facing behaviour: every call site was gated on kDebugMode, so release builds tree-shook all of it. What it did cost was 1182 lines of forensic code to maintain, documented against a private "Bug 6/7/9/10" numbering that means nothing outside the session that produced it, and two production files importing it unconditionally to serve a panel no release build can open. Removed: - lib/features/bathymetry/presentation/swiss_bathy_debug_info.dart - the debug panel, cache-clear action and render/grid fingerprint UI in site_terrain_pane.dart, along with the state fields, didUpdateWidget reset and the kDebugMode/services/site_providers imports they needed - the kDebugMode scene-build recorder in site_seascape_providers.dart - the debug panel's RangeError regression test, which covered only the removed panel _sourceChip no longer takes scene/grid, which it used solely to feed the panel, and extractGridZipTexts loses the doc paragraph explaining that it was public for the panel's benefit. No behavioural change in any build mode. flutter analyze is clean across the project and the site_scape, dive_3d, bathymetry and settings suites pass (1197 tests).
…date" Addresses the two open review comments on PR submersion-app#1550. A manual reload that reaches a verdict on zero tiles reported "All data is up to date". On a fresh install, or before any Swiss lake view has been opened, there is simply nothing cached to check, so that message claims a confirmation the app never made. It now has its own string, settings_appearance_bathymetryRefresh_resultNothingCached, translated across all 11 locales. SwissBathyRefreshSummary.total was documented as "total tiles that were cached at the start of the sweep", but it returns updated + upToDate + failed and excludes rows the sweep skipped without reaching a verdict (evicted, corrupt or unparseable keys). The doc now says what the getter actually counts, which is also why total == 0 cannot be read as "everything is current". Also drops a dangling cross-reference in SwissStacClient.findAssetCandidates pointing at class-doc wording that no longer exists. The new widget test was confirmed to fail against the pre-fix branch selection and pass after it. flutter analyze is clean project-wide.
Review raised that keying Swiss coordinates by the raw lat/lon gives up BathymetryRepository's cache coalescing for them, and the deferral to issue submersion-app#1511 was agreed in the PR thread but never written down. The next reader of keyFor() had no way to tell a deliberate, tracked trade-off from an oversight. Records what it actually costs (redundant resolve and stitch for nearby Swiss points, CPU rather than network, since the tile downloads underneath are still deduped), the shape of the fix that was suggested (key by LV95 tile or by the covered tile range), and why it waits for submersion-app#1511: that issue may replace the live STAC fetch with a pre-processed repository, which would change what the right key is. Comment only, no behaviour change.

Platzhalter-PR, Analyse und Umsetzung folgen in separaten Aufträgen.
Bezug: submersion-app#1061