chore: release main - #1
Merged
Merged
Conversation
github-actions
Bot
force-pushed
the
release-please--branches--main
branch
19 times, most recently
from
July 17, 2026 13:58
803cfbb to
44aab09
Compare
andrewkomkov
added a commit
that referenced
this pull request
Jul 17, 2026
Surface geo.isochrones/isochrone_cells in the product (feature 002): - scoring.ts: an acc CTE (residents reachable in a 10-min walk from the cell's res-9 centre child, via isochrone_cells joined to population), a has_acc marker (unambiguous vs a LEFT-JOIN zero), acc_p95 over measured cells, and a three-term gap where an absent catchment drops out. New catchmentSql/ catchmentStatsSql. rankSql excludes unmeasured cells. - layers.ts/score.ts: a catchment layer id, an accP95 scalar shipped to the browser, a notMeasured count, and accessibility as a third re-weightable factor whose absent value is omitted, never zeroed. - chat.ts: a showCatchment tool that re-derives pick #1 and emits its real Valhalla contour; the walk ban narrowed to what showCatchment measured. - chat.tsx: the Walk catchment wave, the contour layer, the CATCHMENT MEASURED chip, the not-measured styling and counter, and the accessibility slider. The not-measured opacity is fixed at neutral so it cannot flat-fill when accessibility is weighted up (FR-009a). - verify-score.mjs: three factors across three cities plus a reaches-self invariant check; 0 mismatches, 0 misses. Top-3 for Berlin bakeries reproduces the research baseline (Lichtenrade, Biesdorf, Bohnsdorf); verified end to end in the browser.
andrewkomkov
added a commit
that referenced
this pull request
Jul 17, 2026
The map is the hero; a compact stat-tile strip under the question turns the rail into a dashboard without a wall of numbers (at most four tiles): - Competitors (competitor layer count), Top score (#1 pick), Median opportunity (median of the choropleth cells), Momentum (the trend direction + change). - Every tile is computed from data the client already holds — no new tool or query — and each is absent until its layer lands, so the strip fills in as the assembly runs (absent, never a 0). - Top score and Median opportunity are scored under the CURRENT slider weights, exactly as the Top-picks table and the choropleth are, so a slider move never leaves two different numbers for the same pick on screen. Values wear text ink, not the accent (the palette reserves it for chrome). Verified in the browser: the strip reads Competitors 1,460 · Top score 100 · Median 5 · Momentum flat -5.2%, and Median tracks the surface (5 -> 35 when Accessibility is weighted to 100).
github-actions
Bot
force-pushed
the
release-please--branches--main
branch
from
July 17, 2026 18:33
44aab09 to
1e72120
Compare
andrewkomkov
added a commit
that referenced
this pull request
Jul 19, 2026
Port the WhereHouse.dc.html redesign onto the live wiring: a top bar with a run scrubber, a left AGENT RUNS stack derived from real chat.agent() message and tool-call history (kind rebuild/steer/talk, per-step engine tags, live steering), a centre KPI strip (competitors, top/median opportunity, momentum) framing the map in a bordered well, and the picks/saved/re-weight/layers moved into a right column. Caption, status and legend become map overlays. All scoring, painting, fetch-by-handle and honesty logic is unchanged: absent != 0 on every tile, editorial affinity tagged, measured/estimated split, the not-measured counter, and C.win spent only on the #1 pick. Adds per-run map snapshots so the scrubber can rewind the map to a past run. Browser-verified end to end against live ClickHouse + Trigger.dev: the run stack fills wave by wave, the map assembles, momentum and top picks land, zero console errors.
andrewkomkov
added a commit
that referenced
this pull request
Jul 19, 2026
Feature 006 (specs/006-agent-controls-ui). Anything the user can do by hand is
now an agent tool, over a new one-shot data-ui stream channel (unique id per
command, an appliedUi set drains each exactly once through the same setters the
buttons use, so agent- and hand-driven paths never diverge; the model only sees
{ok, action}):
- setLayer, reweight (the 3 real factors, never rent), focusPick,
highlightExtreme (worst/best — client picks a real scored cell, no query, no
invention), reviewRun (the scrubber), exportReport.
- SYSTEM_PROMPT "act, don't talk": a request to change the screen is a tool call,
a new trade/city is a full rebuild — never a text-only turn. A UI-only turn
classifies as steer ("UI updated"), never talk.
- exportReport builds a one-page A4 PDF client-side (jspdf, dynamic import;
map snapshot via getCanvas().toDataURL with preserveDrawingBuffer): question,
map, top picks, market-at-a-glance, and the measured/estimated/editorial
provenance block + attributions. Honesty carries verbatim (absent != 0,
editorial tag, #FAFF69 only on #1, agent's own caption).
Browser-verified live on https://app.slim-shaggy.com: "hide the competitors"
toggles the layer (steer, not talk), "show me the worst place" marks a real
cell, "export a pdf report" downloads wherehouse-berlin-bakery.pdf (11 MB, map
snapshot embedded, provenance intact). Each shows as a real run-stack step.
github-actions
Bot
force-pushed
the
release-please--branches--main
branch
2 times, most recently
from
July 19, 2026 21:31
5e54039 to
e6f00db
Compare
andrewkomkov
added a commit
that referenced
this pull request
Jul 21, 2026
…cks' reach Clicking a pick pin (#1/#2/#3) now toggles THAT pick's 10-minute walk catchment — the reachable street network — in its own colour (teal / amber / violet), so several can be overlaid at once and their walkability compared side by side. Click again to hide. Client-side and instant: the browser reads geo.isochrone_edges directly as the readonly `site` user (new GRANT in 013_isochrone_edges_grant.sql — geo.* isn't covered by the web.* wildcard) and draws each web as its own map source/layer, keyed by rank and cleared when a new answer's pins replace the old. Separate ids from the agent's showCatchment `catchment` layer so the two never collide. SQL mirrors scoring.catchmentEdgesSql but is inlined — scoring.ts pulls in @clickhouse/client and must not reach the browser.
github-actions
Bot
force-pushed
the
release-please--branches--main
branch
2 times, most recently
from
July 21, 2026 11:19
e6f00db to
b8d11f6
Compare
github-actions
Bot
force-pushed
the
release-please--branches--main
branch
2 times, most recently
from
July 21, 2026 11:32
4b6d8b0 to
aa50eca
Compare
github-actions
Bot
force-pushed
the
release-please--branches--main
branch
from
July 21, 2026 12:18
aa50eca to
c0ceb8a
Compare
Author
|
🤖 Created releases: 🌻 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 I have created a release beep boop
0.2.0
0.2.0 (2026-07-21)
Features
Bug Fixes
Documentation
Refactoring
Build & Infrastructure
This PR was generated with Release Please. See documentation.