rust reimplentation of sequoia.pub
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 71 lines 3.6 kB view raw view rendered
1# rsequoia vs Sequoia — differences 2 3rsequoia is a Rust reimplementation of [sequoia-cli](https://sequoia.pub). This document notes the differences. 4 5## Additions (not in original Sequoia) 6 7### OAuth token authentication 8rsequoia accepts pre-authenticated OAuth tokens via environment variables: 9- `RSEQUOIA_ACCESS_TOKEN` — Bearer token 10- `RSEQUOIA_DID` — AT Protocol DID 11- `RSEQUOIA_PDS_URL` — PDS base URL 12 13This is the highest-priority auth method, above app passwords and stored credentials. It enables integration with tools like lichen that already manage their own AT Protocol OAuth flow. 14 15### Library usage 16rsequoia is structured as a Rust library (`lib.rs`) with a binary entry point. All modules (`config`, `credentials`, `discovery`, `publish`, `inject`, `pds_client`, `markdown`, `types`) are public and can be imported directly into other Rust projects. 17 18## Missing features (in original Sequoia but not here) 19 20### Bluesky post creation 21Sequoia can optionally create a Bluesky post (`app.bsky.feed.post`) with an external embed linking to each published document. rsequoia does not create Bluesky posts. 22 23### `bskyPostRef` field 24Sequoia tracks the Bluesky post reference in the document record's `bskyPostRef` field. rsequoia does not set this field. 25 26### `content` union field 27The standard.site document schema has a `content` field defined as an open union. Neither Sequoia nor rsequoia populate this — both use `textContent` (plain text) instead. 28 29### `basicTheme` field 30The standard.site publication schema has a `basicTheme` field for styling hints. Neither Sequoia nor rsequoia set this field. 31 32### `sync` command 33Sequoia has a `sequoia sync` command that fetches remote state and reconciles with local files. rsequoia does not have a sync command — it only pushes local state to the PDS. 34 35### `autoSync` config 36Sequoia's config supports `autoSync` for automatic frontmatter updates with AT URIs. rsequoia does not modify source files. 37 38### `pathTemplate` config 39Sequoia supports `pathTemplate` with token replacement (`{slug}`, `{year}`, etc.) for URL generation. rsequoia uses `pathPrefix` + slug only. 40 41### `removeIndexFromSlug` config 42Sequoia can strip `/index` suffixes from slugs. rsequoia handles this but does not expose it as a config option. 43 44### UI config 45Sequoia has a `ui` config section. rsequoia does not (it is CLI-only). 46 47## Behavioral differences 48 49### Credential storage location 50- Sequoia: `~/.config/sequoia/credentials.json` 51- rsequoia: `~/.config/rsequoia/credentials.json` 52 53### Environment variable names 54- Sequoia: `SEQUOIA_PROFILE` for profile selection 55- rsequoia: `RSEQUOIA_ACCESS_TOKEN`, `RSEQUOIA_DID`, `RSEQUOIA_PDS_URL` for OAuth 56 57Both support `ATP_IDENTIFIER`, `ATP_APP_PASSWORD`, and `PDS_URL`. 58 59### `canonicalUrl` field 60Both Sequoia and rsequoia add a `canonicalUrl` field to document records. This field is NOT in the standard.site lexicon schema but is used for linking back to the original site. 61 62### Text content extraction 63Both strip markdown to plain text for `textContent`, capped at 10,000 characters. The exact stripping logic may differ slightly between implementations. 64 65## standard.site lexicon conformance 66 67Both rsequoia and Sequoia implement the same subset of the standard.site lexicons: 68 69**`site.standard.document`** — all required fields (`site`, `title`, `publishedAt`) plus optional `path`, `description`, `coverImage`, `textContent`, `tags`, `updatedAt`. 70 71**`site.standard.publication`** — all required fields (`url`, `name`) plus optional `icon`, `description`, `preferences`.