**Show HN:**
Fortranで書かれたターミナル専用のBluesky/AT Protoクライアントを作成しました。
## Japanese Translation:
Fortransky は、主に Fortran で書かれた Bluesky の AT Protocol 用ターミナル専用クライアントです。Rust がファイアホースストリームのネイティブデコーダーとして機能します。
UI は `src/` にあり、Fortran の `iso_c_binding` を介して C の libcurl ブリッジ (`cshim/`) と通信します。このブリッジは HTTP リクエストを静的 Rust ライブラリに転送し、生のエンベロープ(CAR → DAG‑CBOR → NormalizedEvent)を JSON Lines に変換して、Fortran の TUI が描画します。
認証には **アプリパスワード** を使用し、セッショントークンは `~/.fortransky/session.json` に保存されます。
プロジェクトは標準の Ubuntu/Debian パッケージ(`gfortran`, `cmake`, `pkg-config`, `libcurl4-openssl-dev`)と Rust 1.70+ を利用します。拡張機能が必要な場合は、Python の依存関係(`cbor2`, `websockets`)を追加できます。
ビルドは 2 段階で進行します:まず `cargo build --release` で Rust ブリッジをコンパイルし、その後 CMake がすべてをリンクします。Rust の変更が無ければ、Rust ステップはスキップされます。
主要な TUI コマンドは次のとおりです:
- `l` – ログイン/タイムライン取得
- `a <handle>` – 著者フィード
- `s <query>` – 投稿検索
- `p <handle>` – プロフィール表示
- `n` – 通知
- `c` – 投稿作成
- `t <uri/url>` – スレッド開く
- `j` – ストリームタイル(jetstream)
- `m` – ストリームモード切替 (`relay‑raw`)
- `q` – 終了
ストリーミングには 2 つのモードがあります:**jetstream**(WebSocket JSON)と **relay‑raw**(バイナリ CBOR)。Rust デコーダー(`firehose_bridge_cli`)が推奨され、利用できない場合は Python の `cbor2` フォールバックを使用できます。
デフォルトでは Fortransky はテスト用に組み込まれた合成リレー フィクスチャを使用します。ライブ Bluesky リレーへ接続するには `FORTRANSKY_RELAY_FIXTURE=0` を設定してください。
将来の作業としては、DID からハンドルへの解決、手書き JSON パーサーの改善、および TUI の生キー入力を有効化することが挙げられます。軽量でクロスプラットフォームな設計により、重い GUI スタックや大規模言語ランタイムなしで Bluesky への最小限のエントリポイントを開発者とユーザーに提供します。
## Text to translate
(incorporating missing details):**
Fortransky is a terminal‑only client for Bluesky’s AT Protocol written primarily in Fortran, with Rust providing a native decoder for the firehose stream.
The UI lives in `src/` and talks to a C libcurl bridge (`cshim/`) via Fortran’s `iso_c_binding`. That bridge forwards HTTP requests to a static Rust library that translates raw envelopes (CAR → DAG‑CBOR → NormalizedEvent) into JSON Lines, which the Fortran TUI renders.
Authentication uses an **app password**; session tokens are stored in `~/.fortransky/session.json`.
The project relies on standard Ubuntu/Debian packages (`gfortran`, `cmake`, `pkg-config`, `libcurl4-openssl-dev`) and Rust 1.70+. Optional Python dependencies (`cbor2`, `websockets`) are available for extended functionality.
Build proceeds in two stages: first compile the Rust bridge with `cargo build --release`; thereafter CMake links everything, skipping the Rust step if unchanged.
Key TUI commands are:
- `l` – login/fetch timeline
- `a <handle>` – author feed
- `s <query>` – search posts
- `p <handle>` – profile view
- `n` – notifications
- `c` – compose post
- `t <uri/url>` – open thread
- `j` – stream tail (jetstream)
- `m` – toggle stream mode (`relay‑raw`)
- `q` – quit
For streaming, two modes are available: **jetstream** (WebSocket JSON) and **relay‑raw** (binary CBOR). The Rust decoder (`firehose_bridge_cli`) is preferred; if unavailable the Python `cbor2` fallback can be used.
By default Fortransky uses a bundled synthetic relay fixture for testing; set `FORTRANSKY_RELAY_FIXTURE=0` to connect to the live Bluesky relay.
Future work includes adding DID‑to‑handle resolution, refining the hand‑rolled JSON parser, and enabling raw keypress input in the TUI. The lightweight, cross‑platform design offers developers and users a minimal entry point into Bluesky without heavy GUI stacks or large language runtimes.