Commit Graph
290 Commits
Author SHA1 Message Date
Peter Steinberger c4fa04e0b2 feat: include raw tweet data in mapping 2026-01-05 00:30:01 +01:00
Peter Steinberger 3728f7a4f5 test: add mapTweetResult media coverage 2026-01-03 18:40:05 +01:00
Peter Steinberger b83d065907 fix: restore list types and tidy tests 2026-01-03 18:34:32 +01:00
Peter Steinberger 00aee16c08 docs: update changelog for media output 2026-01-03 18:34:32 +01:00
Peter Steinberger d8643ae1d1 fix: improve media extraction 2026-01-03 18:34:32 +01:00
Nikita b4542b2213 test: add comprehensive tests for extractMedia function 2026-01-03 18:34:32 +01:00
Nikita 067c98c245 feat: add media extraction support for photos, videos, and GIFs 2026-01-03 18:34:32 +01:00
Peter Steinberger e537e102e3 fix: normalize list privacy parsing 2026-01-03 16:55:29 +01:00
Harper ReedandClaude Opus 4.5 0e8a1349c5 test(lists): add boundary and fragment tests for extractListId
- Test that 5-digit IDs (minimum length) are accepted
- Test that URLs with fragment identifiers work correctly

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

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-03 16:55:29 +01:00
Harper ReedandClaude Opus 4.5 59e827e153 test(lists): improve test coverage and extract list ID parsing
- Extract extractListId to src/lib/extract-list-id.ts with proper tests
- Add json-full/includeRaw test for list timeline
- Add 404 retry tests for getOwnedLists and getListMemberships
- Add tests for skipping invalid list entries and missing owner handling
- Use shared TwitterClientPrivate type from fixtures

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

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-03 16:55:29 +01:00
Harper ReedandClaude Opus 4.5 7818440d65 feat(lists): add support for Twitter Lists
Add commands to fetch owned lists, list memberships, and list timelines:
- `bird lists` shows lists you own
- `bird lists --member-of` shows lists you're a member of
- `bird list-timeline <id-or-url>` fetches tweets from a list

Includes full --json and --json-full support for list timeline output.

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

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-03 16:55:29 +01:00
Peter Steinberger 3db3aca0a0 style: lint fixes 2026-01-03 15:51:49 +01:00
Peter Steinberger dac4ba6456 docs: update changelog 2026-01-03 15:51:49 +01:00
Peter Steinberger b27643edbb fix: harden bookmark retry handling 2026-01-03 15:51:49 +01:00
Haoli 5b61f65a7c Revert local bookmark artifact ignore entries 2026-01-03 15:51:49 +01:00
Haoli 56ca7b9841 Add paged bookmark export with gating and retries 2026-01-03 15:51:49 +01:00
Peter Steinberger 533db2d210 test: cover json-full timelines 2026-01-03 06:59:47 +01:00
cc-vpsandChristian Catalan 3815ebfa03 feat: add --json-full flag to include raw API response in _raw field
Add a new --json-full flag to tweet-fetching commands that outputs JSON
with an additional _raw field containing the full GraphQL response.

This provides power users access to additional data not exposed in the
curated TweetData interface (media, entities, hashtags, cards, etc.)
while maintaining backward compatibility with --json.

Supported commands:
- read, replies, thread (TweetDetail API)
- search, mentions (SearchTimeline API)
- bookmarks (Bookmarks API)
- likes (Likes API)

Not supported: following, followers (uses mixed GraphQL/REST fallback
with different response structures)

Implementation:
- Add _raw?: GraphqlTweetResult optional field to TweetData type
- Add includeRaw option to mapTweetResult() and parseTweetsFromInstructions()
- Add TweetFetchOptions, SearchFetchOptions, TimelineFetchOptions interfaces
- Update client methods to accept options parameter
- Add --json-full flag to CLI commands
- Update help text to document the new flag
- Add comprehensive test coverage (16 tests)

Co-authored-by: Christian Catalan <[email protected]>
2026-01-03 06:54:36 +01:00
Peter Steinberger 42abae9c15 chore(release): 0.5.1 v0.5.1 2026-01-01 17:52:57 +01:00
Peter Steinberger a38de2b0a9 fix(following): fallback to internal API 2026-01-01 17:09:36 +01:00
Peter Steinberger 31a9d55e95 docs: clarify internal API fallback 2026-01-01 16:57:09 +01:00
Peter Steinberger b43ab1f6ec style(cli): add more color 2026-01-01 16:57:03 +01:00
Peter Steinberger 8ae5b9b5d4 test(live): add live CLI suite 2026-01-01 16:53:24 +01:00
Peter Steinberger 1a610c366a fix(followers): fallback to legacy API 2026-01-01 16:53:19 +01:00
Peter Steinberger b68526e872 docs: update changelog 2026-01-01 16:34:46 +01:00
Peter Steinberger 5551d5fa66 test(help): cover help output 2026-01-01 16:34:44 +01:00
Peter Steinberger 6a238ed063 fix(help): improve help output 2026-01-01 16:34:41 +01:00
Peter Steinberger 12c9e4fe88 docs(changelog): start 0.5.1 cycle 2026-01-01 15:37:29 +01:00
Peter Steinberger 6463b06674 chore(release): 0.5.0 v0.5.0 2026-01-01 14:44:09 +01:00
Peter Steinberger c78be5d1ea chore: fix lint issues 2026-01-01 14:13:32 +01:00
Peter Steinberger f1663c8609 test: split twitter client tests 2026-01-01 14:09:18 +01:00
Peter Steinberger 7a4782ddc4 refactor: split twitter client 2026-01-01 13:58:08 +01:00
Peter Steinberger 51bf79d9ed refactor(cli): split commands into modules 2026-01-01 13:32:30 +01:00
Peter Steinberger 8aae28315e fix(twitter-client): relax cursor typing 2026-01-01 13:32:30 +01:00
Peter Steinberger d8c2181dfb refactor: split cli and library entry 2026-01-01 12:31:02 +01:00
Peter Steinberger e9922c2901 docs: align readme with cli 2026-01-01 12:20:27 +01:00
Peter Steinberger d7fd0f94a5 test: expand search pagination coverage 2026-01-01 12:17:52 +01:00
Peter Steinberger 3cca0ee989 fix: paginate search results 2026-01-01 12:15:23 +01:00
Peter Steinberger cfd4045d3e test: cover default cookie timeout 2026-01-01 12:11:39 +01:00
Peter Steinberger b8af7ab6de docs: thank reporter in changelog 2026-01-01 12:10:56 +01:00
Peter Steinberger 19841a6a75 fix: default cookie timeout 30s 2026-01-01 12:10:36 +01:00
Peter Steinberger 14ad6cf73f fix: allow cookie timeout config 2026-01-01 12:00:02 +01:00
Peter Steinberger 42e5124174 fix: seed bookmark query ids 2026-01-01 11:52:51 +01:00
Peter Steinberger 11f8c8cb19 refactor: camelcase user json output 2026-01-01 11:42:36 +01:00
Peter Steinberger c94663a07c Merge pull request #6 from lockmeister/add-following-command
feat: add following and followers commands
2026-01-01 11:33:46 +01:00
Peter Steinberger f3977509dc style: satisfy formatting in tests 2026-01-01 11:32:41 +01:00
Peter Steinberger 578e38d427 build: refresh query ids 2026-01-01 11:31:55 +01:00
Peter Steinberger 9dccb6a3b9 chore: merge origin/main 2026-01-01 11:31:29 +01:00
Peter Steinberger 1235eda368 docs: add following/followers changelog 2026-01-01 11:25:38 +01:00
Peter Steinberger 97c73e939f test: cover following/followers 2026-01-01 11:25:32 +01:00