Commit graph

2960 commits

Author SHA1 Message Date
Adam Brown
ff7fb7cce3
Fix android build 2026-05-14 21:11:23 -07:00
Adam Brown
7e9a8015f6
Clean up 2026-05-14 21:09:11 -07:00
Adam Brown
96f5db5e6b
Make project stats interactable
Tapping things will now deep link you to places
2026-05-14 21:00:40 -07:00
Wavesonics
5caf045b61 Bundle IBM Plex Mono; clickable scenes in outline overview
- Ships IBM Plex Mono (Regular/Medium/SemiBold, OFL) and routes
    the mono Typography + every explicit FontFamily.Monospace site
    through hammerMonoFontFamily(), so ← ↗ and other Unicode glyphs
    render the same on every platform.
  - Reverts the back-arrow icon shim (a4be47ba); ← renders correctly
    in Plex Mono now.
  - Swaps HdSearchField's ⌕ for Icons.Default.Search (U+2315 isn't
    in Plex Mono).
  - OutlineOverview: clicking a scene title dismisses the modal and
    opens that scene in the editor; trailing ↗ marks the affordance.
2026-05-14 19:47:17 -07:00
Wavesonics
0f4316b267 Back arrow icon
The arrow as text could look very different on different platforms
2026-05-14 19:47:17 -07:00
Wavesonics
1fc9f2df1d Add accidental discard protection to timeline events 2026-05-14 19:47:17 -07:00
Wavesonics
c10d9d68d0 Re-add shortcut keys
These used to be handled by the menu system
2026-05-14 19:47:17 -07:00
Wavesonics
434e16202c Always show Close Project in project stats overflow menu 2026-05-14 19:47:17 -07:00
Adam Brown
0e8a6c1a4f
Make MSIX build more robust by prioritizing x64 2026-05-14 18:53:15 -07:00
Adam Brown
d3246a892c
Make fdroid an a seperate step 2026-05-14 18:50:22 -07:00
Adam Brown
6112eaac49
Prepared for release: v3.0.0 2026-05-14 01:46:43 -07:00
Adam Brown
aeeacc3d29
We have to use the JBR! 2026-05-14 01:44:30 -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
9aa7705a9d
Upload on failure 2026-05-14 00:54:53 -07:00
Adam Brown
4b19951655
Remove Nucleus from build pipeline (keep runtime libs)
Reverts the Nucleus packaging port and its follow-ups:
  - 93c7973c Trying nucleus for packaging Snap stays bespoke
  - 7c14bcd5 Broaden artifact staging to handle Nucleus sandboxed pipeline paths
  - d24f6183 Add homepage and debMaintainer for electron-builder
  - 8831e9c5 Update release workflows for Nucleus packaging
  - 4af31163 Port :desktop packaging to Nucleus framework

Compose Desktop is back as the packaging backend (jpackage targets,
custom packageMsix task, bespoke buildDistSnap/AppImage/Flatpak via
registerLinuxDistributionTasks). The Nucleus runtime libraries —
nucleus.darkmode-detector and nucleus.decorated-window-jbr — are
kept for window decoration and dark-mode detection in code, along
with the JBR jvmToolchain vendor pin and the libs.versions.toml
'nucleus' version entry that they depend on.

The Nucleus-pipeline state is preserved on branch
'nucleus-build-pipeline' for future reference.
2026-05-14 00:49:10 -07:00
Adam Brown
c307f08ae8
Add revertLastRelease task 2026-05-14 00:38:59 -07:00
Adam Brown
f844a0c1c7
Make merge strategy more explicit in build.gradle.kts 2026-05-13 23:37:48 -07:00
Adam Brown
25c9a61790
Correct init order 2026-05-13 23:09:35 -07:00
Adam Brown
93c7973cf8
Trying nucleus for packaging
Snap stays bespoke
2026-05-13 23:00:55 -07:00
Adam Brown
ca5407033d
yuck 2026-05-13 22:55:26 -07:00
Adam Brown
4fda8d495a
Add round-trip sync integration test suite
Spins up a real Jetty server and a real headless client in the same JVM,
runs the actual sync protocol over HTTP, and asserts against the shared
FakeFileSystem. Covers seven scenarios: smoke (handshake), client upload,
server download, independent edits, conflict resolved to server, conflict
resolved to client, and client delete.

- New :integrationTests Gradle module with the RoundTripTestBase harness,
  HeadlessClient driver, and seven scenario tests.
- :server enables java-test-fixtures so EndToEndTest, E2eTestData, and
  SqliteTestDatabase are shared with the new module instead of duplicated.
- CI: build.yml runs the suite on every PR/develop push; prepare-release.yml
  adds an integration-tests job that gates all seven package jobs, so a
  broken sync protocol blocks the release before any artifact is built.
2026-05-13 22:28:19 -07:00
Adam Brown
28955b090f
Codacy detekt config 2026-05-13 22:03:53 -07:00
Adam Brown
f4cd7f9eb7
Update libs
- Clean up jewel
2026-05-13 21:58:48 -07:00
Adam Brown
244cc78e3c
Drop iosX64 target (removed from Compose Multiplatform 1.11) 2026-05-13 21:58:48 -07:00
Adam Brown
c25b1c6482
Expand allowed filename characters for projects and scenes 2026-05-13 21:58:47 -07:00
Wavesonics
2072aa1af5 Update icons 2026-05-13 21:53:57 -07:00
Wavesonics
e76be9c8a4 Updating logo and icons 2026-05-13 21:53:57 -07:00
Adam Brown
60416a6c43
No longer needed now that we're using JBR 2026-05-13 21:12:59 -07:00
Adam Brown
8b20d85ecf
Dont kill Codacy 2026-05-13 21:09:21 -07:00
Adam Brown
369f62c047
Fix stats goal block 2026-05-13 21:04:37 -07:00
Adam Brown
9468a5e4d5
Set example project word count goal to 30k per week 2026-05-13 20:57:47 -07:00
Adam Brown
2d1121ea43
More codacy config 2026-05-13 20:53:25 -07:00
Adam Brown
1e0050aff3
Switch to the JBR runtime 2026-05-13 20:42:51 -07:00
Adam Brown
23976563b5
Add "Close Project" menu item 2026-05-13 20:06:53 -07:00
Adam Brown
276b2c7352
Remove unused Darklaf theme dependency 2026-05-13 19:59:52 -07:00
Wavesonics
f22eb29a4f
Desktop now uses in UI menus
Also move to Nucleus window decoration
2026-05-13 19:22:12 -07:00
Wavesonics
c12c53a323
Polishing desktop window setup 2026-05-13 19:22:12 -07:00
Wavesonics
6fd67c59c1
Apply Nucleus Linux HiDPI fix
Detect the native Linux desktop scale factor and feed it to AWT via
sun.java2d.uiScale before Swing initializes. No-op on macOS/Windows and
on JetBrains Runtime (which detects scale natively); needed for any
non-JBR JVM and for future GraalVM Native Image builds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 19:22:11 -07:00
Wavesonics
ae5baf7695
Use Nucleus JNI decorated window with Jewel styling
Wrap desktop windows in JewelDecoratedWindow + JewelTitleBar so the app
draws its own title bar (works on any JVM, no JBR needed). Adds nucleus
decorated-window-jni + decorated-window-jewel artifacts, plus the Jewel
int-ui-standalone dep for the IntUiTheme wrapper that JewelDecoratedWindow
reads its colors from. Jewel artifacts live in the IntelliJ snapshots
repo (cache-redirector path resolves to cloudfront 404, the direct
www.jetbrains.com URL works).

DecoratedWindowScope implements FrameWindowScope, so the existing
EditorMenuBar (which uses FrameWindowScope.MenuBar) keeps working — the
JMenuBar will render below the custom title bar on Windows/Linux, and on
macOS it stays in the system menu bar.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 19:22:11 -07:00
Wavesonics
950e5c9c55
Replace jSystemThemeDetector with Nucleus dark-mode detector
Swaps the bespoke OsThemeDetector for Nucleus's dark-mode detector.
The non-composable initial LAF install uses getPlatformDarkModeDetector(),
and the live-update path inside application{} uses the isSystemInDarkMode()
composable so theme changes recompose without a manual listener.

Drops the explicit jna / jna-platform deps that only existed to back-fill
jSystemThemeDetector's transitive graph.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 19:22:11 -07:00
Wavesonics
7c14bcd5de
Broaden artifact staging to handle Nucleus sandboxed pipeline paths
Nucleus splits store formats (AppX, Flatpak, PKG) into a separate
sandboxed pipeline whose output path uses a `-sandboxed` suffix —
exact location not pinned down in docs. Switch every staging step
to a recursive find under `desktop/build/compose/binaries/` by file
extension instead of expecting a fixed `<format>/` subdir. Each
step now also fails loudly with a clear message if the expected
artifact isn't found.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 19:22:11 -07:00
Wavesonics
d24f618309
Add homepage and debMaintainer for electron-builder
electron-builder rejects .deb builds without these three fields:
homepage, author email, and Linux maintainer. The Nucleus DSL covers
all three via top-level `homepage` and `linux.debMaintainer` (which
takes "Name <email>" together).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 19:22:11 -07:00
Wavesonics
8831e9c5fb
Update release workflows for Nucleus packaging
Nucleus packages via electron-builder, so every desktop-building job
now installs Node.js. Artifact paths move from
build/installers/main-release/<format>/ to
build/compose/binaries/main-release/<format>/.

prepare-release.yml:
- Consolidates the separate snap and flatpak jobs into the linux job,
  since Nucleus produces all five Linux formats (.deb/.rpm/.AppImage/
  .snap/.flatpak) from one set of tasks.
- Windows job now also builds Portable and AppX targets.
- Replaces per-artifact rename steps with a single staging step using
  find/Get-ChildItem with wildcards — electron-builder's naming
  pattern differs from jpackage and is more variable.

publish-release.yml:
- Microsoft Store job now downloads hammer.appx from the GitHub release
  (mirroring the snap-publish pattern) instead of running the removed
  packageMsix gradle task. Partner Center submission Powershell is
  unchanged otherwise.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 19:22:10 -07:00
Wavesonics
4af31163b2
Port :desktop packaging to Nucleus framework
Replaces Compose Desktop's bespoke nativeDistributions + the hand-rolled
packageMsix, snapcraft, flatpak-builder, and appimagetool tasks with
the Nucleus plugin's unified DSL. Nucleus is a fork of compose-desktop-
application that adds first-class AppX/Portable/Snap/Flatpak/AppImage
targets, so org.jetbrains.compose can no longer be applied alongside
it (task name collisions); compose.desktop.currentOs and
compose.components.uiToolingPreview are now resolved via explicit
Maven coordinates instead.

The hand-edited msix/AppxManifest.xml, snap/snapcraft.yaml, and
flatpak/*.yaml are now generated from the DSL; the source files
remain in-tree for now and will be deleted once CI validates the
nucleus output across all targets.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 19:21:55 -07:00
renovate[bot]
2ba59f7910
Update dependency fastlane to v2.224.0 (#388)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-13 19:21:55 -07:00
renovate[bot]
80ba048ea3
Update dependency fastlane to v2.224.0 (#369)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-13 19:21:55 -07:00
renovate[bot]
9b10c3ad68
Update dependency fastlane to v2.224.0 (#368)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-13 19:21:55 -07:00
renovate[bot]
1f9640fad9
Update dependency fastlane to v2.222.0 (#359)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-13 19:21:54 -07:00
renovate[bot]
2bf17a18c8
Update dependency fastlane to v2.222.0 (#351)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-13 19:21:54 -07:00
renovate[bot]
c56e434114
Update dependency fastlane to v2.222.0 (#347)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-13 19:21:54 -07:00