Commit Graph
157 Commits
Author SHA1 Message Date
thelockmeister 34f45fece7 feat: add following and followers commands
Add two new commands to list users:
- `bird following` - list users that you (or another user) follow
- `bird followers` - list users that follow you (or another user)

Both commands support:
- `--user <userId>` to query another user's following/followers
- `-n <count>` to limit results
- `--json` for structured output

Uses Twitter's GraphQL Following/Followers endpoints with proper
feature flags and query ID rotation support.
2026-01-01 09:06:17 +13:00
Peter Steinberger 2a2a3a7c59 chore: run oxlint type-aware in lint 2025-12-31 19:59:31 +01:00
Peter Steinberger 94de794588 chore: tighten biome rules further 2025-12-31 19:52:23 +01:00
Peter Steinberger fc77190929 chore: tighten lint rules and tests 2025-12-31 19:36:33 +01:00
Alex HillmanandClaude Opus 4.5 9c553e46bf feat: add bookmarks command
Add `bird bookmarks` command to fetch the authenticated user's bookmarked tweets.

- New `getBookmarks()` method in TwitterClient
- Uses graphql_timeline_v2_bookmark_timeline feature flag
- Supports `--count` and `--json` options
- Follows existing patterns for query ID rotation and retry logic

Usage:
  bird bookmarks           # Get your recent bookmarks
  bird bookmarks -n 50     # Get 50 bookmarks
  bird bookmarks --json    # Output as JSON

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2025-12-30 22:44:52 +00:00
Peter Steinberger c495fb5078 refactor(cookies): use sweet-cookie 2025-12-27 13:23:39 +01:00
Peter Steinberger c16726e9d8 fix: narrow tweet results 2025-12-26 22:40:45 +01:00
Peter Steinberger a3d1ba29f7 test(cli): always print tweet URL 2025-12-26 22:04:08 +01:00
Peter Steinberger 1007d051e4 fix(tweet): fallback to statuses/update on 226 2025-12-26 21:57:36 +01:00
Peter Steinberger e8e98e641a refactor(auth)!: replace allow toggles with cookieSource 2025-12-26 21:28:27 +01:00
Peter Steinberger 1744f4cc24 feat(auth): allow selecting cookie source 2025-12-26 21:17:20 +01:00
Peter Steinberger b46b24a8c5 test: enforce coverage thresholds 2025-12-26 18:23:59 +01:00
Peter Steinberger a4686f90ee feat: add Safari cookie extraction 2025-12-26 17:51:41 +01:00
Peter Steinberger 02d12b4e87 refactor!: remove Sweetistics engine
bird is GraphQL-only; bump to 0.3.0
2025-12-26 17:41:43 +01:00
Peter Steinberger 0bf7190c95 feat(graphql): support video uploads 2025-12-26 15:27:35 +01:00
Peter Steinberger 3be2e3ae7e feat(graphql): upload media 2025-12-26 15:22:53 +01:00
Peter Steinberger dee304235b fix(engine): disable Sweetistics fallback when forcing graphql 2025-12-26 15:10:10 +01:00
Peter Steinberger 978d07f60f feat(graphql): runtime query-id refresh 2025-12-26 14:58:03 +01:00
Peter Steinberger c35e937b2a feat(cli): add plain/no-emoji/no-color + help 2025-12-26 14:14:31 +01:00
Peter Steinberger 4730267c2a fix(sweetistics): improve media upload errors 2025-12-26 13:10:54 +01:00
Peter Steinberger 8257d52532 fix(twitter): improve createTweet posting 2025-12-26 13:10:49 +01:00
Peter Steinberger 80a57c825f fix(graphql): keep query ids fresh 2025-12-26 13:10:43 +01:00
Peter Steinberger 6669ba9912 test(cli): validate mentions handle 2025-12-26 12:34:16 +01:00
Peter Steinberger 3df7969b16 feat(cli): mentions target user 2025-12-26 12:23:00 +01:00
Peter Steinberger 5613caa149 feat(cli): include git sha in --version 2025-12-26 12:12:16 +01:00
Peter Steinberger 9222908ab7 fix(cli): read version from file 2025-12-26 12:05:52 +01:00
Peter Steinberger 618d87ec72 fix(lint): satisfy biome 2025-12-26 10:30:54 +01:00
Peter Steinberger 3661f784cb fix: default engine auto with graphql primary 2025-12-25 14:00:35 +01:00
Peter Steinberger fdf099ff70 fix(twitter): refresh TweetDetail query ids 2025-12-20 11:56:30 +01:00
Peter Steinberger 8e4c5c8bd8 feat(cli): add shorthand read and timeouts 2025-12-20 11:29:17 +01:00
Peter Steinberger bc7139dff9 feat(twitter): improve graphql search and threads 2025-12-20 11:29:02 +01:00
Peter Steinberger f2855643f3 fix: force fresh sweetistics thread fetch 2025-12-05 23:39:06 +01:00
Peter Steinberger da22ef25d3 Add Sweetistics media uploads and CLI flags 2025-12-04 14:25:59 +00:00
Peter Steinberger 35c0f28997 Add Sweetistics request timeout and docs 2025-12-04 14:06:57 +00:00
Peter Steinberger 3e2d5641d7 fix: auto-detect firefox profile by default 2025-12-03 16:44:14 +00:00
Peter Steinberger 1c2f1d2789 fix: show actual credential source in whoami 2025-12-03 16:42:30 +00:00
Peter Steinberger 6ecfe57018 feat: allow disabling cookie sources and default to firefox/graphql 2025-12-03 16:31:55 +00:00
Peter Steinberger 33ef131b94 fix: improve Firefox cookie detection across platforms 2025-12-03 16:30:23 +00:00
Peter Steinberger e0ca146567 feat: default to graphql+firefox, fallback to sweetistics 2025-12-03 16:29:16 +00:00
Peter Steinberger 5797c00882 docs: clarify transport vs credentials; show engine+source in whoami 2025-12-03 16:26:21 +00:00
Peter Steinberger a94a5edc11 chore: align biome lint config and clean warnings 2025-12-03 16:09:44 +00:00
Peter Steinberger 8a220f6809 docs: refresh bird tagline 2025-12-03 16:04:50 +00:00
Peter Steinberger 6804f2f483 chore: normalize spacing in whoami output 2025-12-03 16:02:32 +00:00
Peter Steinberger 77e163ff97 chore: show resolved engine in whoami output 2025-12-03 16:01:34 +00:00
Peter Steinberger 4da93d754a feat: show engine in whoami output 2025-12-03 15:59:56 +00:00
Peter Steinberger 9a14b71571 feat: add config defaults, Firefox cookies, and Sweetistics whoami 2025-12-03 15:39:10 +00:00
Peter Steinberger a5db3333e0 Revert: keep both engine options, don't hardcode sweetistics 2025-12-02 20:19:34 +00:00
Peter Steinberger 0f6cc5c663 Add engine switch and Sweetistics endpoints for tweet reading 2025-12-02 14:53:35 +00:00
Peter Steinberger 850d59e68d Add Sweetistics API posting support to bird 2025-12-02 12:36:54 +00:00
Peter Steinberger df66ef0706 Add search/mentions commands and fix cookie decryption
- Added `search <query>` command to search tweets
- Added `mentions` command to find @clawdbot mentions
- Fixed Chrome cookie decryption to extract hex values correctly
- Added SearchTimeline query ID (may need updating as Twitter rotates these)

Note: Search endpoints may return 404 if query IDs are outdated
2025-12-02 12:14:22 +00:00