8000 atme の最初の実装 by dominion525 · Pull Request #1 · dominion525/atme · GitHub
[go: up one dir, main page]

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
29564e4
Rust の CLI として開発を始めるための土台を用意
dominion525 Oct 28, 2026
3fb690c
設定ファイルと Keychain から認証情報を読めるようにする
dominion525 Oct 28, 2026
63e2ae9
Slack の検索 API でメンションと DM を取れるようにする
dominion525 Oct 28, 2026
aa6c868
メンションと DM の新着を取りこぼさず記録できるようにする
dominion525 Oct 28, 2026
6076e56
メッセージ本文を含む状態ファイルを他のユーザーから読めないようにする
dominion525 Oct 28, 2026
d8519b6
新着のメンションと DM にその場で気づけるよう macOS 通知を出す
dominion525 Oct 28, 2026
82a2fbb
メンションと DM の一覧を API を呼ばずに見られるようにする
dominion525 Oct 28, 2026
c98d156
外部コマンドに頼らず atme 自身が通知の許可を得られるようにする
dominion525 Oct 28, 2026
402ba78
通知を atme.app から UserNotifications で直接出す
dominion525 Oct 28, 2026
425a64a
本文中のメンションが ID のまま表示されないようにする
dominion525 Oct 28, 2026
b075c37
通知をクリックしたらそのメッセージを開けるようにする
dominion525 Oct 28, 2026
4831397
通知や Finder で atme と見分けられるようにアイコンを付ける
dominion525 Oct 29, 2026
3ab7972
新着が複数あってもバナーが 1 件ずつ出るようにする
dominion525 Oct 29, 2026
735bc08
SwiftBar を使わずに atme がメニューバーに常駐して一覧を出せるようにする
dominion525 Oct 29, 2026
8ed38dd
常駐している atme が定期的に取得してメニューを新しく保つ
dominion525 Oct 29, 2026
80e64d3
未読のメンションと DM を既読になるまで一覧に残す
dominion525 Oct 29, 2026
9a612fc
atme から開いたメンションと DM を、その 1 件だけ一覧から消す
dominion525 Oct 29, 2026
3eeda46
ログインしたら atme が自動で常駐を始められるようにする
dominion525 Oct 29, 2026
d176a47
ワークスペースが多くても見分けがつくよう、Slack 上の名前で見出しを付けて並べる
dominion525 Oct 29, 2026
c9d8933
「今すぐ取得」を続けて押しても Slack の API を呼びすぎないようにし、取得の状態を見せる
dominion525 Oct 29, 2026
14a6a9f
取得しているあいだ、メニューバーの「@」を回して分かるようにする
dominion525 Oct 29, 2026
a75e70f
「今すぐ取得」を押したら待たされないよう、間があくまで押せなくする
dominion525 Oct 29, 2026
eea53a1
「@」を渦巻きらしく見える OSS フォントの字形に替える
dominion525 Oct 29, 2026
134ff75
動作を確認できなかった session 方式を外し、正式な user token だけにする
dominion525 Oct 29, 2026
7aa082b
自動アップデートのため Sparkle を atme.app に組み込む
dominion525 Oct 29, 2026
fda9b05
更新の署名を確かめられるよう、atme 用の EdDSA 公開鍵を Info.plist に入れる
dominion525 Oct 29, 2026
4d48878
署名・公証した zip と Sparkle の appcast を 1 つのコマンドで作れるようにする
dominion525 Oct 29, 2026
ad508e4
公開後の置き場所から更新を受け取れるよう、appcast の URL と対応する macOS の版を決める
dominion525 Nov 1, 2026
ecd78d3
取得に失敗したことと、最後に取得できた時刻が正しく分かるようにする
dominion525 Nov 1, 2026
3c35416 8000
英語と日本語の両方で使えるよう、macOS 標準の Localizable.strings で文言を引く仕組みを入れる
dominion525 Nov 1, 2026
53a9f43
メニューと通知を英語と日本語で出せるよう、文言を Localizable.strings から引く
dominion525 Nov 1, 2026
8d7927f
エラーと案内の文も英語と日本語で出せるよう、Localizable.strings から引く
dominion525 Nov 1, 2026
d01fb91
Slack が対応する言語で使えるよう、8 つの言語の訳を足す
dominion525 Nov 1, 2026
a5d5b26
CLI も英語を基本にし、atme fetch の件数の行は言語の設定に合わせて出す
dominion525 Nov 1, 2026
a050e4c
token を貼るだけでワークスペースを足せるよう、追加と削除のウインドウを試しに入れる
dominion525 Nov 1, 2026
0570ab9
ワークスペースを全部外しても atme が動くよう、0 個の設定を受け付ける
dominion525 Nov 1, 2026
2ab7686
外したワークスペースの分がメニューと状態のファイルに残らないようにする
dominion525 Nov 1, 2026
f82eef8
同じワークスペースを別の名前で二重に足さないよう、Slack の team_id で見分ける
dominion525 Nov 1, 2026
002b225
誤って押してもワークスペースが消えないよう、削除の前に確認のシートを出す
dominion525 Nov 1, 2026
a23ec64
ワークスペースのウインドウを手早く扱えるよう、キー操作と状態の表示を整える
dominion525 Nov 1, 2026
81af7a3
Slack App の作成から token の追加までを迷わず進められるよう、App Manifest と手順の並びを用意する
dominion525 Nov 1, 2026
eaccbff
手順 2 の文が途中で折り返されないよう、短くする
dominion525 Nov 1, 2026
0c0c5e0
DM で相手の名前が 2 回並ばないよう、場所に出ている相手と同じ送り主は出さない
dominion525 Nov 1, 2026
628492e
初めて使う人が導入から日々の使い方までを追えるよう、README(英語・日本語)と MIT のライセンスを用意する
dominion525 Nov 1, 2026
9bbe65c
表示名が長い人の行でメニューが広がりすぎないよう、メニューに出す名前を 12 文字で切る
dominion525 Nov 1, 2026
c7136f6
tests/ のテストからも中の処理を呼べるよう、処理をライブラリに移す
dominion525 Nov 2, 2026
bcb1bc0
Slack との通信の処理を確かめられるよう、モックサーバーに向けてテストする
dominion525 Nov 2, 2026
da5dcdf
設定と状態のファイルの読み書きを確かめられるよう、置き場所を引数で受けて一時的なフォルダでテストする
dominion525 Nov 2, 2026
cd85e7f
取得から通知と保存までの流れを確かめられるよう、外の世界を差し替えられる形にしてテストする
dominion525 Nov 2, 2026
2879c8d
ワークスペースの追加と削除を確かめられるよう、取得と同じ外の世界の差し替えを使ってテストする
dominion525 Nov 2, 2026
74994c4
メニューやウインドウの部品を確かめられるよう、部品を作る処理を ui.rs に分け、メインスレッドで動くテストを足す
dominion525 Nov 2, 2026
0943a30
通知を出す流れを確かめられるよう、通知センターを差し替え口の後ろに隠し、偽物でテストする
dominion525 Nov 2, 2026
081e359
Keychain の読み書きの扱いを確かめられるよう、Keychain を差し替え口の後ろに隠し、偽物でテストする
dominion525 Nov 2, 2026
dc6a2f0
app.rs に判断を持たせないよう、常駐の状態と出来事の扱いを controller.rs に移し、テストする
dominion525 Nov 2, 2026
ca9fe76
Slack で読んだ古い未読がメニューに残り続ける不具合を見逃さないよう、持ち越した未読の見直しをテストする
dominion525 Nov 2, 2026
53137e7
スレッドの返信がチャンネルの既読で判定される不具合を見逃さないよう、スレッドの親の取り出しと返信の扱いをテストする
dominion525 Nov 2, 2026
82ebdbb
失敗したワークスペースの未読を通知し直す不具合を見逃さないよう、一部失敗のテストの前提と確かめることを直す
dominion525 Nov 2, 2026
83e48ac
足したばかりのワークスペースの通知の題が設定の名前になる不具合を見逃さないよう、偽の通知で題も記録してテストする
dominion525 Nov 2, 2026
4b16e0d
文言を足して訳の検査の一覧に入れ忘れても気づけるよう、文言の定数と KEYS の一致をテストする
dominion525 Nov 2, 2026
edaac51
初めての取得や足したばかりのワークスペースでも見落としが無いよう、まだ知らせていない未読を通知する
dominion525 Nov 2, 2026
b0ee14f
覚えている表示名を問い合わせ直す無駄を見逃さないよう、流れのテストでモックの呼ばれ方を確かめる
dominion525 Nov 2, 2026
269789f
手で書いた設定のコメントを落とす不具合を見逃さないよう、ワークスペースごとのコメントの扱いをテストする
dominion525 Nov 2, 2026
227e26e
実装を言い直しているだけのテストを、守るべき決まりを確かめる形に直すか外す
dominion525 Nov 2, 2026
22d209d
新しい API を呼ぶときにスコープの足し忘れに気づけるよう、スコープの一覧を実際に呼ぶ API と結びつけてテストする
dominion525 Nov 2, 2026
9b659eb
負荷の高い環境でテストが不安定にならないよう、時間に頼る前提を外す
dominion525 Nov 2, 2026
23e9dba
確認のシートのボタンの並びが変わっても「キャンセル」で消えないよう、応答の読み方を並びの隣に置いてテストする
dominion525 Nov 2, 2026
9998827
退職した人などの表示名を引けないだけでワークスペースの取得が止まる不具合を見逃さないよう、その場合をテストする
dominion525 Nov 2, 2026
7f4098d
通知を出せなかった未読を見落とさないよう、出せた通知の分だけを通知済みとして記録する
dominion525 Nov 2, 2026
b4c9f35
Slack の障害などで取得の途中に失敗したときに未読や名前が消える不具合を見逃さないよう、その場合をテストする
dominion525 Nov 2, 2026
88204e2
メニューバーの絵と件数の出し方を確かめられるよう、その判断を controller に移してテストする
dominion525 Nov 2, 2026
604ce5b
負荷でスレッドが止まってもテストが落ちないよう、取得の段階のテストに残る時間の前提を外す
dominion525 Nov 2, 2026
efe08c3
ほかのテストとポートを取り合わないよう、つながらないときのテストをポート 0 に向け、ログイン時の起動のテストを素直な形にする
dominion525 Nov 2, 2026
56f1f31
CI で書式と clippy の警告を確かめられるよう、cargo fmt の書式に揃え、clippy の指摘を直す
dominion525 Nov 2, 2026
b3ff7e1
PR とマージのたびに書式・clippy・テストを確かめるよう、GitHub Actions の CI を足す
dominion525 Nov 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: CI

on:
push:
branches: [main]
pull_request:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
check:
# macos-15 は arm64 のイメージ。atme は Apple silicon の macOS だけを相手にする
runs-on: macos-15
timeout-minutes: 30
env:
# clippy の指摘は版ごとに増えるので、手元で使っている版に固定する。上げるときは手元とそろえる
RUSTUP_TOOLCHAIN: "1.93.0"
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Install Rust
run: rustup toolchain install "${RUSTUP_TOOLCHAIN}" --profile minimal --component rustfmt,clippy

- name: Format
run: cargo fmt --check

- name: Clippy
run: cargo clippy --locked --all-targets -- -D warnings

# tests/appkit.rs は AppKit の部品を作るので、メインスレッドで動く自前の main で回る
- name: Test
run: cargo test --locked
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/target
tasks/
.DS_Store
Loading
Loading
0