docs: cut 0.1.0 changelog and refresh README

This commit is contained in:
Peter Steinberger
2025-12-06 00:40:53 +01:00
parent 483f0c6a20
commit 51e5856a6c
2 changed files with 12 additions and 4 deletions
+8 -2
View File
@@ -2,6 +2,8 @@
## Unreleased
## 0.1.0 — 2025-12-05
### Added
- `whoami` command works with both GraphQL cookies and Sweetistics API keys.
- Firefox cookie extraction (`--firefox-profile`) alongside existing Chrome/env/CLI credential paths.
@@ -9,14 +11,18 @@
- Colorized help banner and example block; `pnpm bird` builds then runs the CLI; no subcommand shows help.
- JSON5 config files (`~/.config/bird/config.json5`, `./.birdrc.json5`) for defaults like engine and browser profile.
- Config toggles to disable cookie sources (`allowChrome`, `allowFirefox`) and default transport now `graphql` with Firefox as preferred cookie source.
- Conversation commands: `thread` and `replies`, plus `search` and `mentions` convenience helpers.
- Sweetistics transport for all commands (tweet, reply, read, thread, replies, search) with automatic 15s timeouts and media uploads (images or single video).
- Sweetistics conversation fetch now forces fresh data (`force=true`) to bypass cache for `thread`/`replies`.
- CI workflow on push/PR (Node 22, pnpm 10, Go stable) running `pnpm test`.
### Changed
- Default option resolution now honors config files (project then global) before env/CLI overrides.
### Changed
- `whoami` now prefers Sweetistics when an API key is present; otherwise uses Twitter cookies.
- Sweetistics media uploads use the Sweetistics engine only; GraphQL mode rejects mixed media.
### Fixed
- Fallback to scraping the authenticated settings page when Twitter account APIs return 404, so `whoami` still resolves the user.
- Sweetistics calls now time out after 15s to avoid hanging CLI commands when the API is slow or unresponsive.
- Sweetistics tweeting now supports media uploads (images or single video) via new CLI `--media/--alt` flags.
- Coverage raised above 70% via new cookie and conversation tests.
+4 -2
View File
@@ -165,8 +165,8 @@ bird check
### Credential sources (macOS)
Used only when transport resolves to **graphql**:
- **Chrome (default)**: `~/Library/Application Support/Google/Chrome/<Profile>/Cookies` (WAL/SHM copied too). `--chrome-profile <name>`.
- **Firefox**: `~/Library/Application Support/Firefox/Profiles/<profile>/cookies.sqlite`. `--firefox-profile <name>` (defaults to `*.default-release` if present).
- **Firefox (default)**: `~/Library/Application Support/Firefox/Profiles/<profile>/cookies.sqlite`. `--firefox-profile <name>` (defaults to `default-release` if present).
- **Chrome**: `~/Library/Application Support/Google/Chrome/<Profile>/Cookies` (WAL/SHM copied too). `--chrome-profile <name>`.
- **Env/flags** always override browser cookies.
Precedence: CLI flags > env vars > project config > global config. Transport is chosen first; then, if transport is GraphQL, cookie source is chosen.
@@ -186,6 +186,8 @@ bird --sweetistics-base-url "http://localhost:3000" --sweetistics-api-key "sweet
When an API key is present, `bird` will use Sweetistics’ `/api/actions/tweet` endpoint and skip local cookie resolution.
All Sweetistics calls have a 15s timeout so the CLI won’t hang if the API is slow or unreachable.
**Threads/replies freshness (Sweetistics):** conversation calls (`thread`, `replies`) are requested with `force=true`, bypassing Sweetistics cache to ensure the latest tweets are returned.
⚠️ GraphQL mode uses X’s internal endpoints and is rate‑limited aggressively; expect 429s if you run many reads/writes without Sweetistics.
### Getting Your Cookies