Skip to content

Releases: crcatala/overshare

v0.4.2

Choose a tag to compare

@crcatala crcatala released this 26 Oct 19:24
c3e79f4

Changed

  • Sessions in throwaway workspaces are marked as scratch instead of each counting as a project of its own: a T3 Code
    thread started without a project (…/t3/scratch/<date>-<title>-<hash>, named by its title) and a folder in a
    temporary folder (/tmp, /var/tmp, macOS's /var/folders/…/T, $TMPDIR; Claude Code's scratchpads
    there are just scratch). A git repository cloned into a temporary folder keeps its name.
  • overshare archive files them all in one _scratch folder, with scratch: true in the frontmatter. The next run
    moves files already archived elsewhere into it.

Fixed

  • overshare archive gave sessions whose ids share a name before their UUID (a pi session started by a tool, such
    as <name>-<uuid>) the same short id, so they overwrote one file. The short id now comes from the UUID wherever it
    is in the id, and an id without one that is longer than eight characters is hashed. A file an older version wrote
    for such sessions (named with the first eight characters, which they shared) is left as it is; delete it by hand.

v0.4.1

Choose a tag to compare

@crcatala crcatala released this 26 Oct 17:21
f908d68

Changed

  • A session's project is now the repository it ran in, not the last folder of its working directory: a session in
    a subfolder or a git worktree is named after the repository (the worktree's main checkout, found through git's
    files or, for a removed worktree, from its path: T3 Code, herdr, Claude Code, Codex and <repo>/.worktrees
    layouts). Sessions from different subfolders of one repository now share its name. This applies to browse
    (and its search), shares and the archive; overshare list still shows the transcript's folder.
  • overshare archive puts each file in a folder per project (<project>/<date>_<harness>_<project>_<id>.md) and
    records a worktree session's worktree in the frontmatter. A file whose name changes when it is rewritten is moved,
    not copied. The first run after upgrading rewrites every file once and moves an existing archive into project
    folders (with or without frontmatter).

v0.4.0

Choose a tag to compare

@crcatala crcatala released this 26 Oct 14:33
fc18714

Added

  • overshare archive saves redacted sessions as markdown files on your machine, in
    ~/.local/share/overshare/archive by default (config archive.dir, or -o). Archive one session, or every
    session active in the last 30 days with --all (--since 7d, --since 2026-10-01). It runs the same redaction
    as publish but never uploads. Redacted secrets and suspicious values don't stop a file from being written:
    the run lists them for review. A session the final re-scan blocks is held back unless you pass --force.
    Files have YAML frontmatter (dates, harness, branch, the session file's path with your home folder hidden,
    token usage, finding counts). A file is rewritten only when its session has changed since. The default mode is
    minimal: each prompt and the final reply of its turn. Prompts are escaped so they show exactly as typed.
    See Archiving.

v0.3.0

Choose a tag to compare

@crcatala crcatala released this 21 Oct 13:39
81cd4ad

Added

  • The viewer's token rail has a Skills list with every skill loaded in the session, typed as a
    command or loaded by the model. Hover a skill to see each load and who made it, and click one to
    jump to it. Skills typed as a command (such as /assess-review-feedback) used to be missing,
    because the rail only listed the Skill tool's calls. pi sessions now record skill loads too: a
    typed /skill:name, and a read of a SKILL.md.
  • The session viewer and exported HTML pages show the overshare logo as their browser tab icon. The
    landing page adds a favicon.ico fallback and an Apple touch icon for iOS home screens.
  • Redaction also uses the high-confidence rules of
    Betterleaks, about 340 provider token formats, next
    to the existing detectors. Formats those missed are now caught (Aikido, Canva, Devin, MongoDB Atlas
    service accounts, Zuplo and others), and some they found only at medium confidence (Deno, Ramp)
    are now high. Only the rules' patterns are used: nothing is sent to a provider to check a value.

Changed

  • Redaction placeholders and report findings are named after the Betterleaks rule when one finds
    the token, so [REDACTED:github-v2] becomes [REDACTED:github-pat] and aws-access_keys becomes
    aws-access-token. Shares already published keep their old labels, and the allowlist is
    unaffected (it matches values, not rule names).

  • Fewer sessions are marked needs review for no reason. Redaction no longer uses the
    @sanity-labs/secret-scan library: Betterleaks' rules and overshare's own find secret shapes
    alone. That library's generic keyword rules mostly matched things that are not secrets (tool-call
    and message ids, code, JSON). The provider formats it was relied on for are still caught, including a
    token followed by ,, ), . or & (Anthropic, OpenAI, Stripe, Groq, Hugging Face, npm, xAI
    and others), and a JWT on one line, with a short payload or in pretty-printed JSON, which
    overshare's own rules now find. Some placeholders change name with it, such as
    [REDACTED:anthropic] becoming [REDACTED:anthropic-key].

  • Opening the viewer with no share in the link shows a start page instead of an error: what
    overshare is, a box to open a pasted gist URL or share link, the example session, and how to
    share your own. A link whose hash names no share still shows an error, and error pages
    link back to the start page.

Fixed

  • Redaction catches four kinds of secret it used to miss. A password assignment or an auth header
    inside JSON that is itself held in a JSON string ({\"password\":\"…\"}, as in a log line or an
    API response a tool printed). A JWT wrapped over several lines. A private key cut off before its
    END line, as in head id_rsa or a truncated tool result. And a password that merely starts
    with a word like true, null or string (Trueblue2024), which used to be taken for a
    placeholder. A token glued straight onto another one is now redacted too, rather than left for
    the final re-scan to block.
  • Two matches that partly overlap are both redacted in full. Only the longer one used to be, leaving
    the rest of the other in the share, too short for any rule (or the final re-scan) to recognise.
  • Text that merely mentions [REDACTED no longer hides a secret written after it, up to the next
    ], from redaction and from the final re-scan.
  • overshare browse takes a paste in its search boxes: the session list's / search, the viewer's
    message search and the filter in dialogs such as Repo. A paste used to be dropped. Pasted line breaks
    and tabs become spaces.
  • A viewer link with a malformed % escape after the # shows an error instead of leaving the
    viewer stuck on "loading viewer".

v0.2.0

Choose a tag to compare

@crcatala crcatala released this 06 Oct 15:08
0626956

Added

  • overshare browse shows a shared session's latest link in the preview and the session viewer,
    and y prints the whole link in the footer, so it can be copied by hand in terminals without
    OSC 52 clipboard support.
  • --include-system-prompt (with --mode full) shares Claude Code's system prompt, redacted like the
    rest and shown collapsed above the first turn. Instruction files (CLAUDE.md, AGENTS.md) are still
    never shared; docs/redaction.md explains why.
  • The token rail's charts are easier to read and navigate: hovering a bar shows a card with its
    context split into cache read, cache write and uncached input (drawn to scale), its output and
    cost, any cache events and, for the turn chart, the prompt, a small chart of the turn's model calls
    and its tool calls. Model-call bars in the turn box now go to the step the call produced when
    clicked, and their card lists what the call did (thinking, reply, tool calls).
  • The viewer's loading screen is a short log of what it's doing (fetching from the share's host,
    reading the format and size, rendering N turns), with a spinner on the current step and how long
    each finished step took. It waits 300ms before showing, so fast loads don't flash it, and a failed
    load marks the step that failed above the error.

Removed

  • The viewer's timeline and hybrid design variants, and the IBM Plex Sans font only hybrid
    used. Links and saved defaults that name either fall back to the reader's own variant.

Fixed

  • Following a link to a different share in the viewer shows the loading screen instead of leaving
    the previous session up until the new one renders. A slower earlier load no longer replaces the
    newer one when it finishes last.
  • A share with a malformed tool group (its calls or commands not a list) no longer stops the
    whole session from showing: the transcript shows that turn as a placeholder, as it already did,
    and the token rail renders around it. A model-call card shows a step it can't read as
    "couldn't be shown" instead of not opening.

Security

  • overshare serve and demo refuse requests whose Host names a domain other than localhost, an
    IP address, the --host value or a name passed to the new --allowed-host, so a web page can't
    read the served shares through DNS rebinding.
  • overshare serve no longer serves files beside the viewer directory whose names share its
    prefix (e.g. viewer/dist/standalone.html via /s/..%2fstandalone.html).
  • A Claude Code session rewound to before a longer stretch of work no longer shares the discarded
    branch: only the turns on the current branch are exported, in every mode. Before, when the kept
    branch held less than half the session's messages, every entry in the file was exported. An
    unknown or empty --leaf is now an error (Claude Code and pi) instead of exporting the whole file
    or, for an empty one, the latest branch.

v0.1.0

Choose a tag to compare

@crcatala crcatala released this 05 Oct 21:58
e717ae5

Added

  • Initial public release of the overshare CLI (also installed as ovs).
  • Share Claude Code and pi sessions as unlisted links through a secret GitHub gist or a public
    Cloudflare R2 bucket, with report, export, publish and delete commands.
  • Four share modes (full, brief, minimal, prompts), applied before redaction so omitted
    detail is never uploaded.
  • Layered local redaction: structural drops, exact known values (environment, project .env
    files, opt-in credential stores, --secrets-file), secret patterns, path and email scrubbing,
    and a final re-scan of the exact payload that blocks publishing on leftovers.
  • overshare browse, an interactive terminal browser to search, preview and publish local
    sessions.
  • A static, backend-free web viewer with design variants, token and cost rails, cache-miss
    detection and subagent usage, plus self-hosting on Cloudflare.
  • Single-file HTML export (overshare export -o session.html) that opens offline.
  • overshare demo, serve and fixtures for trying the viewer on fake sessions without
    uploading anything.
  • Claude Code skill and pi extension integrations (/share-session).