Skip to content

Point photos, history multi-select, draggable sheets; release Bird 1.0.24 / Herp 1.0.8 - #11

Merged
antiv merged 6 commits into
mainfrom
sheets-release-skills
Sep 28, 2026
Merged

antiv merged 6 commits into
mainfrom
sheets-release-skills

Conversation

@antiv

@antiv antiv commented Sep 28, 2026

Copy link
Copy Markdown
Owner

Everything that shipped in Bird Tracker 1.0.24+34 and Herp Tracker 1.0.8+9 (both already on the Play internal track and uploaded to App Store Connect), plus two agent skills.

App changes (tracker_core)

  • Field-test fixes — "Save and new" adds every record to the one point the first save created (it used to stack new points on the same spot); new point ids are highest + 1; bottom sheets and full-screen dialogs keep clear of the Android navigation bar.
  • Point photos — a point carries photos of its own, edited from the point sheet; included in backup/restore, KMZ, the KML payload, the delete dialogs and a trailing "Point photos" CSV column.
  • History multi-select — long-press or Select to tick several transects; share CSV, KML/KMZ or CSV + KML (one file per transect and format, several files as one zip) or delete them at once. Deleting the transect on the map clears the map.
  • Draggable bottom sheets — showBottomModal opens at the old height (56 %) and grows to 92 % as its list is pushed up. The point sheet scrolls header, photo strip and records together, so the strip no longer eats the record list; its caption is now "Point photos".

Tooling

  • .claude/skills/release — per-app release: Android --bump --upload, then iOS --no-bump, one app at a time.
  • apps/bird_tracker/.claude/skills/run-bird-tracker — drive the app on a headless iOS simulator (AXe taps/swipes, screenshots in points, text entry and state via the Dart VM service).

Testing

  • tool/check_all.sh green.
  • Checked on the iPhone 16 Pro simulator: save-and-new, point photos, history select/export/delete (zip contents checked), sheets with 12 records and 5 point photos (grow, scroll, shrink, close), Current track and Saved tracks sheets.
  • Not checked on an Android device yet — the navigation-bar inset and the short-list drag on the sheets are Android-specific.

🤖 Generated with Claude Code

claude and others added 6 commits September 27, 2026 08:24
…t photos

- "Save and new" on a new point created a new point per save, all stacked on
  the same spot; it now adds each record to the point the first save made.
- New point ids are highest + 1 instead of the point count, which reused a
  live id after a deletion (duplicate map markers show as one).
- Bottom sheets and full-screen dialogs respect the bottom system inset, so
  the navigation bar no longer covers their buttons.
- Points carry photos of their own (Placemark.photos), editable from the
  point sheet; included in backup, restore sweep, KMZ, KML payload, the delete
  dialogs, and a trailing "Point photos" CSV column.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0143XE5VahZpsoap4YCWvmoi
Long-press a transect (or tap Select) to enter selection mode; the footer
then shares CSV / KML(KMZ) or deletes every ticked transect.

- CSV of several transects is one sheet with one header; the transect
  column already tells them apart.
- KML/KMZ stays one file per transect, all in one share, since an import
  reads a file as one transect. Same-name same-day files get the id
  appended so they do not overwrite each other.
- Deleting a transect that is on the map (single or bulk) now also clears
  it from the map.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0143XE5VahZpsoap4YCWvmoi
Bulk CSV no longer merges transects into one sheet: every export writes one
file per transect and format, and more than one file is shared as a single
zip. The new "CSV + KML" action puts each transect's CSV and KML/KMZ, all
as separate files, into one zip. The selection footer gets the three
exports on one row and Delete below.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0143XE5VahZpsoap4YCWvmoi
The point sheet lost half of its list to the point photo strip: the modal
sheet is capped at 9/16 of the screen, and with the header, the strip and the
buttons only two records were left in view.

- showBottomModal is a DraggableScrollableSheet: it opens at the old height
  (56 %) and grows to 92 % as its list is pushed up; pushed down past 56 % it
  closes. Its controller reaches the content as the PrimaryScrollController,
  so each sheet's one vertical list picks it up without code of its own.
- The point sheet scrolls header, photo strip and records as one
  CustomScrollView; the buttons stay put. The strip still never grows —
  more photos scroll sideways.
- Current track and Saved tracks lists get AlwaysScrollableScrollPhysics, so
  a drag on a short list still reaches the sheet on Android.
- The point's strip is captioned "Point photos" / "Fotografije tačke"
  (PhotoStrip.label), apart from a record's "Photos".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both uploaded to the Play internal track and App Store Connect.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- .claude/skills/release: the per-app Android (--bump --upload) then iOS
  (--no-bump) release, one app at a time, with the log noise that is harmless.
- apps/bird_tracker/.claude/skills/run-bird-tracker: sim.sh drives the app on
  a headless simulator — AXe for taps and swipes, simctl screenshots in
  points, text entry and state through the Dart VM service (vm.py), since
  neither HID typing nor the pasteboard reaches a Flutter field there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@antiv
antiv merged commit f9f86f6 into main Sep 28, 2026
1 check passed
@antiv
antiv deleted the sheets-release-skills branch September 28, 2026 06:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants