これはターミナルアプリ(TUI)であり、単なる楽しみであり、現段階では実験的なものです!
termcourseを楽しんでいますか? GitHubで:star: してください
概要
> termcourse はDiscourse用のターミナルベースのクライアントです。これは軽量なブラウザセッションのように動作し、Cookieベースのログイン(ユーザー名/メールアドレス + パスワード)をサポートし、MFA(多要素認証)のためのTOTP/バックアップコードをサポートします。ロックダウンされているサイトやSSO専用のサイトのためにAPIキーのフォールバックもあります。
特徴
- トピックリスト(最新/ホット/新規/未読/トップ)の閲覧、トップ期間のサイクリング。
- 矢印キー + Enter、または最初の10個の表示トピックに対する番号ホットキー(1-0)によるトピックのオープン。
- スクロール可能な投稿、固定されたヘッダー/フッター、投稿位置/進捗バーを備えた完全なトピックの表示。
- 選択された投稿は完全なコンテンツに展開されます。選択されていない投稿はコンパクトな抜粋を表示します。
- トピック全体または特定の投稿への返信。
- タイトル、カテゴリピッカー、インライン本文コンポーザーを備えた新しいトピックの作成。
- 投稿ごとの視覚的なハートの状態によるいいね/いいね解除。
- 投稿の検索と、一致するトピック/投稿コンテキストへの直接ジャンプ。
- インラインコンポーザーは、カーソル移動、挿入、改行、バックスペース、およびライブ最小文字数カウンターをサポート。
- ラップされたリンクやインライン画像プレビューサポート(chafa / viu)を含むMarkdown対応レンダリング。
- 一般的な
:emoji:トークンと:)スタイルのスマイルに対する絵文字置換。
- 環境変数とホストごとのcredentials.ymlによるマルチサイト認証情報サポート(不足しているログインフィールドのプロンプト付き)。
- MFAサポート(TOTP + バックアップコード)付きのCookieセッションのユーザー名/パスワードログイン、およびAPIキーフォールバック。
- YAML駆動のテーマ設定(組み込み(デフォルト、スレート、フェアグラウンド)とローカルオーバーライド(theme.yml)経由)。
- 設定可能なポーリング間隔(TERMCOURSE_TICK_MS)によるリアクティブなリサイズ再描画。
- HTTP/認証およびUIレンダリング診断のためのオプションのデバッグロギング。
クイックスタート
詳細については、最新のREADMEを参照してください
git clone https://github.com/merefield/termcourse
cd termcourse
bundle install
ユーザー名/パスワード(推奨)
bundle exec bin/termcourse your.discourse.host
APIキーフォールバック
DISCOURSE_API_KEY=“your_key” DISCOURSE_API_USERNAME=“your_username”
bundle exec bin/termcourse your.discourse.host
認証に関する注意
- ユーザー名/パスワードログインは通常のブラウザスタイルのセッションを使用します。
- MFAはTOTPとバックアップコードでサポートされています。
- APIキーはフォールバックとしてサポートされています。
セキュリティ
- 認証情報は保存されません。Cookieはメモリ内のみです。
- 環境変数を使用するか、提供されたプロンプトに応答することで、パスワードがシェル履歴に残るのを回避できます。
- ロギングはオプトインであり、デフォルトでは無効です。
制限事項
- 一部のサイトは、スクリプト化されたリモートログインフローを禁止しているため、ユーザー名/パスワードと互換性がありません。
- ターミナル内に存在します
謝辞
Dumbcourse – Old-browser friendly UI at /dumb (D-pad + small screens)
に部分的に触発されました
「いいね!」 19
複数のサイトに素早くログインできるように(もちろんタブごとに1セッション)、以下の改善を行いました。
termcourse 認証と設定の改善
- ユーザー名/パスワードがデフォルトのログインパスになりました。
https:// を含める必要がなくなりました(オプションです)。
- 不足しているログインフィールドは対話形式で求められます(例:ユーザー名はわかっているがパスワードが不足している場合)。
- CLIヘルプにコア環境変数とデバッグログファイルの位置が含まれるようになりました。
認証情報と環境変数 (ENV) の動作
- ホストマッピングされた認証ファイルに対応し、検索順序は以下の通りです。
TERMCOURSE_CREDENTIALS_FILE(設定されている場合)
./credentials.yml
~/.config/termcourse/credentials.yml
- 認証の優先順位:
- CLIフラグ
- YAMLからのホスト認証情報
- 一般的な
DISCOURSE_* 環境変数
- 対話型プロンプト
- 認証の場合、ログイン時にユーザー名やパスワードの値が不足している場合はプロンプトが表示されます。
- API認証の場合、APIユーザー名とキーの両方が空でない値に解決される必要があります。
デバッグ
- HTTP/認証デバッグ:
TERMCOURSE_HTTP_DEBUG=1 → /tmp/termcourse_http_debug.txt
- UIレンダリングデバッグ:
TERMCOURSE_DEBUG=1 → /tmp/termcourse_debug.txt
リポジトリの衛生管理
- 整列された例を含む
credentials.example.yml と .env.example を追加しました。
- ローカルのシークレットファイル用の
.gitignore エントリを追加しました。
「いいね!」 3
これはかなりローファイですが、動作します。
viu または chafa をインストールする必要があります。それ自体がプロジェクトになる可能性がありますね 
chafa の高画質モードまたは viu では、Windows Terminal の方が MacOS terminal よりも優れています。なぜなら、サポートする色数がはるかに多いからです(Microsoft に感謝!)。
リリースノート: 画像レンダリング(ターミナル内!)
画像レンダリング
- バックエンド選択によるインライン投稿画像プレビューの追加:
- まず chafa を試し、次に viu を試みます。
TERMCOURSE_CHAFA_MODE=stable|quality
stable: ターミナル安定性のための控えめな出力。
quality: より高精細/高彩度のシンボルレンダリング。
- プレビュー高さ制御の追加:
TERMCOURSE_IMAGE_LINES (デフォルト: 14)
- プレビューの行の高さに適用され、視覚的な密度を調整するのに役立ちます。
- viu のアスペクト動作の改善:
- アスペクト比をより良く維持するために、行ターゲットレンダリング (-h) に切り替えました。
- プレビュー品質フィルター制御の追加:
TERMCOURSE_IMAGE_QUALITY_FILTER=1 は、ノイズの多いブロックのみのプレビューをフィルターします。
- レンダラー出力を常に表示するには、0 に設定します。
- 画像ダウンロードの安全制限の追加:
TERMCOURSE_IMAGE_MAX_BYTES (デフォルト: 5242880)
- パフォーマンスへの影響を防ぐため、大きすぎる画像ダウンロードを防止します。
- Discourse の
upload://... 画像リンクのサポート追加:
/uploads/short-url/... に自動的に解決されます。
- ターミナルのサニタイズ/安定性の改善:
- 必要な場所で有効な SGR カラーコードを保持します。
- 不安定な制御/グラフィックシーケンスを削除します。
- ANSI エスケープフラグメントが生のテキストとして表示されるのを防ぎます。
注:リモートのユーザー名/パスワードをブロックするサイトが1つ見つかりました。そのため、その状況ではこのクライアントは機能しません(ご自身で所有していてAPIキーを設定できる場合を除く!)。ご提案は歓迎しますが、現時点ではそのようなケースのサポートはありません。
Canapin
(Coin-coin le Canapin)
5
これを実世界で使うかどうかは分かりませんし、私にとっての使い道は見えませんが、試してみたところ、とても楽しいです。ベアメタルで原始的なインターフェースから次世代のフォーラムプラットフォームと対話できるのが気に入っています。
ある意味、美的に非常に優れています。
「いいね!」 1
ええ、以下のような場合に役立つかもしれません。
- 低いファイ環境にいるとき
- ラズベリーパイでいじっているとき(未テスト FYI)
- サーバーから稼働状況を確認するとき…あるいはフロントエンドのコードがクラッシュしていないか確認するとき!

- 非常にテキストベースのDiscourseサイトで…
- …そして技術的な好奇心として

Terminusを使って携帯電話でテストしてみようと思っていました…
「いいね!」 3
OK、おそらく今日最後のアップデートです:
- ウィンドウサイズ変更にインターフェースが応答するようになりました

- トップバーの指示のコンテンツが改善されました
- キー1から(1)0でトピックリストのその番号のトピックが開きます
アップデートを取得するにはgit pullを忘れないでください。
「いいね!」 3
mcmcclur
(Mark McClure)
8
やれやれ、これでアスキーアートの制作に取り掛からなきゃ!
¯\_(ツ)_/¯
「いいね!」 2
完全にカスタマイズ可能なテーマシステムを追加しました。これが「fairground」(遊園地)です。
…そしてこれが「slate」(スレート)です。
詳細はREADMEをご覧ください 
「いいね!」 4
merefield
(Robert)
12
termcourse には、トピックリストのステータスバーに未読のプライベートメッセージ (PM) ステータスのポップアップが表示されるようになり、ブラウザクライアントと同様に、カーソルを移動するにつれて投稿ごとに既読通知が投稿されます。
「いいね!」 2
merefield
(Robert)
15
自由にPRを提出するか、カラーコードを共有していただければ、例のテーマymlに追加します 
「いいね!」 2
気に入りました!マージしました、ありがとうございます!
「いいね!」 2
https://github.com/merefield/termcourse/pull/2
レンダリングがひどかったので修正しました。UIは差分レンダリングになり、はるかに高速でスムーズになりました。カーソル移動のたびに画面全体を再描画することはなくなりました。
今のところWindowsでのみテストしましたが、何か問題があればフィードバックをお願いします。低速なシステムでは大幅に改善されるはずです。
テストとGitHub CIも追加しました!