Koyori の iOS クライアントです。
- ブラウザでの承認によるログイン、ログアウト(端末の失効)
- アカウント: 右上に自分のアイコン。名前・メール・自己紹介を表示し、プロフィールの編集は Web の設定画面を開く(更新 API はブラウザのログイン専用)
- テナントごとに並べたプロジェクト一覧(iPad は 2 列表示)。最後に開いたプロジェクトから起動する
- テナントのカレンダー: メンバーごとの段に、タスクを開始予定日〜締切の帯で並べる 2 週間(月曜始まり)の表。前後の 2 週間へ送れる
- 開始予定日の無いタスクは締切の日の点。主担当は塗り、それ以外は枠。完了はグレー、期限を過ぎた未完了は警告色
- 最上段にスプリントとマイルストーン(期日に旗)。メンバー・プロジェクトで絞り込める。帯を押すとタスク詳細へ進む
- 自分がオーナーのテナントではプロジェクトを作れる(テナントの作成はブラウザのログイン専用で、アプリからはできない)
- テナントのカレンダー: メンバーごとの段に、タスクを開始予定日〜締切の帯で並べる 2 週間(月曜始まり)の表。前後の 2 週間へ送れる
- タスク一覧: ステータス・担当者・作成者で絞り込み、並び替え(新しい順・優先度・期限)、続きの自動読み込み、引っ張って更新
- Web と同じく親のいないタスクだけを並べる(サブタスクは親の詳細に出す。親が一覧に無いサブタスクだけ ↳ 付きで出る)
- 行を右へスワイプで完了(完了済みなら未完了に戻す)、長押しでステータス・優先度を変更
- タスク詳細: ステータス・優先度の変更、コメントの閲覧と投稿
- 担当者・ラベルの付け外し
- 親タスクへのリンクと、サブタスクの一覧・完了の切り替え・追加
- 作成者と作成日時、開始予定日
- 担当者・作成者・コメントの投稿者を押すとプロフィール(名前・アイコン・自己紹介)を出す。自分ならアカウントの画面
- 説明とコメントは Web と同じく GFM(表・チェックリスト・取り消し線)で表示し、1 つの改行もそのまま改行にする
- 本文の
KEY-N(例:ENG-42)は同じテナントのそのタスクへのリンクにする(コードとリンクの中は除く) - メンションは
@名前で出す。プロジェクトの外の人・退会した人は名前を伏せる
- 本文の
- リポジトリ: 連携先、取り込み元の Issue、結ばれた PR(状態・未解決の指摘数・マージ後の処理が未適用か)・コミット・ブランチ。押すとホストのページを開く
- PR を番号でリンクできる(マージで完了にするかも選べる)。左へスワイプでリンクを外す
- タスクの作成: 作成 API で指定できる項目すべて(ステータス・優先度・担当者・ラベル・開始予定日・期限・最終期限・マイルストーン・スプリント・親タスク・見積もり・進捗・カスタムフィールド)
- タスクの編集(タイトル・説明)
- ラベルの管理: 作成・編集(名前・色・説明)・削除。タスク一覧の右上のメニューか、ラベルを選ぶ画面の「管理」から開く
- 通知: 自分宛ての通知の一覧(すべて・タスク・レビュー)、未読の印、既読化。開くとそのタスクやレビューへ進む
- プッシュ通知は無い(API に端末の登録が無い)。アプリに戻るたびに未読を数え直す
- レビュー: PR の一覧、マージ判定、指摘(重大度・状態・本文・履歴)、ラウンドの要約。指摘の状態を変えられる
- PR は状態(要対応・承認待ち・未解決・解決済み)・作者・タイトルか番号で、指摘は未解決かどうかと重大度で絞れる
- マージを止めている指摘(High / Medium)が修正済み(Fixed)だけなら「承認待ち」、直す番のもの(Open・Fixing)が残っていれば「要対応」と出す
- PR の状態(オープン・クローズ・マージ済み)と、リンク先のタスク(押すとタスク詳細)を出す
- アバター画像のアップロード(プロフィールの編集は Web に任せている)
- タスクの編集での開始予定日の変更(詳細は表示だけ。作成では指定できる)
- Drive、招待、PWA、Discord Webhook、山積み(仕様が Draft)、カレンダー上のドラッグ
- Xcode 16 以降、iOS 18 以降
Koyori.xcodeprojを開いてKoyoriスキームを実行する。実機で動かすときは Signing の Team を選ぶ
| パス | 置くもの |
|---|---|
App/ |
アプリの起動処理だけ |
KoyoriKit/ |
API クライアント・ログイン・画面(Swift Package) |
ロジックのテスト(PKCE・コールバックの待ち受け・JSON の読み書き・本文の KEY-N とメンション・カレンダーの帯の位置):
cd KoyoriKit && swift testKoyori Desktop と同じ Device Token の発行手順(Authorization Code + PKCE、loopback)を使います。
規則は koyori-app/task の apps/backend/docs/personal-access-tokens-authz.md の「Desktop 認証」にあります。
- アプリが
127.0.0.1の空きポートで待ち受ける - アプリ内ブラウザで
{サーバー}/desktop/authorize?port=&code_challenge=&state=&name=Koyori iOSを開く - Web で承認すると
http://127.0.0.1:{port}/callback?code=&state=に戻る POST /api/v1/desktop/auth/tokenで Device Token(90 日)を受け取り、Keychain に保存する
401 を受けたら(期限切れ・Web からの失効)ログイン画面に戻ります。
GNU Affero General Public License version 3(LICENSE)。