Commit Graph

  • c972392b78 feat: OpenRouter-ready AI service — all 11 methods implemented Benjamin Sutter 2026-05-24 12:43:51 +02:00
  • 723f553939 refactor: move PipelineItems from Zustand to Provider→Service→React Query Benjamin Sutter 2026-05-24 12:32:57 +02:00
  • 0582031930 test: Vitest test infrastructure + 52 unit tests for matching engine Benjamin Sutter 2026-05-24 02:33:12 +02:00
  • 713ef3ec08 docs: engineering governance — CLAUDE.md, ARCHITECTURE.md, CODE_REVIEW_CHECKLIST.md Benjamin Sutter 2026-05-24 02:10:30 +02:00
  • ad84fe8289 fix: rename compareUtils.ts → compareUtils.tsx (contains JSX) Benjamin Sutter 2026-05-24 01:54:46 +02:00
  • ce67da73b3 perf: memoize expensive list computations + memo on grid/list items Benjamin Sutter 2026-05-24 01:53:03 +02:00
  • 86bdf142b4 refactor: consolidate duplicated UI score/color/badge logic into lib/ Benjamin Sutter 2026-05-24 01:47:08 +02:00
  • 5d53f35dea refactor(state): clean layoutStore, add selectors, centralise STALE constants Benjamin Sutter 2026-05-24 01:30:44 +02:00
  • eedee83b49 refactor: extract SignalSourcesSection from FutureAvailabilityContextPanel (314 → 227 lines) Benjamin Sutter 2026-05-24 01:18:49 +02:00
  • 01c0f8b06f refactor: extract helpers from 3 match-detail/match-card components Benjamin Sutter 2026-05-24 01:16:32 +02:00
  • c6055f0611 refactor: extract CompareTableBody from Compare.tsx (441 → 147 lines) Benjamin Sutter 2026-05-24 01:13:59 +02:00
  • a3fc213916 refactor: extract helpers from ReminderDetailDrawer + OfferCreationWizard Benjamin Sutter 2026-05-24 01:10:31 +02:00
  • ee71ecc881 refactor: extract sub-components from PropertyMarketSignalsTab + NegotiationInsightsPanel Benjamin Sutter 2026-05-24 01:08:45 +02:00
  • f0988b7250 refactor: extract constants + mapper from NewListing.tsx (526 → 442 lines) Benjamin Sutter 2026-05-24 01:05:57 +02:00
  • 0bacd188d6 refactor: split AppShell, match-detail panels, extract useCompareData Benjamin Sutter 2026-05-24 01:00:38 +02:00
  • ae82d0e6a0 refactor: split PropertyDetail, Anfragen, AISearch god components Benjamin Sutter 2026-05-24 00:55:55 +02:00
  • 4d4ea6d2ff refactor: split PropertyDetailView (998→192 lines) and MatchDetail (464→236 lines) Benjamin Sutter 2026-05-24 00:48:13 +02:00
  • 6515acb7f0 feat: unified error handling + AI service modularisation Benjamin Sutter 2026-05-24 00:32:01 +02:00
  • efc72b720e fix: P0 stabilisation — score modifiers, logout cache clear, provider isolation, mutation error feedback Benjamin Sutter 2026-05-24 00:13:14 +02:00
  • 22c195b4a5 refactor: split large page components + taxonomy/HeatBadge/FutureAvailability improvements Benjamin Sutter 2026-05-23 23:36:03 +02:00
  • 72e4f08900 fix: Compare→Pipeline flow, pipeline card navigation, remove floating AI button Benjamin Sutter 2026-05-22 22:11:29 +02:00
  • 6a6ff7f2e2 feat: Pipeline↔Anfragen integration + Compare→Pipeline + KI stage detection Benjamin Sutter 2026-05-22 21:42:21 +02:00
  • a002597f5b feat: drag & drop for Pipeline Kanban columns (@dnd-kit) Benjamin Sutter 2026-05-22 21:34:00 +02:00
  • de00f758e9 feat: merge Merkliste into Pipeline (SAVED stage) + Anfragen chat page Benjamin Sutter 2026-05-22 21:31:30 +02:00
  • 76f9927c7c fix: UX polish — score formula, role badges, compare view, page titles Benjamin Sutter 2026-05-22 21:05:36 +02:00
  • 9f7062d137 feat: UC-A/B/C demo — 50 mock properties, district scoring, gold/silver cards visible Benjamin Sutter 2026-05-22 20:31:30 +02:00
  • 98b4a1146b feat: soft factor enrichment from Swiss location intelligence Benjamin Sutter 2026-05-22 11:04:51 +02:00
  • f82194ea7f fix: always show all 9 soft factors in score breakdown Benjamin Sutter 2026-05-22 10:21:35 +02:00
  • 030d861ed5 fix: restore WEIGHTING_KEYS import in WeightingEditor Benjamin Sutter 2026-05-22 10:16:36 +02:00
  • 0de48a14d7 feat: split WeightingEditor into Harte / Weiche Kriterien sections Benjamin Sutter 2026-05-22 10:13:46 +02:00
  • 9f877614c1 fix: soft factor scores use 0-1 scale matching the scoring engine Benjamin Sutter 2026-05-22 10:11:18 +02:00
  • 955da564a0 fix: invalidate properties cache after listing creation Benjamin Sutter 2026-05-21 21:22:34 +02:00
  • c9324e9cc8 feat: expand NewListing with AI, soft factors, hard facts, images + MyListings manager Benjamin Sutter 2026-05-21 21:19:45 +02:00
  • 0dac528f98 fix: remove Quelle & Herkunft panel from demand MatchDetail Benjamin Sutter 2026-05-21 21:12:33 +02:00
  • 67d3d06a53 feat: Inserat erstellen — direct listing flow for units and standalone Benjamin Sutter 2026-05-21 21:10:41 +02:00
  • 531c88cfb6 fix: weighting sliders in 2-column grid layout Benjamin Sutter 2026-05-21 20:59:09 +02:00
  • ba910806d6 feat: expose all 13 scoring criteria as weighting sliders Benjamin Sutter 2026-05-21 20:58:01 +02:00
  • 113274cfc7 fix: remove need selector chip strip from results page Benjamin Sutter 2026-05-21 20:51:59 +02:00
  • d8cce96bd8 fix: hide 'Neue Suche' entries from need selector chips Benjamin Sutter 2026-05-21 20:50:22 +02:00
  • 11ecd5d900 fix: need selector on results page + retail budget parsing Benjamin Sutter 2026-05-21 20:47:14 +02:00
  • 27c53f3af1 feat: score transparency on all cards + budget parser fix Benjamin Sutter 2026-05-21 20:41:46 +02:00
  • 34a4dcfb29 feat: unit-first architecture — floor + street as primary card title Benjamin Sutter 2026-05-21 11:19:13 +02:00
  • a39c6ed200 fix: property-level scoring for multi-unit properties + multi-unit chip Benjamin Sutter 2026-05-21 00:30:03 +02:00
  • e2ec1b1dc9 feat: add 'Zur Einheit →' CTA on all VERIFIED_PORTFOLIO cards Benjamin Sutter 2026-05-21 00:17:20 +02:00
  • 69b96f293a refactor: remove Schattenmarkt from all user-visible UI strings Benjamin Sutter 2026-05-21 00:11:35 +02:00
  • 99e99d66c5 feat: unit-level matching architecture — match against Einheiten, not Objekte Benjamin Sutter 2026-05-20 20:03:54 +02:00
  • d902feb6c0 feat: Objekt→Einheit architecture — unit-level pre-market, property detail page, click-through from cards Benjamin Sutter 2026-05-20 19:47:59 +02:00
  • 66aabde1dc fix: synthetic scoring — budget unit mismatch + PRE-MARKET VERIFIED in demand feed Benjamin Sutter 2026-05-20 19:29:06 +02:00
  • dd2eb9be3f feat: add prop-037 + match-063/064 — PRE-MARKET VERIFIED for Bern Retail search Benjamin Sutter 2026-05-20 18:18:12 +02:00
  • d2d2f5f1bb feat: enable Pre-Market Matching on 7 more portfolio properties — 10 active signals total Benjamin Sutter 2026-05-20 17:59:07 +02:00
  • 8f7372157c feat: Pre-Market Intelligence UX rework — institutional positioning Benjamin Sutter 2026-05-20 17:50:37 +02:00
  • 67c0701bfe fix: remove EXPANSION fake properties and their matches from mock data Benjamin Sutter 2026-05-20 16:10:23 +02:00
  • 0dc04a14c5 fix: MarketLeads zeigt 0 Leads — Provider liest live aus Mock-Daten Benjamin Sutter 2026-05-20 16:02:32 +02:00
  • b0ad6643ff feat: Future Availability — Logiktrennung Supply/Demand + Markt-Leads Benjamin Sutter 2026-05-20 15:56:29 +02:00
  • 5fe15bac62 feat: Future Availability Intelligence — rebrand & card redesign Benjamin Sutter 2026-05-20 13:06:16 +02:00
  • d5a4862a28 feat: redesign Schattenmarkt card & detail view for explainability Benjamin Sutter 2026-05-20 12:39:12 +02:00
  • 9f391d17cb feat: Reminder Manager + Schattenmarkt-Freigabe + mock data overhaul Benjamin Sutter 2026-05-20 11:52:24 +02:00
  • 0663757cde fix: Schattenmarkt bypass source filter + bump external/maison match scores for all tiers Benjamin Sutter 2026-05-19 23:10:41 +02:00
  • 3756675b6f feat: add Maison Work source type, rename ExternalMarket to Direktinserat, hide own portfolio from demand search by default Benjamin Sutter 2026-05-19 23:02:05 +02:00
  • a521155bb2 feat: mix Schattenmarkt into result tiers, add filter toggle Benjamin Sutter 2026-05-19 22:36:27 +02:00
  • b6f65f4763 feat: hide workspace switcher when user has only 1 workspace Benjamin Sutter 2026-05-19 20:41:40 +02:00
  • 86051c6f01 feat: workspace tabs as side-by-side segmented control in sidebar Benjamin Sutter 2026-05-19 20:40:12 +02:00
  • 315733a423 feat: reduce demo role switcher to Verwaltung + Bürosuche only Benjamin Sutter 2026-05-19 20:37:20 +02:00
  • a36a827564 feat: reduce demo login to Verwaltung + Bürosuche only Benjamin Sutter 2026-05-19 20:35:55 +02:00
  • d15a13e485 feat: remove Administration workspace — keep only Verwaltung + Suche Benjamin Sutter 2026-05-19 20:32:41 +02:00
  • d22e72f945 feat: move Markt Intelligence from Administration to Verwaltung (under Datenpflege) Benjamin Sutter 2026-05-19 20:28:36 +02:00
  • f0e58f5f7a feat: unit-level matching — each floor lettable independently or as bundle Benjamin Sutter 2026-05-19 20:24:17 +02:00
  • 7cda66f98a fix: convert strings with Swiss apostrophes (3'000, 2'500, 1'500) to template literals Benjamin Sutter 2026-05-19 20:09:54 +02:00
  • 18a7f146b0 fix: replace smart quotes with ASCII quotes in mock data files Benjamin Sutter 2026-05-19 20:01:29 +02:00
  • 13553f60a0 fix: close spec gaps — delete InquiryStatusBadge, extend match reasons, full field keys Benjamin Sutter 2026-05-19 19:57:16 +02:00
  • b4d398270f feat: Anfragencenter Parts A–E — read/unread, prep wizard, offer flow, report preview Benjamin Sutter 2026-05-19 19:20:13 +02:00
  • 279b55d70e feat: Bericht erstellen shows full PDF preview before download Benjamin Sutter 2026-05-19 16:17:00 +02:00
  • 7800d127fe fix: BerichtDialog, images, and add property number + floor/unit structure Benjamin Sutter 2026-05-19 16:14:22 +02:00
  • 0651333030 feat: clickable NeedMatchCard in Matchability tab navigates to Anfragencenter Benjamin Sutter 2026-05-19 16:05:18 +02:00
  • 18f4b2b37a feat: navigate from Marktsignale tab to Anfragencenter latente Anfragen Benjamin Sutter 2026-05-19 16:00:00 +02:00
  • c0f50344e0 fix: replace toast with mock PDF generation dialog in Marktsignale tab Benjamin Sutter 2026-05-19 15:53:15 +02:00
  • 920ce8eb09 feat: Verwaltungszugang refactor — lease data, 3-tab detail, market signals Benjamin Sutter 2026-05-19 15:43:52 +02:00
  • 52a2693cad fix: move map from header into Übersicht tab content Benjamin Sutter 2026-05-18 22:18:39 +02:00
  • 73ff758f03 feat: add 'Produkttour starten' to user menu Benjamin Sutter 2026-05-18 22:14:06 +02:00
  • 14badd1ca8 feat: all 4 UX priorities — wizard, examples, onboarding, pipeline Benjamin Sutter 2026-05-18 22:09:06 +02:00
  • 9cf3e72033 feat: Schattenmarkt UX — separate section, relevance bridge, source links Benjamin Sutter 2026-05-18 21:59:08 +02:00
  • b5cdb0353b feat: Schattenmarkt cards — source pills, probability bar, AI summary Benjamin Sutter 2026-05-18 21:49:27 +02:00
  • 5391ad0ae5 fix: image above map stacked vertically in PropertyDetailView (160px + 120px) Benjamin Sutter 2026-05-18 21:35:36 +02:00
  • a75818b983 feat: full responsive layout — mobile sidebar, stacked panels, fullscreen drawers Benjamin Sutter 2026-05-18 21:24:00 +02:00
  • 259b4e3c68 fix: compact side-by-side image+map in PropertyDetailView drawer (140px) Benjamin Sutter 2026-05-18 21:11:38 +02:00
  • 732231ce13 fix: always show tab scroll buttons in PropertyDetailView — Aktivitätslog sichtbar Benjamin Sutter 2026-05-18 18:26:20 +02:00
  • fdf4de37db feat: Aktivitätslog tab in PropertyDetailView — per-property timeline Benjamin Sutter 2026-05-18 18:12:50 +02:00
  • c4c29ef7d3 feat: F030 Anfragencenter — Aktive & Latente Anfragen + Angebot-Wizard Benjamin Sutter 2026-05-18 18:03:05 +02:00
  • 05ac0083b2 feat: Steuerlast-Kriterium, ImmoScout-Layout, Gold/Silver/Bronze-Trennung Benjamin Sutter 2026-05-18 14:14:10 +02:00
  • 5b917bd619 feat: embedded interactive map in property + match detail views Benjamin Sutter 2026-05-18 13:34:57 +02:00
  • c75d3c8121 feat: F029 intelligence card system — premium AI-native CRE cards Benjamin Sutter 2026-05-18 13:25:27 +02:00
  • 0f8a8ecd2f feat: F028 strategic UX refocus — decision co-pilot redesign V2 Benjamin Sutter 2026-05-17 14:16:21 +02:00
  • 9e7a09f8a2 feat: F027 screen-level decision design — DecisionContextPanel + Properties + Results Besu Benjamin Sutter 2026-05-17 13:56:12 +02:00
  • 4429a7890a feat: F026 final assembly — ActivityTimeline, expanded demo event log Benjamin Sutter 2026-05-17 13:50:33 +02:00
  • 2da62a4861 feat: F025 button & action logic audit — global toast, confirm dialog, wired mutations Benjamin Sutter 2026-05-17 13:42:30 +02:00
  • 30e840489d feat: F024 global AI assistant — contextual decision intelligence drawer Benjamin Sutter 2026-05-17 13:27:33 +02:00
  • 71f4b1eeb6 feat: F019 AI monitoring layer — output transparency & governance workspace Benjamin Sutter 2026-05-17 13:11:35 +02:00
  • 5d3323617c feat: F018 human review queue — 2-panel governance workspace Benjamin Sutter 2026-05-17 13:03:34 +02:00
  • 1d0cb8b154 feat: F017 data quality system — trust layer across all decision surfaces Benjamin Sutter 2026-05-17 12:51:35 +02:00
  • e0fe238c26 fix: correct typo Gesuch → Gesucht in NeedAlignmentPanel Benjamin Sutter 2026-05-17 01:01:38 +02:00