8000 feat(library): show photos and videos on a map by where they were taken by adeelahmad · Pull Request #697 · adeelahmad/lense · GitHub
[go: up one dir, main page]

Skip to content

feat(library): show photos and videos on a map by where they were taken - #697

Merged
adeelahmad merged 1 commit into
mainfrom
claude/project-thread-xfmkzn
Oct 19, 2026
Merged

adeelahmad merged 1 commit into
mainfrom
claude/project-thread-xfmkzn

Conversation

@adeelahmad
Copy link
Copy Markdown
Owner

Requested by Adeel · project thread

Description

Before: photos kept their GPS position, but nothing showed where things were taken, videos' locations weren't read, and nobody could filter by place.

After: the Library has a Map view beside Table and List, on a phone too. Every asset whose file gave a GPS fix is a dot, with the Library's filters applied, framed to fit. The map is drawn with Leaflet (BSD-2), using tiles chosen under the new Settings → Maps: OpenStreetMap by default, or none. A video's ISO 6709 location is now read at import beside a photo's EXIF GPS, and photos anytopdf already placed count too.

GET /resources takes located and bbox (west,south,east,north) and gives each row its place, to members only. The MCP list_recordings tool takes the same arguments.

Motivation and Context

Personal feature plan: see photos and videos on a map.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change; ! in the title)

Checklist:

Done questions (AGENTS.md)

  • Goal: delivers what the user wanted, merged on green CI.
  • Agents: GET /resources?located&bbox= and MCP list_recordings.
  • Zero setup: works after install; the tile server has a default.
  • Fewest clicks and keystrokes: one Map tab, framed to fit, Library filters carry over.
  • Configurable: maps.tile_url in Settings → Maps (OpenStreetMap, any XYZ server, or none).
  • Light: Leaflet is small and loads only with the Map view.
  • Private and secure: places go to members only; threat model gains N-MAP-TILES (the tile server sees the area being looked at), and the md, yaml and json all agree.
  • Cost: no model calls.
  • User decides: a new view only; existing defaults unchanged.
  • Upgrades: older assets simply have no place until re-imported; no stored-data shape change for existing rows.
  • Honest: README built list and docs/requirements.md updated.
  • Tests, docs and generated files updated (make openapi, pnpm lockfile from pnpm).
  • Open standards: ISO 6709, EXIF GPS, XYZ tiles; Leaflet is BSD-2, which keeps Lens MIT.
  • Result reported. Refine later: backfill old photos' GPS, and a place filter for the assistant.
  • Reuse: Library filters (library.where) and the existing EXIF reader reused.

Local CI: pytest tests/api/test_photo_map.py tests/api/test_iiif.py tests/api/test_mcp.py (31 passed), ruff, mypy, jest __tests__/library* + __tests__/settings* (171 passed), tsc --noEmit, ci/check_requirements.py, ci/validate_threat_model.py all clean; OpenAPI regenerated with no drift.


Generated by Claude Code

Library gets a Map view (beside Table and List, on a phone too): every asset whose
file gave a GPS fix is a dot, with the Library's filters, framed to fit, on Leaflet
(BSD-2) with tiles from the new Settings > Maps (OpenStreetMap by default, or none).
A video's ISO 6709 location is now read at import beside a photo's EXIF GPS, and a
photo anytopdf already placed counts too. GET /resources takes located and bbox
(west,south,east,north) and gives each row its place, members only; MCP
list_recordings takes the same. The threat model notes that the tile server sees
the area looked at (N-MAP-TILES).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QFUNzy1QZy5HhKAyJxTAYJ
@adeelahmad adeelahmad self-assigned this Oct 19, 2026
@adeelahmad
adeelahmad merged commit f3813dc into main Oct 19, 2026
21 checks passed
@adeelahmad
adeelahmad deleted the claude/project-thread-xfmkzn branch October 19, 2026 22:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0