At the terminal prompt (mnemonic: ), the tool turns the terminal's echo off. A SIGINT (Ctrl-C), SIGTERM or SIGHUP that arrives while the prompt is waiting ends the tool at once, as the README's "Errors" section says, but leaves echo off: the user's shell, and whatever runs in that terminal afterwards, no longer shows what is typed until stty sane or reset.
Where: ask() in internal/mnemonic/mnemonic.go. Nothing catches these signals while the prompt waits, so the tool is killed before the terminal's settings are put back. Found during the review of #90.
How to see, in bash on a terminal with no mnemonic source set:
./keyfunc age pub
# press Ctrl-C at the prompt; the status is 130
cat
# what is typed now is not shown
Definition of done: a SIGINT, SIGTERM or SIGHUP at the mnemonic prompt puts the terminal's settings back as they were before the prompt, then ends the tool with the status the README states (130 for SIGINT), as now. A signal the tool was started with set to be ignored stays ignored, as internal/cli/signals already does. A test runs the tool as a subprocess on a pseudo-terminal, as the test for #78 does, sends SIGINT at the prompt, and checks the status and that the terminal's settings are as they were. The README's "Errors" section says the terminal is put back.
Severity: minor. Nothing is derived or lost; the user's terminal is left unusable until reset.
Model: opus-5-5
At the terminal prompt (`mnemonic: `), the tool turns the terminal's echo off. A SIGINT (Ctrl-C), SIGTERM or SIGHUP that arrives while the prompt is waiting ends the tool at once, as the README's "Errors" section says, but leaves echo off: the user's shell, and whatever runs in that terminal afterwards, no longer shows what is typed until `stty sane` or `reset`.
Where: `ask()` in `internal/mnemonic/mnemonic.go`. Nothing catches these signals while the prompt waits, so the tool is killed before the terminal's settings are put back. Found during the review of https://git.eeqj.de/sneak/keyfunc/pulls/90.
How to see, in bash on a terminal with no mnemonic source set:
./keyfunc age pub
# press Ctrl-C at the prompt; the status is 130
cat
# what is typed now is not shown
**Definition of done**: a SIGINT, SIGTERM or SIGHUP at the mnemonic prompt puts the terminal's settings back as they were before the prompt, then ends the tool with the status the README states (130 for SIGINT), as now. A signal the tool was started with set to be ignored stays ignored, as `internal/cli/signals` already does. A test runs the tool as a subprocess on a pseudo-terminal, as the test for https://git.eeqj.de/sneak/keyfunc/issues/78 does, sends SIGINT at the prompt, and checks the status and that the terminal's settings are as they were. The README's "Errors" section says the terminal is put back.
Severity: minor. Nothing is derived or lost; the user's terminal is left unusable until reset.
Model: opus-5-5
clawbot
self-assigned this 2026-10-14 23:02:59 +02:00
Built in #92: the prompt puts the terminal back before a SIGINT, SIGTERM or SIGHUP ends the tool, which is still ended by that signal.
Model: opus-5-5
Built in https://git.eeqj.de/sneak/keyfunc/pulls/92: the prompt puts the terminal back before a SIGINT, SIGTERM or SIGHUP ends the tool, which is still ended by that signal.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
At the terminal prompt (
mnemonic:), the tool turns the terminal's echo off. A SIGINT (Ctrl-C), SIGTERM or SIGHUP that arrives while the prompt is waiting ends the tool at once, as the README's "Errors" section says, but leaves echo off: the user's shell, and whatever runs in that terminal afterwards, no longer shows what is typed untilstty saneorreset.Where:
ask()ininternal/mnemonic/mnemonic.go. Nothing catches these signals while the prompt waits, so the tool is killed before the terminal's settings are put back. Found during the review of #90.How to see, in bash on a terminal with no mnemonic source set:
Definition of done: a SIGINT, SIGTERM or SIGHUP at the mnemonic prompt puts the terminal's settings back as they were before the prompt, then ends the tool with the status the README states (130 for SIGINT), as now. A signal the tool was started with set to be ignored stays ignored, as
internal/cli/signalsalready does. A test runs the tool as a subprocess on a pseudo-terminal, as the test for #78 does, sends SIGINT at the prompt, and checks the status and that the terminal's settings are as they were. The README's "Errors" section says the terminal is put back.Severity: minor. Nothing is derived or lost; the user's terminal is left unusable until reset.
Model: opus-5-5
Plan: as written. It starts after #90 lands, which rewrites the same function.
Model: opus-5-5
Built in #92: the prompt puts the terminal back before a SIGINT, SIGTERM or SIGHUP ends the tool, which is still ended by that signal.
Model: opus-5-5