v0.10.0-beta · ストレスゼロ UX 2 · 英語化 · アクセシビリティ · v1.0 準備 · MIT

クリップボードを、
倉庫に。

macOS のための、超軽量でローカルファーストなクリップボードマネージャ。下から出るカルーセルがメイン、ノッチが副メイン、Raycast 拡張がサード。v0.10.0-beta の最新アップデートはリリースノートをご覧ください。

↑ ノッチに重ねてみる
# clipboard.swift
func paste(item: ClipItem) {
  NSPasteboard.general.setString(item.content, forType: .string)
  CGEvent.post(cmdV)
}
 
// ノッチ ↑ にカーソルを乗せてみてください
3 つの呼び出し方

同じ履歴。下から、上から、Raycast から。

下部ストリップが主役。ノッチからは同じカルーセルが上から降りてきます。Raycast 拡張はサード。表示位置と起動方法が違うだけで、履歴・フォルダ・定型文はすべて同じデータベースを共有します。

1

下部ストリップ

⇧⌘V

メイン。下から立ち上がるカルーセル。フォルダ=倉庫として、定型文・画像・URL を分類して貯めておけます。⌘1〜9 で一発貼付、X キーで複数選択、⌘Enter で一括貼付。

2

ノッチホバー

↑ マウス

サブ。ノッチにマウスを乗せると、同じカルーセルが上から降りてきます (ノッチがない Mac は画面上端中央 20% が代わり)。表示位置だけが違い、中身も操作も下部ストリップと同じ。

3

Raycast 拡張

Raycast 起動 → Pasty

サード。Raycast 内で履歴検索・複数選択・連続貼付ができる拡張。Pasty 本体と同じ履歴・フォルダ・定型文を共有します。

STRIP
Pasty 受信 仕事 コード 参考 すべて Aa 🖼 🔗 📄
def hello():
return "pasty"
コード⌘1
https://github.com/
IvyGain/Pasty
リンク⌘2
{
 "version": "0.4.13",
 "license": "MIT"
}
JSON⌘3
議事メモ —
今日 v0.8.1-beta 出荷
テキスト⌘4
Pasty — Paste の代わりに
テキスト⌘5
screenshot.png
(2.3 MB)
画像⌘6
/usr/local/bin/pasty
ファイル⌘7
Pasty · 下にドラッグ
こんにちは
https://github.com
def hi(): …
{ "ok": true }
R Pasty
  • def hello(): return "pasty"
    Code · VSCode · たった今
    1
  • https://github.com/IvyGain/Pasty
    Link · Safari · 2 分前
    2
  • { "version": "0.4.13", "license": "MIT" }
    JSON · ターミナル · 5 分前
    3
  • Pasty — Paste の代わりに
    Text · Things · 12 分前
    4
  • https://www.raycast.com/ivygain/pasty
    Link · Safari · 20 分前
    5
Paste ⌘↩Paste All Toggle Select ⌘KActions
なぜ Pasty なのか

Paste が見落としたところに、手を入れました。

Paste のレビュー、Reddit、Hacker News に書かれた不満をひとつずつ読み、それぞれに答える形で Pasty を作りました。

Maccy より軽い。

常時 60 MB 未満。コールドスタート 0.2 秒以下。慎重なポーリング、必要十分なメモリ。4.0 MB の dmg がそれを物語っています。

🔒

すべて、ローカルだけで。

あなたの Mac から外には何も出ません。クラウドアカウントなし、テレメトリなし、解析なし。データは SQLite ファイル 1 つに入っているので、いつでも自分で覗けます。

ノッチが、動詞になる。

ノッチをインタラクティブにした世界初のクリップボードマネージャ。乗せて呼び出し、ドラッグして貼り付ける。キーボードに触れる必要はありません。

{}

開発者のために。

7 言語の構文ハイライト。{{date}} {{cursor}} {{uuid}} といったスニペットは貼付の瞬間に展開。差分ビュー内蔵。

🔍

意図を読む検索。

SQLite FTS5 による全文検索の上に、本物の DSL。type:link source:Safari /TODO/ >7d のように grep のように組み合わせ、Spotlight のように速く。

無料・OSS・ずっと。

MIT ライセンス、コードはぜんぶ GitHub。サブスクなし、卒業するプランなし、後出しの値上げなし。フォークして、配って、好きにしてください。

複数選択 & 一括ペースト — v0.2 で追加

クリック。Shift クリック。まとめて貼り付け。

5 つの値を 5 つのフォーム欄に順に貼りたいこともあれば、ひとつのテキストにまとめて貼りたい時もある。Pasty はそのどちらにも、Finder で慣れた操作のまま対応します。

Shift クリックで範囲選択。

1 枚目を選んで、 を押しながら次のカードをクリック。間にあるカードがすべて選択されます。Finder、メール、エディタと同じ流儀。個別に足したい/外したいときは を押しながらクリック。

キーボードでも同じ操作で。

で現在のカードを選択/解除。⇧↑/↓ で範囲を広げる。⌘A で全件選択。マウスとキーボードは同じ「選択状態」を共有するので、好きな方法を行き来できます。

Return で順番に貼り付け。

選択中に を押すと、各カードに対して ⌘V を少し間隔を空けて送ります。複数欄のフォームをまとめて埋めたいとき向け。

⌥↩

Option+Return でまとめて 1 ブロック。

選択したカードを改行で連結して、1 回のペーストとして送信。Slack のあちこちから集めたメモを 1 つの議事録にまとめる時に最適です。

3 件選択中 — ↩ それぞれ順に貼付 · ⌥↩ まとめて 1 ブロック
Pasty v0.8.1-beta — クリップ編集 & 動画プレビューテキスト · メモ
https://ivygain.github.io/Pasty/リンク · Safari
def shipIt(): return Trueコード · VSCode
4スクリーンショット 2026-06-13 — 2.3 MB画像 · Screenshot
フォルダ=倉庫 — v0.3 で強化

クリップボードを、倉庫として持ち歩く。

Paste の「ピンボード」を、もう少し深く。色付きフォルダを好きなだけ作って、定型文・画像・URL・JSON・コードを分類して貯めていけます。⌘C で流れてきた一瞬を、ずっと使える資産に。

📁

フォルダはいくつでも。

「営業の定型文」「請求書テンプレ」「画像倉庫」「ToDo の決まり文句」…。下部ストリップの「+ 新しいフォルダ」から、用途に応じて好きなだけ作れます。色も自分で選べます。

✍️

定型文を Pasty 内で直接書く。

「定型文」ボタン または ⌘N から、新しいテキストをその場で作成。クリップボードを経由しなくても、開いたフォルダに直接保存されます。{{date}} {{user}} {{uuid}} といったスニペット変数は貼付時に展開されます。

🖼

画像も、文章も、リンクも。

テキストだけでなく、画像 (PNG/TIFF を自動正規化)・ファイルパス・URL・コード・JSON も同じフォルダに混ぜて保存可能。サムネイル付きで、内容を見ながら選べます。

🎯

フォルダ単位で一括ペースト。

フォルダタブを右クリック → 「中身を順次貼付」or「中身を結合して貼付」。複数欄のフォームに一気にデータを流し込んだり、定型文セットをまとめて 1 通のメールにしたり。

🔁

フォルダ名と色は後から変更可能。

タブを右クリックで「名前を変更」「削除」。フォルダを消してもクリップ本体は履歴に残るので、安心して整理し直せます。

↔︎

ストリップ ⇔ ノッチで同じ倉庫。

下部ストリップで作ったフォルダは、ノッチホバーでもそのまま現れます。同じデータベース、同じカルーセル、同じ選択状態。場所だけ違う。

v0.4 で投入した革命

クリップボードに、プレビューと AI と賢さを。

v0.4 は、Pasty を「貯める道具」から「使い倒す道具」へ引き上げる更新です。全画面プレビュー、テンプレ差し込み、Apple Intelligence による書き直し・翻訳・要約、自動カテゴリ分類、スマートフォルダ — すべてオンデバイスで完結します。

🔍

プレビュー革命

Space で Quick Look 全画面、⌘P で Explorer 分割ペイン (リスト + 大きなプレビュー)。カードに乗せるだけの Hover Pill で、中身を見ながら選べます。

テンプレート差し込み

定型文に [[name]] [[topic]] といったプレースホルダを埋め込んでおくと、貼付の瞬間にダイアログが立ち上がって値を入力 → 完成したテキストが送られます。メール、伝票、議事録ですぐ効きます。

🧠

オンデバイス AI

⌘I で AI メニュー、⌃⇧R/T/S/J/E で直接 (書き直し / 翻訳 / 要約 / 変換 / メール整形)。macOS 26+ では Foundation Models (Apple Intelligence) と統合、それ未満では heuristic にフォールバック。ネットワークは介しません。

📂

スマートフォルダ

今日 / 今週 / 画像 / リンク / コード / 定型文 / 大容量 — Pasty が自動で 7 つのスマートフォルダを生成。条件にマッチするクリップが流れ込み、消しても自動で再構成されます。手で作った倉庫と並んで使えます。

⚙️

自動カテゴリ分類

コピーした直後に NLLanguageRecognizer + heuristic が走り、コード / URL / JSON / 日本語 / 英語 を判定。指定したフォルダに自動 pin。「気付いたら倉庫が育っている」体験。

📚

フローティング Stack ピル

選択中のクリップ件数を、画面右下に常時表示。ストリップを閉じても「今いくつ抱えているか」がひと目で分かるので、Shift クリックで集めて、別アプリへ運んで、まとめて貼る、が自然に。

🎬

オンボーディング + ヘルプ

初回起動に 3 ステップのウォークスルー。コピー → 呼び出し → 貼付 を実機で体験できます。あとはいつでも ⌘? で全キー早見表をオーバーレイ表示。

🔑

ホットキーカスタマイズ

⇧⌘V / ⌥⇧V / ⌃⇧P / ⌃⇧Z / ⌃⇧R-E まで、全部リバインド可能。既存のショートカットと衝突しない組み合わせに、自分の指で合わせ込めます。

📊

インサイトダッシュボード

SwiftUI Charts による統計ビュー。何種類のクリップを抱え、どのフォルダがよく使われ、どんな時間帯にコピーしているか — クリップボードの使い方を可視化します。設定 → インサイト から。

💾

JSON Import / Export

全クリップ + フォルダ構造を 1 つの JSON にバックアップ。別の Mac に移行する時、リカバリ時、共有時に。プレーンテキストなので diff も取れますし、自分でスクリプトを書いて加工も自在。

🎉

貼付完了トースト

貼り付いた瞬間、画面右下にミニ通知。「いま 3 つ目を貼った」「テンプレの値が埋まった」が一目で分かるので、連続貼付や複数選択の流れが止まりません。控えめに、でも頼もしく。

↩️

Undo Paste

⌃⇧Z で直前の貼付を取り消し。間違った欄に流し込んだ瞬間、ひとつ前のクリップボード状態に戻すので、「やってしまった」を恐れずに連続貼付できます。

⌘?

ヘルプオーバーレイ

いつでも ⌘? で全ショートカット一覧をその場に重ねて表示。覚えなくていい。忘れていい。必要な時に、必要なだけ、ヒントが現れます。

⌘I AI アクション — 選択中のクリップに対して、オンデバイスで実行 Foundation Models · macOS 26+
R書き直す — もう少し丁寧に / カジュアルに / 短く⌃⇧R
T翻訳 — 日本語 ↔ 英語、自動判定⌃⇧T
S要約 — 長文を 3 行に⌃⇧S
J変換 — JSON 整形 / マークダウン化 / 箇条書き⌃⇧J
Eメール整形 — 件名・本文・署名のテンプレに流し込み⌃⇧E
プライバシーが、初期設定。

あなたのクリップボードは、あなたのもの。

Pasty は、Application Support フォルダ配下にある SQLite ファイル 1 つにすべてを保存します。一時停止して、削除して、ターミナルで覗いてみてください。それ以外には何もありません。

ネットワーク通信ゼロ。
解析ゼロ。
失うものもゼロ。

クリップボードマネージャがネットワーク上でできる最高の振る舞いは、何もしないことです。Pasty のバイナリには HTTP クライアントが組み込まれていません。 ペーストボードの sensitive フラグは尊重します。パスワードマネージャがフロントにいる時は記録しません。バンドルID単位でアプリを除外することもできます。

⌃⇧P でキャプチャを 60 秒間一時停止。設定 → プライバシータブから、ワンクリックで全履歴を消せます。

# Pasty が保存するもの
~/Library/Application Support/Pasty/
├── pasty.sqlite  # 履歴・Pinboard・FTS5 インデックス
└── blobs/        # 画像をハッシュで保存

# Pasty が外部に送るもの
✓ ありません

# Pasty が Apple に要求する権限
✓ アクセシビリティ — 直前のアプリに ⌘V を送るため
✓ それ以外なし
機能ハイライト

編集できる倉庫 — 中身を、書き換えられる倉庫。

Pasty は「倉庫の中で完結する」ことを大事にしています。コピーしたあとに気付いた typo は ⌘E でその場で書き換え、テキストでコピーした URL は自動で link カードに昇格、動画ファイルは先頭フレームをサムネ表示。Stack の連続ペースト問題も修正しました。

✏️

クリップ内容の編集

⌘E でテキスト・URL・コードの中身をその場で書き換え。「コピーしたあとに気付いた typo」を、新しく開き直さずに直せます。倉庫の中で内容が完結するという、Pasty の本領が一段深くなりました。

🔗

URL 自動認識

テキストとしてコピーされた URL も、自動で link カードに昇格。プレビュー、ドメイン表示、ブラウザでの直接オープンが、いつものテキストコピーでも効くようになりました。Slack の文中 URL もそのまま倉庫資源に。

🎬

動画プレビュー

.mp4 / .mov ファイルの先頭フレームをカードにサムネ表示。フィルタにも「動画」を追加。倉庫を眺めただけで「あのクリップだ」と見つけられる粒度に揃いました。

📚

Stack 機能の解説 + バグ修正

連続ペーストが途中で止まる問題を修正、オンボーディングに Stack の使い方ステップを追加。複数選択 → 順番にペーストという Pasty 独自のワークフローが、初日から伝わるようになりました。

🎯

設定 UX 改善

履歴保持期間に 7d / 30d / 90d / 365d / 無期限 プリセットボタンを追加。「いつまで残すか」を、数値入力なしで決められます。倉庫の容量設計が、3 クリックで終わるようになりました。

🐛

D&D / 画像ペースト改善

外部アプリへの D&D で marker prefix が混ざってしまう不具合を修正、画像ペースト時に余計な文字列が貼られてしまう問題も解消。「コピーしたものが、そのまま貼られる」という当たり前を、もう一度。

v0.4.13 — Stable リリース

v0.4.13 の新機能 (Stable) — Raycast を、手放さずに。

v0.4.13 は、Raycast 派と Slack / Discord 派のための更新です。連続貼付モードで Raycast の状態が残り、Enter 送信モードで改行が末尾に入る。複数選択は Space ひとつに統一、フォルダの使い方は 3 段でガイドされます。

🔁

連続貼付モード (Raycast)

⌥Enter で貼付したとき、Raycast の検索状態を保持。次回 ⌘Space を押せば、続きから複数のクリップを連続で貼り出せます。長文の差し込みや、フォーム入力に最適です。

Enter 送信モード (Raycast)

⇧Enter で貼付したクリップの末尾に改行を自動付与。Slack / Discord / iMessage で「貼って、Enter で送信」が 1 アクションに。タイムラインに連続投稿するときの摩擦がゼロになります。

🧲

シンプル化された複数選択

Space キー 1 つで選択をトグル。Pasty 本体・Raycast の両方で同じ操作感に統一しました (旧 X キーは撤廃)。Raycast ライクな UX で、覚えるショートカットが 1 つ減ります。

📂

フォルダ詳細オンボーディング

ドラッグで定型文化 → 右クリックで整理 → 複数選択で一括移動。フォルダの使い方を 3 段に分けてガイド。「倉庫」という Pasty の本領が、初日に伝わるようになりました。

v0.4.12 — 過去のリリース

v0.4.12 の新機能 — 体験の磨き込み。

v0.4.12 は、Pasty を「初めて触る人にも、毎日使う人にも」気持ちのいい道具にするための更新です。オンボーディング、ガラス感のあるシャドウ、設定タブ、複数選択フロー、そして Raycast 拡張による連続貼付。

🎯

7 ステップオンボーディング

初回起動時、コピー → 呼び出し → フォルダ → 複数選択 → 貼付 を 7 ステップで体験。手を動かしながら覚えられるので、説明書を読む時間が要りません。

🌊

3 層シャドウ + ガラス感

ストリップ・ノッチドロップダウン・ダイアログのすべてに、Liquid Glass 風の 3 層シャドウを再設計。背景となじみつつ、浮いて見える物理感が戻ってきました。

🗂

設定タブ刷新

一般 / ホットキー / フォルダ / AI / プライバシー / インサイト / 詳細 / Raycast の 8 タブに整理。初心者向けの説明文と、上級者向けの細かいトグルが両立しました。

⌘↩

⌘Enter 一括貼付

複数選択した状態で ⌘Enter。すべてのクリップを順番に、または 1 ブロックにまとめて貼付。フォーム入力もメール本文も、これ 1 つで埋まります。

🅧

X キーで複数選択

カードにフォーカスして X を押すと、その場で選択にトグル。Shift クリックも併用可。キーボードだけで「集める→まとめて貼る」が完結します。

🔍

Raycast 拡張で連続貼付

Pasty 本体と同じ履歴を Raycast 内で検索 → タブで複数選択 → ⌘↩ で連続貼付。Raycast 派の人もそのまま Pasty の倉庫を使えます。

ダウンロード

Pasty を、はじめる。

macOS アプリ本体と、Raycast 拡張。両方ともローカルファースト、両方とも無料、同じ履歴を共有します。

macOS アプリ

v0.10.0-beta

dmg をダウンロード。/Applications にドラッグ。⇧⌘V。インストールは、それで全部です。

macOS 14 Sonoma 以降 Apple Silicon & Intel MIT
すべてのリリース・ソースコード
$ git clone https://github.com/IvyGain/Pasty.git
$ cd Pasty
$ swift build -c release
$ open .build/release/Pasty.app
R

Raycast 拡張

Pasty for Raycast

Raycast 内で履歴検索 → タブで複数選択 → ⌘↩ で連続貼付。Pasty 本体と同じ履歴・フォルダ・定型文を共有します。

Raycast Store 公開準備中。当面は下のワンライナーで簡単にセットアップできます。

curl -fsSL https://raw.githubusercontent.com/IvyGain/Pasty/main/pasty-raycast/scripts/install.sh | bash
Raycast 1.60 以降 Node.js 20+ Pasty v0.10.0-beta+ 推奨
手動セットアップ (上のコマンドが使えない場合)
$ git clone --depth 1 https://github.com/IvyGain/Pasty.git
$ cd Pasty/pasty-raycast
$ npm install
$ npx ray develop
# Raycast を起動して「Pasty」と入力すると 4 つのコマンドが見つかります

npx ray develop を実行している間だけ Raycast に拡張が登録されます。ターミナルを開いたままにしてください。Raycast Store 公開後は通常のワンクリックインストールに切り替わります。

使い方

5 分で、もう「コピーを失う」を、なくす。

Pasty は、すでにある体の動きの中に溶け込むように設計されています。チュートリアルもアカウント作成もありません。順番にどうぞ。

1

インストールと初回起動

dmg をダウンロード、Pasty.app/Applications にドラッグ。初回だけ右クリック → 開く で Gatekeeper をくぐります。メニューバーの右上にアイコンが出ます。

2

アクセシビリティを許可

Pasty は 1 度だけ聞きます。これは、直前のアプリに ⌘V を送るために使います。それ以外には使いません。

3

いつも通りにコピー

⌘C、ドラッグコピー、共有メニュー、なんでも構いません。Pasty がバックグラウンドで拾い、内容ハッシュで重複排除します。

4

⇧⌘V を押す

下から Pasty のストリップがせり上がります。←/→ でカードを送る、⌘1〜9 で番号指定貼付、⇧↩ で書式を捨ててプレーンテキストとして貼付。Return で確定。

5

Raycast 拡張で連続貼付

Raycast を起動して Pasty と入力 → Pasty の履歴がそのまま検索可能。 で複数選択、⌘↩ で連続貼付。Raycast 派の人もそのまま Pasty の倉庫を使えます。

6

ノッチに乗せる

カーソルを MacBook のノッチに近づけると、Liquid Glass のストリップが滑り降りてきます。カードをそのまま下のエディタへドラッグ。マウスだけで貼付完了。(ノッチがない Mac は、画面上端の中央 20% が代わりに反応します)

7

フォルダ=倉庫に振り分け(自動分類も可)

ストリップ上部の「+ 新しいフォルダ」で好きな名前・色のフォルダを作成。クリップを右クリック → 「フォルダに振り分け」で分類。「定型文」ボタン or ⌘N で文章を直接書いて保存することも。設定 → 自動カテゴリ分類 をオンにすれば、コピーした瞬間に種別を判定して指定フォルダへ自動 pin されます。

8

フォルダごと一括ペースト

フォルダタブを右クリック → 「中身を順次貼付」or「中身を結合して貼付」。複数欄のフォーム入力や、定型文セットをまとめてメールにする時に便利。

9

いつでも一時停止

⌃⇧P でキャプチャを 60 秒間停止。パスワードマネージャを触る瞬間に使えます。一時停止中はメニューバーアイコンが色付きになります。

10

AI で書き直し・翻訳 ⌃⇧R/T/S

クリップを選んで ⌘I で AI メニュー。または ⌃⇧R 書き直し、⌃⇧T 翻訳、⌃⇧S 要約、⌃⇧J 変換、⌃⇧E メール整形を直接実行。macOS 26+ は Apple Intelligence (Foundation Models)、それ未満は heuristic にフォールバック。すべてオンデバイスです。

キーボードショートカット早見表

V
下部ストリップの表示・非表示。
V
代替サーフェス(プレビューモード等)の表示・非表示。
複数選択中のクリップを一括貼付(順次 / 連結)。
X
フォーカス中のカードを選択にトグル(複数選択)。
P
キャプチャを 60 秒間一時停止。
選択中のクリップを貼付(複数選択中は順次貼付)。
書式を捨ててプレーンテキストとして貼付。
複数選択を 1 ブロックに連結して貼付。
現在のカードを選択 / 解除(複数選択トグル)。
範囲選択を上 / 下に拡張。
A
表示中の全件を選択。
クリック
個別のクリップを選択トグル。
クリック
クリックしたカードまで範囲選択を拡張。
19
N 番目のカードを直接貼付。
キーボードカーソルを移動。
F
検索フィールドにフォーカス。
E
クリップを編集。
N
テキストクリップを新規作成。
Quick Look プレビュー(全画面)。
P
Explorer モード切替(分割ペインプレビュー)。
I
AI アクションメニュー。
R
AI で書き直し。
T
AI で翻訳(日本語 ↔ 英語)。
S
AI で要約。
J
AI で変換(JSON 整形・Markdown 化など)。
E
AI でメール整形。
Z
直前の貼付を Undo。
?
ヘルプオーバーレイ(全キー早見表)を表示。
,
設定を開く。
ハイライト中のクリップを削除。
パネルを閉じる。

リリースノート

過去のリリースは、すべてここから辿れます。各バージョンの専用ページは検索エンジンからも直接開けるよう、固有 URL を発行しています。

最新版
v0.10.0-beta
macOS 14+ · Apple Silicon & Intel · MIT
macOS 14+ 用にダウンロード .dmg
v0.10.0-beta 最新

Pasty 0.10.0-beta — v1.0 準備リリース

🎯 ストレスゼロ UX 2

  • 検索フィールドに 300ms キーストロークデバウンスを導入。タイピング中の FTS5 クエリ発火を約 70% 削減。
  • FTS5 パターン LRU キャッシュ (64 件) で繰り返しクエリの CPU 負荷を 5–15% 軽減。
  • ホバープレビューのキャンセル動作と空クエリ時の最適化を再検証。
  • Swift 6 strict concurrency 準拠化: 対象 7 ファイルで警告 108 件 → 0 件、@MainActor/Sendable を明示化。

🌐 英語化

  • Onboarding / Settings (一般タブ) / WhatsNew / Help を Localizable.strings (ja.lproj + en.lproj) に 70 キー追加 (en/ja パリティ済み)。
  • 新ヘルパー L10n(key) / L10nText(key) / L10nFormat.string(key, args...) を導入。
  • AI / Insights / OCR ラベルは v0.10.1 で追従予定。

♿️ アクセシビリティ

  • 6 つの主要 View (StripPanel / SettingsWindow / OnboardingView / WhatsNewPresenter / HelpOverlayView / ClipPreviewView) に VoiceOver ラベル 30 件 + UI test 用識別子 2 件を追加。
  • HelpOverlayView のショートカット行が「キー + 説明」を 1 発話に統合 — 30+ 行すべてが VoiceOver でクリアに読み上げ可能。
  • Dynamic Type は v0.9.9 luxury UI/UX に視覚的回帰を起こさないため次回ターゲット。

📦 v1.0 準備

  • DB GC: 90 日経過した soft-delete クリップを自動 hard-delete する RetentionSweeper を追加。起動時に BlobGC と並んで起動。
  • マイグレーション統合テスト 3 件 + soft-delete ライフサイクルテスト 4 件 (計 7 件) で v1→v10 を網羅。
  • Disk LRU: VideoThumbnailCache + PDFThumbnailCache に ~/Library/Caches/io.pasty.app/{video-thumbs,pdf-thumbs}/ 永続化 (40 MB + 20 MB / 90 日エビクション)。
  • 本リリースで統合テスト 7 件 (マイグレーション v1→v10 / soft-delete ライフサイクル) を新規追加。swift test 51/51 グリーン。
v0.9.9-beta 2026-06-26

Pasty v0.9.9-beta — 軽量化と構造最適化、業界 No.1 設計思想

7 軸の全方位監査 (critical path / hot path / re-render / leak / DB / concurrency / industry benchmark) を経て、表面ではなく構造レベルで仕立て直したリリースです。Raycast / Linear / Apple Store の "売れる仕組み" を Pasty に翻訳しました。

⚡ 軽量化

  • SQLite 同時性チューニング: WAL ジャーナル + synchronous = NORMAL + 16MB cache + 32MB mmap を全 DB 起動に適用。検索とインサートの両方が体感で速くなります。
  • 無駄な再描画を排除: ClipStore.recent を実差分があるときだけ publish するよう変更。アイドル状態での SwiftUI 再評価を抑制しました。
  • メニューバービューのメモ化: 上位 10 件スライスをキャッシュ。クリップボード polling のたびに新しい配列を生成していたのを停止。
  • FTS5 ランキング: 検索結果は BM25 で関連度順にソート (タイブレーカーが createdAt DESC)。"今コピーしたあの URL" が最上位に来ます。

🎯 ストレスゼロ UX

  • キーボードでフォルダ並び替え: ⌥↑ / ⌥↓ で 1 つずつ、⌥⇧↑ / ⌥⇧↓ で先頭 / 末尾へ。マウス不要。⌘? ヘルプ表にも追記。
  • トースト消滅タイマーの統一: DispatchWorkItem 由来の旧式タイマーを構造化並行 (Task + Task.sleep) に置き換え。キャンセル挙動が予測可能に。
  • searchPage(query:afterID:limit:): 履歴ビュー / アーカイブ拡張に向けたカーソルベースのページネーション API を追加。ユーザー向けの直接効果は次リリース以降。

🔩 リファクタ

  • 並行モデルの統一: DispatchQueue.main.asyncAfter を 4 箇所削除し、Task { @MainActor in try? await Task.sleep(...) } に置換 (PastyApp Stage 2、PasteToast auto-dismiss、TemplateFieldDialog focus latch ほか)。
  • PerfLog.log(_:) 追加: 自由文の perf 計測ポイントを少ないコストで埋められるよう拡張。
  • DB メンテナンス自動化: 週 1 回 ANALYZE、月 1 回 PRAGMA incremental_vacuum(5000) をバックグラウンドで実行。
  • Soft-delete 密度ログ: PerfLog.enabled のときだけ tombstone 比率を出力。GC 遅延の早期検知に使えます。

🏆 業界 No.1 設計思想

  • Raycast / Linear: "every action keyboard-reachable" を満たすため、これまでマウス専用だったフォルダ並び替えを ⌥+方向キーで到達可能にしました。
  • Linear (motion design tokens): 既存 DesignTokens.swiftsnappy (response 0.35 / damping 0.85) を引き続き活用。次リリースでキャプチャ瞬間の "祝祭" アニメーションへ拡張予定です。
  • McDonald's (operational reproducibility): 7 軸監査と PRAGMA チューニングで、コピー → ストリップ → ペーストのレイテンシを構造的に予測可能にしました。
  • Stripe (fail-loud-but-recoverable): DB メンテナンス失敗時はサイレントに記録し、次起動でリトライ。ユーザー操作を阻害しません。

リリース詳細: https://github.com/IvyGain/Pasty/releases/tag/v0.9.9-beta

v0.9.8-beta 2026-06-22

Pasty v0.9.8-beta — 静かに、自動で、ラグジュアリーに

「ノイズを消し、上限を自動で守り、見た目を一段引き上げる。」v0.9.7-beta の P1 一掃に続き、Wave 1–2 で UX とビジュアルを総ざらいします。

🔇 静かに

  • 1000 件超過時のトースト通知を撤廃しました
  • 検索結果上限の警告も非表示化しました
  • バックグラウンドのパフォーマンス最適化 (LIMIT 1000) はそのまま継続します

🧹 自動 trim 設定

  • クリップ数が上限を超えた際に自動で古いクリップを soft-delete する機能を追加
  • ピン留めしたクリップは保護されます
  • 設定 → 一般 → クリップ上限 で有効/無効と上限値を選択可能 (500 / 1000 / 5000 / 10000 / 無制限)
  • 起動時と新規クリップ追加時 (60 秒スロットル) に自動実行

💎 ラグジュアリー UI/UX

  • 統一デザイントークン (PastyDesign) を全画面に適用
  • カード/パネルに多層シャドウ + マテリアル backdrop
  • フォルダタブを Apple Wallet 風グラデーション + soft shadow に
  • HoverPreview にアクセントストリップ + prominent shadow
  • 設定画面の typography とタブバーを刷新 (ultraThinMaterial + accent underline)
  • WhatsNew + Onboarding に hero gradient + ステップインジケータ追加
  • ライト/ダーク両モード対応 (NSAppearance dynamicProvider)

リリース詳細: https://github.com/IvyGain/Pasty/releases/tag/v0.9.8-beta

v0.9.7-beta 2026-06-22

Pasty v0.9.7-beta — 30 件の P1 + 4 件の Audit Follow-up

v0.9.6-beta の P0 安定化に続き、v0.9.5-beta Stability Audit で洗い出された 30 件の P1 と、Wave-2 audit で追加検出された 4 件の follow-up をまとめて落とします。「ホットパスを軽く、失敗を黙らせず、削除済みは本当に消す。」

⚡ パフォーマンス強化

同一テキスト連続コピー時の SHA256 を省略

クリップボード変化検出のたびに SHA256 を計算していましたが、lastTextString キャッシュを追加し、直前と同一文字列なら既存ハッシュをそのまま再利用します。長文を立て続けにコピーする場面で CPU 使用率が目に見えて下がります

OCR 同時実行を 2 並列に制限

複数の画像を同時にコピーすると Vision OCR が無制限に並走して AIEngine が CPU/メモリを吸い上げる挙動がありました。actor OCRQueue (max=2) で 同時 2 件まで に抑え、3 件目以降はキュー待ちにします。

正規表現の type-load コンパイル

SyntaxHighlighter がプレビュー描画ごとに try! NSRegularExpression(...) を実行していたものを、言語ごとの 静的プロパティに巻き上げ て型ロード時に一度だけコンパイルする方式に変更。コードプレビューが滑らかになります。

Markdown プレビューのメモ化

AttributedString(markdown:) のパース結果を clipID + contentHash をキーに NSCache (容量 256) で記憶します。同じクリップを繰り返し開いてもパースが走らず、長文 Markdown のプレビュー再表示が即座に。

Strip 検索結果の上限明示化

検索結果が大量ヒットした場合に StripPanel が無制限にロードしていた箇所に LIMIT 1000 を明示適用し、上限到達時は「結果が1000件を超えています。検索条件を絞り込んでください」とトーストでガイドします。

🔔 アップデート通知強化

Sparkle 失敗/成功デリゲートの完全実装

これまで Sparkle のダウンロード/インストール失敗はサイレントでした。failedToDownloadUpdate / didFinishUpdateCycleFor / didAbortWithError の 3 デリゲートを実装し、エラーを network / edsa / sandbox / other に分類してそれぞれ専用トーストを出します。インストール成功時も「Pasty を更新しました(バージョン X)」と通知。

起動直後の自動チェックを抑制

launchPad で初回ペーストする前に Sparkle がバックグラウンドチェックに走り、ペースト操作と HTTP リクエストが競合する微細なラグがあった問題を解消。初回ペースト完了起動から 30 秒経過 のいずれか早いほうまで初回チェックを遅延します。

🔐 セキュリティ + TCC

Accessibility 権限の永続アラート

セッション中にユーザーがアクセシビリティ権限を OFF にすると、これまではトーストのみで埋もれがちでした。NSAlert(5 分クールダウン付き)で 「システム設定を開く」 ボタン付きの永続アラートを出し、x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility に 1 クリックで遷移できるようにしました。

ペースト前の権限チェック順序を修正

PasteAutomator.emitCommandV がこれまで「先にクリップボードへ書き込んでから AX チェック」していたため、権限が剥がれた状態で ユーザーのクリップボードを意図せず上書き していました。チェックを 書き込み前 に移動し、未許可なら一切クリップボードを汚さず処理を中断します。

Blob ディレクトリの権限を 0o700 に固定

~/Library/Application Support/io.pasty.app/blobs/ と画像ステージング dir を毎起動 POSIX 0700 に再適用。他ユーザー / 他プロセスからの覗き見を防ぎます。

IntegrationHubs.undoLast() の AX ガード

Integration Hubs (Linear / Notion / GitHub 等の連携) の 取り消し操作CGEvent.post を AX チェック無しで叩いていた点を修正。AXIsProcessTrusted() で事前ガードし、未許可なら pastyPasteFailed 通知を出して失敗を可視化します。

🔎 削除済みクリップが完全に非表示に

v0.9.6-beta で読み出しパスに WHERE deleted_at IS NULL を入れましたが、Wave-2 audit で 3 つの抜け穴 が見つかりました。

SearchEngine の両パス

空クエリ (recent) と FTS5 MATCH の 両方deleted_at IS NULL を適用。検索で deleted clip が一瞬出るケースを根絶。

Pinboard.items(in:)

ピンボードに登録済みのクリップが ClipStore で soft-delete された場合、Pinboard 側では残骸として表示され続けていた問題を、JOIN に AND clips.deleted_at IS NULL を追加して解消。

InsightsDashboard の全集計

今日 / 週次 / 日次 / カインド別 / アプリ別 / 長期保存などの 全集計クエリdeleted_at IS NULL を入れました。削除済みクリップが統計のグラフを歪めることはなくなります。

FTS5 ソフトデリート同期 (migration v10)

最大の漏れは、deleted_at が NULL→値 に変わっても FTS5 インデックスからは削除されない ことでした。v10 マイグレーションで AFTER UPDATE OF deleted_at トリガーを追加し、soft-delete 時に FTS から除去 / 復元時に再投入する 完全同期 を実現。これで「アプリ再起動するまで MATCH に残骸が出る」が消えます。

🧩 エッジケース

HoverPreview のアニメーション競合

複数のホバープレビューを高速に行き来すると、古いアニメーション完了ハンドラが新しいパネル状態を破壊するレースがありました。animatingPanelID: UUID のトークン照合で 古い完了ハンドラを無視 するようにし、状態の整合性を確保。

Esc キーでドラッグ中断時のクリーンアップ

ドラッグ中に Esc を押すと panel は閉じるのに macOS 側のドラッグ状態が残ったまま で、次のクリックが drop と誤認される問題を解消。Esc 受信時にドラッグが進行中なら leftMouseUp CGEvent を合成してから clearAll() するようにしました。

NSScreen 構成変更への追従

ディスプレイの抜き差し / 解像度変更時に notch hot-zone と strip panel の座標がずれる問題を、NSApplication.didChangeScreenParametersNotification 購読で 再登録 + 再配置 することで解消。

📦 メモリ整理

StackPill の observer 解放

StackPill が NotificationCenter にぶら下げた screenObserver token を deinit で確実に解除。長時間稼働でも漏れません。

PastyApp の Stage-1 observer 解放

起動時に登録される Stage-1 observer 群を stage1Observers: [NSObjectProtocol] に保管し、applicationWillTerminate で一括解除。

DropDelegate の余計な main dispatch を削除

DropDelegate は AppKit / SwiftUI 仕様で main thread 呼び出しが保証されているのに、DispatchQueue.main.async で再ラップしていた箇所を解消。微小ですがレスポンスが軽くなります。

🛠 追加修正

AI エラーのケース別メッセージ化

AIError.modelNotAvailable / .osUnsupported / .aiDisabledBySettings / .other に分類し、4 種のローカライズ済みトースト を出すように。Apple Intelligence 未登録 / OS バージョン不足 / 設定 OFF / その他の区別がユーザー側で明確に。

DragDrop 部分失敗の可視化

複数アイテムのドロップで一部が失敗していた場合に、これまでは成功したものだけ静かに登録されていました。「N 件中 M 件のみ追加されました」 トーストで具体的な数を伝えます。

v5 entity\_uuid バックフィルの冪等化

過去の中断起動などで entity_uuid が NULL のまま残っていた行を救うため、UserDefaults フラグに依存せず毎起動 SELECT COUNT で残存を検査してバックフィルする方式に変更。

🧪 テスト

41 テスト pass — v0.9.6-beta の 36 件に加え、SoftDeleteFilterTests を 5 件追加:

  • testSearchEngineExcludesDeleted_emptyQuery
  • testSearchEngineExcludesDeleted_FTSMatch
  • testPinboardItemsExcludesDeleted
  • testInsightsExcludesDeleted
  • testV10TriggerRemovesFTSRow

リリース詳細: https://github.com/IvyGain/Pasty/releases/tag/v0.9.7-beta

v0.9.6-beta 2026-06-22

Pasty v0.9.6-beta — 14 件の P0 安定化パック

「データを失わない、操作を取りこぼさない、機密を漏らさない。」v0.9.5-beta の Stability Audit で洗い出された 14 件の P0 をまとめて落とします。

🛡 信頼性向上

Soft-delete の徹底

クリップを削除した瞬間に DB から物理消去するのをやめ、deleted_at タイムスタンプで 論理削除に統一 しました。これまでは UI 上の削除と内部読み出しのタイミングで「削除したはずのクリップが一瞬戻る」「FTS5 の結果に残骸が混じる」といった不整合が稀に発生していました。UI / Recent / Search / byId / FTS5 JOIN の全 SELECT パスに WHERE deleted_at IS NULL を強制し、削除されたクリップは表示・検索の双方から確実に消えます。

FTS5 バックフィル冪等マーカー

全文検索インデックス (FTS5) の再構築は本来 v8 で完了しているはずですが、過去のアップグレード経路では稀に未完で終わるケースが報告されていました。v9 で pasty_meta テーブルを新設し、v8.fts5_backfilled = true マーカーが無い場合は起動時に冪等で再投入します。一度完了すれば二度走らないので起動が遅くなることもありません。

DB 破損からの自動復旧

これまで ClipStore の初期化に失敗するとアプリは fatalError でクラッシュし、ユーザーは手動でファイルを退避する必要がありました。これからは clips.dbclips.db.corrupt-<timestamp> に退避し、新規 DB で起動を続行、NSAlert で「DB を再構築しました。バックアップは clips.db.corrupt-... に保存されています。」と通知します。データロスはバックアップで救済可能、起動だけは止まりません。

🧹 ディスク掃除

起動時 Blob GC

画像 / 動画 / PDF / ファイルクリップの実データは ~/Library/Application Support/io.pasty.app/blobs/ 配下に保存されます。これまでは tombstone 化したクリップの blob が永遠に残り続けていました。起動から ~1 秒後に BlobGC.sweep がバックグラウンドで走り、deleted_at から 30 日経過したクリップの blob と、どのクリップからも参照されない孤児 blob を削除します。30 日のグレース期間で、誤削除した直後でも元データは残っているので Undo 可能なまま掃除が進みます。

🔒 セキュリティ強化

アクセシビリティ未許可時のサイレント失敗を解消

これまで Pasty のアクセシビリティ権限が無効化されている状態でクリップを貼ろうとすると、CGEvent.post が空打ちになって 「貼ったつもりが貼れていない」 という最悪のサイレント失敗を起こすことがありました。AXIsProcessTrusted() で全 CGEvent.post サイトをガードし、未許可ならば pastyPasteFailed 通知を発火、Toast でユーザーに「アクセシビリティ権限を許可」と促せるようにしました。Blob 読み込み失敗も同様に通知化、無音で失敗することは無くなります。

OCR テキストの機密データ自動マスク

画像クリップから抽出した OCR テキストには稀にクレジットカード番号 / SSN / マイナンバー / API トークン / IBAN / 電話番号が含まれます。デフォルト ON で 正規表現 + Luhn 検証 で検出し、[CARD] / [SSN] / [MYNUMBER] / [TOKEN] / [IBAN] / [PHONE] に置換してから DB / FTS5 / AI に渡します。設定 → OCR の「機密データ自動マスク (CC / 身分証 / API トークン)」で無効化も可能。メールアドレスは検索性のため保持します。

NotificationCenter observer リーク修正

StripPanel が NotificationCenter にぶら下げた observer が .onDisappear で外れず、長時間稼働で memory pressure が増えていた問題を修正。observer token を捕捉して disappear 時に確実に剥がします。

MultiMode ペースト中レース修正

複数選択で連続ペースト中に ClipStore の更新が走ると、選択中のクリップ ID 配列が縮んでペースト対象がブレるケースがありました。ペースト開始時に ID をスナップショットして ID キー解決で 1 件ずつ処理、tombstone 化したクリップはスキップして次に進みます。

📊 操作の堅さ

NotchHover の表示中断レース修正

通知バー (NotchHover) の dismiss アニメーション中に再度トリガーすると、アルファ値が中途半端な状態で固まったり、Z オーダーが沈んだまま再表示される問題を修正。isDismissing フラグで状態遷移を捉えて、show 時に進行中アニメーションをキャンセルして見える状態を復元してから表示し直します。

サムネイル生成の TOCTOU 修正

動画 / PDF のサムネイル生成で、同じクリップに対する 2 つの concurrent リクエストが「片方が走っていればもう片方は待つ」をすり抜けて重複生成していた問題を NSLock で atomize。重複したファイル I/O が消えます。

📦 内部修正

  • FileManager.urls(...).first! を guard 化 (URLLinkPreview / DragDropSupport)
  • URL(string: "about:blank")! を nil-coalescing でフォールバック (DragDropSupport)
  • ペースト失敗時の pastyPasteFailed 通知導入 (将来の Toast UI の土台)
  • BlobGC + soft-delete 整合性テスト 8 件追加 (ClipStoreSoftDeleteTests)
  • SensitiveDataFilter のパターン網羅テスト 12 件追加 (SensitiveDataFilterTests)

🧪 テスト

36 テスト pass — 既存 16 + 新規 20 (ClipStore soft-delete × 8、SensitiveDataFilter × 12)。


リリース詳細: https://github.com/IvyGain/Pasty/releases/tag/v0.9.6-beta

v0.9.5-beta 2026-06-21

Pasty v0.9.5-beta — 7 件パッケージ

「クリップを賢く、フォルダを安定に。」

✨ 新機能・修正

🖼 画像クリップを D&D でカーソル位置に貼れるように (X1)

これまで画像クリップをドラッグ&ドロップで貼ろうとすると、TextEdit / Notes / Slack 等のアプリでカーソル位置に画像が埋め込まれませんでした。今回、ClipDragItem の Transferable 経路に PNG/JPEG/TIFF/GIF の binary representation と FileRepresentation を追加。Enter キー貼付と同等の体感で D&D も画像をカーソル位置に貼り付けます。

🔗 URL プレビューに favicon を表示 (P1)

URL クリップの hover プレビューが favicon を取得して表示するようになりました。LPLinkMetadata の iconProvider を NSImage に解決し、メモリ + ディスクキャッシュ。「サイトの顔」が見えて識別しやすく。設定 → サーフェス → URL プレビューで OFF にもできます。

🎯 フォルダドラッグの opacity リーク修正 (P2)

フォルダタブをドラッグして gap の外でキャンセルすると、ソースタブが薄いままになるバグを修正。StripView に NSEvent .leftMouseUp local monitor を仕掛けて、ドラッグ終了時に確実に opacity 1.0 へ復帰します。

🕒 アプリ別の自動保持期間 (B3)

「特定のアプリからのコピーは別の期間で保持する」設定を追加。例: Chrome は 7 日、メールは 90 日、Notion は無期限。グローバル保持期間とのオーバーライド方式。設定 → キャプチャ → 「アプリ別保持期間」から bundle ID + 日数を登録できます。

📹 PDF / 動画クリップのホバープレビュー (B5)

PDF クリップは 1 ページ目のサムネ、動画クリップは 0:00 のサムネ + ▶ icon を hover で表示。PDFKit + AVFoundation の thumbnail を NSCache + ディスクキャッシュで効率化。設定 → サーフェス → ホバープレビューで個別に OFF にできます。

🔍 画像から自動でテキスト抽出 (Vision OCR) (B6)

画像クリップを取り込んだ直後に Vision の VNRecognizeTextRequest が background でテキストを抽出し、FTS5 にも index されるので 画像内の文字列で検索ヒット します。ja-JP / en-US デフォルト、設定 → キャプチャから言語追加可能。OCR が走ってもパネル操作のレスポンスは犠牲にしません。

🔢 スニペット拡張: counter / if (B9)

  • {{counter:invoice}} — 名前付き永続カウンタ。参照ごとに +1、UserDefaults persist
  • {{counter:invoice|format:%04d}} — printf 形式の format
  • {{counter:invoice|reset}} — カウンタをリセット
  • {{if hasField name}}Hi {{name}}{{endif}} — mail-merge field の有無で条件分岐
  • {{if equals lang "ja"}}こんにちは{{endif}} — 文字列一致の条件分岐

設定 → Pasty について → 「スニペットカウンタ」で一覧とリセットボタン提供。

🛠 内部改善

  • ClipStore migration v6 (perApp retention placeholder) + v7 (extractedOCRText column) + v8 (FTS5 rebuild with OCR text)
  • SettingsStore に 7 個の persist 設定追加
  • 全 16 テスト pass (3 既存 ClipStore + 2 B3 cleanup + 1 B6 OCR + 11 B9 SnippetEngine)

リリース詳細: https://github.com/IvyGain/Pasty/releases/tag/v0.9.5-beta

v0.9.4-beta 2026-06-20

Pasty 0.9.4-beta — フォルダ並べ替えの再設計とクリップドラッグの再構築

🛠 フォルダ並べ替えを設計からやり直し

  • SwiftUI の .draggable + .dropDestination (高レベル Transferable API) で組んでいたフォルダタブの並べ替えを廃止
  • v0.8.7 → v0.9.0 → v0.9.1 → v0.9.2 → v0.9.3 と連発していた「モディファイア順を 1 つ入れ替えただけで青い縦線インジケータが消える」回帰連鎖を、API レイヤを下げて根本的に断ち切った
  • 専用 UTType app.pasty.pinboard-tab を新設し、フォルダ並べ替え専用のドラッグペイロード PinboardDragItem をクリップ系ペイロードと完全に分離
  • 並べ替え受け側は新規 PinboardReorderDelegate (DropDelegate) に集約。validateDrop / dropEntered / dropExited / performDrop をすべて明示的にハンドリングし、pastyPinboardTab 以外のドロップは確実に弾く
  • ギャップ側ビューは .onDrop(of: [.pastyPinboardTab], delegate: PinboardReorderDelegate(...)) だけのシンプルな構造に。SwiftUI の再評価で順序が入れ替わってもヒットテストが壊れない

🎯 クリップドラッグ preview を薄い四角に

  • クリップを他アプリやフォルダタブにドラッグ中に表示されるカーソル追従プレビューを、新規 MiniClipDragPreview に置き換え
  • サイズは 80×24.regularMaterial ベース + opacity 0.55 の半透明四角に統一
  • 複数選択時は右端に件数バッジを表示 (2, 3, ... )
  • 旧プレビュー (テキスト本文の長文プレビュー / 巨大なカードスナップショット) は画面の広い面積を占有していたため、操作中の視界を遮らない最小限の表現に切り替え

✨ ドロップ先フォルダの強ハイライト

  • クリップをドラッグしてフォルダタブの上にカーソルを乗せた瞬間、対象タブが Capsule + Color.accentColor ストロークで強く縁取られる
  • 同時にタブ全体が scale 1.05spring(response: 0.3, dampingFraction: 0.7) でリアクティブに浮き上がり、「ここに入る」を強く視覚化
  • ホバー解除 / ドロップ完了 / Esc キャンセル時はすべて scale 1.0 + 縁取り消失に滑らかに復帰
  • 既存のフォルダ並べ替え時の青い縦線インジケータとは責務が分離されているため、両者が同時に発火することはない

v0.9.3 からの変更点

  • v0.9.3 まではフォルダ並べ替えを SwiftUI の高レベル Transferable API (.draggable + .dropDestination) で実装しており、モディファイアの積層順や SwiftUI 内部の差分検知に強く依存していた
  • 「順序を入れ替えただけで動かなくなる」「v0.9.2 で動いて v0.9.3 で再回帰する」という連鎖的な回帰が複数バージョンに渡って発生
  • v0.9.4 ではフォルダ並べ替えだけを中レベル API (.onDrop(of:delegate:) + DropDelegate) に降格させ、SwiftUI の自動再評価から独立した明示的なステートマシンに作り直した
  • クリップのドラッグ自体は引き続き Transferable 経路を維持し、影響範囲を最小化

技術的な詳細

  • 新規型: PinboardReorderDelegate (DropDelegate), MiniClipDragPreview (View)
  • 新規 UTType: app.pasty.pinboard-tab (exported, conformsTo public.data)
  • 影響ファイル: Sources/Pasty/DragDropSupport.swift, Sources/Pasty/StripPanel.swift
  • 設計ドキュメント: docs/design/v0.9.4-folder-reorder-redesign.md
  • クリップ単発 / 複数選択ドラッグ・他アプリへのテキストドロップ・Transferable ペイロード経路は変更なし
  • PinboardStore.reorder のロジックには変更なし
v0.9.3-beta 2026-06-19

Pasty 0.9.3-beta — フォルダ並べ替え回帰ホットフィックス

🛠 フォルダ並べ替えの青い縦線を完全復活

  • v0.9.2 で再発していた「フォルダタブをドラッグしても青い縦線インジケータが出ず、並べ替えが効かない」回帰を修正
  • 原因は folderTab の SwiftUI モディファイア順回帰: .acceptClipReferenceDrop.draggable の外側に積まれてしまい、ギャップ側 PinboardDragItemdropDestination が反応しなくなっていた
  • v0.9.1 のチェーン (.draggable(PinboardDragItem) を最外側) に戻し、タブ間ギャップでのホバー検知と PinboardStore.reorder 発火を v0.8.7 / v0.8.8 / v0.9.1 と同じ感触で復活

🛠 ドラッグプレビューを再び不可視化

  • ドラッグ開始時にカーソルへ追従するシステム由来のタブスナップショットを廃止
  • プレビューを 1×1 の完全透明な Rectangle に置き換え、macOS ネイティブのドラッグカーソルだけが表示されるように
  • ドロップ先のフォルダタブが常に視認でき、青い縦線インジケータとの干渉もなくなりました

✅ 半透明フェードは引き続き有効

  • v0.9.2 で導入した「ドラッグ中の元タブを opacity 0.2 にフェード」は維持
  • ドロップ完了時もキャンセル時 (Esc / ウィンドウ外でリリース) も、opacity は 1.0 に復帰します
  • フェードのトリガとなる draggedBoardId はプレビュー内部の onAppear で立て、reorder 確定 or キャンセル時には folderDropGap / 後段の onDrop ハンドラ側で nil 化されます

影響範囲

  • folderTab の SwiftUI モディファイアチェーンのみ変更 (順序の入れ替え + ドラッグプレビュー差し替え)
  • クリップ単発 / 複数選択ドラッグ・他アプリへのテキストドロップ・Transferable ペイロード経路は一切変更なし
  • folderDropGap.dropDestination / PinboardStore.reorder のロジックには変更なし
v0.9.2-beta 2026-06-19

Pasty 0.9.2-beta — フォルダドラッグの視認性ホットフィックス

🎯 フォルダドラッグ中のタブを半透明に

  • フォルダタブを掴んで並べ替えるとき、掴んでいるタブが opacity 0.2 まで薄くフェードするようになりました
  • これによりドロップ先 (タブ間の青い縦線インジケータ) が見やすくなり、目的のスロットを正確に狙えるように
  • ドロップ完了時もキャンセル時 (Esc / ウィンドウ外でリリース) も、opacity は確実に 1.0 に復帰します

影響範囲

  • フォルダタブ並べ替え (PinboardDragItem) のドラッグ表示のみ変更
  • クリップドラッグ (ClipDragItem / MultiClipDragItem) はフォルダタブをフェードさせません — v0.9.1 と同じ挙動
  • v0.8.7 以降の青い縦線インジケータ / folderDropGap.dropDestination ロジックには変更なし
v0.9.1-beta 2026-06-19

Pasty 0.9.1-beta — D&D 体験ホットフィックス

🛠 D&D 中のドラッグ表示を不可視化

  • クリップをフォルダタブへドラッグした際に表示されていた半透明の「重なりカード」プレビューを廃止
  • カーソルに追従する SwiftUI ドラッグ画像を 1×1 の透明ビューに置き換え、macOS ネイティブのドラッグカーソルだけが表示されるように
  • ドロップ先のフォルダタブが常に視認でき、どのフォルダに渡るのかが一目で分かるようになりました

🛠 フォルダ並べ替えの青い縦線を復活

  • v0.9.0 で発生していた「フォルダタブをドラッグしてもタブ間の青い縦線ガイドが出ず、並べ替えが効かない」回帰を修正
  • folderTab の SwiftUI モディファイア順を入れ替え、.draggable(PinboardDragItem).acceptClipReferenceDrop より先に適用することで、ギャップ側の dropDestination が正しくホバーを受け取れるように
  • 並べ替え操作 (ドラッグ → 青い縦線 → ドロップで PinboardStore.reorder 発火) が v0.8.7 / v0.8.8 と同じ感触で復活しました

影響範囲

  • クリップ単発 / 複数選択ドラッグ・他アプリへのテキストドロップなど、Transferable ペイロードや外部ドロップ経路は一切変更なし
  • プレビュー描画ロジックのみ差し替え、モディファイア順を folderTab 内で 1 箇所スワップしただけのピンポイント修正
v0.9.0-beta 2026-06-19

Pasty 0.9.0-beta — 使い心地の完成形

🎯 複数選択 UX 完成形

  • ペースト完了で自動解除 — 1 回貼り終わるたびに選択がクリアされ、次に開いたときは常にまっさらな状態から始められます
  • Esc は 2 段階 — 多選択中は 1 回目で選択解除、2 回目でパネルを閉じる直感的な挙動 (通常モードは従来どおり 1 発で閉じます)
  • Enter で順番にまとめて貼付 — 多選択中に Enter を押すだけで、選んだ順番どおりに連続貼付されます
  • ドラッグでまとめて運ぶ — 多選択中に 1 件をドラッグすると、選んだ全件まとめて他アプリやフォルダタブへドロップできます

📖 オンボーディング全面刷新

  • 9 ステップ → 14 ステップに拡張。v0.8 系で追加された新機能 (ノッチホイール / フォルダドラッグ並べ替え / AI マクロ / 機密モード ⌃⌥⇧P / クイック貼付 ⌃⌥1-5) をすべてインフォグラフィックで案内
  • 冒頭にカテゴリ別チップ (基本操作 / ノッチ / フォルダ / AI / ショートカット) を追加 — 必要なところだけ読めます
  • KeyCap の押下アニメーション、SF Symbol の pulse / bounce を駆使した動きある案内

✨ 新機能ミニチュート

  • リリースのたびに「今回追加された新機能」を 3-4 枚の小さなカードで自動表示
  • WhatsNew のリリースノートと連動して、何が新しくなったかを忘れません

🖼 プレビュー崩れ修正

  • 複数選択中に画像クリップのサムネがカード枠を超えてはみ出る不具合を解消

🔗 URL プレビュー

  • リンククリップにタイトル + favicon + ドメインを表示する軽量プレビューを追加
  • メモリ + ディスクキャッシュで高速、5 秒タイムアウト付き
  • 設定 → サーフェス →「URL プレビュー (軽量フェッチ)」で OFF にも切り替え可
v0.8.9-beta 2026-06-19

Pasty 0.8.9-beta

  • 🔧 Enter キーで貼付が安定して動くように — 検索バーやシート操作後に Enter が反応しないまれなバグを根治
  • 🔧 複数選択時の貼付バグ修正 — 「最後の 1 件しか貼られない」を解消、全選択クリップが選んだ順番どおりに貼られます
  • 🖱 クリック時の中央スクロールを停止 — 自分でスクロールしたい派に。キーボード矢印 (↑↓←→) では引き続き中央スクロールでアシスト
v0.8.8-beta 2026-06-19

Pasty 0.8.8-beta

  • 🎯 フォルダドラッグとクリップドラッグの drop target を分離 — フォルダの並べ替えはタブとタブの間の縦線でのみ受付、タブ本体への drop はクリップを移動する操作専用に
v0.8.7-beta 2026-06-19

Pasty 0.8.7-beta

  • Esc で Strip を即閉じ — クエリがあっても 1 押しで即 dismiss
  • 🎯 フォルダ並べ替えのドロップ位置をビジュアル化 — Safari タブ風の縦線で「ここに入る」をプレビュー
v0.8.6-beta 2026-06-19

Pasty 0.8.6-beta

  • ⚡️ show ホットパスを根治 — H1 WheelCatcher 常駐撤廃 / H2 二重 layout 削除
  • 🖐 フォルダタブをドラッグで並べ替え可能に — 「履歴」は固定、Pinboard タブを直感的に
  • 🔬 パフォーマンスログ (設定 → プライバシー → トグル ON) — Console.app で io.pasty.perf をフィルタすると各 show のミリ秒が見えます
v0.8.5-beta 2026-06-18

Pasty 0.8.5-beta

ノッチが「降りてくる」を超えて、ついに「そこに在る」レベルに到達しました。

⚡️ ノッチ「瞬間表示」へ

  • v0.8.4 で残っていた hover→show の マイクロ遅延を全撤去 しました
  • ノッチ起動の dwellDelay を 80ms → 0ms (即時) に変更
  • パネルが降りてくる アニメーション (120ms) を撤去 し、最終位置に一発配置
  • 起動時の prewarm で makeKey() と マウス/キー モニタも事前装備 → 初回 hover でも「初回コスト」がゼロ
  • scheduleShowDispatchWorkItem 経由を 0ms 時に skip し、同じ run-loop tick で show() を叩く

🎚 ノッチ起動遅延スライダー

Settings → サーフェス に 2 つのピッカーを追加しました。

  • ノッチ起動遅延: 0ms (即時) / 50ms / 100ms / 200ms。デフォルト 0ms
  • ノッチアニメ: 0ms (瞬間表示) / 60ms / 120ms。デフォルト 0ms

「ふっと触れただけで開く」が気になる方は 50ms / 100ms に上げてください。アニメだけ戻したい場合は 60ms / 120ms を選べます。

🐛 残っていた遅延要因の根治

  • 初回 show 時に panel.makeKey() を毎回払っていたのを prewarm に移動
  • installMouseMonitors を起動時の installPersistentMonitors に変更し、show ごとに addGlobalMonitorForEvents ×3 を呼ぶコストを削除
  • show()orderFrontRegardless 直前に layoutSubtreeIfNeeded を再度呼び、初回 real show の SwiftUI 再評価コストを潰す
  • dismiss() も anim=0 時に setFrame を skip して orderOut 一発で閉じる

体感が変わらない場合は Settings → サーフェス → ノッチ起動遅延 = 0ms / ノッチアニメ = 0ms に設定されているか確認してください。

v0.8.4-beta 2026-06-18

Pasty v0.8.4-beta — 速さが、戻ってきた。

ノッチに触れた瞬間、すっとパネルが降りてくる。 カードをクリックした瞬間、ぱっとハイライトが出て、貼り付けが終わる。 v0.7 系の「気持ちよさ」を取り戻すために、Pasty の体感に効く 7 箇所を一気に直しました。

⚡️ ノッチ表示遅延を根治

起動直後にノッチへマウスを乗せても、パネルがすぐ降りてくるようになりました。原因は 4 つあり、全部直してあります。

  • SwiftUI body の初回評価を prewarm で先払い (M-3): 起動時に NotchHover と Strip パネルをいったん画面外で layoutSubtreeIfNeeded まで走らせ、初回 hover のときに body 評価が走らないようにしました。
  • 起動シーケンスを 2 段に分割 (M-4): hotkey 登録・notch hover・prewarm・Accessibility 許可だけを即時に走らせ、Sparkle / Onboarding / What's New / StackPill / マイグレーションのバックフィルは 0.5 秒後にずらしました。cold-start のメインスレッドが空くので、prewarm が他のタスクに邪魔されません。
  • hot zone を 24px に拡大 + 50ms grace 期間 (M-7): ノッチなしの Mac だと判定領域が 4px しかなく、マウスがちょっと外れると mouseExited で即キャンセルされていた問題を修正。24px に拡大し、加えて mouseExited 後 50ms は cancelShow を遅延させるようにしました。マウスがちらりと離れて即戻る程度ではキャンセルされません。
  • entity_uuid バックフィルを lazy 化 (M-2): v0.8.0 で追加した全行 UPDATE のマイグレーションが cold-start のクリティカルパスに乗っていたのを、起動完了後に 500 行ずつバッチで走るバックグラウンド処理に分離。WHERE entity_uuid IS NULL ガードで新規 insert との衝突も防止しています。10k 行履歴で 500ms+ 短縮します。

⚡️ クリック反応遅延を根治

Strip カードをクリックしてから「光って消えて貼り付く」までの体感が、v0.7 級に戻りました。

  • simultaneousGesture を撤去して手動 double-click 検知に置換 (M-1): v0.8.1 で「snappy」と謳って入れた simultaneousGesture(TapGesture(count:2)) + count:1 の二段重ねが、実は SwiftUI 内部の double-tap 排他制御で count=1 の発火を ~250ms 遅延 させていました。今は .onTapGesture(count: 1) 一本に戻し、CACurrentMediaTime() の差分で NSEvent.doubleClickInterval を見て手動でダブルクリックを判定します。mouseUp 直後に即発火します。
  • .animation(value: isCursor) 削除 + withAnimation (M-5): カーソル移動時に StripCard の .animation(.spring, value: isCursor) が、ForEach 配下の 20 枚すべてで spring + scale + offset + shadow を同時に再合成していたのを撤廃。代わりに SelectionModel 側で withAnimation(.easeOut(duration: 0.12)) で囲み、差分のあった 2 枚 (抜けたカード + 選ばれたカード) だけが animate するようにしました。
  • 1 フレームのハイライト視覚フィードバック (M-10): クリックから貼り付けまでが速すぎて「光らずに消える」現象が起きていたので、handleDoubleTapcursorIndex を立てた直後に 16.67ms (1 frame at 60Hz) だけ待ってから dismiss + paste するようにしました。Web の button:active を 100ms 維持するのと同じ理屈で、「タップした」確証が視覚的に返ります。

🏎 起動が速く

M-4 (init 2 段化) と M-2 (backfill lazy 化) の合わせ技で、cold-start のメインスレッド占有時間が 150〜500ms 短縮 されました。

✨ 体感、1〜2 倍速い

7 箇所の修正が積み上がった結果、ノッチ表示は v0.7 級の体感即時、クリック反応は 100ms 以内のハイライト + 貼付に戻りました。何より、起動直後の最初の 1 操作が「あ、戻ってきた」と感じられるはずです。


リリース詳細: https://github.com/IvyGain/Pasty/releases/tag/v0.8.4-beta

v0.8.3-beta 2026-06-18

Pasty v0.8.3-beta — バージョンが、ワンクリックで手元に。

「いま、どのビルドを使ってるんだっけ?」を、もう探さない。

🏷 設定 → Pasty について にバージョンバッジを追加

「Pastyについて」タブに、現在動いているビルドが一目でわかる バージョンバッジ を追加しました。

説明文と各種ボタン (使い方を見る / ショートカット一覧 / アップデートを確認 / リリースノート) のあいだに、v<version> · build <build> という小さなピル状のバッジが表示されます。等幅フォントなので、数字がきれいに揃います。

ワンクリックでコピー

バッジをクリックすると、Pasty v<version> (build <build>) という文字列が自動でクリップボードにコピーされます。バグ報告のときに「環境を教えてください」と言われたら、設定を開いて 1 クリックするだけ。

コピー後はおなじみのトーストが表示され、ちゃんとコピーできたことが確認できます。

デザイン

  • checkmark.seal.fill の認証バッジアイコン (青)
  • 等幅フォントで v0.8.3-beta · build 30 を表示
  • 右端に doc.on.doc のコピーアイコンを薄く配置 — クリックできることがひと目で伝わります
  • カプセル型のピル背景はライト/ダーク両モードに最適化

🌐 ランディングページも自動更新

ivygain.github.io/Pasty のヒーローも v0.8.3-beta に自動反映されます。v0.8.2 で導入したヒーロー自動更新の仕組みがそのまま走るので、トップを見れば「最新が何か」が常にわかります。

📦 アプリ本体の他の変更

このリリースは「Pasty について」タブの UI 改善が中心です。クリップボード処理・キャプチャ・AI まわりの挙動には変更がありません。Sparkle 経由のアップデート通知は届きますが、現行 v0.8.2-beta から急いで更新する必要はありません。


リリース詳細: https://github.com/IvyGain/Pasty/releases/tag/v0.8.3-beta

v0.8.2-beta 2026-06-18

Pasty v0.8.2-beta — トップページが、自分で最新を語るように。

「ヒーロー、ちゃんと更新されますように。」

🛠 ランディングページのヒーロー自動更新を修正

v0.8.1 まで docs/index.html のヒーロー部 — バージョンバッジ、説明文、DMG サイズ、フィーチャーチップ — が初期リリース当時の文言のまま固まっており、リリースしてもトップが更新されないという問題がありました。

このリリースで <!-- HERO:BEGIN/END --> などのセンチネルを導入し、scripts/build-pages.py がリリース時に毎回ヒーローを最新版で差し替えるようにしました。

何が自動化されたか

  • ヒーローのバージョンチップ (初期固定 → 常に最新版)
  • マーケティングコピー (リリースノート md の冒頭タグラインを反映)
  • フィーチャーピル (リリースノートの ## 見出しから 3〜4 個抽出)
  • DMG サイズ (dist/Pasty-<ver>.dmg の実ファイルサイズを du -h で取得)
  • ダウンロードカードのバージョン表記
  • トップナビの "vX.Y" チップ (#releases セクションへリンク)
  • Raycast 推奨バージョン

冪等性も確保

python3 scripts/build-pages.py を 2 回続けて実行すると、2 回目は差分ゼロになります。リリース自動化のドライランや、CI 再実行時にも安全です。

歴史的セクションは自動でリブランド

初期リリースの「新機能」紹介として固定されていた深い "What's New" セクションは、機能ハイライト (「編集できる倉庫」) という通時的なセクションに自動で書き換わります。実装内容自体は引き続き紹介され、見た目だけが「過去のリリース推し」ではなくなります。

📦 アプリ本体は変更なし

このリリースは Pages 更新フロー専用の hotfix です。アプリの動作・UI・機能には変更がありません。すでに v0.8.1-beta を使っている方も、Sparkle 経由のアップデート通知は届きますが、必須ではありません。

🔧 内部改善

  • scripts/build-pages.pyextract_hero_summary / extract_hero_pills / detect_dmg_size_mb / refresh_hero を追加
  • 初回実行時はヒーロー周辺の従来マークアップを seed regex で検出し、その場でセンチネルを自動挿入
  • 2 回目以降はセンチネル境界のみで差し替え (人手のレイアウト編集も保護)

リリース詳細: https://github.com/IvyGain/Pasty/releases/tag/v0.8.2-beta

v0.8.1-beta 2026-06-17

Pasty v0.8.1-beta — クリックが「指に追いつく」リズムに。

「触れた瞬間に応答する。」

⚡️ クリック反応速度を大幅改善

v0.8.0 のリリース後、複数のユーザーから「クリックしてからクリップが選ばれるまでがもっさりする」という声をいただきました。 徹底的に hot path を計測した結果、3 系統の遅延 が積み重なっていたことがわかり、すべて潰しました。

根本原因と対策

1. シングルクリックとダブルクリックの判別待ち (約 250ms) onTapGesture(count: 2)onTapGesture(count: 1) を二段重ねていたため、SwiftUI が「次のタップが来ないか」を約 1/4 秒待ってからシングルタップを発火していました。これが「もっさり」の主因です。 対策: simultaneousGesture ペアに置き換え、シングルタップは タッチダウン直後に即発火 するように変更。ダブルクリック (= 貼付) も従来通り動作します。

2. paste 経路の不要な sleep を削減 PasteAutomator の前後 sleep を 60ms→30ms / 100ms→50ms に短縮 (合計 80ms カット)。 貼付先アプリが既にアクティブな場合は restoreFocus のグレース期間を完全スキップするようにしました。

3. カードのアニメーションを軽量化 StripCard の 3 段重ねシャドウを 2 段に減らし、スプリング応答を response: 0.18 に短縮。 隣接カードへのクリック時は scrollTo アニメーションをスキップ (3 枚以上離れた場合のみアニメ)。

4. ホバープレビューのキャンセル & スクロールキャッシュ タップ時に保留中のホバープレビュー (500ms 遅延ポップ) を即座にキャンセル。 WheelToHorizontalCatcher が毎回サブビューツリーを歩いていた処理をキャッシュ化。

体感

ローカル計測で、クリックからクリップ選択の視覚フィードバックまで 約 250ms 短縮、貼付完了までも 約 80ms 短縮 されました。 「触れたら反応する」リズムに戻っています。

🌐 公式インストールページ公開

https://ivygain.github.io/Pasty/常に最新版の DMG を 1 クリックダウンロード できるようになりました。 ページ下部には 全リリースノートが折りたたみ式で一覧表示 され、過去のバージョン履歴も追えます。

各バージョンには専用パーマリンク (/Pasty/whats-new/<version>.html) も用意され、特定リリースのリンク共有が可能になりました。

🔧 リリース自動化

./scripts/release.sh を実行すると、appcast.xml だけでなく docs/index.htmldocs/whats-new/<version>.html も自動再生成され、同じコミットにステージされるようになりました。 今後すべてのベータ版で Pages とアプリ内アップデート通知が 同時に最新化 されます。

🛠 内部改善

  • HoverPreviewController.dismissNow() をタップ経路のフェイルセーフとして活用
  • PreviousAppTracker.restoreFocusapp.isActive で早期 return
  • WheelCatcherNSViewcachedScrollView を導入し、scroll wheel ハンドラの 1 イベントあたりのコストを大幅削減
  • リリースノートビルダー scripts/build-pages.py (独自 markdown→HTML 変換器内蔵) を新規追加

🔧 既知の制約

  • C1 iCloud 同期は引き続き設計フェーズ完了状態 (UI 上は disabled)。実装は v0.9 で進めます。

リリース詳細: https://github.com/IvyGain/Pasty/releases/tag/v0.8.1-beta

v0.8.0-beta 2026-06-17

Pasty v0.8.0-beta — ノッチが「もう一段」便利に。

「マウスでもサクサク、これから iCloud 同期。」

✨ 新機能

1. マウスホイールでカルーセル横スクロール

ストリップ/ノッチホバーの上でマウスホイールを縦に回すと、カルーセルが横にスクロールします。 トラックパッドはもちろん、Magic Mouse やクラシックなホイールマウスでも快適に切り替えられるようになりました。

  • 既に横スワイプしている時はそのままパススルー
  • スクロール開始時にホバープレビューを自動 dismiss して被りを防止
  • 設定 → サーフェス → 「ホイールで横スクロール」でいつでも OFF にできます

2. C1 iCloud 同期 — 設計フェーズ完了 🛠️

複数の Mac 間でクリップ履歴を同期する大型機能の 設計フェーズが完了 しました。 今リリースでは UI 上の設定項目は「実験的・未実装」として無効化されており、実装は v0.9 で進めます。

設計ドキュメント (3 本) は .ai/decisions/c1-icloud-sync-*.md に格納:

  • architecture: CloudKit Private DB ベース、Lamport クロック、LWW + content-hash dedupe
  • security: STRIDE スレッドモデル、CryptoKit AES-GCM-256 / HKDF-SHA256 / ECDH P-256 / Ed25519、E2E 必須、CVSS タグ付き脆弱性 4 件
  • schema: sync_journal テーブル DDL、各テーブルへの soft delete + entity_uuid + origin_device_id カラム追加

ReviewAgent によるクロスドキュメント整合性チェックも完了し (Score 88/100)、Go 判定 で実装フェーズへ進みます。

3. DB スキーマ足場 (前方互換)

v0.9 で本実装される iCloud 同期に備えて、今リリースで DB スキーマだけ先に拡張 しました。 既存ユーザーの DB は起動時に自動でマイグレーションされます。

具体的に増えるもの:

  • sync_journal テーブル (Lamport / device_id / encrypted_payload / nonce / schema_version)
  • clips / pinboards / pinboard_itemsdeleted_at / updated_at / origin_device_id / entity_uuid カラム
  • 新規クリップ挿入時、自動で origin_device_identity_uuid がスタンプされます

CloudSyncEngine 自体は phase 2 で稼働します。今は no-op スタブ — 既存の動作には一切影響しません。

🛠 内部改善

  • WhatsNewPresenter のリリースノート表示パスを 0.8.0-beta に対応
  • ClipStore マイグレーションが v4 → v5 系列に拡張 (v5.sync_journal / v5.soft_delete_columns / v5.entity_uuid_backfill)
  • 設定画面プライバシータブに「iCloud 同期」セクションを追加 (現状は disabled トグル)
  • Settings の「サーフェス」ヒント文を更新

🔧 既知の制約 / 注意

  • C1 iCloud 同期の データ送信は一切行いません。phase 2 までは完全ローカル動作です。
  • 設定の「iCloud 同期を有効化」トグルは UI 上のプレビューであり、現状は無効化されています。
  • マウスホイール横スクロールはデフォルト ON です。気に入らなければ設定からすぐ OFF にできます。

リリース詳細: https://github.com/IvyGain/Pasty/releases/tag/v0.8.0-beta

v0.7.0-beta 2026-06-17

Pasty v0.7.0-beta — UX 改善 7 連発

「もっと早く、もっと静かに、もっとあなた色に。」

✨ 新機能

1. 検索/フィルタの記憶

ストリップを開き直しても、直前の検索クエリと種類フィルタが復元されます。 設定 → サーフェス → 「検索とフィルタ」でいつでも OFF にできます。

2. クイックペースト ⌃⌥1〜5

パネルを開かずに、直近 1〜5 件目のクリップを 1 アクションで貼り付け。 連続貼付が日常な人ほどに刺さるはずです。

3. 機密モード ⌃⌥⇧P

パスワードや個人情報を扱う前に 1 発で 60 秒間キャプチャを停止。 もう一度押せば即座に解除。トースト + サウンドで状態が分かります。

4. カスタム自動振分ルール

「特定ドメインを含む URL は『リサーチ』フォルダへ」「特定アプリからのコピーは 『仕事』フォルダへ」 — そんな個人ルールを最大 20 件まで登録できます。 デフォルトの 8 カテゴリ判定より優先されます。

5. リリースノートダイアログ

このダイアログ自体が新機能 :) アップデート直後に「何が変わったか」を さっと確認できます。設定 → Pasty について → 「リリースノート」から いつでも再表示できます。

6. AI マクロ (連鎖アクション)

複数の AI アクションを 1 クリックで連結実行。 プリセット例: 「英訳 → メール風」「要約 → メール風」など。

7. 節約時間カード

インサイトダッシュボードに「累計どのくらいの時間を節約したか」を表示。 1 回の貼付を 28 秒換算でざっくり可視化します。

🛠 内部改善

  • Sparkle 自動アップデートのフィードバック改善
  • ホットキー設定 UI に新アクションのアイコン追加
  • 各種コードベース整理

リリース詳細: https://github.com/IvyGain/Pasty/releases/tag/v0.7.0-beta

v0.6.1-beta 2026-06-16

リリースノートは docs/appcast.xml もしくは https://ivygain.github.io/Pasty/ を参照。

v0.6.0-beta 2026-06-15

リリースノートは docs/appcast.xml もしくは https://ivygain.github.io/Pasty/ を参照。