Skip to content

GitView v0.1.15

Latest

Choose a tag to compare

@aldwinhermanudin aldwinhermanudin released this 06 Aug 04:41
· 3 commits to main since this release

GitView v0.1.15

Boards get a third dimension: long-press a component in the PCB viewer and its 3D model opens.

What's new

3D part viewing (ADR-038, Phase 4a). Long-press a part on a board to see its model — drag to orbit,
pinch to zoom. Rendering is Filament core only; the glTF loader and runtime material compiler are
deliberately excluded, so the app grows by ~3.4 MB rather than ~24 MB.

Meshes are converted ahead of time, on the host. The bridge does not tessellate STEP inside a
request. gitview-models converts each unique model once into a content-addressed cache and the bridge
serves the result — which matters because reuse is heavy: one board here has 1,480 model references to 66
unique models. The bridge itself stays at ~4 MB.

Board viewer fixes. Pinch now zooms about the point under your fingers instead of the canvas origin,
so a large board no longer accelerates off-screen. Copper layers are no longer silently truncated — the
cap is by role now, after a survey found a real board's front copper at 20,887 elements against the old
flat 20,000 limit. Saving a file no longer discards the layers you had chosen.

Upgrading

Nothing to do. Existing pairings, tokens and repositories are unchanged, and no configuration is
required to keep what you already had working.

To actually see 3D you need meshes, which are converted on the host rather than downloaded by the app.
Boards whose models resolve to the official KiCad library or live inside the repository work once
converted; see docs/PLAN.md for the pipeline.

Things that will surprise you

Some parts will not appear, and that is usually not a bug. A board references its 3D models through
path variables that live in the designer's KiCad settings — private libraries, converter output
directories, sometimes absolute Windows paths. When those are somebody else's, the geometry was never
published and nothing can fetch it. Measured across the KiCad 10 demo boards, 27% of unique models are
unresolvable, and it is concentrated rather than spread: two of those boards are almost entirely
unresolvable, while others are fully covered. Your own boards, on a machine that has your own libraries,
should fare far better. Coverage is reported per board rather than hidden, so a near-empty 3D view is
never left looking like a broken viewer.

Long-press only offers parts that actually have a mesh. Components without one are skipped rather
than opening an empty viewer.

3D works under the Color E-Ink profile. Earlier planning assumed it would be pointless there; it is
not. The viewer takes its backdrop and default part colour from the active theme, so the model reads as
dark-on-paper on e-ink and light-on-dark on the standard theme.

The Android release build ships arm64-v8a and armeabi-v7a only. x86/x86_64 are emulator-only ABIs
that cost 4.4 MB every phone would download and never load. A release build therefore cannot render 3D on
an x86_64 emulator — use a debug build there.

Also fixed

tools/release.sh returned exit code 1 from every successful build. An EXIT trap whose last command was
a false test replaced the script's own status under set -e, so a run that assembled, signed, verified
and checksummed correctly still reported failure to anything reading its exit code.

Artifacts

Both components are published every release, even when only one changed:

  • gitview-0.1.15.apk — Android app, signed
  • gitview-bridge_0.1.15_*.deb — host bridge, one per architecture
  • SHA256SUMS
sha256sum -c SHA256SUMS
apksigner verify --print-certs gitview-0.1.15.apk   # cert SHA-256 must match the README