prep: Fix increment script to auto-commit dirty worktree before version bump

This commit is contained in:
Laan Tungir
2026-03-27 09:43:19 -04:00
parent e6de105478
commit 4d0b638f7d
4 changed files with 72 additions and 10 deletions
+3 -3
View File
@@ -11,20 +11,20 @@ hotkey=Ctrl+Alt+V
type_delay_us=8000
max_record_seconds=30
# always-on VAD controls
always_on=1
always_on=0
# legacy window size (unused by new VAD pipeline, kept for compatibility)
always_on_window_ms=1400
# live level threshold (0.0 - 1.0)
vad_peak_threshold=0.0460
# level must stay above threshold this long before speech starts
vad_trigger_ms=100
vad_trigger_ms=153
# level must stay below threshold this long before speech ends
vad_release_ms=300
# include this much pre-trigger audio in transcript segment
vad_preroll_ms=500
# discard segments shorter than this
vad_min_speech_ms=250
vad_min_speech_ms=692
# hard cap for one speech segment
vad_max_speech_ms=15000
+34 -5
View File
@@ -37,6 +37,10 @@ EXAMPLES:
./increment_and_push.sh -m "Add live debug indicators"
./increment_and_push.sh -M "Breaking config format update"
./increment_and_push.sh -r -m "Release minor update"
NOTES:
- If the working tree is dirty, the script auto-commits pending changes first
as: prep: <commit message>
EOF
}
@@ -47,11 +51,36 @@ check_git_repo() {
fi
}
require_clean_worktree() {
if ! git -C "$ROOT_DIR" diff --quiet || ! git -C "$ROOT_DIR" diff --cached --quiet; then
print_error "Working tree is not clean. Commit or stash changes before running this script."
exit 1
has_pending_changes() {
if ! git -C "$ROOT_DIR" diff --quiet; then
return 0
fi
if ! git -C "$ROOT_DIR" diff --cached --quiet; then
return 0
fi
if [[ -n "$(git -C "$ROOT_DIR" ls-files --others --exclude-standard)" ]]; then
return 0
fi
return 1
}
auto_commit_pending_changes() {
local message="$1"
if ! has_pending_changes; then
return 0
fi
print_warning "Working tree is dirty. Auto-committing pending changes before version bump."
git -C "$ROOT_DIR" add -A
if git -C "$ROOT_DIR" diff --cached --quiet; then
print_warning "No staged changes after auto-add; continuing."
return 0
fi
git -C "$ROOT_DIR" commit -m "prep: ${message}" >/dev/null
print_success "Committed pending changes: prep: ${message}"
}
latest_version_tag() {
@@ -221,7 +250,7 @@ fi
print_status "voice_linux increment and push"
check_git_repo
require_clean_worktree
auto_commit_pending_changes "$COMMIT_MESSAGE"
LATEST_TAG="$(latest_version_tag || true)"
if [[ -z "$LATEST_TAG" ]]; then
+34
View File
@@ -992,6 +992,26 @@ static unsigned int voice_cmd_mods_from_gdk(guint state) {
return mods;
}
static int is_modifier_keyval(guint keyval) {
switch (keyval) {
case GDK_KEY_Shift_L:
case GDK_KEY_Shift_R:
case GDK_KEY_Control_L:
case GDK_KEY_Control_R:
case GDK_KEY_Alt_L:
case GDK_KEY_Alt_R:
case GDK_KEY_Meta_L:
case GDK_KEY_Meta_R:
case GDK_KEY_Super_L:
case GDK_KEY_Super_R:
case GDK_KEY_Hyper_L:
case GDK_KEY_Hyper_R:
return 1;
default:
return 0;
}
}
static gboolean on_window_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_data) {
(void)widget;
gui_state_t *s = (gui_state_t *)user_data;
@@ -999,6 +1019,20 @@ static gboolean on_window_key_press(GtkWidget *widget, GdkEventKey *event, gpoin
if (!s->cmd_capture_armed) return FALSE;
if (event->keyval == GDK_KEY_Escape) {
s->cmd_capture_armed = 0;
s->cmd_capture_keyval = 0;
s->cmd_capture_mods = 0;
gtk_label_set_text(GTK_LABEL(s->cmd_capture_label), "Capture cancelled");
gtk_button_set_label(GTK_BUTTON(s->cmd_capture_btn), "Capture");
return TRUE;
}
if (is_modifier_keyval(event->keyval)) {
gtk_label_set_text(GTK_LABEL(s->cmd_capture_label), "Hold modifier(s), then press a non-modifier key...");
return TRUE;
}
s->cmd_capture_keyval = (unsigned int)event->keyval;
s->cmd_capture_mods = voice_cmd_mods_from_gdk(event->state);
s->cmd_capture_armed = 0;
+1 -2
View File
@@ -21,6 +21,5 @@ open bracket|text|[
close bracket|text|]
open brace|text|{
close brace|text|}
over|key|65293:0
end of command|key|65293:3
over.|text|Return
over.|key|65293:2