Jasper v1.1をリリースしました

こんにちは丸山@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からの移行も可能なようです。

https://github.blog/2022-07-27-planning-next-to-your-code-github-projects-is-now-generally-available/

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/creating-projects/migrating-from-projects-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の改善
    • Filter Streamに複数のクエリを指定できるようになりました(OR接続)
    • label:release_@current_dateのようにラベルに@current_dateを使って相対日付を指定できるようになりました #242
    • 詳しくはこちら
  • GitHub Enterpriseでのavatarアイコン表示不具合の修正 #231
  • 自分自身によるissue更新時の通知を抑制 #250
  • issue上のコメントハイライト修正 #251
  • 日本語化 #246
  • 組み込みブラウザ内のダークモードを非サポート #249
    • 代わりにGitHub公式のダークモードをご利用ください

以上v1.1の更新情報でした。

GitHubスポンサーを公開しているので、応援してくれる方はスポンサードしてくれると嬉しいです😍 github.com