Skip to content

birdclaw 0.6.0

Choose a tag to compare

@steipete steipete released this 22 May 12:45
· 126 commits to main since this release
v0.6.0
50bb045

Release proof

0.6.0 - 2026-05-22

Added

  • Add birdclaw dms sync/list --mode xurl|auto for recent OAuth2 DM event imports through xurl, with bird fallback in auto mode.
  • Add an explicit Messages sort toggle for newest conversations or sender follower count.
  • Add web DM inbox controls for switching between all, accepted, and message-request conversations.
  • Render the What happened AI digest as a structured day overview with summary cards, signal topics, highlight tweets, links, people, and hover previews for cited tweet ids and @handle mentions.
  • Add a streaming What happened AI digest in the web UI and CLI (birdclaw today, birdclaw digest) backed by OpenAI Responses API, GPT-5.5 by default, medium reasoning, priority service tier, local context hashing, and cached final structured results.
  • Add a global web account switcher plus jobs sync-account/install-account-launchd so multi-account Birdclaw installs can refresh home, mentions, likes, bookmarks, and DMs from launchd.

Changed

  • Stream the Today report as one longer Markdown brief with inline hoverable tweet citations instead of adding separate overview and action cards after the model finishes.
  • Increase the default Today digest tweet context and accept larger web digest requests so 24-hour reports can see deeper into the local archive.
  • Start the Effect rewrite by making effect a first-class runtime dependency and moving web API fetches, web sync orchestration, live command helpers, action transport, bird/xurl JSON/action transports and public adapters, backup export/import/validation and Git orchestration, moderation target resolution, blocks/mutes write helpers, remote block sync, batch blocklist imports, x-web mutations, authored/mentions/mention-thread sync including xurl recent-search and parent-walk fallback internals, conversation loading, home timeline, saved collection, DM live sync, profile hydration/resolution/affiliation/reply inspection, shared tweet lookup, research and whois report generation, follow graph live sync, link preview/index fetches, archive discovery/import subprocesses, avatar/URL caches, OpenAI/inbox scoring, scheduled bookmark sync locking/audit/launchd install, and media-fetch archive reuse/download concurrency onto Effect programs with Promise-compatible public wrappers.

Fixed

  • Deduplicate unscoped timeline rows across accounts so Home does not show the same tweet twice when multiple accounts saw it.
  • Render model-emitted Markdown links even when the model inserts a space or line break between the link label and URL.
  • Close Today tweet hover previews when opening their source links so command-clicked citations cannot leave stale preview cards stacked on later hovers.
  • Keep the Messages shell aligned with the rest of the app while collapsing the sidebar labels, and label optional follower/score DM filters instead of showing default 0 fields.
  • Link grouped AI digest tweet citations to nearby readable text instead of showing raw tweet_... IDs.
  • Expand the Messages web layout into an icon-rail workspace so the DM list and thread panes no longer squeeze into the standard feed width.
  • Show DM message requests across accounts instead of filtering them by the active sidebar account.
  • Verify the live bird account before DM sync, preserve stable account IDs for sparse DM payloads, and pace request-page imports.
  • Align DM profile stat labels and values consistently in the web detail panel.
  • Keep outbound DM bubble text readable by separating inbound and outbound bubble color classes in the web UI.
  • Link AI digest tweet citations on readable text instead of leaking raw tweet_... ids when the model cites a local tweet by prefixed id.
  • Hydrate profile metadata for Today highlight tweets so real avatar images replace fallback initials after cached digest results render.
  • Allow trusted private-proxy web deployments to stream the AI digest remotely without a token, while keeping app-level token enforcement when configured and surfacing API error details in the Today view.
  • Harden web write/quota endpoints, URL/avatar fetching, backup imports, archive replacement imports, block sync pruning, and GitHub workflows based on a deepsec security pass.
  • Validate compose, tweet-reply, and DM-reply writes before live transport, reject failed xurl sends without leaving local ghost entries, and keep failed web reply drafts visible with the transport error.
  • Keep account-scoped manual sync buttons disabled until account metadata loads so saved timelines do not submit accountless collection syncs.
  • Cancel failed link preview response bodies promptly so repeated broken preview fetches do not leave sockets open until timeout.
  • Harden link preview metadata fetching against private-network redirects, DNS rebinding, oversized or compressed responses, and slow/broken multi-address hosts.
  • Link raw @handle mentions in archived timeline text and render retweets as embedded original tweets with compact repost attribution.
  • Remove the duplicate inline sync account picker now that the global web account switcher controls manual sync account state, and move the theme toggle out of the sidebar footer so the account switcher stays anchored at the bottom.
  • Move the one-button theme toggle above the sidebar account picker so the bottom controls align with the active-account avatar.
  • Hide unresolved t.co placeholders and duplicate preview cards on media tweets, and let single-image media render in a natural image-sized frame.
  • Render reposts as native timeline rows with the original author avatar and a single compact repost attribution.
  • Hide empty bookmark, media, and account metadata from timeline action rows so the footer only shows useful state.
  • Move the theme toggle into the sidebar account footer row so it sits with the active-account controls.