Skip to content

Search downloaded places and addresses without a network #403

Description

@Medformatik

What problem would this solve?

Downloaded maps do not currently provide arbitrary offline place/address search. A cached earlier query is not enough for finding a never-searched destination in a downloaded region.

What would you like to be able to do?

Add a bounded, versioned regional place/address index alongside offline packages. Choose the index format, normalization/ranking and storage adapter in a short design decision first; then split generation, installation and query/UI work into linked implementation tasks. Reuse canonical identities and resolvers rather than introducing a disconnected offline-only place namespace. Support one representative German region first; no global download requirement or new routing engine.

Verified current state

Rechecked on 30 October 2026 against main at fe796a6405f215fda3b18032e8181ed8647ac108.

Acceptance criteria

  • Package metadata declares search coverage, data/index versions, licensing, bytes/checksum and compatibility independently of map coverage.
  • Cold-start, never-before-searched name/address queries and bounded category browsing work with all network requests blocked; multilingual aliases, branch identity and out-of-coverage bounds are covered.
  • Results retain canonical IDs, coordinates and enough local details to select a destination; unavailable online-only enrichment is explicit.
  • Interrupted install, quota failure, incompatible upgrade, deletion and multiple-region boundaries have deterministic recovery and do not corrupt ready packages.
  • Query latency, storage and build cost are measured on representative low-end hardware with thresholds agreed before rollout.
  • Docs distinguish offline map rendering, search and routing capabilities; keyboard/accessibility and before/after screenshots accompany UI changes.

Verification approach

Use a disposable pinned regional fixture, network-denial assertions and empty query caches. Test identity parity with online results, install/update failure injection and platform storage adapters; record dataset versions and performance results in the comparison corpus.

Dependencies and decisions

The shared place identity/publication contract from #399 landed in #436 (packages/core/src/ambient-places.ts, publication, retention and identity); reuse its canonical identities for final compatibility. #300 concerns upstream Pelias address ingestion, not an on-device query index. Choose initial region and minimum address fields during triage.

Alternatives or workarounds

Keep online-only search (current limitation); cache individual responses (cannot cover new queries); package a full third-party application dataset (evaluate size/licensing rather than assuming it matches current identities).

Additional context

Area

Other / cross-cutting

Ownership and status

Maintainer-owned backlog; implementation has not started. Resolve the named decisions during triage before scheduling work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Fields

    Priority

    Medium

    Effort

    High

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions