Download Latest Version v0.4.0 -- Security fix + behavioral change_ manager hierarchy visibility source code.zip (1.3 MB)
Email in envelope

Get an email when there's a new version of openestate

Home / v0.2.2
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-08-06 3.4 kB
v0.2.2 -- project media_ layout plans, brochures, construction photos source code.tar.gz 2026-08-06 877.0 kB
v0.2.2 -- project media_ layout plans, brochures, construction photos source code.zip 2026-08-06 1.2 MB
Totals: 3 Items   2.1 MB 0

A note on this release's CI. This tag was cut during a major GitHub Actions platform outage, and its own CI run (#104) never completed — jobs failed to be acquired by any runner, with a workflow-level internal server error. The run was never re-attempted. The code in this tag is nevertheless covered by a fully green run: 498de53 (v0.2.3) is a direct descendant of this commit, and its run passed all six jobs with real log evidence — Playwright 12/12, docker-compose healthcheck booting the tagged build, and a native upgrade from a populated previous-release database. This release is published after the fact so the releases page reflects what actually shipped, rather than skipping a version silently.

Added

  • Layout plan / brochure / photo uploads. UploadService has supported these categories since Phase 2 but no route ever called it — this release wires it up. Staff get a Media panel on a project's detail page (upload, list, download, delete); customers see the same files under a new "Layout plans & brochures" section on the portal Property page, with real download links.
  • Construction-progress photos actually render now. The upload path for ConstructionUpdateMedia has existed since v0.2.1's own predecessor, but there was never a serving route on either side — the portal only ever showed a photo count. Staff and portal both gained a download route, and the portal Property page now renders the real images inline instead of a bare "N photo(s)" line.
  • Per-project storage cap. Layout plans, brochures, photos, and construction-progress photos all roll up disk usage under one project — unbounded uploads on a self-hosted box eventually fill the disk, which surfaces as Postgres refusing writes and looks like total system failure rather than a storage problem. A configurable file-count cap (default 50) and total-size cap (default 500MB) per project are enforced before any file touches disk, with a clear error naming the limit. Configurable via Company Config (projectMediaMaxFiles / projectMediaMaxBytes).
  • IDOR coverage for both new download routes: a customer with a booking in one project cannot fetch another project's media by guessing an id — proven via the same raw-connection RLS discipline as every other portal IDOR test in this codebase, since both project_media / construction_update_media's portal RLS predicates are multi-hop and therefore not mirrored at the JS layer.
  • Two new e2e Playwright scenarios: staff uploads a layout plan through the real UI and the customer downloads it in the portal; and a staff-published construction-progress photo renders as a real decoded image in the portal (not just a 200 response).

Still missing (at the time of this tag)

  • Custom field values. Admins could define custom fields (Applicant, Unit, etc.) via Admin → Custom Fields, but no form anywhere in either app captured or displayed a value for one.

This has since been delivered in v0.2.3, which also closed a data-integrity hole and a portal data-exposure issue in the same area. If you are installing fresh, go straight to v0.2.3.

Upgrading

Native installs: deploy/native/upgrade-native.sh. Superseded by v0.2.3 — upgrade to that instead unless you have a specific reason to pin this version.

Source: README.md, updated 2026-08-06