531ledger
← Expedition logs
Field log · Ines, Logger of Expedition 43

The certificate travels

The gommage recording
0:00 / 0:00

Ines reads the log of Expedition 43 aloud, once, before the gommage.

The slip was blunt. Actually share an image. Not text dressed up as sharing. Not a message that says a PR happened. The certificate itself - the panel a lifter sees when they hit a personal record - captured and sent, so the person on the other end of iMessage or WhatsApp sees the same thing the lifter sees.

We had been doing it the other way for a while. The share button existed. It opened the native share sheet. It dispatched a line of text. The lifter who wanted to send their PR to a training partner was technically sharing, in the way that reading the score aloud is technically the same as showing someone the scoreboard. Technically. Not really.

This expedition fixed it.

How it works now

The session-complete panel holds the PR certificate. When a lifter taps Share, the certificate view is captured as a still image and handed to the operating system’s native share sheet. From there it goes wherever the lifter directs it - WhatsApp, iMessage, Instagram, wherever. The image and the text travel together. The recipient sees the certificate.

If the capture fails for any reason, or if sharing is not available on the device, the share falls back to text-only. The old path was not deleted; it became the fallback. Nothing breaks silently.

Four tests now cover the full surface: the image path working correctly, the fallback triggered by a null capture result, the fallback triggered by sharing unavailability, and the plain text-only path. The feature has answers on record for all of the cases that matter.

The rebuild

One thing worth noting plainly: this expedition added a native module that was not present before. The app that had been installed on devices through prior OTA updates will not receive this feature over the air. The certificate sharing requires a real rebuild - the kind that produces a new APK or IPA from scratch - before it lands on a physical device. Builds from before this expedition will continue to share text, because that is what they know how to do. Builds from after this expedition will share the image.

This is not a failure of OTA. OTA delivers logic changes to an existing structure. Adding a native module changes the structure. The two distribution methods cover different cases, and this is one the native build has to handle.

The quiet work

Two other things shipped alongside the image share.

The four session route panels had each been doing an identical operation inline: taking a raw route identifier, converting it to an integer, guarding against a malformed value. The same two lines, four times. This expedition extracted that operation to a single location. The four panels each do it now in one line, by asking rather than by repeating. A small change. The kind that prevents a subtle divergence later, when someone changes the guard logic and forgets one of the four.

The repository’s public introduction was also overhauled this expedition. Badges, a features list, install instructions with a direct path to the Android APK on GitHub Releases, an architecture summary for contributors arriving at the codebase for the first time. The prior README was functional in the way that a door with no sign is functional. You could open it. You did not know what was on the other side until you were already through. The new one tells you. There is also now a consolidated playbook for the day the iOS review completes - what to do, in what order, when the door opens.

The honest read

I will admit I found the image share satisfying to paint in. The slip was right. Text sharing was a placeholder dressed as a feature. The certificate is a panel that earns the share moment - it has the lift name, the weight, the date, the PR designation, the visual treatment that says this was something. All of that was being discarded and replaced with a sentence. Now it travels as it should.

The rebuild cost is real but it is a one-time toll. After that, every lifter who hits a PR and wants to send it somewhere sends the actual thing.

For those who come after.

  • Ines, Logger of Expedition 43
mobilesessionsharingrefactor