recon/lib
Matt a4288c0cd8 Add contacts/phone book system with per-user scoping
New files:
- lib/auth.py: Authentik forward-auth helpers (get_user_id, @require_auth)
- lib/contacts.py: ContactsDB with CRUD, soft delete, restore, purge, find_nearby
- lib/contacts_api.py: Flask Blueprint with 9 API endpoints at /api/contacts
- templates/knowledge/deleted_contacts.html: Dashboard recovery page

Modified:
- lib/api.py: Register contacts_bp, add KNOWLEDGE_SUBNAV entry, /deleted-contacts route
- config/profiles: has_contacts feature flag (true for home, false for pi profiles)

Separate SQLite DB at data/contacts.db. Per-user isolation via X-Authentik-Username.
Home/Work labels enforced unique per user. Haversine proximity queries (75m default).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-22 05:29:54 +00:00
..
acquisition
processors Filter non-English articles from ZIM ingestion 2026-04-17 07:30:30 +00:00
__init__.py
address_book.py fix(navi): address book prefix+boundary match for longer queries 2026-04-20 07:54:32 +00:00
address_book_api.py feat(navi): address book with geocoding integration 2026-04-20 04:02:11 +00:00
address_book_test.py fix(navi): address book prefix+boundary match for longer queries 2026-04-20 07:54:32 +00:00
api.py Add contacts/phone book system with per-user scoping 2026-04-22 05:29:54 +00:00
aurora_nav_tool.py fix(navi): format tool output as human-readable directions 2026-04-19 22:42:17 +00:00
auth.py Add contacts/phone book system with per-user scoping 2026-04-22 05:29:54 +00:00
contacts.py Add contacts/phone book system with per-user scoping 2026-04-22 05:29:54 +00:00
contacts_api.py Add contacts/phone book system with per-user scoping 2026-04-22 05:29:54 +00:00
deployment_config.py feat(navi): deployment profiles + /api/config endpoint 2026-04-20 23:35:39 +00:00
dispatcher.py
embedder.py Fix Kiwix download URL generation in embedder 2026-04-18 00:06:52 +00:00
enricher.py Add langdetect language filter to enricher + purge non-English ZIM articles 2026-04-17 14:37:13 +00:00
extractor.py
filing.py
geocode.py Add business_intent_poi_boost reranker signal 2026-04-21 19:39:37 +00:00
geocode_test.py feat(navi): structured geocode with usaddress parsing and reranker 2026-04-20 16:29:47 +00:00
google_places.py Add Google Places (New) tertiary enrichment for business POIs 2026-04-22 04:08:12 +00:00
ingester.py
key_manager.py
nav_tools.py feat(navi): structured geocode with usaddress parsing and reranker 2026-04-20 16:29:47 +00:00
nav_tools_test.py feat(navi): add nav_tools with route() and reverse_geocode() - Phase H2 2026-04-19 22:14:26 +00:00
netsyms.py feat(navi): add netsyms tier-2 geocoding + geocode API 2026-04-20 07:24:09 +00:00
netsyms_api.py feat(navi): add /api/reverse endpoint for map-click reverse geocoding 2026-04-20 21:26:35 +00:00
netsyms_test.py feat(navi): add netsyms tier-2 geocoding + geocode API 2026-04-20 07:24:09 +00:00
new_pipeline.py
organizer.py
osm_categories.py Add place detail proxy with Nominatim-first routing and Overpass fallback 2026-04-21 03:06:51 +00:00
overture.py Add Overture Maps POI enrichment layer for place details 2026-04-21 16:51:25 +00:00
peertube_collector.py
peertube_scraper.py
place_detail.py Add Google Places (New) tertiary enrichment for business POIs 2026-04-22 04:08:12 +00:00
query_router.py feat(navi): semantic query router for intelligent tool selection - Phase H2b 2026-04-19 23:50:35 +00:00
query_router_test.py feat(navi): semantic query router for intelligent tool selection - Phase H2b 2026-04-19 23:50:35 +00:00
scraper_runner.py Fix progress regex and SIGHUP/scan_zims race condition 2026-04-19 19:35:42 +00:00
status.py Add scraper Phase 2: smart crawl mode detection + browser fallback 2026-04-18 18:26:43 +00:00
utils.py
web_scraper.py
zim_monitor.py Phase 1: Kiwix foundation — ZIM monitor and kiwix-serve setup 2026-04-16 23:39:34 +00:00