Find a file
Wavesonics 9757760de5 Enable Nucleus AOT cache for the desktop app
AOT cache (Project Leyden) is built into the installer at packaging
time and dramatically cuts cold-start latency. Three required pieces:

  - JDK 25 toolchain for :desktop only — the rest of the project
    stays on JDK 21 (JDK 25 runs JDK 21 bytecode, so cross-module
    deps still work). Catalog entry named `desktopJvm` to avoid
    sharing a prefix with `jvm`, which would otherwise nest the
    typed accessor and break `libs.versions.jvm.get()` everywhere.
  - `nucleus.aot-runtime` dependency for the `AotRuntime.isTraining()`
    detection API.
  - `enableAotCache = true` in nativeDistributions.

During the build's training pass Nucleus launches the packaged app
once to record class loading + compilation. The app must self-exit
within 300s or the build hangs; Main.kt now exits immediately if
`AotRuntime.isTraining()`.

Local builds will require JDK 25 on PATH — gradle's toolchain
provisioning should auto-download via Foojay if not present.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 18:00:00 -07:00
.gitHooks Added flatpak dependency generator 2026-01-23 23:08:36 -08:00
.github/workflows Broaden artifact staging to handle Nucleus sandboxed pipeline paths 2026-05-13 17:55:00 -07:00
.junie Added Scene Renaming for the SceneList! 2025-03-31 22:11:35 -07:00
.run Improve some UX around Whitelist & Patreon integration 2026-01-11 15:46:44 -08:00
android Apply new navigation design to android 2026-05-13 00:08:14 -07:00
base Add Scenes to the tag system! 2026-05-12 22:23:34 -07:00
buildSrc Optimize flatpak build 2026-02-07 22:15:08 -08:00
common Source Themes stats from TagIndexService instead of duplicating aggregation 2026-05-12 23:09:49 -07:00
composeUi Segment picker now sizes better on small screens 2026-05-13 00:13:11 -07:00
desktop Enable Nucleus AOT cache for the desktop app 2026-05-13 18:00:00 -07:00
docs Document writing-activity sync phase in protocol doc 2026-04-29 18:12:00 -07:00
fastlane Prepared for release: v2.2.0 2026-04-26 20:25:35 -07:00
flatpak Prepared for release: v2.2.0 2026-04-26 20:25:35 -07:00
gradle Enable Nucleus AOT cache for the desktop app 2026-05-13 18:00:00 -07:00
ios Ios example project (#225) 2024-01-20 20:04:57 -08:00
msix Working on MSIX publishing 2026-01-17 13:03:48 -08:00
readme Add desktop screenshots 2026-01-14 20:34:31 -08:00
server Add Scenes to the tag system! 2026-05-12 22:23:34 -07:00
snap Prepared for release: v2.2.0 2026-04-26 20:25:35 -07:00
.editorconfig Except yaml files 2023-07-05 22:02:48 -07:00
.gitignore Add Gradle toolchain/wrapper config and ignore .claude directory 2026-04-26 20:13:28 -07:00
build.gradle.kts Port :desktop packaging to Nucleus framework 2026-05-13 17:25:11 -07:00
CHANGELOG.md Prepared for release: v2.2.0 2026-04-26 20:25:35 -07:00
codecov.yml Add Codecov config 2024-10-18 01:11:04 -06:00
crowdin.yml Update Crowdin configuration file 2026-01-06 00:24:06 -08:00
DEVELOPMENT.md Converted another graph to mermaid 2024-10-20 12:34:36 -07:00
Gemfile Working on Android publishing 2023-08-09 20:54:45 -07:00
Gemfile.lock Update dependency fastlane to v2.231.0 (#461) 2026-01-18 10:55:04 -08:00
gradle.properties android.defaults.buildfeatures.buildconfig is deprecated 2025-05-29 01:17:51 -07:00
gradlew Update dependency gradle to v8.4 (#137) 2023-10-04 22:03:19 -07:00
gradlew.bat Update dependency gradle to v8.7 (#275) 2024-05-26 12:54:30 -08:00
LICENSE Add LICENSE 2023-02-08 18:07:09 -08:00
PRIVACY.md Prep for Google Play release 2023-04-24 17:55:05 -07:00
README.md Update the README and store descriptions 2026-01-11 15:52:41 -08:00
renovate.json Add renovate.json (#53) 2023-09-07 19:36:28 -07:00
settings.gradle.kts Updates 2026-04-24 00:03:13 -07:00

Hammer Logo Hammer: A story editor

A simple tool for building stories.

badge-kotlin MIT License Build Status Codacy Badge codecov

badge-platform-android badge-platform-windows badge-platform-linux badge-platform-macos

Discord badge Crowdin

Available on:

Google Play F-Droid GitHub

Take a look at the Roadmap to see whats coming.

Community

Join our Discord and help us by reporting bugs, making feature requests, and discussing the future of Hammer.

Or visit us on Reddit at r/hammereditor

Multi-platform

This app is where ever you are. Your phone, tablet, desktop, laptop, this program can be installed and run, not simply a website-in-a-box, but instead using native client side technologies to provide the best experience possible.

Will add support for more platforms in the future:

  • badge-platform-ios

Multi-Screen

Whether you are on a phone, tablet, or desktop, Hammer will make the best use of your screen space. Also supporting both light and dark modes.

Screen Shots

Offline first

I was frustrated with most of the story writing software I was finding as they were using web technologies (aka: Web Page in a box) which always seems to run into problems while being used offline for long periods of time. Hammer is designed from the ground up to be entirely local, no internet connection required, ever.

Transparent Data

Your data is yours. It's not stored in the cloud, or some opaque database. It is stored in simple, human readable files, just using files and folders to define the project structure. You can open your OSes file browser and take a look for your self. If this program went away today you would be able to easily interact with your data.

Intelligent Syncing between devices

Your data can be synchronized between devices allowing you to work on your story from anywhere, and have no fear of a change on one device, overwriting a change on another device.

Optional and Self hosted Syncing

Syncing is entirely optional, you can install the client and use it on one device, or you can install the server and sync your data between devices. You could even use some other service to sync your data, like Dropbox, Google Drive or syncthing. (however these will only work for syncing between desktop computers. Mobile clients will have to use the built in syncing protocol.)

It's all up to you. Instructions can be found here.

If you don't know how, or just don't want to setup your own server, we're also running an official syncing server.

Official Server: hammer.ink

This is also the best way to support the project! Subscribe to our Patreon in order to get instant access to this official Sync server.

This official server endeavors to be a reliable, and secure way to sync your projects. We perform regular backups, and of course encrypt all of our data both in transit, and at rest in our database. Let us manage the server, and you worry about writing!

Test Environment

We're also running a test environment here: test.hammer.ink which is always running the latest commit.

Do not use the test environment for real data! It will get cleared from time-to-time without notice!

Development

Want to contribute? Great! Here are some instructions to get you started.

Having a problem?

On desktop, Log are written to:

Windows:

C:\Users\<username>\AppData\Local\DarkrockStudios\hammer\0\logs\

Redeploy