Terminal Markdown previewer — GUI-like experience.
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: auto generate changelog

RivoLink 190dd2a8 c238c85c

+242 -2
+126
CHANGELOG.md
··· 1 + # Changelog 2 + 3 + All notable changes to this project will be documented in this file. 4 + 5 + The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), 6 + and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 + 8 + <!-- next-version --> 9 + 10 + ## [[1.9.1](https://github.com/RivoLink/leaf/releases/tag/1.9.1)] - 2026-04-16 11 + 12 + ### Changed 13 + 14 + - improve status-bar shortcuts ([#25](https://github.com/RivoLink/leaf/pull/25)) 15 + - improve watch mode ([#26](https://github.com/RivoLink/leaf/pull/26)) 16 + 17 + ## [[1.9.0](https://github.com/RivoLink/leaf/releases/tag/1.9.0)] - 2026-04-16 18 + 19 + ### Added 20 + 21 + - open in editor ([#24](https://github.com/RivoLink/leaf/pull/24)) 22 + 23 + ## [[1.8.0](https://github.com/RivoLink/leaf/releases/tag/1.8.0)] - 2026-04-13 24 + 25 + ### Changed 26 + 27 + - refacto and optimize ([#23](https://github.com/RivoLink/leaf/pull/23)) 28 + 29 + ## [[1.7.0](https://github.com/RivoLink/leaf/releases/tag/1.7.0)] - 2026-04-12 30 + 31 + ### Changed 32 + 33 + - fuzzy picker optimization ([#22](https://github.com/RivoLink/leaf/pull/22)) 34 + 35 + ## [[1.6.1](https://github.com/RivoLink/leaf/releases/tag/1.6.1)] - 2026-04-12 36 + 37 + ### Fixed 38 + 39 + - minor ux bugs ([#21](https://github.com/RivoLink/leaf/pull/21)) 40 + 41 + ## [[1.6.0](https://github.com/RivoLink/leaf/releases/tag/1.6.0)] - 2026-04-11 42 + 43 + ### Added 44 + 45 + - fuzzy markdown picker ([#20](https://github.com/RivoLink/leaf/pull/20)) 46 + 47 + ## [[1.5.1](https://github.com/RivoLink/leaf/releases/tag/1.5.1)] - 2026-04-11 48 + 49 + ### Docs 50 + 51 + - leaf update guides ([#18](https://github.com/RivoLink/leaf/pull/18)) 52 + - uninstall guides ([#19](https://github.com/RivoLink/leaf/pull/19)) 53 + 54 + ## [[1.5.0](https://github.com/RivoLink/leaf/releases/tag/1.5.0)] - 2026-04-10 55 + 56 + ### Added 57 + 58 + - auto update ([#17](https://github.com/RivoLink/leaf/pull/17)) 59 + 60 + ## [[1.4.2](https://github.com/RivoLink/leaf/releases/tag/1.4.2)] - 2026-04-10 61 + 62 + ### Docs 63 + 64 + - contributing and security guides ([#16](https://github.com/RivoLink/leaf/pull/16)) 65 + 66 + ### Changed 67 + 68 + - improve preview design ([#15](https://github.com/RivoLink/leaf/pull/15)) 69 + 70 + ## [[1.4.1](https://github.com/RivoLink/leaf/releases/tag/1.4.1)] - 2026-04-10 71 + 72 + ### Fixed 73 + 74 + - using static runners version ([#14](https://github.com/RivoLink/leaf/pull/14)) 75 + 76 + ### Changed 77 + 78 + - update build runners version ([#12](https://github.com/RivoLink/leaf/pull/12)) 79 + - update windows installer ([#13](https://github.com/RivoLink/leaf/pull/13)) 80 + 81 + ## [[1.4.0](https://github.com/RivoLink/leaf/releases/tag/1.4.0)] - 2026-04-10 82 + 83 + ### Changed 84 + 85 + - code review optimization ([#11](https://github.com/RivoLink/leaf/pull/11)) 86 + 87 + ## [[1.3.0](https://github.com/RivoLink/leaf/releases/tag/1.3.0)] - 2026-04-09 88 + 89 + ### Added 90 + 91 + - file picker ([#9](https://github.com/RivoLink/leaf/pull/9)) 92 + 93 + ### Changed 94 + 95 + - improve windows installer ([#10](https://github.com/RivoLink/leaf/pull/10)) 96 + 97 + ## [[1.2.0](https://github.com/RivoLink/leaf/releases/tag/1.2.0)] - 2026-04-08 98 + 99 + ### Fixed 100 + 101 + - Cargo.lock version ([#8](https://github.com/RivoLink/leaf/pull/8)) 102 + 103 + ### Changed 104 + 105 + - release installers ([#5](https://github.com/RivoLink/leaf/pull/5)) 106 + - improve list alignment ([#6](https://github.com/RivoLink/leaf/pull/6)) 107 + - add help modal ([#7](https://github.com/RivoLink/leaf/pull/7)) 108 + 109 + ## [[1.1.0](https://github.com/RivoLink/leaf/releases/tag/1.1.0)] - 2026-04-08 110 + 111 + ### Added 112 + 113 + - custom themes ([#1](https://github.com/RivoLink/leaf/pull/1)) 114 + 115 + ### Fixed 116 + 117 + - workflow job name ([#4](https://github.com/RivoLink/leaf/pull/4)) 118 + 119 + ### Changed 120 + 121 + - improve design ([#2](https://github.com/RivoLink/leaf/pull/2)) 122 + - release workflows ([#3](https://github.com/RivoLink/leaf/pull/3)) 123 + 124 + ## [[1.0.0](https://github.com/RivoLink/leaf/releases/tag/1.0.0)] - 2026-04-07 125 + 126 + Initial release.
+103
scripts/changelog-update.sh
··· 1 + #!/usr/bin/env sh 2 + set -eu 3 + 4 + usage() { 5 + echo "Usage: $0 <previous_tag> <new_tag>" >&2 6 + echo "Example: $0 1.9.1 1.10.0" >&2 7 + exit 1 8 + } 9 + 10 + PREV_TAG="${1:-}" 11 + NEW_TAG="${2:-}" 12 + 13 + [ -n "$PREV_TAG" ] || usage 14 + [ -n "$NEW_TAG" ] || usage 15 + 16 + REPO_URL="https://github.com/${GITHUB_REPOSITORY:-RivoLink/leaf}" 17 + DATE_UTC="$(date -u +%Y-%m-%d)" 18 + SENTINEL="<!-- next-version -->" 19 + 20 + grep -q "^${SENTINEL}$" CHANGELOG.md || { 21 + echo "Missing sentinel '${SENTINEL}' in CHANGELOG.md" >&2 22 + exit 1 23 + } 24 + 25 + # Parse each merge commit: subject carries "#N", body's first 26 + # non-empty line is the PR title. One output line per PR. 27 + PR_LINES="$( 28 + git log --first-parent --merges "$PREV_TAG..HEAD" \ 29 + --pretty='format:%s%x09%b%x00' \ 30 + | awk -v url="$REPO_URL" 'BEGIN{RS="\0"; FS="\t"} NF { 31 + if (match($1, /#[0-9]+/)) { 32 + pr_full = substr($1, RSTART, RLENGTH) 33 + pr_num = substr(pr_full, 2) 34 + } else { pr_full = ""; pr_num = "" } 35 + n = split($2, b, "\n"); title = "" 36 + for (i = 1; i <= n; i++) if (b[i] != "") { title = b[i]; break } 37 + if (title != "") { 38 + if (pr_full != "") 39 + print title " ([" pr_full "](" url "/pull/" pr_num "))" 40 + else 41 + print title 42 + } 43 + }' 44 + )" 45 + 46 + [ -n "$PR_LINES" ] || { 47 + echo "No merged PR found between $PREV_TAG and $NEW_TAG" >&2 48 + exit 1 49 + } 50 + 51 + DOCS_FILE="$(mktemp)" 52 + ADDED_FILE="$(mktemp)" 53 + FIXED_FILE="$(mktemp)" 54 + CHANGED_FILE="$(mktemp)" 55 + NEW_SECTION_FILE="$(mktemp)" 56 + TMP_CHANGELOG="$(mktemp)" 57 + trap 'rm -f "$DOCS_FILE" "$ADDED_FILE" "$FIXED_FILE" "$CHANGED_FILE" "$NEW_SECTION_FILE" "$TMP_CHANGELOG"' EXIT 58 + 59 + printf '%s\n' "$PR_LINES" | while IFS= read -r line; do 60 + [ -z "$line" ] && continue 61 + case "$line" in 62 + docs:*|docs\ *) target="$DOCS_FILE" ;; 63 + feat:*|feat\ *) target="$ADDED_FILE" ;; 64 + fix:*|fix\ *) target="$FIXED_FILE" ;; 65 + *) target="$CHANGED_FILE" ;; 66 + esac 67 + stripped="$(printf '%s' "$line" | sed -E 's/^[a-z]+: *//')" 68 + [ -n "$stripped" ] || continue 69 + printf -- '- %s\n' "$stripped" >> "$target" 70 + done 71 + 72 + { 73 + printf '## [[%s](%s/releases/tag/%s)] - %s\n\n' \ 74 + "$NEW_TAG" "$REPO_URL" "$NEW_TAG" "$DATE_UTC" 75 + for pair in "Docs:$DOCS_FILE" "Added:$ADDED_FILE" \ 76 + "Fixed:$FIXED_FILE" "Changed:$CHANGED_FILE"; do 77 + name="${pair%%:*}" 78 + file="${pair#*:}" 79 + if [ -s "$file" ]; then 80 + printf '### %s\n\n' "$name" 81 + cat "$file" 82 + printf '\n' 83 + fi 84 + done 85 + } > "$NEW_SECTION_FILE" 86 + 87 + awk -v section_file="$NEW_SECTION_FILE" ' 88 + /^<!-- next-version -->$/ { 89 + print 90 + print "" 91 + while ((getline line < section_file) > 0) print line 92 + # Drop the line if blank (avoid double blank); preserve it 93 + # otherwise so content is not lost on a manually edited file. 94 + if ((getline extra) > 0 && extra != "") print extra 95 + next 96 + } 97 + { print } 98 + ' CHANGELOG.md > "$TMP_CHANGELOG" 99 + 100 + # mktemp defaults to 0600 101 + # preserve the original CHANGELOG.md mode. 102 + chmod --reference=CHANGELOG.md "$TMP_CHANGELOG" 103 + mv "$TMP_CHANGELOG" CHANGELOG.md
+13 -2
scripts/release-cut.sh
··· 162 162 exit 1 163 163 fi 164 164 165 - # Refresh Cargo.lock so the root package version stays in sync in the release commit. 166 165 cargo update --workspace >/dev/null 167 166 168 - git add Cargo.toml Cargo.lock 167 + PREV_TAG="$( 168 + git tag --sort=-v:refname \ 169 + | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' \ 170 + | head -n 1 171 + )" 172 + [ -n "$PREV_TAG" ] || { 173 + echo "No previous semver tag found" >&2 174 + exit 1 175 + } 176 + 177 + ./scripts/changelog-update.sh "$PREV_TAG" "$TAG" 178 + 179 + git add Cargo.toml Cargo.lock CHANGELOG.md 169 180 git commit -m "$VERSION" 170 181 git tag "$TAG" 171 182 git push origin "HEAD:$BRANCH"