こんにちは丸山@h13i32maruです。
今日、Jasper v1.1をリリースしました🚀 割と大きめの変更が入っているので、内容をブログにしました。
OAuthアプリ化
OAuth認証に対応し、GitHub OAuthアプリとなりました(#245)。これまではPersonal Access Token(PAT)のみ対応だったのですが、OAuth認証を使うことで、Jasper利用開始時のアクセストークン設定がすごく簡単になりました。それと、アクセストークンを個別に管理するのではなくGitHub OAuthアプリとして管理できるようになります。
なお、GitHub Enterpriseの場合は引き続きPATのみの対応です。
PATからOAuthへの移行
現在利用中のJasperをPATからOAuth認証に移行するには、GitHubのPersonal access tokens管理画面から、Jasperで利用しているPATを削除してください。その後にJasperを再起動すると、アクセストークンの再設定画面が表示されます。ちなみにJasper v1.1.1でアクセストークンにread:project
スコープを要求するようになったので、バージョンアップ後はいずれにしろアクセストークンの再設定画面が表示されると思います。
OAuth Device Flow
今回OAuth対応にあたり、よく使われるWeb Application FlowではなくDevice Flowというものを使いました。Device FlowはCLIなどのヘッドレスアプリで使われることを想定したフローのようです。JasperはCLIではないのですが、Web Application Flowではブラウザとの連携が必要になるため、Device Flowを使うことにしました。GitHubがDevice Flowに対応したのは2020年07月頃のようです。
https://github.blog/changelog/2020-07-27-oauth-2-0-device-authorization-flow/
Device FlowによるOAuth認証は以下の手順通りに実装するだけで、非常に簡単でした。
https://docs.github.com/ja/developers/apps/building-oauth-apps/authorizing-oauth-apps#device-flow
GitHub Project対応
新しいGitHub Project(a.k.a beta, v2)に対応しました(#234)。これまでも旧GitHub Project(a.k.a classic)には対応していたのですが、そちらは今後利用されなくなっていくと思います。
GitHub Project自体は先月GAされ、classicからの移行も可能なようです。
OAuthアプリでのGitHub Projectアクセス問題
このリリースブログを書いてるときに気づいたのですが、GitHub OAuthアプリからissueのGitHub Project情報を取得しようとするとアクセスエラーが出ます。それ以外の情報(タイトルやissue authorなど)は正常に取得できます。GitHub公式のOAuthアプリ「GitHub GraphQL Exlporer」を使っても再現したので、多分アプリ側の問題ではなく、GitHub側の問題だと思います。
JasperでもOAuth認証でアクセストークンを設定して使っている場合、条件に合致するとGitHub Projectの情報が取れません。僕が把握してる条件は以下のような感じです。
- JasperをOAuth認証でアクセストークンを設定している
- OrganizationのissueやPRが対象
- パブリックなリポジトリ
- パブリックなGitHub Project
- 対象OrganizationがJasper(OAuthアプリ)を承認していない
- 通常、OrganizationがOAuthアプリを承認していない場合でも、パブリックリソースにはアクセスできるはずです
- 手元の検証でもJasperが承認されていなくとも、issueのタイトルなどは取得できました
現在、これらの内容をまとめてサポートに問い合わせ中です。
その他の更新
- Filter Streamの改善
- GitHub Enterpriseでのavatarアイコン表示不具合の修正 #231
- 自分自身によるissue更新時の通知を抑制 #250
- issue上のコメントハイライト修正 #251
- 日本語化 #246
- 組み込みブラウザ内のダークモードを非サポート #249
- 代わりにGitHub公式のダークモードをご利用ください
以上v1.1の更新情報でした。
GitHubスポンサーを公開しているので、応援してくれる方はスポンサードしてくれると嬉しいです😍 github.com