Skip to content

Nightly builds: their own name, icon and splash (Moonrise) - #370

Merged
ItsAlphaNeon merged 16 commits into
mainfrom
nightly-logo
Nov 9, 2026
Merged

ItsAlphaNeon merged 16 commits into
mainfrom
nightly-logo

Conversation

@ItsAlphaNeon

@ItsAlphaNeon ItsAlphaNeon commented Nov 6, 2026 •

Copy link
Copy Markdown
Owner

Stacked on #389: merge that first. Until then this PR's diff against main also shows the updater. Its own changes are git diff updater...nightly-logo.

Nightly builds now have their own name, icon and splash, from the owner's bitmap and the Moonrise logo. Builds without LEMON_CHANNEL=nightly look as they did, and regenerating the stable icons gives the same files.

The design

The lemon stays the stable yellow. The record becomes an indigo night sky, and its label becomes a moon rising over the wedge's straight edge, with craters. Stars replace the record's two windows and the shimmer behind them.

What changes on a nightly

Where What Made from
Windows LemonStudioNightly.exe: its icon, its version resource and the window title say Lemon Studio Nightly lemonstudio-nightly.ico, by gen.py from icon-lemon-nightly.png
Linux LemonStudioNightly.AppImage: its desktop entry, icon and app id are lemonstudio-nightly lemonstudio-nightly.png, by gen.py
macOS Lemon Studio Nightly.app, with its own identifier, so macOS keeps its permissions apart lemonstudio-nightly.car and .icns, by macos-icon.sh nightly from the new macOS-nightly.icon
Splash The moon, craters, night sky and stars logo.rs's new NIGHTLY_*, by gen.py

The name is there so that a nightly and an alpha can sit side by side. They share the user folder (settings, projects), and #389 keeps their updates in separate folders.

Testing

  • A build with LEMON_CHANNEL=nightly on Windows: the exe's version resource says Lemon Studio Nightly and 2026.11.8.1, its icon is the new one, and the window's version line reads "Lemon Studio v2026.11.8.1 nightly (pre-alpha)". The splash, rendered at both ends of the gauge, shows the moon and stars, with the groove light on the record.
  • macOS icons: generated on a macOS 26 runner with Xcode 26.6 and checked by eye against the stable one's rendering, in the .icns only. The .car hasn't been seen on a Mac.
  • AppImage: appimage.sh on Ubuntu 22.04 packed a dummy program both ways, and each ran with the right desktop entry and icon.
  • New tests: the splash draws the Nightly logo with the lemon unchanged, and a nightly's Info.plist has its name and identifier. CI checks that a nightly's settings compile on all three platforms.

Not run: a real nightly on Linux or macOS. The Linux app id and window icon and the macOS bundle are only compiled and unit tested until the first dry run.

Goes with this PR

ItsAlphaNeon/Lemon-Studio-Site#1 updates the install guide and Download page. Merge it when this merges.

🤖 Generated with Claude Code

The stable lemon with the record as an indigo night sky: the label is a moon rising over the wedge's straight edge,
with craters, and stars replace the record's two windows and the shimmer behind them. The shapes it shares with
logo-colored-lemon.svg are unchanged, and tools/logo/gen.py's parser reads the new parts.

Nothing uses it yet: the app icons, the splash and the builds still show the stable logo.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ItsAlphaNeon
ItsAlphaNeon marked this pull request as draft November 6, 2026 06:11
ItsAlphaNeon and others added 11 commits November 7, 2026 16:48
Nightly and stable builds made by the new release workflow carry
lemonstudio-updater (tools/updater), which checks the channel's signed
manifest, downloads the newer build and, once Lemon Studio closes,
replaces the .exe, the AppImage or the .app and starts it again.
Builds from source have no channel and never update.

- Versions: nightlies are dated (YEAR.MONTH.DAY.N), stable releases
  semantic; the app, diagnostics, panic log and the Windows version
  resource show the build's version (version.rs).
- In the app (update.rs): the check at start, the Install and restart /
  Skip this version / Later prompt, HELP > Check for updates, the
  General > Updates checks, and the About tab's channel line and
  Check for updates button.
- Release workflow: a nightly from main every night (if main moved),
  a stable release from a vMAJOR.MINOR.PATCH tag; Windows .exe, Linux
  AppImage, macOS .app (Apple silicon, not notarized: the release notes
  say how to open it) and the VST3/CLAP plugins as a zip per platform.
  Manifests are signed with minisign (MINISIGN_SECRET_KEY secret,
  MINISIGN_PUBLIC_KEY variable).
- docs/releasing.md, README, alpha checklist, third-party notices.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The schedule only runs with the repository variable NIGHTLIES set to "on", so
merging the workflow with the signing keys set publishes nothing by itself.

Run workflow gains a dry run: it builds, packages and signs, and keeps the files
as the run's artifacts. It can rehearse a tag as well as a nightly.

An alpha is a plain vMAJOR.MINOR.PATCH tag with major version 0. Builds say so
in the app, the diagnostics and the release's title, instead of "pre-alpha".

Also: a tag has to be on main; the first build on a channel doesn't list every
pull request ever merged; appimagetool is a fixed version with its checksum; a
nightly and an alpha on one computer keep their downloads in separate folders.
The plan moves to tools/package/plan.sh, tested with the manifest by
tools/package/test.sh in CI, and CI checks a nightly's and a tagged build's
settings compile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From the owner's bitmap and the Moonrise logo:
- Windows: lemonstudio-nightly.ico in the exe, and "Lemon Studio Nightly" in its
  version resource, the window title and the file association's name.
- Linux: lemonstudio-nightly.png, app id and desktop entry in the AppImage, so it
  sits beside Lemon Studio on a desktop.
- macOS: Lemon Studio Nightly.app with its own identifier, from
  macOS-nightly.icon. The compiled icon files follow in the next commit.
- Splash: the moon, craters, night sky and stars; the lemon is the same.

The build picks these by LEMON_CHANNEL=nightly; other builds are unchanged, and
regenerating the stable icons gives the same files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Made by tools/logo/macos-icon.sh nightly on a macOS 26 runner with Xcode 26.6, in
a throwaway workflow. Committed as the stable ones are, so a build needs neither
tool.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs/releasing.md has the steps in order, from the signing key to the first
nightly, and says an alpha is a tag with major version 0. The README no longer
says no prebuilt binaries will be published.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ItsAlphaNeon ItsAlphaNeon changed the title Logo: the Nightly variant, Moonrise, ready for nightly builds Nightly builds: their own name, icon and splash (Moonrise) Nov 8, 2026
ItsAlphaNeon and others added 4 commits November 8, 2026 17:16
LemonStudio.exe and LemonStudio.AppImage, and LemonStudioNightly for a nightly, so
a nightly and a tagged release can sit in one folder. An update replaces the file
in place, keeping its name, so a version in it went stale after the first update.
Now a shortcut never points at a misleading name, and never has to change.

The macOS zip keeps its version: it's only unpacked, and the app inside has a
fixed name already.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	.github/workflows/release.yml
#	docs/releasing.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ItsAlphaNeon
ItsAlphaNeon marked this pull request as ready for review November 9, 2026 00:53
@ItsAlphaNeon
ItsAlphaNeon merged commit b1eace1 into main Nov 9, 2026
2 of 3 checks passed
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.

1 participant