Skip to content
koyori-appPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Koyori iOS

Koyori の iOS クライアントです。

できること

  • ブラウザでの承認によるログイン、ログアウト(端末の失効)
  • アカウント: 右上に自分のアイコン。名前・メール・自己紹介を表示し、プロフィールの編集は Web の設定画面を開く(更新 API はブラウザのログイン専用)
  • テナントごとに並べたプロジェクト一覧(iPad は 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 test

ログインの仕組み

Koyori Desktop と同じ Device Token の発行手順(Authorization Code + PKCE、loopback)を使います。 規則は koyori-app/task の apps/backend/docs/personal-access-tokens-authz.md の「Desktop 認証」にあります。

  1. アプリが 127.0.0.1 の空きポートで待ち受ける
  2. アプリ内ブラウザで {サーバー}/desktop/authorize?port=&code_challenge=&state=&name=Koyori iOS を開く
  3. Web で承認すると http://127.0.0.1:{port}/callback?code=&state= に戻る
  4. POST /api/v1/desktop/auth/token で Device Token(90 日)を受け取り、Keychain に保存する

401 を受けたら(期限切れ・Web からの失効)ログイン画面に戻ります。

ライセンス

GNU Affero General Public License version 3(LICENSE)。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages