Commit graph

42 commits

Author SHA1 Message Date
Adam Brown
e836ee7182 Switching way from kotlinx datetime where possible 2026-08-04 20:51:46 -07:00
Adam Brown
d1ea053c28
Bake the changelog into the app instead of checking GitHub on load (#850)
The app called the GitHub releases API from ProjectSelectionComponent.init
to decide whether to show an "update available" dialog. That is an
unprompted network request before the user has done anything, which has
been raised as a privacy concern.

The release notes are already in the repo at release time, so bake them
in instead. prepareForRelease writes the new CHANGELOG.md entry to
common/src/commonMain/composeResources/files/changelog.md and commits it
alongside the version bump, so the resource cannot drift from the version
in libs.versions.toml.

On load, ChangelogRepository compares the baked entry's version against
lastSeenChangelogVersion in global settings and shows a "What's New"
dialog when they differ. Dismissing records the version. Fresh installs
are seeded as already-seen, so only upgrading users get the popup;
the old lastDismissedUpdateVersion key is dropped, which is safe because
the TOML serializer ignores unknown keys.

About drops its update check entirely and gains two buttons: Changes,
which reopens the dialog with no network, and GitHub Release, which opens
the browser.

VersionCheckRepository stays for the protocol mismatch dialog, which only
appears after the user has connected to a sync server and exists to tell
them which version to get. It keeps its automatic check and is now that
repository's only consumer.

Links in the notes are clickable via linkifyChangelog, which handles
[label](url) and bare urls, including urls containing parentheses. It is
deliberately not a markdown renderer: entries lead with [New] / [Fix]
tags that a real parser mangles.
2026-08-04 19:04:59 -07:00
Adam Brown
562b736bc9 Split store release notes from the full changelog
App stores reject release notes that describe anything but the app, so
the release dialog now has a Full tab and an App stores tab. Play,
F-Droid, macOS, iOS and Flathub take the app-only notes; CHANGELOG.md
and the GitHub release keep the full text.

Entries are filtered by audience tag: an opening [Fix/Web] tag, with or
without a leading dash, and a single-word Web:/Server: label. Prose that
merely mentions a server keeps its bullet. Everything removed is listed
on the App stores tab.

Truncation now works on whole entries, so a skipped bullet takes its
continuations and sub-bullets with it, pruned headers do not spend
budget, and the ellipsis appears only when something was left out.

A release with no store notes leaves the store metadata untouched
instead of blanking it.
2026-07-23 14:12:46 -07:00
Adam Brown
efc532c7c1 Improve prepareForRelease
We can now have longer change logs
2026-07-21 00:55:28 -07:00
Adam Brown
94dae03333 Update repo references to Darkrock-Studios org
The repository moved from github.com/Wavesonics/hammer-editor to
github.com/Darkrock-Studios/hammer-editor. Update all URLs across
source, build scripts, web templates, docs, store metadata, and
test fixtures.
2026-07-13 16:31:11 -07:00
Adam Brown
a0ba72a75e Add "Server only" publish scope to prepareForRelease
Introduce a SERVER platform (tag token `server`) and a third release
scope alongside All / Targeted. A server-only release produces a
`vX.Y.Z+server` tag, which matches none of the per-store publish jobs in
publish-release.yml, so no client app store upload runs while the server
distribution still builds and deploys out of band.

isPlatformReleaseTag now recognizes `+server`, so backout/revert clean it
up like any other release tag.
2026-06-23 00:38:08 -07:00
Adam Brown
60a61541e9
Harden release task against network failures 2026-06-08 21:45:29 -07:00
Wavesonics
73f31859c1 For patch releases, pull the previous changelog 2026-06-04 19:49:38 -07:00
Adam Brown
bcd5c033f0
Fix zsync linux release 2026-06-01 22:55:19 -07:00
Adam Brown
771f613844
Fix zsync linux release 2026-05-31 22:48:48 -07:00
Wavesonics
ad1b8b43db Embed AppImage update information for zsync delta updates
Pass -u gh-releases-zsync to appimagetool so the Linux AppImage carries
update metadata and emits a .zsync file, and upload that file to the
release. Closes #478
2026-05-31 01:46:30 -07:00
Wavesonics
f0530674ec Improving iOS & MacOs build scripts
Feed the right versions in
2026-05-29 23:27:28 -07:00
Adam Brown
77e553cb3b
Polish the prepareForRelease dialog
- Switch to FlatLaf (Darcula) for an IntelliJ-grade look and feel.
  Lives in buildSrc only — never ships in the released app.
- Restructure the dialog into TitledBorder sections: Version,
  Publish scope, Will push tag, Changelog.
- Replace the always-on checkbox grid with an All / Targeted scope
  toggle. Full release (the common case) is now one click and shows
  the bare vX.Y.Z tag; Targeted enables the per-store checkboxes.
- Make the computed tag the dialog's focal point — large monospaced
  bold, italic + dimmed when no platforms are picked.
- Right-align Commit button, live-update window title to show the
  version transition, bump frame size for more changelog room.
2026-05-24 01:17:19 -07:00
Adam Brown
dbd0b4d013
Added the ability to publish to a single store
We've run into many problems where everything publishes fine, except 1 store. This provides a way to unblock that one store without pushing to the rest.
2026-05-24 00:51:40 -07:00
Adam Brown
cfa68ec064
Move F-Droid tag creation from Gradle task into publish workflow 2026-05-14 01:44:29 -07:00
Adam Brown
63d18f8a38
Optimize flatpak build 2026-02-07 22:15:08 -08:00
Wavesonics
9a1b71e26f Remove flathub archives
We now build form source
2026-01-23 23:22:50 -08:00
Adam Brown
738814d87a Flatpak now also gets the changelog on release 2026-01-17 13:11:48 -08:00
Adam Brown
a44fe421c6 Linux release 2026-01-16 22:46:54 -08:00
Wavesonics
2dd04d0041 Add arm build for linux 2026-01-16 22:15:11 -08:00
Wavesonics
e26eec5390 Flathub release task 2026-01-15 21:58:54 -08:00
Wavesonics
02b9ca6021 Flatpak work 2026-01-10 22:05:33 -08:00
Wavesonics
767a56abf9 Added publishFlathub
Re-organized our various release scripts
2026-01-10 19:21:02 -08:00
Adam Brown
ff4ecd194f Create gradle tasks to produce these distributions 2025-12-26 18:44:56 -08:00
Adam Brown
bef4ac3281 Added flatpack packaging 2025-12-25 23:41:51 -08:00
Adam Brown
308036b1f9 Added snap packaging 2025-12-25 23:13:44 -08:00
Adam Brown
e97d5dd344 Update Kotlin datetime and other libs 2025-12-01 22:20:36 -08:00
Adam Brown
fa46ce8ca8 Fix a broken test 2025-03-31 17:39:49 -07:00
Adam Brown
df108cf659 Adding rename Project API endpoint
Adding tests for it, and I upgraded to JUnit 5 at the same time
2024-10-02 21:23:43 -07:00
Adam Brown
90e329b9b7 fdroid publish fix
fdroid publish fix

fdroid publish fix
2024-06-18 23:07:01 -07:00
Adam Brown
07fc5c2a71
Decompose 3.0 upgrade (#263)
* Remove parcelize
2024-05-25 22:38:30 -08:00
Adam Brown
f938747233 Add publishFdroid gradle task 2024-02-15 12:33:23 -07:00
Adam Brown
4bc88511a9 Update changelog format in code and documentation 2024-01-31 22:29:23 -08:00
Adam Brown
80c90cd1a3 Add character count to changelog UI 2024-01-31 21:49:08 -08:00
Adam Brown
88c417bc4f Release script is almost there! 2024-01-28 23:03:39 -08:00
Adam Brown
5bef6e00a3 More release work 2024-01-28 21:18:11 -08:00
Adam Brown
516df44ef2 Markdown parsing in gradle kts 2024-01-27 22:46:31 -08:00
Adam Brown
ac29e46dd4 Version code tweaks 2024-01-27 22:46:31 -08:00
Adam Brown
79b34bffab Fix getVersionCode()
Wrote tests for it
2024-01-27 21:46:35 -08:00
Adam Brown
a471651d9b Simplified getVersionCode()
This also gives some headroom in our build numbers
2024-01-27 20:04:36 -08:00
Adam Brown
fef7440805 Simplified getVersionCode()
This also gives some headroom in our build numbers
2024-01-27 20:02:29 -08:00
Wavesonics
772b093d3c Calculate android version code 2024-01-25 23:44:55 -08:00