Skip to content

chore(main): release 0.4.1 - #407

Merged
paruff merged 1 commit into
mainfrom
release-please--branches--main
Sep 2, 2026
Merged

paruff merged 1 commit into
mainfrom
release-please--branches--main

Conversation

@github-actions

@github-actions github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

🤖 I have created a release beep boop

0.4.1 (2026-09-02)

Added

  • add BLS QCEW county-level employment for GACS (GACS-QCEW-1) (#277) (f169ea5)
  • add branch name to footer — identify which code built the image (a593cb7)
  • add county_fips to GrowthArea + county FIPS map (GACS-QCEW-0) (#276) (a567c1c)
  • add Docker workflow Makefile targets; local build_date fallback (61b3b44)
  • add GACS v2 county employment, school quality, updated weights (#265) (972d83f)
  • add GACS v2 rebalance — rent growth 15%, adjusted weights (GACS-SCORE-1) (#279) (ecbf6be)
  • add HUD FMR rent benchmark adapter for GACS (GACS-FMR-1) (#278) (ddf3233)
  • add HUD FMR rent estimates and BLS LAUS county unemployment adapters (#261) (820ecc2)
  • add HUD Income Limits API adapter (c22929a)
  • add pipeline kanban backend + data health dashboard + screening UX (#357) (fdc1e48)
  • analysis: add CapEx reserve schedule with defaults (#381) (467cdf0)
  • analysis: add exit strategy and fix sensitivity rate axis (#380) (98d0eab)
  • analysis: add financing scenario comparison — conventional vs DSCR vs seller financing (#382) (0897277)
  • build: add build_date to version display; fix pre-commit inline styles (ca61638)
  • ci: add GitOps deploy gates, live acceptance tests, rollback + test coverage (#301) (789313c)
  • ci: add opencode GitHub Action, ported from fawkes (232ba56)
  • ci: Phase 3 — post-deployment acceptance pipeline with content-aware tests (b039c9c)
  • ci: phase A — CI guard, Pydantic validators, 22 acceptance tests (#303) (54f4132)
  • ci: phase C — authenticated ZAP scan + flaky test quarantine (#325) (67a2de8)
  • ci: phase C — flaky test detection, ZAP full scan, SLO dashboard (#305) (9e62f4b)
  • ci: Phase D — structured logging, request timing, alerting, API surface validation (#306) (966af39)
  • ci: replace python-semantic-release with release-please (#405) (c9eec56)
  • ci: run 19 BDD acceptance tests against live container after smoke tests (b424a6a)
  • county: wire all 11 TX county foreclosure scrapers into system page (8a2d0d6)
  • data: add Rentometer API adapter for real rent comps (#376) (8849d12)
  • data: comprehensive US city→county lookup (29,727 cities) (9e1e9bc)
  • data: reso web api + tax strategy + saved searches notifications (#360, #373, #374) (#385) (1c244a8)
  • data: unified US lookup replaces hardcoded county FIPS map (7f1ce2d)
  • discovery: auto-trigger HUD/USDA ingestion when data is missing (d022739)
  • discovery: rebuild discovery page and add pipeline screener (VIEW-DISCOVERY-1, VIEW-SCREENER-1) (#283) (1944ccf)
  • discovery: show in-page results instead of redirecting to screener (ba8a301)
  • gitops: phase 1 — deployment manifests with CI-driven image digest updates (d848299)
  • gitops: phase 3 — environments, image signatures, drift detection (aed6e50)
  • gitops: phase 3 — environments, image signatures, drift detection (#308) (a6f6c76)
  • implement Phase A of TOP_01_PLAN — CI/test quality gaps (#323) (e2bbf47)
  • implement Phase B of TOP_01_PLAN — financial math verification (#324) (642321a)
  • ingestion: wire full USDA TXT parser into ingestion service (1b98376)
  • leasing: kanban board for leasing pipeline with drag-and-drop (#292) (d553c9b)
  • leasing: kanban board for leasing pipeline with drag-and-drop (#292) (#293) (262ecde)
  • make: add Docker workflow targets — build, up, down, restart, logs, clean (be9e172)
  • make: add test-live target for live acceptance testing (3ecadb5)
  • math: phase B — financial math verification with 58 edge-case tests (#304) (30fd355)
  • mobile: pwa support — responsive templates, service worker, offline caching (#384) (54260bd)
  • p0: crm kanban board + data source health dashboard (#309) (3da9055)
  • pipeline: add location fields to PipelineProperty model (MODEL-PP-1) (#282) (273ab75)
  • pipeline: kanban CRM board with drag-and-drop stage advancement (#290) (b1aa5eb)
  • portfolio: add market cycle indicators dashboard (#383) (6a45dbd)
  • screening: range sliders for screening criteria; update Kanban spec (#291) (be1458f)
  • sources: sheriff sale scrapers for 5 TX counties + HUD dollar homes (00da486)
  • sources: wire tarrant county source and fix hud fmr token selection (#332) (3446ebe)
  • system: add 'Analyze Growth Areas' button to system page (4413b27)
  • ui: system status page — data inventory + operations, no CLI needed (442f867)
  • ux: add 'This month' filter to pipeline list (PIPE-UX-3) (#253) (cfd323b)
  • ux: add composite score breakdown rows to growth area lists (GA-UX-2) (#258) (e63cfb7)
  • ux: add experimental score disclaimer banner to growth areas (GA-UX-1) (#257) (10ec508)
  • ux: add pipeline review queue view (PIPE-UX-1) (#251) (d9136a4)
  • ux: add pipeline review queue view (PIPE-UX-1) (#252) (6383da9)
  • ux: add supply_constraint_index column with ACS-derived badge (GA-DATA-2) (#256) (b963791)
  • ux: growth areas dashboard + BRRRR timeline (#311) (ee0f6af)
  • ux: growth explorer redesign — no clutter, tier filter, multi-state ready (#315) (2aa23db)
  • ux: mao visualization, equity kpi, growth areas seed (#313) (a8ef165)
  • ux: move KPI cards to top with IDs, add live JS GRM recalc (PIPE-UX-4) (#254) (5b356b5)
  • wire ATTOM to discovery, add county pipeline support, add data confidence (next wave) (#260) (d8188ef)
  • wire HUD FMR into screening, add 10 TX county scrapers (#262) (5f14ecc)

Fixed

  • add ATTOM_API_KEY to settings; suppress FMR ZIP-level log spam (3852b1c)
  • add confidence column to growth area tables (GA-UX-1) (#275) (a552bcf)
  • add structlog to mypy.ini, format settings.py (#310) (3f8ab32)
  • address review findings from #384/#382/#381 (closes #393, #394, #395) (#397) (f89dbe2)
  • audit findings — DRF permissions, password validators, pipeline/portfolio tests, SECURITY.md update (#280) (68932b8)
  • ci: add --check-untyped-defs to mypy and fix test typing (#337) (3ff4daf)
  • ci: add explicit markers to BDD and post-deploy pytest runs (#334) (7982e2a)
  • ci: add source checkout to live-test job for BDD test files (800aae7)
  • ci: build single platform (amd64) to halve Docker build time (77f7927)
  • ci: exclude acceptance tests from unit test run (fc3366d)
  • ci: fix live-test container crash from SQLite database path parsing (954d6db)
  • ci: remove --noinput flag from seed_data command (79373aa)
  • ci: remove duplicate run key from lint job (412942f)
  • ci: replace broken bandit security lint with ruff S rules (#322) (7327569)
  • ci: resolve Trivy HIGH CVEs blocking Tier 2 Governance on main (#377) (5dc66b9)
  • ci: run apt-get update before installing libcairo2-dev (#406) (9229e39)
  • ci: show container logs on live-test failure (1d6bf79)
  • ci: simplify workflow name and needs format for GitHub Actions parser (ed1ffa4)
  • ci: speed up Docker build and fix live-test container startup (b4aeab6)
  • city name matching for discovery; remove old Foreclosures link; UX picker (c274f1b)
  • clarify HUD FMR 403 error — key needs separate FMR dataset registration (70f4216)
  • config: add FRED_API_KEY to .env.example and settings.py (GA-FIX-1) (#259) (a4882de)
  • db: enable SQLite WAL mode to prevent background thread lock errors (a2337f2)
  • deps: bump opentelemetry-sdk and exporter-otlp alongside api to 1.44.0 (e8009ff)
  • deps: pin structlog directly and guard middleware import (#333) (c27ea5c)
  • devcontainer: add Python feature and use python -m pip (23be4b0)
  • devcontainer: sync PYTHON_VERSION in docker-compose.yml with Dockerfile (1ce4ed5)
  • devcontainer: use latest Python feature image (3.14 not published yet) (d984efa)
  • discovery: auto-scrape VRM for state when data is missing (159dde2)
  • discovery: run HUD/USDA ingestion synchronously on first request (9444e0a)
  • discovery: run VRM scrape in background thread; replace View Foreclosures (6887535)
  • discovery: wire landlord tier filter and convert discovery flow to AJAX (825b4c3)
  • exempt health check from DRF rate limiting (e75daab)
  • growth: expand county FIPS map to 87 cities; fix template weights (006da76)
  • growth: expand county_fips_map to 97 entries; backfill all cities (780624c)
  • growth: reduce QCEW timeout to 5s; wrap in try/except (659080a)
  • growth: remove QCEW and FMR HTTP calls from web view (worker timeout) (b48f0ab)
  • growth: try QCEW county-level employment on first explorer run (381850c)
  • growth: wire unified us_lookup into populate_growth_areas QCEW/FMR paths (898fd03)
  • HUD FMR 403 — token likely created before selecting FMR dataset (ba1afe8)
  • improve HUD FMR API error diagnostics on 403 (22b63de)
  • infra: increase gunicorn worker timeout 30→120s (ca87f1a)
  • nav: change Rehab & Lease link from pipeline_list to leasing_list (#250) (f07b436)
  • ops: DB-aware health check + rate limit on paid API fan-out views (#379) (bf2b802)
  • populate net_migration_rate in both ingestion paths (GA-DATA-1) (#274) (dbb8a48)
  • populate rent/school/migration in GACS; scale composite_score to 0-100 (#289) (0099501)
  • remove dead school_score lookup in growth_explorer (GA-BUG-3) (#270) (b623533)
  • remove Jinja2 whitespace-trim syntax from branch/built_date tags (04ad0fa)
  • remove Jinja2 whitespace-trim syntax from Django template (a4caeeb)
  • resolve 5 MEDIUM audit findings (save perf, data_confidence, index, imports) (#288) (af87106)
  • resolve 6 BLOCKER audit findings (supply, pipeline, syntax, templates) (#286) (c145378)
  • resolve 8 HIGH audit findings (indexes, double-screening, aggregation, auth) (#287) (e18a296)
  • resolve CI failures on PR #288 — Makefile test + PDF exclusion (39f9193)
  • ruff format (#255) (8694fb8)
  • score breakdown matches actual GACS v2 weights (GA-BUG-1) (#269) (719c646)
  • screening: address code-review findings on Rentometer fallback chain (#378) (903b567)
  • screening: slider names must match updateLabel fieldName pattern (e7f1971)
  • security: add @login_required to 5 unprotected views (ad49c5b)
  • security: stop logging ZIP code in VRM source fetch (2c42597)
  • set metro_area to blank instead of city_name (GA-DATA-3) (#272) (7f3ed9e)
  • stop FMR warning spam per state (3f3a38f)
  • tests: update container startup tests for preiweb service rename (#351) (2ca1bc0)
  • ux: redesign discovery page — remove redundant empty states, cleaner layout (992c6d8)
  • ux: redesign growth explorer — less clutter, tier filter, multi-state ready (9b120ea)
  • workflow: resolve docker-publish.yml syntax errors from PR #301 (ff5f4d7)

Docs

  • add branch discipline to GitOps principles (AGENTS.md) (99c5903)
  • add GitOps principles, context files, and CONVENTIONS link to AGENTS.md (f2cb6ed)
  • add investor workflow guides for growth, discovery, screening, underwriting (#336) (ff42608)
  • add LIMIT-18 for FRED state-level employment coarseness (#271) (1e3ec29)
  • add product-level discovery brief and feature spec writing guide (8260512)
  • audit docs, organize directory structure, add AGENTS.md guidance (6b13ea0)
  • comprehensive plan to reach top 0.1% quality (31f0a06)
  • document never-swallow-exceptions principle in Never Do list (#345) (ef0fc04)
  • document orphaned rent_growth_rate field (GA-DATA-2) (#273) (acc5ef0)
  • fix stale Django 5.2→6.0, copyright 2024→2026, devcontainer Python 3.14→3.13 (3443f0e)
  • gitops: phase 2 — uFawkesObs integration guide, webhook, DORA metrics (#307) (575f7d8)
  • honest product maturity audit — replace outdated strategy with real statuses (1ae6763)
  • local dev environment setup + prioritized P0-P2 plan (ce1c8b8)
  • move LIMIT-04 to resolved (composite_score is now a persisted DecimalField) (#268) (51120b3)
  • revise discovery brief to cover full investor lifecycle (fd346c1)
  • sync API_SURFACE, ARCHITECTURE, and add app review findings (a32bef5)

Changed

  • ci: parallel test jobs, post-deploy smoke, local/devcontainer deploy targets (#285) (7888e1f)
  • finance: split finance utils into focused modules (#331) (d70e70f)

Chores

  • audit medium batch — pin deps, session security, CORS docs, severity labels, new validator/scoring tests (#281) (a425d15)
  • audit quick wins — ruff target, search, CSV export, README (1ccbe32)
  • ci: rename live acceptance tests to smoke tests; add test pyramid plan (256f3b9)
  • deps: bump actions/cache from 4 to 6 (#392) (a3dd162)
  • deps: bump actions/download-artifact from 5 to 8 (ed56885)
  • deps: bump actions/setup-python from 6 to 7 (#316) (eede239)
  • deps: bump actions/upload-artifact from 5 to 7 (3ca8080)
  • deps: bump aiohttp from 3.14.1 to 3.14.3 (#343) (ade42b5)
  • deps: bump aiohttp in the uv group across 1 directory (#338) (e245397)
  • deps: bump anomalyco/opencode/github from 1.18.18 to 1.18.21 (#391) (ac34fea)
  • deps: bump anomalyco/opencode/github from 1.18.21 to 1.18.25 (#404) (56294a9)
  • deps: bump commitizen from 4.16.4 to 4.16.5 (#318) (6f30e49)
  • deps: bump commitizen from 4.16.5 to 4.17.0 (#342) (c8cb537)
  • deps: bump coverage from 7.15.0 to 7.15.1 (022317b)
  • deps: bump coverage from 7.15.1 to 7.15.2 (#330) (7cdfbff)
  • deps: bump coverage from 7.15.2 to 7.15.4 (#349) (d087dc6)
  • deps: bump coverage from 7.15.4 to 7.16.0 (#400) (481698a)
  • deps: bump cryptography from 49.0.0 to 50.0.0 (#341) (d43f77a)
  • deps: bump django-structlog from 9.0.0 to 10.1.0 (#403) (2dea6c5)
  • deps: bump django-stubs from 6.0.6 to 6.0.7 (4b2fc39)
  • deps: bump djangorestframework from 3.17.1 to 3.18.0 (#386) (1f87ae8)
  • deps: bump djlint from 1.40.3 to 1.42.1 (#317) (1282528)
  • deps: bump fastapi from 0.139.0 to 0.139.2 (#321) (e1d15c1)
  • deps: bump matplotlib from 3.11.0 to 3.11.1 (#320) (2ceaf41)
  • deps: bump mypy from 2.2.0 to 2.3.0 (#326) (faac958)
  • deps: bump mypy from 2.3.0 to 2.3.1 (#401) (afaaaa8)
  • deps: bump opentelemetry-api from 1.32.1 to 1.44.0 (6267be1)
  • deps: bump playwright from 1.61.0 to 1.62.0 (#340) (2219f49)
  • deps: bump pymdown-extensions from 11.0.1 to 11.0.2 (#390) (d736ad1)
  • deps: bump pypdf in the uv group across 1 directory (#398) (c104a16)
  • deps: bump pytest-rerunfailures from 16.1 to 16.5 (#348) (1b5bd30)
  • deps: bump python-json-logger from 3.3.0 to 4.1.0 (#329) (fb0255c)
  • deps: bump python-json-logger from 4.1.0 to 4.2.0 (#387) (029b5db)
  • deps: bump reportlab from 5.0.0 to 5.0.1 (#388) (ae8ede1)
  • deps: bump ruff from 0.15.20 to 0.15.21 (79b217b)
  • deps: bump ruff from 0.15.21 to 0.15.22 (#319) (61773b9)
  • deps: bump ruff from 0.15.22 to 0.16.0 (#327) (8a8b347)
  • deps: bump ruff from 0.16.0 to 0.16.5 (#399) (82ffd51)
  • deps: bump svglib from 2.0.2 to 2.2.0 (#389) (70404e7)
  • deps: bump types-psycopg2 from 2.9.21.20260518 to 2.9.21.20260712 (04f2503)
  • deps: bump types-psycopg2 from 2.9.21.20260712 to 2.9.21.20260724 (#402) (e73ea96)
  • deps: bump types-reportlab from 4.5.1.20260521 to 4.5.1.20260712 (c8296ae)
  • deps: bump types-reportlab from 4.5.1.20260712 to 4.5.1.20260728 (#328) (9f827eb)
  • ignore .omo/ artifacts, commit Serena config migration (5136735)
  • major refactor - models package, notifications, portfolio dashboard (#267) (679228b)
  • pin all dependencies for deterministic, reproducible builds (#284) (b70c637)
  • pre-release cleanup — remove orphaned files, consolidate docs, fix Trivy CVEs (#358) (5798467)
  • rename compose service web to preiweb for observability clarity (#344) (7253ef4)

This PR was generated with Release Please. See documentation.

@paruff
paruff merged commit 8a0c129 into main Sep 2, 2026
17 checks passed
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Created releases:

🌻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

PWA service worker never registers — unclosed if block breaks inline script (base.html)

1 participant