scripts/build.sh (documented in README) builds, manifest-patches
( MANAGE_EXTERNAL_STORAGE ), signs and installs the APK in one go.
Without the permission the system 'All files access' toggle is grayed
out on Android 11+.
GUI fix: the event loop only checks the 'updated' channel when it is
not blocked in w.Event(), and gioui only emits frames on invalidation
or user input, so the initial list load was never drawn until a tap.
The updater now signals non-blocking and invalidates the window itself;
the animation ticker gets the same wake-up treatment.
Found by running and debugging the Linux build on a virtual display:
- impl_linux.go: set fontSize (16, like Darwin). It was only defined
for the Android and Darwin builds, so on Linux every label and
button was rendered at size zero (all text invisible).
- ui.go: extend the Button click area to the full button width, not
just the label width. Short labels (e.g. a few characters in a
full-width list row) had a tiny tap target that was easy to miss.
- main.go: set Color: black on the insert-page buttons (<, >, generate,
@, #). A zero-value NRGBA has A=0 (transparent), so their labels
were invisible even though the buttons worked.
- main.go: gofmt (modern operator spacing).
- Event loop: call w.Event() and FrameEvent.Frame() on the same
goroutine; no channel bridge (the bridge broke frame rendering).
- clip: use clip.UniformRRect(...).Push(gtx.Ops) / Pop() for real
clipping in layoutRRect (old .Add(ops) painted unclipped).
- Window clear color is white in v0.10.2.
- Fonts: always provide gofont; on Android use
WithCollection(gofont.Collection()).
- Button labels: explicitly set Color (zero-value NRGBA has A=0,
i.e. transparent, so labels were invisible).
- Filter: detect changes by comparing the editor text, since
material.Editor.Layout consumes the editor's input events
internally and a later FilterEd.Update(gtx) never sees them.
- idPage: persist the manually entered ID with store.SetID (on
Android nativeIdentities is unimplemented, so there are no id
buttons to click).
- Use U+2026 (gofont) instead of U+22EE (not in gofont) for the
menu button.
- Split getConfDir/noidLabelText out into impl_linux.go for the
Linux build.