diff --git a/Makefile b/Makefile
index 1ed146f..2ff9617 100644
--- a/Makefile
+++ b/Makefile
@@ -188,17 +188,17 @@ build_linux: build_linux_binary
.PHONY: build_deb
build_deb: build_linux_binary
@echo "Building deb $(LINUX_ARCH) package..."
- ARCH=$(LINUX_ARCH) VERSION=$(TAG_NAME:v%=%) nfpm package --packager deb --target ./dist/${APP_NAME_LOWERCASE}-$(TAG_NAME)-$(LINUX_ARCH).deb
+ ARCH=$(LINUX_ARCH) VERSION=$(TAG_NAME:v%=%) nfpm package --config assets/nfpm.yaml --packager deb --target ./dist/${APP_NAME_LOWERCASE}-$(TAG_NAME)-$(LINUX_ARCH).deb
.PHONY: build_rpm
build_rpm: build_linux_binary
@echo "Building rpm $(LINUX_ARCH) package..."
- ARCH=$(LINUX_ARCH) VERSION=$(TAG_NAME:v%=%) nfpm package --packager rpm --target ./dist/${APP_NAME_LOWERCASE}-$(TAG_NAME)-$(LINUX_ARCH).rpm
+ ARCH=$(LINUX_ARCH) VERSION=$(TAG_NAME:v%=%) nfpm package --config assets/nfpm.yaml --packager rpm --target ./dist/${APP_NAME_LOWERCASE}-$(TAG_NAME)-$(LINUX_ARCH).rpm
.PHONY: build_archlinux
build_archlinux: build_linux_binary
@echo "Building Arch Linux $(LINUX_ARCH) package..."
- ARCH=$(LINUX_ARCH) VERSION=$(TAG_NAME:v%=%) nfpm package --packager archlinux --target ./dist/${APP_NAME_LOWERCASE}-$(TAG_NAME)-$(LINUX_ARCH).pkg.tar.zst
+ ARCH=$(LINUX_ARCH) VERSION=$(TAG_NAME:v%=%) nfpm package --config assets/nfpm.yaml --packager archlinux --target ./dist/${APP_NAME_LOWERCASE}-$(TAG_NAME)-$(LINUX_ARCH).pkg.tar.zst
.PHONY: clean_linux
clean_linux:
diff --git a/README.md b/README.md
index 223bb40..8a8275d 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,38 @@
+
+
+
+
+[](LICENSE)
+[](https://go.dev/)
+
# Debrief
-Hyper-charged reverse search
+A hyper-charged reverse search: browse shell history in a GUI app available system-wide via Ctrl+Shift+H.
+
+Available on macOS, Windows, and Linux.
+
+* No more pressing Ctrl+R 100 times — navigate visually.
+* Browse history as a list, explore as a tree, or see your most-used commands.
+* One shortcut to summon it from anywhere in the system.
+* Support bash, zsh, powershell.
+* Find commands even with typos - fuzzy search support.
+* Lightweight, offline, open source - no telemetry, no internet required.
+
+
+
+
+
+## Download
+
+| Platform | AMD64 | ARM64 |
+|----------|-------|-------|
+| **macOS** | [DMG (amd64)](https://github.com/debrief-dev/debrief/releases/download/1.0.0/debrief-macos-1.0.0-amd64.dmg) | [DMG (arm64)](https://github.com/debrief-dev/debrief/releases/download/1.0.0/debrief-macos-1.0.0-arm64.dmg) |
+| **Windows (installer)** | [MSI (amd64)](https://github.com/debrief-dev/debrief/releases/download/1.0.0/debrief-windows-1.0.0-amd64.msi) | [MSI (arm64)](https://github.com/debrief-dev/debrief/releases/download/1.0.0/debrief-windows-1.0.0-arm64.msi) |
+| **Windows (portable)** | [EXE (amd64)](https://github.com/debrief-dev/debrief/releases/download/1.0.0/debrief-windows-1.0.0-amd64.exe) | [EXE (arm64)](https://github.com/debrief-dev/debrief/releases/download/1.0.0/debrief-windows-1.0.0-arm64.exe) |
+| **Ubuntu / Debian** | [DEB (amd64)](https://github.com/debrief-dev/debrief/releases/download/1.0.0/debrief-1.0.0-amd64.deb) | [DEB (arm64)](https://github.com/debrief-dev/debrief/releases/download/1.0.0/debrief-1.0.0-arm64.deb) |
+| **Fedora / RHEL** | [RPM (amd64)](https://github.com/debrief-dev/debrief/releases/download/1.0.0/debrief-1.0.0-amd64.rpm) | [RPM (arm64)](https://github.com/debrief-dev/debrief/releases/download/1.0.0/debrief-1.0.0-arm64.rpm) |
+| **Arch Linux** | [PKG (amd64)](https://github.com/debrief-dev/debrief/releases/download/1.0.0/debrief-1.0.0-amd64.pkg.tar.zst) | [PKG (arm64)](https://github.com/debrief-dev/debrief/releases/download/1.0.0/debrief-1.0.0-arm64.pkg.tar.zst) |
+| **Any Linux** | [tar.xz (amd64)](https://github.com/debrief-dev/debrief/releases/download/1.0.0/debrief-1.0.0-amd64.tar.xz) | [tar.xz (arm64)](https://github.com/debrief-dev/debrief/releases/download/1.0.0/debrief-1.0.0-arm64.tar.xz) |
## Development
@@ -63,4 +95,6 @@ Copyright © 2026 bosiakov
Licensed under MIT (see [LICENSE](LICENSE)).
-The font `ui/font/FiraCode-Regular.ttf` is licensed under the OFL-1.1. See [ui/font/LICENSE](ui/font/LICENSE) for details.
\ No newline at end of file
+The font `ui/font/FiraCode-Regular.ttf` is licensed under the OFL-1.1. See [ui/font/LICENSE](ui/font/LICENSE) for details.
+
+All fonts are legally licensed to Yauheni Basiakou via MyFonts.
\ No newline at end of file
diff --git a/appicon.png b/appicon.png
deleted file mode 100644
index 7aee145..0000000
Binary files a/appicon.png and /dev/null differ
diff --git a/assets/debrief-logo.png b/assets/debrief-logo.png
new file mode 100644
index 0000000..4d47e94
Binary files /dev/null and b/assets/debrief-logo.png differ
diff --git a/assets/demo.gif b/assets/demo.gif
new file mode 100644
index 0000000..94a9d79
Binary files /dev/null and b/assets/demo.gif differ
diff --git a/assets/demo.webm b/assets/demo.webm
new file mode 100644
index 0000000..878b300
Binary files /dev/null and b/assets/demo.webm differ
diff --git a/assets/make_demo.sh b/assets/make_demo.sh
new file mode 100755
index 0000000..4fa43b1
--- /dev/null
+++ b/assets/make_demo.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+set -euo pipefail
+
+SUPERCOMPRESS=false
+if [ "${1:-}" = "--supercompress" ]; then
+ SUPERCOMPRESS=true
+ shift
+fi
+
+if [ $# -lt 1 ]; then
+ echo "Usage: $0 [--supercompress] [video3 ...]"
+ exit 1
+fi
+
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+
+# Output
+GIF_OUT="$SCRIPT_DIR/demo.gif"
+WEBM_OUT="$SCRIPT_DIR/demo.webm"
+
+# Crop to app window (detected from frame analysis)
+CROP="crop=1618:1218:10:2"
+
+if [ "$SUPERCOMPRESS" = true ]; then
+ GIF_SCALE=""
+ GIF_LOSSY=100
+else
+ GIF_SCALE=""
+ GIF_LOSSY=80
+fi
+
+# Create concat list from arguments
+CONCAT_LIST=$(mktemp /tmp/concat_XXXXXX.txt)
+PALETTE=$(mktemp /tmp/palette_XXXXXX.png)
+trap "rm -f $CONCAT_LIST $PALETTE" EXIT
+
+for f in "$@"; do
+ echo "file '$(cd "$(dirname "$f")" && pwd)/$(basename "$f")'" >> "$CONCAT_LIST"
+done
+
+echo "==> Creating WebM..."
+ffmpeg -y -f concat -safe 0 -i "$CONCAT_LIST" \
+ -an \
+ -vf "$CROP,scale=809:609" \
+ -c:v libvpx-vp9 -crf 30 -b:v 0 \
+ "$WEBM_OUT"
+
+echo "==> Creating GIF (palette pass)..."
+ffmpeg -y -f concat -safe 0 -i "$CONCAT_LIST" \
+ -an \
+ -vf "${CROP}${GIF_SCALE},fps=20,palettegen=stats_mode=full:max_colors=128" \
+ "$PALETTE"
+
+echo "==> Creating GIF (render pass)..."
+ffmpeg -y -f concat -safe 0 -i "$CONCAT_LIST" -i "$PALETTE" \
+ -an \
+ -filter_complex "[0:v]${CROP}${GIF_SCALE},fps=20[v];[v][1:v]paletteuse=dither=floyd_steinberg" \
+ "$GIF_OUT"
+
+echo "==> Optimizing GIF with gifsicle..."
+gifsicle -O3 --lossy=$GIF_LOSSY "$GIF_OUT" -o "$GIF_OUT"
+
+echo "==> Done!"
+ls -lh "$GIF_OUT" "$WEBM_OUT"
diff --git a/nfpm.yaml b/assets/nfpm.yaml
similarity index 100%
rename from nfpm.yaml
rename to assets/nfpm.yaml
diff --git a/assets/set_version.sh b/assets/set_version.sh
new file mode 100755
index 0000000..90fdb1e
--- /dev/null
+++ b/assets/set_version.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -euo pipefail
+
+if [ $# -ne 1 ]; then
+ echo "Usage: $0 "
+ echo "Example: $0 0.1.0"
+ exit 1
+fi
+
+VERSION="$1"
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+README="$SCRIPT_DIR/../README.md"
+
+# Update version in URL path: releases/download// -> releases/download//
+sed -i '' "s|releases/download/[^/]*/|releases/download/${VERSION}/|g" "$README"
+
+# Update version in filenames: debrief--- -> debrief---
+sed -i '' "s|debrief-\([a-z]*\)-[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*-|debrief-\1-${VERSION}-|g" "$README"
+
+echo "Updated README.md links to version ${VERSION}"
+grep -o 'releases/download/[^)]*' "$README" | head -3