diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3183bfe..0e7df80 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,13 +2,7 @@
All notable Doc2FAQ changes are recorded here. Version numbers follow semantic versioning; entries describe shipped source functionality and do not imply an external AI service.
-## Unreleased
-
-### Fixed
-
-- Show the full build version in the preview heading and footer, populated from `pom.xml` during the Maven build so future releases stay in sync.
-
-## 0.4.0 (unreleased)
+## 0.4.0 — 2026-10-29
### Added
@@ -33,6 +27,10 @@ All notable Doc2FAQ changes are recorded here. Version numbers follow semantic v
- Answer editing now supports up to 50,000 characters, consistent with imported text.
- Pending draft results are invalidated when draft entries are edited, added, moved, removed, merged, or restored. Delayed file imports cannot replace newer source/project changes.
+### Fixed
+
+- Show the full build version in the preview heading and footer, populated from `pom.xml` during the Maven build so future releases stay in sync.
+
## 0.3.1
### Fixed
diff --git a/README.md b/README.md
index e83297c..0052f19 100644
--- a/README.md
+++ b/README.md
@@ -6,9 +6,9 @@ Doc2FAQ is a Java 21 / Spring Boot document-to-FAQ workbench. Paste text or uplo
Created by **Okan Tiktas** · [OKAN-SOFTWARE](https://github.com/OKAN-SOFTWARE).
-> **Development version: v0.4.0-SNAPSHOT.** The version in `pom.xml` identifies this build. For published tags, release downloads, and announcements, see [GitHub Releases](https://github.com/OKAN-SOFTWARE/Doc2FAQ/releases). This source version does not by itself publish a GitHub Release.
+> **Current version: v0.4.0 — Review, Save & Export.** Download the ready-to-run JAR or Windows ZIP from [GitHub Releases](https://github.com/OKAN-SOFTWARE/Doc2FAQ/releases/tag/v0.4.0).
-## New in the v0.4.0 development build
+## New in v0.4.0
- **Save work / Open saved work:** a versioned JSON file preserves source text, title, mode, draft order, edits, original excerpts, and duplicate-review choices. Incomplete FAQs can be saved too. Project files are limited to 4 MB and validated before replacing the workspace.
- **Optional browser autosave:** off by default. Enabling it stores the complete source and draft on this browser's origin and restores them on reload. Disabling autosave or using **Clear saved data** removes Doc2FAQ's saved data without clearing your open workspace. Storage failures leave the draft open; use **Save work** as a backup.
@@ -45,6 +45,10 @@ For detailed changes, see [CHANGELOG.md](CHANGELOG.md). For the release checklis
## Requirements
+- To run a release download: **Java 21**. The JAR works on Windows, macOS, and Linux; the Windows ZIP includes `Start-Doc2FAQ.cmd` and a quick-start guide. Extract the ZIP into a new folder, stop any older Doc2FAQ process, run the launcher, and open **http://localhost:8080**. Maven and Node.js are only needed to build and test from source.
+
+To build from source:
+
- Java Development Kit (**JDK 21**), not just a Java Runtime Environment.
- **Apache Maven 3.6.3 or later** (examples use Maven 3.9.16).
- Windows 10/11, macOS, or Linux, with an internet connection for the initial Maven dependency download.
@@ -163,7 +167,7 @@ After updating your checkout to the latest `main`, run these commands from the d
```cmd
mvn -B -ntp clean verify
node --test src/test/js/*.test.cjs
-java -jar target/doc2faq-0.4.0-SNAPSHOT.jar
+java -jar target/doc2faq-0.4.0.jar
```
The JavaScript checks require Node.js. Keep the terminal open while the app runs, and use **Ctrl+C** to stop it. Open **http://localhost:8080** and refresh the browser to load the updated frontend.
@@ -171,7 +175,7 @@ The JavaScript checks require Node.js. Keep the terminal open while the app runs
If port 8080 is occupied, stop the previous Doc2FAQ process or use an alternate port:
```cmd
-java -jar target/doc2faq-0.4.0-SNAPSHOT.jar --server.port=8081
+java -jar target/doc2faq-0.4.0.jar --server.port=8081
```
Then open **http://localhost:8081**. Merging source changes does not update an existing JAR or a running Java process; rebuild and restart to use the fixes. Published JARs must be built from the corresponding release commit.
@@ -309,4 +313,4 @@ MIT · Copyright © 2026 **Okan Tiktas**.
## Later releases
-Optional AI generation with explicit opt-in and token/cost limits, OCR, and account/subscription workflows are outside the v0.4.0 development scope. See [docs/RELEASING.md](docs/RELEASING.md) for the validation and release process.
+Optional AI generation with explicit opt-in and token/cost limits, OCR, and account/subscription workflows are outside the v0.4.0 scope. See [docs/RELEASING.md](docs/RELEASING.md) for the validation and release process.
diff --git a/docs/RELEASING.md b/docs/RELEASING.md
index f8029ea..b0be0e9 100644
--- a/docs/RELEASING.md
+++ b/docs/RELEASING.md
@@ -1,15 +1,15 @@
# Doc2FAQ release checklist
-The development branch targets **v0.4.0** and uses `0.4.0-SNAPSHOT` until release preparation is complete. A development PR does not publish a new Release or replace the v0.3.1 JAR.
+The release version is **v0.4.0**. The release commit uses `0.4.0` in `pom.xml`; earlier development builds used `0.4.0-SNAPSHOT`. Merging source changes alone does not publish a GitHub Release or update an already downloaded JAR.
-## Validate the development build
+## Validate the release build
Use JDK 21, Maven 3.6.3+, and Node.js:
```cmd
mvn -B -ntp clean verify
node --test src/test/js/*.test.cjs
-java -jar target/doc2faq-0.4.0-SNAPSHOT.jar
+java -jar target/doc2faq-0.4.0.jar
```
Open `http://localhost:8080` (or use `--server.port=8081` if occupied). Check the packaged JAR with these steps:
@@ -45,8 +45,8 @@ Open `http://localhost:8080` (or use `--server.port=8081` if occupied). Check th
1. Open [Draft a new release](https://github.com/OKAN-SOFTWARE/Doc2FAQ/releases/new).
2. Create tag `v0.4.0` at the exact recorded commit; title: **Doc2FAQ v0.4.0 — Review, Save & Export**.
-3. Copy the 0.4.0 changelog section into the notes. Attach the tested `target/doc2faq-0.4.0.jar`, never `.jar.original` or a renamed older JAR.
+3. Copy the 0.4.0 changelog section into the notes. Attach the tested `target/doc2faq-0.4.0.jar`, never `.jar.original` or a renamed older JAR. Also attach `Doc2FAQ-0.4.0-Windows.zip` containing that same JAR, `Start-Doc2FAQ.cmd`, and a quick-start README, plus `SHA256SUMS.txt` for both downloads. Confirm the launcher references `doc2faq-0.4.0.jar` and neither the ZIP nor its instructions reference the snapshot build.
4. Review the tag, commit, notes, and asset before publishing. Keep existing release artifacts unchanged.
-5. Download the published JAR to a separate folder, run it with Java 21, and verify the version, health, project restore, source review, and PDF/Word downloads.
+5. Download the published JAR and ZIP to a separate folder, verify their hashes against `SHA256SUMS.txt`, and confirm that the JAR inside the ZIP matches the standalone JAR. Run it with Java 21 and verify the version, health, project restore, source review, and PDF/Word downloads.
Accounts, billing, OCR, optional external AI, and public-server hardening remain separate work. This build is intended for local use.
diff --git a/pom.xml b/pom.xml
index 9a6d179..4ef5c5a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
com.okansoftware
doc2faq
- 0.4.0-SNAPSHOT
+ 0.4.0
Doc2FAQ
Privacy-conscious document-to-FAQ preview workbench