一個完全在終端機運行的 Bluesky / AT Protocol 客戶端,以 Fortran 編寫。

支援貼文、時間軸、通知、抖動圖像發布、直接訊息 (DM),以及終端機圖像渲染 — 所有功能皆透過 amber 終端機(若在 cool-retro-term 中運行)實現,直至協定層。

專案部落格:https://www.patreon.com/posts/153457794

Session 狀態會儲存至 ~/.fortransky/session.json。

請使用啟用 DM 存取權限的應用程式密碼,而非您的主要 Bluesky 密碼。

需要 rustc >= 1.78 (Cargo.lock v4)。建議使用最新穩定版。

若未安裝,請透過 rustup 安裝:

對於 relay-raw 串流路徑、圖像發布和圖像檢視是必需的:

或使用 venv (在啟用 venv 的情況下運行 Fortransky):

Assemblersky 以 x86-64 組合語言解碼原始 AT Protocol firehose 框架。

如果 bridge/assemblersky/bin/assemblersky_cli 存在,將會優先自動使用。

Assemblersky 模組儲存庫尚未公開,但未來獨立發布時可以這樣做:

從原始碼建置:https://github.com/FormerLab/assemblersky

檢查偵測:./scripts/check_assemblersky.sh

使用啟用 DM 存取權限的應用程式密碼。

在主提示符下:

Session 會儲存至 ~/.fortransky/session.json 並在下次啟動時恢復。

您的實際 PDS 主機將在首次登入時從 plc.directory 解析並儲存在 session 中 — 這對於 DM 和其他 PDS 代理端點是必需的。

若要登出:x

'd' 指令使用 Bill Atkinson 的 Floyd-Steinberg 演算法(與 1984 年的 MacPaint 使用的演算法相同)對任何圖像進行抖動處理,並將其作為圖像嵌入發布到 Bluesky。

圖像將被轉換為灰階,調整為 576×720(原始 MacPaint 畫布尺寸),在 Fortran 中抖動為 1 位元,轉換為 PNG,然後透過 com.atproto.repo.uploadBlob + createRecord 發布。

需要 Pillow。

對任何帶有圖像的貼文使用 'v' 指令,將從 Bluesky CDN 擷取圖像,在 Fortran 中進行抖動處理,並使用 Unicode 半區塊字元(▀ ▄ █)進行內嵌渲染。

每個終端機字元代表兩個像素行 — 上半部和下半部 — 在標準 80 列終端機中提供 80×48 的有效像素。

顯示時使用的 Floyd-Steinberg 演算法與發布時相同。

Fortransky 實現了 chat.bsky.convo.* — 與官方 Bluesky 應用程式使用的相同 DM 協定。

請求將透過您的 PDS,經由 atproto-proxy 標頭代理到 did:web:api.bsky.chat。

您的應用程式密碼必須啟用 DM 存取權限(在 Bluesky 的應用程式密碼設定中的「允許存取您的直接訊息」開關)。

PDS 主機將在登入時自動從 plc.directory 解析並儲存在 session 檔案中 — 無需手動配置。

jetstream — Bluesky 的 Jetstream WebSocket 服務。

頻寬較低,原生 JSON,最易於使用...

v1.5 — 透過 v 指令的終端機圖像檢視器。

從 Bluesky CDN 擷取圖像,使用 Fortran 的 Floyd-Steinberg 進行抖動處理,並使用 Unicode 半區塊字元(80×48 有效像素)進行渲染。

為 json_extract_mod 新增了深度 JSON 鍵提取功能,用於巢狀嵌入欄位。

v1.4 — 透過 chat.bsky.convo.* 支援 DM。

dm <handle> 開啟或建立對話,i 列出收件匣,r 發送回覆。

登入時自動從 plc.directory 解析 PDS 主機。

atproto-proxy 標頭路由至 did:web:api.bsky.chat。

應用程式密碼需要啟用 DM 存取權限。

v1.3 — Floyd-Steinberg 抖動 + 透過 d <imagepath> 發布圖像。

Bill Atkinson 的演算法(MacPaint, 1984)已移植到 Fortran。

使用 uploadBlob + createRecord 進行圖像嵌入。

需要 Pillow。

v1.2 — Assemblersky 整合。

relay_raw_tail.py 偵測並優先使用 assemblersky_cli 而非 Rust bridge。

透過 Python cbor2 進行即時 relay-raw 解碼(CBOR tag / CIDv1 處理已修復)。

解碼器偵測順序已記錄。

v1.1 — 原生 Rust firehose 解碼器整合。

firehose_bridge_cli 存在時,relay_raw_tail.py 會優先使用。

CMakeLists 將 Rust staticlib 連結到 Fortran。

JWT 欄位長度增加至 1024。

JSON 鍵掃描器深度追蹤修復。

v1.0 — 按讚、轉貼、引用貼文等動作。

URL facet 發射。

v0.9 — 型別化解碼層 (decode.f90)。

TUI 中更豐富的貼文語義。

v0.7 — 使用 C libcurl bridge 取代 shell curl。

已儲存的 session 支援。

串流模式切換(jetstream / relay-raw)。

一個完全在終端機運行的 Bluesky / AT Proto 客戶端,以 Fortran 編寫,並整合了用於 relay-raw 串流的 asm/Rust 原生 firehose 解碼器。抖動圖像組合器。DM 滑動支援。是的,就是那個 Fortran。也支援 Tangled!