Unsaved Form Input: The One Thing Suspending Can Lose
Unsaved form input is text you have typed into a page but not yet submitted. Because suspending reloads the tab, that text would be lost, so Scalpel protects a tab with unsaved input until you submit the form or reset it.
Why it matters
Native tab suspension works by reloading the page. That reload drops anything you have typed into a form but not sent. If you are drafting an email, writing a comment, or filling out a complex form and a tab suspends mid-typing, your words vanish when the tab wakes up. Scalpel detects this and blocks the suspend until you either submit or manually clear the form. It is the one real cost of discarding a tab, and this exclusion closes the gap.
How it works
When you type into a form field, Scalpel's content script listens for the first input event on that page. The moment typing starts, the script tells the background worker: this tab has unsaved changes. From then on, the tab is protected from the automatic sweep and from manual suspend buttons. If you submit the form or click a reset button, the script re-arms the guard, so the tab becomes suspendable again on the next keystroke.
The guard works at the page level. It does not read your text; it only sends a yes-or-no signal: "typing detected" or "no typing now." That boundary matters for privacy. The extension knows you started editing but never sees what you typed.
Pinned tabs, audible tabs, and never-suspend sites all bypass suspension too. Unsaved input exclusion is just another layer in the same chain.
What does not matter
The guard does not distinguish between a single character and a novel. One keystroke triggers the protection the same as one hundred. That is fine; a reload clears either. It also does not trigger on auto-fill: only genuine edits (keyboard, clipboard paste, drag-drop) count as typing. And it does not persist across a browser restart; if you close the browser mid-draft, that is on you.
Code example
Here is a form field that will trigger the unsaved-input guard:
<form>
<label for="email">Email:</label>
<input type="email" id="email" />
<label for="message">Message:</label>
<textarea id="message"></textarea>
<button type="submit">Send</button>
</form>
When you click into the <textarea> and type a single character, Scalpel detects the input event and blocks suspension. Click Submit or manually select all and delete the text, and the guard re-arms. This is why the setting is on by default.
How Scalpel shows it
Scalpel Tab Suspender lists unsaved-input protection in the settings panel, where you can toggle it on or off. By default it is on. The extension does not show you which tab has unsaved input (that would require reading the form state on every page load, a privacy violation). But if you try to suspend a tab with active edits, the suspend button does nothing silently; the page stays awake.