
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
dsh-air is a lightweight DSH web plugin for history recall, rich-draft editing, edit-aware branching, and BTW side conversations.
ArrowUp on an empty composer to recall the newest complete, restorable draft.ArrowUp to move toward older messages.ArrowDown to move toward newer messages.ArrowDown past the newest message to clear the composer and stop navigating history.Ctrl+R to open a reverse history search: type a query and the newest matching message is previewed immediately.
Ctrl+R or ArrowUp steps to the next older unique match; Ctrl+S or ArrowDown steps to the next newer unique match.Enter accepts the previewed match as the editable draft; Esc (or Ctrl+C) restores the exact draft and caret you had before searching.reverse-i-search: status bar appears above the composer while searching: it shows your query, the highlighted match preview, a 1/N match counter, and the ↑ older · ↓ newer · ⏎ accept · esc cancel hints. A query with no match shows no match and keeps the search open.history.jsonl; the same text sent again later is a separate recall step).history.jsonl), so ArrowUp recalls what you sent earlier even in a brand-new conversation and after a reload (capped at 500 entries by default; override with localStorage dsh-air:history:limit (10–5000). Clear recall storage in the console with localStorage.removeItem('dsh-air:history:global') and remove dsh-air:drafts:* keys, or call the exported clear helpers).docs/history-global.md, docs/history-navigation-alignment.md.app_backtrack semantics:
ArrowUp / ArrowDown and Ctrl+R now recall versioned DraftSnapshot records instead of plain strings.BTW is the web implementation of a temporary side conversation. /btw and /side are aliases:
/btw or /side and press Enter to open an empty BTW right sidebar./side explain this, to fork and ask immediately./btw or /side again from the parent safely closes and replaces its existing BTW child. Follow-up questions belong in the right-hand native composer; a BTW child cannot recursively create another BTW.On the web, BTW is shown in a docked right sidebar without replacing the globally selected DSH session:
conversation slot tree used by the main pane fills the sidebar directly. Messages, reasoning, tool calls, approvals, status surfaces, queue controls, attachments, and the composer therefore use the same components and behavior on both sides.Ctrl+/ / Ctrl+7 session switch and no Open branch / Return to main path. Interactions inside BTW remain in the right pane and do not change the globally selected main session.Esc and Ctrl+C are left to the Host UI; BTW closes only through its explicit upper-right close button (or lifecycle cleanup).The public DSH client API creates BTW through an ordinary durable child session: a completed prefix uses sessions.fork(), while an interrupted first turn uses the runtime's session-create capability in the same workspace. The API does not expose an ephemeral fork or child deletion/unsubscribe. The plugin therefore sends the boundary with the first admitted child prompt, projects that envelope out of the Host's native session/input snapshots, and archives the child through workspaces.archiveSession() after safe cleanup. The host-owned session log still exists.
Recall order still comes from one global localStorage history shared by all
conversations (default cap 500 entries; overridable via dsh-air:history:limit), while each source session stores
versioned rich-draft snapshots. The current transcript window, persisted
snapshots, and queue-to-durable handoff are merged by stable identity. Images
store only Host-provided durable descriptors and are resolved again on recall;
missing browser/Host resources produce a notice instead of dropping the rest
of the draft. Unknown semantic content blocks are still skipped as a whole to
avoid presenting a lossy projection as complete. Large-paste payloads also
live in localStorage, so clearing site data makes their chips unrecoverable.
Install the published package from npm:
dsh plugin --profile web add dsh-air
Restart DSH after installation. To remove the plugin:
dsh plugin --profile web remove dsh-air
Update to the latest npm release with:
dsh plugin --profile web update dsh-air --latest
Restart DSH after updating.
pnpm typecheck
pnpm test
pnpm build
History navigation and global ordering live in src/core/history-navigation.ts and src/core/history-persistence.ts; the rich draft model and storage live in src/core/draft-snapshot.ts and src/core/draft-persistence.ts, integrated by src/client/HistoryKeyHandler.tsx. Paste references and chips live in src/core/paste-chip.ts, src/client/LargePasteController.ts, and src/client/RichComposerTools.tsx. Fork editing lives in src/core/fork-boundary.ts, src/client/ForkEditController.ts, and src/client/ForkEditEnhancer.tsx. BTW boundary/native-snapshot logic and UI live in the corresponding btw-* core files plus BtwController.ts, BtwNativeConversation.tsx, and BtwPanel.tsx.
FAQs
Lightweight DSH plugin for history recall and BTW side conversations.
We found that dsh-air demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.