Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
38 changes: 36 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,38 @@
<p>
<img src="assets/debrief-logo.png" alt="Debrief" width="400">
</p>

[![License](https://img.shields.io/github/license/debrief-dev/debrief)](LICENSE)
[![Go](https://img.shields.io/github/go-mod/go-version/debrief-dev/debrief)](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.

<p>
<img src="assets/demo.gif" alt="Debrief Demo" width="600">
</p>

## 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

Expand Down Expand Up @@ -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.
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.
Binary file removed appicon.png
Binary file not shown.
Binary file added assets/debrief-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/demo.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/demo.webm
Binary file not shown.
64 changes: 64 additions & 0 deletions assets/make_demo.sh
Original file line number Diff line number Diff line change
@@ -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] <video1> <video2> [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"
File renamed without changes.
21 changes: 21 additions & 0 deletions assets/set_version.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/bash
set -euo pipefail

if [ $# -ne 1 ]; then
echo "Usage: $0 <version>"
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/<old_version>/ -> releases/download/<new>/
sed -i '' "s|releases/download/[^/]*/|releases/download/${VERSION}/|g" "$README"

# Update version in filenames: debrief-<platform>-<old_version>-<arch> -> debrief-<platform>-<new>-<arch>
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
Loading