No updates detected yet. GitHub releases will appear here.
Rusty link thing.
翻訳待ち
Loading the full README.
Read the full README ↗A link aggregator for threaded.at: tagged stories, threaded comments, flags with reasons, user levels, AI-assisted triage, and a public moderation log. Sign-in is atproto OAuth. Submissions and comments are records in the author's own repo.
Working today:
THREADED_HYDRANT_SOCKET is set.Next: M5, reader features: an inbox for replies, "new" markers on threads, saved and hidden stories, tag filters, Atom feeds, posting to Bluesky, archive links, comment folding, and keyboard shortcuts. It is built and waits on a deploy and the checks done by hand. Its plan is docs/0008-m5.md. The milestone table is in the design doc, section 16.
Requires a stable Rust toolchain, from rustup.
make seed # demo tags and stories into threaded.db
make run # serve on http://127.0.0.1:8080
make check # fmt-check, clippy, test, audit, markdown lint, lexicon lint and validation
make a11y # axe-core, HTML_CodeSniffer, focus, and layout audit of every page, light and dark; the page scripts in Chrome
make hydrant # a local hydrant indexing at.threaded.dev.* records
make help lists every target. Some need tools beyond Rust:
| Target | Needs |
|---|---|
make audit | cargo-audit |
make md-lint | markdownlint-cli2 |
make lex-lint, make lex-validate | goat |
make a11y | Node and Chrome or Chromium (set CHROME if it is not in its default place); it installs puppeteer-core, axe-core, and HTML_CodeSniffer itself |
make hooks | pre-commit |
make hydrant | a hydrant build at ../hydrant/target/release/hydrant (set HYDRANT for another path; building it is in docs/0006-m4.md). It keeps its database in ./hydrant.db and serves its API on ./hydrant.sock |
| Variable | Default |
|---|---|
THREADED_DB | sqlite:threaded.db |
THREADED_ADDR | 127.0.0.1:8080 |
THREADED_BLOG_DIR | blog |
THREADED_PUBLIC_URL | The public origin, such as https://threaded.at: the OAuth client ID and the absolute URLs in link previews. Unset: the localhost development OAuth client, and http://127.0.0.1: with the THREADED_ADDR port |
THREADED_OAUTH_KEY | required with THREADED_PUBLIC_URL |
THREADED_COOKIE_KEY | required with THREADED_PUBLIC_URL; unset in development means sessions end on restart |
THREADED_ANTHROPIC_KEY | a file holding an Anthropic API key; unset turns AI triage off |
THREADED_HYDRANT_SOCKET | hydrant's API socket, such as ./hydrant.sock from make hydrant; unset reads no records from the network |
THREADED_PLC_URL | https://plc.directory: where user review reads an account's creation time |
THREADED_TYPEAHEAD_URL | https://public.api.bsky.app: the AppView the sign-in typeahead asks |
RUST_LOG | info |
make run
Open http://127.0.0.1:8080, not localhost: atproto's development client
returns to 127.0.0.1. Sign in with any atproto account. threaded keygen DIR
writes the production key files.
A local build writes at.threaded.dev.submission, .comment, and .vote
records to your real repo; production writes at.threaded.*. Sign-in asks to
write submissions and comments. Publishing upvotes asks again, on
/settings, for vote records.
threaded tag add rust --description "The Rust language and its ecosystem"
threaded tag add meta --description "About Threaded itself" --boost -0.5
threaded tag list
tag add on an existing tag updates it. --boost is the tag's rank boost,
from -10 to 10. Both commands use THREADED_DB.
This is the beginning of the README. Read the rest at the original. Read the full README ↗