Changelog -- bim-cli

v0.4.5 -- 2026-06-28

bim sketchup -- new driver (SketchUp Make 2017 + Pro)

bim sketchup ships as a pinned driver (sketchup-cli v0.1.0). It uses the same TCP bridge pattern as bim revit: a Ruby extension (bim_bridge.rb) listens on port 15700 inside the SketchUp process; the Go CLI speaks JSON-RPC to it over loopback.

Targets SketchUp Make 2017 by default (free, no account needed). Pro/2026 is supported with --year or --url override but requires a Trimble subscription.

Verbs: launch, close, exec, open, export, status, doctor, install, setup.

Unreleased

oauthr ships as a pinned driver (was never actually installable)

bim oauthr and the oauthr-backed cloud drivers (e.g. bim linear) could never find the oauthr binary on a normal install: the only install path was a runtime download in internal/oauthr/firstrun.go that was broken three ways -- empty sha256ByPlatform pins (hard-fail), PinnedVersion v0.1.0 (actual 0.2.0), and a downloadBase (oauthr.com/releases) that 404s -- and it installed to a different directory than the bim oauthr passthrough searched.

oauthr now ships like every other driver: pinned in driver-pins.json (bim-oauthr -> HelloHowAreYouHaveANiceDay/oauthr), fetched from the oauthr repo's GitHub Release at bim-cli build time, and vendored into drivers/ as bim-oauthr.exe.

v0.4.4 -- 2026-06-26

bim-code v0.2.1 -- protocol 2.0 (driver was non-functional)

bim-code was a pure-CLI driver, but the dispatcher interrogates drivers via JSON-RPC over stdin (protocol_version "2.0"). So bim code <verb> printed usage and bim doctor reported FAIL code. Re-pinned to code-cli v0.2.1, which rewrites the driver to rpc.Serve like every other driver. Verified through the dispatcher: bim code doctor -> ok:true; check/rules/jurisdictions return data.

v0.4.3 -- 2026-06-26

bim-linear v0.1.0 -- fixes (driver was non-functional in v0.4.2)

End-to-end testing against the live oauthr + Linear API surfaced two bugs that made every bim linear call fail. Both fixed and verified (list, get, exec return real data):

Tooling

v0.4.2 -- 2026-06-25

bim-linear v0.1.0 (new driver)

Linear project management integration using oauthr for credential brokering (no tokens stored locally -- DESIGN.md SS15).

v0.4.1 -- 2026-06-23

bim-code v0.2.0

Expanded NYC Building Code 2022 coverage -- 5 new room-level rules beyond the original light/air pair.

v0.4.0 -- 2026-06-21

bim-code v0.1.0 (new driver)

Building-code compliance checker. Stdin-first, no Revit dependency.

v0.3.7 -- 2026-06-19

bim-revit v0.1.12

bim-google v0.3.4

v0.3.6 -- 2026-06-18

Dispatcher

bim-google v0.3.3

bim-pdf v0.3.3

bim-revit v0.1.11

Telemetry

v0.3.0 — 2026-06-10

bim-energy v0.1.1 (new driver)

Energy modeling and Passive House compliance checking via NREL OpenStudio CLI.

bim feedback --upload

Desire-path feedback can now be uploaded directly from the CLI: bim feedback --upload scrubs all argument values and POSTs to the telemetry worker. Use --dry-run to preview the payload first.

Other

v0.2.9 — 2026-06-09

Opt-in telemetry (off by default)

Anonymous verb-usage telemetry, disabled unless BIM_TELEMETRY=1 is set.

When enabled, one ping is sent per top-level command containing: verb shape, version, OS family, success flag, error kind, and latency bucket. No IP addresses, identifiers, arguments, file paths, or sub-day timestamps are ever collected. DO_NOT_TRACK=true always overrides. See bimcli.com/privacy for the full schema.

v0.2.7 — 2026-06-01

bim-site v0.6.6

v0.2.6 — 2026-05-31

bim-google v0.1.1

bim-site v0.6.5


v0.2.5 — 2026-05-29

Dispatcher: agent-friendly output (breaking)

All non-streaming verb responses are now flat JSON objects. The {"jsonrpc":"2.0","id":1,"result":{…}} wrapper is stripped by the dispatcher before printing — agents receive the inner result directly.

Error responses now use the canonical flat envelope ({"ok":false,"error":{"kind":"…","message":"…","hint":"…"}}) instead of the raw JSON-RPC error object. Streaming verbs (output: ndjson / binary) pass through untouched.

Dispatcher: structured input types

New arg types available in driver manifests:

bim-blender v0.2.0

bim-revit v0.1.8

bim-rhino v0.1.2


v0.2.4 — 2026-05-26

v0.2.3-1 — 2026-05-25

v0.2.3 — 2026-05-25

bim-blender v0.1.0 — Blender TCP bridge driver

New driver: bim blender — connects to a running Blender instance via the Python bridge addon (JSON-RPC 2.0 over TCP). Supports launch, instances, exec, convert, kill, doctor.

bim-google v0.1.0 — Google Workspace driver

New driver: bim google — Docs, Sheets, Drive, and OAuth session management via gws.exe.

bim-site v0.6.4

bim-pdfv bug fixes


v0.2.1 — 2026-05-11

bim-pdfv v0.1.0 — native PDF viewer, new session driver

New driver: bim pdfv — a native PDF viewer (Rust + PDFium + egui) that exposes an agent-driven control surface via JSON-RPC 2.0 named pipes. First session-kind driver in bim-cli.

bim pdfv open --file drawings.pdf --layout left    # open viewer, returns pid + pipe name
bim pdfv open --file code.pdf     --layout right   # side-by-side
bim pdfv search --pid <N> --pattern "28-302"       # search + auto-navigate + highlight
bim pdfv navigate --pid <N> --page 96              # go to page (0-indexed)
bim pdfv highlight --pid <N> --page 96 --bboxes "[[72,425,542,438]]"
bim pdfv fit --pid <N>                             # fit page width to window
bim pdfv render --pid <N> --out frame.png          # snapshot current view to PNG
bim pdfv state --pid <N>                           # current page, scale, highlights
bim pdfv instances                                  # list all running viewers with PIDs

Key properties:

Runtime dependency: pdfium.dll (7 MB) ships alongside bim-pdfv.exe in the drivers/ directory.

v0.2.0 — 2026-05-08

bim-site v0.6.3 — NYC layer pack, global satellite imagery, rate-limit propagation

7 new NYC verbs (all no-key, all wired into assess): e-designation, stormwater-flood, building-history, brownfield, coastal, special-district, subway. NYC assess now returns 23 layers.

satellite.map — new first-class global imagery verb. Works for any coordinate worldwide with no parcel registry required. Supports Esri Wayback dated imagery (193 snapshots 2014→2026, monthly), live World_Imagery, and optional parcel outline overlay where registry coverage exists.

parcel.map improvements: --satellite flag and --wayback-date YYYY-MM-DD for dated Esri Wayback imagery.

airport.lookup fix: Overpass query now searches (node; way; relation) with out center; — previously only found node-type airports, missing JFK, LGA, EWR and all other polygon airports.

Rate-limit propagation: assess response gains throttle_hint with affected_layers, retry_after_secs, and exact retry commands when any layer is rate-limited. Individual verbs surface retry_after_secs and throttle_source in error.data. Agents can check structured fields rather than parsing error strings.

pkg/rpcData struct additions

rpc.Data gains two new optional fields:

These fields are omitempty — no change to existing response shapes.

v0.1.9 — 2026-05-07

bim-pdf v0.3.0 — PDF-BIM v2 spec

bim pdf package now produces conformant PDF-BIM v2 files.

Every packaged PDF gets:

New verb: bim pdf bim validate <file> — checks all three spec layers and reports conformance:

bim pdf bim validate drawings.pdf
{"ok":true,"result":{"profile":"v2","checks":{"af_present":true,"pdfbim_xmp":true,"elements_attachment":true,"marks_attachment":true,"elements_schema":true,"marks_schema":true,"join_resolves":true}}}

Reports profile: "v2" (conformant), "legacy-v1" (old packages without /AF), or "unknown".

Marks bounds are now CTM-correct. The walker tracks q/Q/cm operators; element bounding boxes are device-space coordinates. Fixes latent misplacement on PDFs that apply viewport transforms (rotated/scaled detail callouts).

Backward compatible. Old packages (no /AF, no XMP marker) continue to open in the viewer and are reported as legacy-v1 by the validator.

CI fix

Scenario tests pdf-archive-pdfa3 and pdf-shrink-batch were checking for result.outputFile — corrected to result.path (field was renamed in v0.2.1).

v0.1.8 — 2026-05-07

bim-site v0.6.0 — Taichung, Taiwan

bim site assess now supports Taiwan addresses with automatic country detection — no flag or config change needed. Any address containing Chinese characters or Taiwan city/county keywords routes through the Taiwan layer stack; all US functionality is unchanged.

Geocoding: Nominatim OSM is the default — no API keys. Set BIM_SITE_TGOS_APPID + BIM_SITE_TGOS_APIKEY for house-number precision via TGOS (free registration at api.tgos.tw).

Taiwan layer stack: elevation (Open-Meteo SRTM), faults (GSMMA), seismic (Taiwan Building Code static zone), school (OSM Overpass 1 km), parcel (NLSC Open API + Nominatim reverse), zoning (luz.tcd.gov.tw cache-backed PIP), flood (NCDR registry-routed), airport/historic/transit (OSM/Transitland, global).

luz.tcd.gov.tw zoning: On first call per county, downloads all zone polygons from the National Development Council (Taiwan), caches locally (30-day TTL), answers subsequent queries via point-in-polygon. Geo-IP accessible from Taiwan. No API key required.

New optional env vars: BIM_SITE_TGOS_APPID, BIM_SITE_TGOS_APIKEY, BIM_SITE_CACHE_DIR.

Example:

bim site assess --address "台中市西屯區市政路200號"

No breaking changes

All US verbs unchanged. Global layer (airport/historic/transit) jurisdiction tag changed from "federal" to "global" in JSON output (cosmetic).

v0.1.7 — 2026-05-06

v0.1.6 — 2026-05-06

v0.1.5 — 2026-05-06

bim-site v0.4.0

bim-pdf v0.2.0

Killer composition (new)

bim site assess --address "4720 Center Blvd, Long Island City, NY 11109" > assess.json
bim site flood map --lat 40.7461 --lon -73.9570 --out flood.png
bim site school map --lat 40.7461 --lon -73.9570 --out school.png
bim pdf report --data assess.json --flood-map flood.png --school-map school.png --out report.pdf

v0.1.4 — 2026-05-04

v0.1.3 — 2026-05-04

v0.1.2 — 2026-04-30

v0.1.1 — 2026-04-30

v0.0.10 — 2026-04-30