* fix(web-shell): defer transcript-appending local commands while a turn streams
Local slash commands that echo into the transcript (/context, /stats,
/status, /bug, /model --voice, /skills, /tools, /extensions) appended a user
message mid-turn, which applyTurnCollapse treats as a turn boundary — splitting
the active turn and corrupting its tool/thinking/token counts.
Route these echoes through a single choke point (appendOrDeferLocalUserMessage):
while a turn streams they defer to the prompt queue and re-dispatch as their own
clean turn once it settles. showContextUsage self-guards so the keyboard,
status-bar button and in-chat "context detail" click are all covered.
/extensions install defers via a top-of-branch guard, replacing its bespoke
"wait for turn" message.
* fix(web-shell): disable queue "insert" for command entries
The queue's "insert" action injects a queued message's raw text into the
running turn via enqueueMidTurnMessage; for a slash/shell command the model
would only see the literal "/context …" and the command would never run.
Disable (grey out) the insert action for command entries and guard the
handler, so commands only run when the queue drains and re-dispatches them
through handleSubmit. Plain prompts are unaffected.