Port the Mac's MarkdownText renderer, AppPalette (color-vision modes +
night-softening), appearance settings (theme/text size/color vision),
and BuildBanner channel strip to the iPhone remote. Add session-row
attention/unseen-completion washes and marker icons, Discard action,
branch/worktree options in the new-chat composer, and a transient
error bubble for host wire errors. Stamp the build channel via
NucleicChannel in Info.plist (ios-release.sh passes NUCLEIC_CHANNEL,
default beta). Demo mode gains NUCLEIC_DEMO_SESSION and skips the
notifications prompt so UI previews are scriptable.
Co-Authored-By: Claude Fable 5 <[email protected]>
Squash-merge nucleic/trunk into dev (234 commits of accumulated nvrsion work).
Resolved two auto-generated-file conflicts:
- cloud/nucleic-edge/wrangler.jsonc: kept dev's real KV namespace ids and the
xyz.blakeslee.nucleic.remote APNS topic, with binding names corrected to
RELAY_TOKENS/PUSH_TOKENS to match the worker code on both branches.
- Package.resolved: took trunk's newer dependency pins.
Nucleic-Promote: 1
Co-Authored-By: Claude Opus 4.8 <[email protected]>
generate_appcast names its output after the app's embedded SUFeedURL basename (here appcast-beta.xml), not the bare appcast.xml the script assumed — so 'cp $STAGE/appcast.xml' failed with 'No such file or directory' after a fully-notarized DMG. Prefer the exact appcast-<channel>.xml, else take whichever single appcast XML it produced.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
mapfile is a bash 4 builtin; macOS ships bash 3.2, so 'mapfile -d "" AUTH < <(auth_args)' died with 'mapfile: command not found' (exit 127) at the notarize step. Build the AUTH array directly instead — which also fixes a latent bug: the old auth_args ran inside a process-substitution subshell, so its 'exit 1' on missing creds couldn't actually abort the script.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
We're pre-1.0, so each release is a minor bump and major stays 0 until an explicit BUMP=major. Default is now minor everywhere (release-macos.sh, bump-version.sh, Makefile/docs); BUMP=build keeps the old build-number-only behavior for re-releases.
Also: a release that fails before the notarized artifact exists now restores ./VERSION via an EXIT trap (gated on a SUCCEEDED flag), so a retry reuses the same version instead of skipping one — which matters more now that a skip is a whole minor version, not just a build number.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
./VERSION (NUCLEIC_MARKETING_VERSION + NUCLEIC_BUILD_NUMBER) is the single source of truth, read by package-app.sh and bumped by release-macos.sh. Every release increments the build number by 1; 'make release-beta BUMP=major|minor|patch' also bumps that semver component (resetting lower ones). The bumped VERSION is committed on success so build numbers stay monotonic. Seeded at 827 (the prior git-derived count) so numbering is continuous.
scripts/bump-version.sh does the arithmetic and rewrites VERSION; package-app.sh now reads version+build from VERSION (env NUCLEIC_VERSION/NUCLEIC_BUILD still override; missing file falls back to 0.1.0 + git count, so app-* and fresh checkouts are unaffected).
Co-Authored-By: Claude Opus 4.8 <[email protected]>
These three were committed mode 0644, so release-macos.sh aborts with 'scripts/notarize.sh: Permission denied' at the notarize step (and silently skips the R2 upload, whose -x guard fails). The other scripts/*.sh are 0755; match them.
Co-Authored-By: Claude Opus 4.8 <[email protected]>