Commit Graph
46 Commits
Author SHA1 Message Date
Tyler Seymour ee9c89018e feat: add folder support for bookmarks command 2025-12-31 15:20:36 -05: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 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 a94a5edc11 chore: align biome lint config and clean warnings 2025-12-03 16:09:44 +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
Peter Steinberger 4d40200b76 Update CreateTweet GraphQL query ID and features
- Updated queryId from znCVAd692dKBq9MgkEhKPQ to TAJw1rBsjAtdNgTdlo2oeg
- Added new required feature flags for Dec 2025 API version
- Added Grok-related features (analyze, share, translate, imagine)
- Added premium_content_api_read_enabled flag

Source: fa0311/TwitterInternalAPIDocument
2025-12-02 09:51:49 +00:00
Peter Steinberger 5ae8801b23 chore: reformat with 2-space indentation (biome) 2025-11-28 08:09:32 +01:00
Peter Steinberger 0f0bd5d680 Style: satisfy Biome lint suggestions 2025-11-28 08:08:55 +01:00
Peter Steinberger 5889044d7b Improve tweet read reliability and test coverage 2025-11-28 08:07:44 +01:00
Peter Steinberger 90d22df717 Add read command to fetch tweet content by URL/ID
- New `read` command: twitter-cli read <url-or-id>
- Supports --json output flag
- Uses TweetDetail GraphQL API to fetch tweet text, author, stats
- Helpful for reading tweets before replying
2025-11-28 06:35:17 +00:00
Peter Steinberger 011476f607 Initial commit: twitter-cli for posting tweets via GraphQL API
Features:
- Post tweets and replies via Twitter GraphQL API
- Cookie extraction from Chrome (macOS)
- Env var and CLI argument authentication
- 19 passing tests with vitest
- Biome for linting
2025-11-28 06:35:17 +00:00