Lou·Ka — tous les logements à louer du Québec, un seul endroit.
- 264commits
- 1branches
- 0releases
- 180.7 MBon disk
- maindefault branch
- 6 days agolast push
-
Tue, Aug 18, 2026 7
-
Recherche synchronisée liste ↔ carte (une seule vérité partagée)
…
· /api/search : une réponse = page de liste + tous les points carte, même tri — compteur liste = marqueurs par construction ; bbox, polygone dessiné, tris (prix/récent/affaires), include=liste, annonces sans position comptées honnêtement. · MapSearch.tsx : état unique filtres+zone+tri+page, miroirs survol/clic < 100 ms dans les deux sens, page ajustée au clic marqueur + pulsation, « Rechercher quand je déplace la carte », « Rechercher dans cette zone », recadrage animé respectant l intention (byUser), « Recadrer sur les résultats », zone dessinée en puce retirable + URL, carrousel mobile synchronisé aux marqueurs, états vides propres, URL complète partageable. · Géolocalisation d accueil : arrivée sur le site → demande de position → vue carte centrée sur l utilisateur (une fois par session, lien partagé respecté, refus silencieux). · Marqueurs « déjà vu » atténués (localStorage), fourchette de prix des clusters au survol, spiderfy discret des unités d un même immeuble. · Tests : scripts/test-sync.mjs (25 vérifications E2E Playwright, critères 1-9), tests/test_search.py (9 tests API). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Garde-fou overflow-x: clip (débordement transitoire 360 px au chargement)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Qualité des données + solidité mobile + framework de juste valeur (fair value)
…
Mission 1 — enrichissement des connecteurs et qualité : - quality.py : score de complétude 0-100 + seuil de publication (quarantaine des annonces sans prix plausible / localisation / contenu exploitable) - imgcheck.py : audit des images (liens morts 404/410, minuscules, placeholders multi-adresses, doublons) -> galeries nettoyées images_ok, cache image_checks, politesse 3 requêtes/hôte, écriture hors transaction réseau - 26 connecteurs enrichis (galeries complètes, descriptions, prix, adresses) : kangalou, royal_lepage, medway, remax_quebec, groupe_maurice, mellem, sutton, lespac, heafey, kijiji, fb_marketplace, zumper, equinoxe_batimo, logis_experts, quartier_sila, msi, summum, quartier_plus, urban_services, cosoltec, garic, lakle, matinale, huma, jutras, groupe_theoret, ferrovia - normalize : clean_city/clean_sector (rues et entités HTML retirées des menus), kijiji : adresses françaises « 89, rue X » correctement découpées - geocode : virgule après le n° civique corrigée (lot AQ), base en WAL - dedup : une annonce en quarantaine ne masque jamais un doublon publié Mission 2 — mobile : - /api/img : miniatures WebP servies à la taille de l écran (cache disque) - SmartImg : miniature -> original -> visuel de secours Lou-Ka (jamais d icône cassée) - lightbox tactile : balayage scroll-snap + pincement + double-tape - bannière témoins : ne recouvre plus le bouton Filtres (--consent-h) - cibles tactiles >= 44 px (pointer: coarse) ; KA Agent plein écran à l ouverture - stats : complétude moyenne, quarantaine par source Mission 3 — juste valeur locative (fairvalue.py, fv-logement-1.0) : - 3 niveaux : segments médians (repli en échelle) + coefficients de caractéristiques appris et centrés + comparables kNN géographiques (médiane pondérée) ; couloir de sécurité, fourchette, indice de confiance - prudence : pas de verdict si confiance faible, prix « à partir de », prix non mensuel, écart hors plausible ; chambres/coloc = segment dédié - pastilles sous/dans/au-dessus du marché (cartes + fiche), bloc Analyse de prix avec histogramme, filtre « Sous le marché » + tri, page /juste-valeur - API : champs fv_* + deal/sort, /api/fairvalue/{uid} ; stats + PDF ; historisation fv_segments ; tests synthétiques ; docs/FAIRVALUE*.md Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
Vague 3 : connecteurs Zumper (API directe), Atimco (Livya), Simplex (Supabase)
…
- zumper : API JSON interne en DIRECT (bundle CSRF -> pages/listables par bbox -> fiches /buildings avec cache BD cle modified_on), 8 bbox QC, filtre state=QC ; 4 345 annonces au premier sync (2 391 absorbees par la dedup = +1 954 nettes). PadMapper = meme API (ids 100/100 identiques) : couvert. - _livya : base commune des gestionnaires servis par Livya (ex-RealVuu), patron generalise du connecteur thrace (flux RSC des pages plans). - atimco : ~18 projets Monteregie (Longueuil, St-Constant, St-Hyacinthe, Chambly, Chateauguay, St-Jean, Sorel, Cowansville) — 299 unites disponibles, prix/GPS/chambres/sdb complets, 0 doublon. - simplex : catalogue Supabase public (RPC get_public_rental_listings_page), Trois-Rivieres/Shawinigan — 3 annonces actives (28 publiees en rotation). - sources.json : +6 entrees (zumper, atimco, simplex actifs ; padmapper couvert via zumper ; apartments.com non connectable — 403 CoStar ; cloria non connectable — inventaire Livya complet mais 0 prix publie). - docs/connecteurs regeneres (217 fiches). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
docs: documentation standardisée des 214 connecteurs (générateur + fiches)
…
scripts/gen_connector_docs.py : générateur 100 % programmatique et rejouable qui croise data/sources.json, l introspection statique (ast) du code des connecteurs et la BD live (volumétrie, complétude SQL par champ, sync_log). Écrit docs/connecteurs/INDEX.md + une fiche par connecteur (sections fixes : description, accès, champs -> schéma, fréquence & budget, volumétrie, erreurs, licence, historique). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Vague 2 : colonnes bedrooms/bathrooms, perf fb_marketplace/logisquebec, connecteurs Kangalou + Rentals.ca, visites virtuelles
…
- Schéma : colonnes bedrooms/bathrooms REAL (additives) dérivées dans finalize() — details explicites > type d'unité (n½ -> n-2, convention QC) > extraction texte ; backfill one-shot : 96,7 % bedrooms / 51 % bathrooms sur le parc actif. - fb_marketplace : recherche et détails Scrapfly EN PARALLÈLE (6 fils, mêmes requêtes, aucun volume perdu), TTL détail 10 -> 30 j, annonces louées filtrées avant enrichissement : 43-47 min -> 7,3 min/cycle. - logisquebec : budget détail 1200 -> 400 (dimensionné TTL 7 j / ~10 passes/j), fiches jamais vues servies en premier, délai 0,7 -> 0,5 s : 19 min -> 7,6 min/cycle, parc complet (6 393 fiches). - Kangalou (nouveau) : découverte en 1 requête via les pins de la carte (/fr/recherche/ajax/search-map/, loués/commerciaux exclus), fiches SSR (adresse, chambres/SDB, GPS, galerie, dispo, superficie) : 7 916 annonces. - Rentals.ca (nouveau) : même GraphQL que Louer.ca mais inventaire ~+15 %, rejoué via Scrapfly ASP sans rendu JS (Cloudflare), détails PAR LOTS de 40 via nodes(ids), villes/volumes plafonnés : 3 452 annonces (les recoupements Louer.ca sont résorbés par la dédup, déjà dans PORTALS). - Visites virtuelles : details.virtual_tour — tours{} Matterport/YouTube du réseau Rentals.ca (louer_ca clé cache v2 + rentals_ca) + détection générique Matterport/iGUIDE/Klapty dans les fiches logisquebec, duproprio, kangalou. 1 107 annonces actives en ont déjà une. - TtlDetailCache : peek()/put() pour la planification de lots parallèles. - sources.json : +kangalou, +rentals_ca (275 sources, 212 connecteurs). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
Connecteurs : rivero/trudel suspendus (RealVuu mort), groupe_dallaire via proxy Scrapfly, disjoncteur ingest, capreit/logisquebec/royal_lepage enrichis
…
- rivero + trudel : app.realvuu.com hors-ligne depuis 2026-08-10 (DNS NXDOMAIN) -> flag disabled=True (exclus du registre auto), statut sources.json mis a jour, 244 annonces zombies archivees (active=0, aucune suppression) - ingest : disjoncteur leger — une source en echec aux 5 derniers passages est sautee (log sync_log "disjoncteur: ..."), retentee 1 passage sur 5 - groupe_dallaire : le pare-feu bloque l IP du serveur (timeout TCP sur tout le domaine) -> timeout direct 8 s puis repli proxy Scrapfly (simple, puis escalade ASP residentiel apres 422 WAF) pour admin-ajax et fiches ; teste : 255/256 unites retrouvees en ~5 min - capreit : area_sqft (colonne pi2 de la fiche) et availability_date (earliest_date du flux) mappes directement — 117/117 vs 107/117 avant - logisquebec : details canoniques postal_code / contact.phone / rooms (JSON-LD) ; superficie : verifie, aucune source structuree sur la fiche - royal_lepage : enrichissement fiche detail (description "Remarques", superficie habitable, agence) avec cache detail2 + cap 100/cycle Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Mon, Aug 17, 2026 9
-
Câblage du widget KA Agent (bulle de chat IA Groupe KA)
…
Balises window.KA_AGENT={site:"lou-ka"} + /ka-agent.js (defer) dans frontend/index.html ; le gabarit SSR de louka/seo.py reprend le shell du build Vite, les fiches logement héritent donc du widget sans doublon. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
Footer/contact : Job-Ka rejoint l écosystème (ecosystem.json 13 sites)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Ajoute fpdf2 aux dépendances (moteur PDF des rapports statistiques)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Page /stats refaite en tableau de bord analytique + rapport PDF Groupe-KA
…
- louka/statsdash.py : GET /api/stats/dashboard (contrat ka-stats SPEC.md) — KPI avec deltas vs période précédente, séries actives/nouvelles par jour (reconstruites de first_seen/last_seen), répartitions taille/source, top villes, heatmap, tableaux villes & gestionnaires, records auto-générés ; requêtes SQL agrégées + cache mémoire 5 min par période. - louka/kapdf.py (moteur PDF commun fpdf2) + GET /api/stats/report : rapport estampillé Groupe-KA (couverture Lou·Ka, sommaire, graphiques vectoriels, tableaux zébrés, records, page contact), modes complet/synthèse, nom de fichier normalisé groupe-ka_lou-ka_stats_<periode>_<date>.pdf. - frontend : pages/Stats.tsx réécrite sur le kit ka/stats/kacharts.tsx (KpiCard, PeriodSelector, LineChart N-1, Donut, BarChart, CalendarHeatmap, DataTable, RecordCard, PdfButton, Fraicheur) — responsive 360/768/1440, états vides propres quand la donnée n existe pas. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Ajoute les assets de partage Groupe KA (og.png, favicon.svg, apple-touch-icon) et complète le head SSR
…
- Nouveau favicon SVG et apple-touch-icon servis à la racine via frontend/public - Image Open Graph 1200×630 par défaut (og.png) : meta og:image + dimensions + twitter:card/twitter:image dans index.html - seo.py : og:image par défaut sur toutes les pages SSR, twitter:image, et retrait des meta statiques du gabarit pour éviter les doublons Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Retour au design system commun Groupe KA « éditorial sharp » (accent orange conservé)
…
Lou-Ka abandonne l'identité marine/bleu du 2026-08-15 et revient au socle partagé ka-ui (papier #f5f3ee, encre #141814, Space Grotesk/Inter/JetBrains Mono, bordures encre 1,5 px + ombres décalées), en gardant son accent orange (#ff6a00), son logo « porte entrouverte » et sa baseline. - ka-ui vendoré : frontend/src/ka/ (tokens.css, ecosystem.json, KaFooter, GroupeKaBadge) ; tokens.css importé AVANT styles.css dans main.tsx - styles.css : :root réécrit (accent orange + alias --lime, anciens jetons marine/bleu remappés sur les jetons communs), géométrie sharp 10/6 px, états sélectionnés encre+accent, couche d'harmonisation finale ; le thème Ka Maps passe à l'accent orange sur le chrome de la carte - Header : badge « Un service Groupe KA » (desktop + menu mobile ≥44 px) - Footer : KaFooter commun (siteId lou-ka, pages légales locales) précédé d'une rangée de navigation locale + « Gérer mes témoins » - Nouvelle page /contact (courriels + rôles d'ecosystem.json, avertissement agrégateur, liste des sites, lien hub) ; route ajoutée au fallback SPA - SEO : title « Lou-Ka — Un service Groupe KA » (index.html) ; titre SSR de l'accueil harmonisé + lien Groupe KA dans le corps SEO (seo.py) - « Créer mon compte » pointe vers https://www.groupe-ka.com/connexion - Polices Space Grotesk + JetBrains Mono ajoutées (Google Fonts) - ka-maps redéployé sur le nœud (~/apps/ka-maps) pour le build Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
État du nœud — captures README régénérées en prod + Logo.tsx ; gitignore data/uploads/
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Nouvelles sources + déduplication inter-sources
…
8 connecteurs (208 → 212), testés en live : - logisquebec — portail (~9 800 fiches) : sitemaps + JSON-LD, expiration HTTP 410 - duproprio — location par particuliers (~4 200, 0 % chevauchement) : sitemaps gz + JSON-LD, retrait = 302 - louer_ca — réseau Rentals.ca (~1 700) : API GraphQL interne (JWT), 1 annonce par plan d'étage - roomies — chambres/colocation : JSON-LD Room - groupe_maurice — 37 résidences pour aînés (RPA) : API REST + grilles de prix - bons_locataires — agence Montréal : carte MapListPro + fiches WordPress - omhm — logements abordables ENHARMONIE - fb_marketplace — Scrapfly ASP, pagination par tranches de prix (scroll bloqué hors login) Déduplication inter-sources (louka/dedup.py) : - colonnes dup_of / dup_sources (migration db.py), recalcul idempotent dans ingest.watch() après géocodage - blocage par clé d'adresse (civique + rue normalisée FR/EN + ville), confirmation type + prix ±4 % - contrainte « ≤1 annonce par source par groupe » (évite de fusionner des unités distinctes d'un immeuble) - canonique = source la plus autoritaire (gestionnaire direct > portail > petites annonces) - web.py n'affiche que les annonces canoniques (dup_of IS NULL) ; dup_sources exposé pour le badge « aussi publiée sur » - résultat : 147 groupes, 154 doublons masqués sur 18 536 annonces Utilitaire _detailutil.TtlDetailCache : cache de pages détail avec TTL + budget par sync. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Sat, Aug 15, 2026 3
-
Filtres : bulle de recherche « Ville, quartier ou code postal » compacte (42 px, centrée, max 440 px — pleine largeur conservée dans la feuille mobile, 16 px anti-zoom iOS) ; README — captures d'écran refaites sur la prod avec la nouvelle identité visuelle (9 écrans web + mobile)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Thu, Aug 13, 2026 15
-
README — refonte ultra détaillée : badges à jour (22 900+ annonces, 205 connecteurs, 820 villes), galerie de screenshots web + iOS (docs/screenshots/, script Playwright scripts/screenshots.mjs), sections Lou-Ka Maps / SEO-SSR / SSO KA / quartier / PDF / iOS, CLI et API complètes
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
watch : géocodage en lot à chaque cycle (au lieu du 1-par-1 limité à 120)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
SEO — SSR léger FastAPI (louka/seo.py) : HTML complet dès la première requête ; pages programmatiques /villes et /ville/{ville}[/{type}] ; fiches avec title/description uniques + JSON-LD RealEstateListing ; robots.txt ; sitemaps dynamiques (index + villes + annonces) ; 410 annonces retirées, 404 réels (fin des soft-404) ; GZip
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
geocode : mode EN LOT Adresses Québec (porté d'Immo-Ka) — peuple Lou-Ka Maps
…
run.py geocode = lots de 200 adresses normalisées (geocodeAddresses), 1 entrée par immeuble, cache partagé, validation bbox par ville ; l'ancien mode 1-par-1 (Nominatim) reste sous « geocode1 ». Résultat : 11 033 → 14 206 annonces géolocalisées (77 % des actives). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
docs: ka-maps-lou-ka.md — intégration Lou-Ka Maps
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Lou-Ka Maps — carte propulsée par Ka Maps (framework Groupe Ka, moteur Mapbox 3D)
…
Frontend : MapView réécrit sur @groupe-ka/ka-maps (file:../../ka-maps) — style Mapbox Standard 3D par défaut + bouton 2D, pastilles de prix encre/ blanc, grappes compte + loyer moyen (clamp anti-prix aberrants), « Rechercher dans cette zone », aperçu React (fin du popup HTML injecté), sync liste↔carte (sélection + survol), caméra dans l'URL, badge Lou-Ka Maps · Groupe Ka, jeton public Mapbox (kamaps/config.ts). Recherche debouncée (fin des requêtes à chaque frappe). Backend : /api/listings.geojson accepte bbox + limit et renvoie totalGeocoded/totalMatching ; index idx_listings_geo(lat,lng) ; PRAGMA optimize au cycle d'ingestion (le planificateur choisissait le mauvais index). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Profil enrichi — photo téléversée, bio, ville, coordonnées, réseaux sociaux
…
- louka/profile.py : PUT /api/me/profile (nom affiché, bio 280, ville, téléphone, site web, réseaux instagram/facebook/x/linkedin/tiktok/youtube), POST /api/me/avatar (Pillow : EXIF, recadrage carré centré, 512 px, JPEG, purge des anciennes photos), DELETE /api/me/avatar (retour avatar Google) - /uploads/ monté (data/uploads/), colonnes users (display_name, avatar_url, bio, city, phone, website, socials JSON) - /api/me : nom et avatar « effectifs » (display_name > Google, upload > Google) + tous les champs ; profil public /u/{ka_id} : bio, ville, rôle, site, réseaux (jamais courriel/téléphone) - /profil : éditeur complet (photo avec téléversement, nom affiché, bio avec compteur, ville, téléphone, site, 6 réseaux avec icônes maison) - /u/{ka_id} : bio, chips ville/rôle/site, boutons réseaux sociaux - python-multipart ajouté (formulaires multipart FastAPI) -
Comptes v2 — KA-ID, profil « carte de membre », rôles, favoris, pages gestionnaires
…
- KA-ID : identifiant membre unique « ka- » + 10 chiffres, attribué à la création du compte (index unique, backfill au premier /api/me) - /profil : carte de membre Groupe KA (encre + lime, KA-ID en vedette, avatar, ancienneté, bande décorative), infos du compte, copie du KA-ID - Profil PUBLIC opt-in : /u/{ka_id} (nom, avatar, ancienneté — jamais le courriel ; 404 indistinguable si non public), toggle + lien copiable - Rôles à l'intégration (/bienvenue après le premier login Google) : · locataire — favoris (cœur sur les cartes, page /favoris, toggle optimiste) · gestionnaire — réclame la page de SA source (1/compte, 1 compte/source) et la personnalise (/gestion : accroche, description, contact, logo) ; page publique /g/{source} avec inventaire relié + pagination - louka/accounts.py (rôles, favoris, source_profiles), tables favorites + source_profiles + colonnes users (ka_id, public, role, org_source) - Contexte de compte partagé (account.tsx) : header, cartes et pages reliés -
Comptes utilisateurs — connexion Google (OAuth 2.0 / OpenID Connect)
…
- louka/auth.py : flux authorization-code serveur (login -> Google -> callback), state signé, upsert table users, session HMAC-SHA256 en cookie httpOnly 30 j (stdlib seulement), /api/me, /api/auth/logout, /api/auth/config - db.py : table users (google_sub unique, email, name, picture) - Frontend : bouton « Connexion » (logo Google) dans le header, avatar + menu compte (courriel, se déconnecter) — masqué tant que l'OAuth n'est pas configuré - .env : SESSION_SECRET généré ; GOOGLE_CLIENT_ID/SECRET à coller (redirect URI : https://www.lou-ka.com/api/auth/google/callback)
-
Web — mention Groupe KA + page Conditions d'utilisation + courriels officiels
…
- Footer : « Lou-Ka est une plateforme du Groupe KA » (lien groupe-ka.com), © Groupe KA, contact@groupe-ka.com, lien vers /conditions - Nouvelle page /conditions : opérateur (info@groupe-ka.com), nature du service, exactitude, retrait de contenu (contact@groupe-ka.com), usage acceptable, volet légal (admin@groupe-ka.com) — route + menu mobile - Confidentialité : responsable Loi 25 admin@groupe-ka.com, retraits et questions contact@/info@groupe-ka.com (remplace contact@spboucher.ai)
-
Web — pagination 12 annonces/page + icônes SVG maison (fin des emojis génériques)
…
- Pager.tsx : pagination éditoriale (précédent/suivant, numéros avec ellipses, rappel « X–Y sur N »), sous la grille ET sous la liste de la vue carte - Home.tsx : 12 annonces/page via limit/offset API, page dans l'URL (?page=N), retour page 1 au changement de filtre, défilement doux vers les résultats - Icons.tsx : jeu d'icônes SVG au trait « éditorial sharp » (maison, immeuble, caméra, patte, sofa, éclair, liste, carte, curseurs, alerte, boussole…) - Emojis remplacés partout (cartes, chips, bascule liste/carte, FAB filtres, nav mobile, onglets Stats, fiche, carrousel vide, popups carte, 404)
-
Wed, Aug 12, 2026 1
-
Portails & courtiers en location — 10 connecteurs portés d'Immo-Ka (Kijiji, LesPAC, RE/MAX, Sutton, Royal LePage, Via Capitale, Proprio Direct, Ubee, Barnes, M Immobilier)
…
- base.py : backends Scrapfly (scrapfly/get_scrapfly) + post() portés d'Immo-Ka - _detailutil.py : helper partagé d'enrichissement fiche détail (cache BD, budget par sync) adapté au schéma Listing - Kijiji c37 apparts/condos + c36 chambres/coloc (Apollo __NEXT_DATA__, QC l9001) - LesPAC b457 logements + b458 coloc + b460 aînés (searchResponse, ancre Montréal = province entière triée par distance) - RE/MAX Québec : index Meilisearch public shardé par RTA, slugs -a-louer seulement - Sutton : sitemap inscriptions typeInscription=2 (= locations) - Royal LePage : recherche transactionType=LEASE (formulaire caché), 28 villes d'ancrage - Via Capitale : criteresJson AVendre:false via Firecrawl (Cloudflare) - Proprio Direct : API searchListings filter rentOrSale:rent, volet résidentiel - Ubee : API SearchProperties listingType Renter (askPrice = loyer mensuel) - Barnes : Algolia facette type:rental (property_rent) ; M Immobilier : CODE_STATUT=AL - sources.json : 255 → 265 (10 nouvelles sources « Province »/Montréal) - Écartés après vérification live (pas de location résidentielle) : DuProprio, Profusion, Engel & Völkers, KW Prestige/Distinction/Urbain, Expert PM, Sotheby's Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Tue, Aug 11, 2026 1
-
Filtres avancés — refonte du menu web + facettes par ville
…
- /api/facets accepte ?city= : quartiers restreints à la ville (sélecteur dépendant) - Menu de filtres refait : rangée principale compacte (recherche, ville, quartier, loyer min–max, « Plus de filtres ») + panneau avancé repliable en segments (disponibilité, meublé, animaux, superficie, gestionnaire) - Correction du débordement horizontal (colonnes 1fr → contrôles bornés) - Chips rapides (dispo maintenant, animaux, meublé) + pastilles de filtres actifs retirables ; api.ts : price_min, pets, furnished, available_by, area_min - ios/ ignoré : l'app iOS native vit dans son propre dépôt (lou-ka-ios) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Sun, Aug 9, 2026 4
-
Expansion provinciale complète : registre final (255 sources, 179 actives), README, enrichissement
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Expansion P3 — Estrie (6 connecteurs +24 annonces, 17 non-connectables)
…
terater (12) · alexcellence (4e Houzez, sous-classe Dynamic) · oxford · immeubles_pm (plogg vivant) · majestic (Granby) · lequerre (OBNL). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Expansion P3 — Est & Nord + Chaudière-Appalaches (7 connecteurs +98 annonces, 9 non-connectables)
…
quartier_plus (Thetford, 59) · immeubles_bois (Rimouski, catalogue 23) · louer_saguenay · luxuor · beaulieu_groupe · gestion_jdm · alias_appartements. LM Gestion et Alexandre Pelletier re-vérifiés (sites toujours morts). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Expansion P3 — Mauricie/CdQ/Lanaudière (6 connecteurs +53 annonces, 8 non-connectables)
…
moderno · acceslogis_gb · ferrovia (23, prix non publiés) · habitations_sf · lambert · fournelle. Non-connectables documentés (parcs pleins, vitrines sans unités, renvois Facebook). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-