Skip to content

Releases: shunnag/cooViewer

cooViewer 2.0b44

cooViewer 2.0b44 Pre-release
Pre-release

Choose a tag to compare

@shunnag shunnag released this 05 Oct 08:07
57890b5

EPUB のホイール・トラックパッド操作の改善

  • 縦書きの見開きで章の途中にいると、ホイールやトラックパッドでページが送れない問題を修正しました。横書きの右綴じ(アラビア語・ヘブライ語など)の本でも同じ問題が起きていました。
  • 縦書きのスクロール表示で、縦方向のホイールやトラックパッドでスクロールできない問題と、横方向の操作で表示位置が跳ぶ問題を修正しました。
  • 設定の「ホイールめくりの閾値」を 0(無効)にしたとき、EPUB でも縦のホイールではページを送らないようにしました。画像の本と同じく、「トラックパッドのスワイプでページをめくる」が有効なら横スワイプではページを送ります。
  • トラックパッドの横スワイプにページ送り以外の操作を割り当てたとき、指を置いた直後のイベントで縦方向と判定して取りこぼす問題を修正しました。スクロール表示の本では横スワイプを横取りしません。
  • 見開きで Tab などでリンクにフォーカスを移したとき、そのリンクが画面外の見開きに着地する問題を修正しました。
  • 辞書(調べる)のポップオーバーを開いたままホイールでページを送っても、ポップオーバーが閉じるようにしました。
  • Washi 1.23.0 を同梱。 KaitoKit 0.12.1 と Sparkle 2.10.0 は据え置きです。

動作環境: macOS 26 以降、Apple Silicon。

1.x に戻す場合 / Reverting to 1.x

2.0 は初回起動時に 1.x の設定・履歴・しおりを取り込み、旧データはその時点の内容で残します。1.x はそのまま起動できますが、2.0 で進めた読書位置や追加したしおりは 1.x には反映されません。

データを完全に消して初期状態へ戻したい場合だけ、アプリを終了してから次を実行してください。1.x のデータも消えます。

2.0 imports 1.x data once and leaves the legacy data unchanged. You can still run 1.x, but reading positions and bookmarks added in 2.0 do not carry back. Only if you want to reset everything, quit the app and run the following commands. This also erases 1.x data.

defaults delete jp.coo.cooViewer
rm -rf ~/Library/Application\ Support/jp.coo.cooViewer
rm -rf ~/Library/Caches/jp.coo.cooViewer

cooViewer 2.0b43

cooViewer 2.0b43 Pre-release
Pre-release

Choose a tag to compare

@shunnag shunnag released this 30 Sep 13:10
1eba956

読書状態の保護と EPUB・画像表示の改善

  • 本の切り替えや閉窓、合本の移動中に、未確定の本や古い非同期結果が読書位置・しおりを上書きする経路を修正しました。
  • 画像の補間・ノイズ低減を変更したとき、変更前の条件で作った画像が一瞬表示される問題を修正しました。
  • EPUB の水平スワイプを反転した際も、左右に別々の操作を設定した割り当てを維持します。
  • 取り消した書庫読み込みで書庫を読取不能扱いにせず、順番待ちの間に取り消された先読み・サムネイル要求も展開前に止めます。
  • 読書状態の保存を一冊分の更新にまとめ、書き込み回数を減らしました。保存経路の比較では、200回の保存の中央値が293.606msから81.803msへ短縮しています。この値はアプリ全体の速度を表しません。
  • KaitoKit 0.12.1 / Washi 1.22.1 を同梱。 書庫解析の責務を整理し、EPUB の章移動失敗からの復旧、ページ番号・ページめくりの表示、無効化したページ数計測の終了を改善しています。Sparkle 2.10.0 は据え置きです。

責務・状態の所有者・寿命を整理し、設計文書も更新しました。
読書状態・表示・入力の検証記録。

動作環境: macOS 26 以降、Apple Silicon。

1.x に戻す場合 / Reverting to 1.x

2.0 は初回起動時に 1.x の設定・履歴・しおりを取り込み、旧データはその時点の内容で残します。1.x はそのまま起動できますが、2.0 で進めた読書位置や追加したしおりは 1.x には反映されません。

データを完全に消して初期状態へ戻したい場合だけ、アプリを終了してから次を実行してください。1.x のデータも消えます。

2.0 imports 1.x data once and leaves the legacy data unchanged. You can still run 1.x, but reading positions and bookmarks added in 2.0 do not carry back. Only if you want to reset everything, quit the app and run the following commands. This also erases 1.x data.

defaults delete jp.coo.cooViewer
rm -rf ~/Library/Application\ Support/jp.coo.cooViewer
rm -rf ~/Library/Caches/jp.coo.cooViewer

cooViewer 2.0b42

cooViewer 2.0b42 Pre-release
Pre-release

Choose a tag to compare

@shunnag shunnag released this 24 Sep 02:01
32bb4c9

書庫エンジン KaitoKit 0.10.0 を同梱、.cb7 に対応

  • .cb7(Comic Book 7z)を開けるように。 従来は書庫として判定されず、開いても何も表示されませんでした。Finder から cooViewer で開く書類型にも追加しています。
  • 7z の Deflate64 に対応。 7-Zip の -m0=Deflate64 で作った 7z 書庫を展開できるようになりました(KaitoKit 0.9.0)。
  • KaitoKit 0.9.0 / 0.10.0 のその他の変更(rpm・DMG/HFS+ の圧縮ファイル・tar の旧 GNU sparse、分割巻情報の API 追加)は、cooViewer が書庫として開かない形式か内部 API のみで、表示は変わりません。cooViewer が書庫として開く拡張子は zip / cbz / rar / cbr / lzh / lha / 7z / cb7 / sit / sitx / sea / hqx と分割巻です。

全 713 件のテストで失敗 0 件、既存のスキップ 1 件を確認しています。

動作環境: macOS 26 以降、Apple Silicon。

1.x に戻す場合 / Reverting to 1.x

2.0 は初回起動時に 1.x の設定・履歴・しおりを取り込み、旧データはその時点の内容で残します。1.x はそのまま起動できますが、2.0 で進めた読書位置や追加したしおりは 1.x には反映されません。

データを完全に消して初期状態へ戻したい場合だけ、アプリを終了してから次を実行してください。1.x のデータも消えます。

2.0 imports 1.x data once and leaves the legacy data unchanged. You can still run 1.x, but reading positions and bookmarks added in 2.0 do not carry back. Only if you want to reset everything, quit the app and run the following commands. This also erases 1.x data.

defaults delete jp.coo.cooViewer
rm -rf ~/Library/Application\ Support/jp.coo.cooViewer
rm -rf ~/Library/Caches/jp.coo.cooViewer

cooViewer 2.0b41

cooViewer 2.0b41 Pre-release
Pre-release

Choose a tag to compare

@shunnag shunnag released this 22 Sep 07:22
793a427

書庫エンジン KaitoKit 0.8.0 を同梱

機能追加はなく、書庫エンジンの更新のみのリリースです。

  • 7z の x86 BCJ / ARM64 filter の修正。 1 MiB 前後以上の実行ファイル的なデータを含む 7z で、変位が符号境界をまたぐと展開結果が元に戻らず「Checksum mismatch」になることがあった不具合を修正しました(KaitoKit 0.8.0)。
  • RAR5 の file copy(rar -oi)に対応。 同一内容を参照する entry(従来は本文 0 の項目)を参照先の本文として読めるようになりました。
  • 0.8.0 のリリースレビューで見つかった新 parser の異常終了・検証漏れ 14 件を修正した 0.8.1 を同梱。
  • 読み取れる形式の追加。 tar の GNU sparse、ISO 9660 の zisofs、.tar.lz(lzip)/ .tar.br(brotli)、7z の Zstandard coder、ZIP の PKZIP 1.x 方式(Shrink / Reduce / Implode)、DMG / UDF / WIM / CHM / CFB / ARJ など。cooViewer が書庫として開く拡張子は従来どおりです(zip / cbz / rar / cbr / lzh / lha / 7z / sit / sitx / sea / hqx と分割巻)。
  • Finder が作る ZIP の __MACOSX sidecar はエンジン側で畳まれるようになりましたが、cooViewer は以前から除外していたため表示は変わりません。

全 711 件のテストで失敗 0 件、既存のスキップ 1 件を確認しています。

動作環境: macOS 26 以降、Apple Silicon。

1.x に戻す場合 / Reverting to 1.x

2.0 は初回起動時に 1.x の設定・履歴・しおりを取り込み、旧データはその時点の内容で残します。1.x はそのまま起動できますが、2.0 で進めた読書位置や追加したしおりは 1.x には反映されません。

データを完全に消して初期状態へ戻したい場合だけ、アプリを終了してから次を実行してください。1.x のデータも消えます。

2.0 imports 1.x data once and leaves the legacy data unchanged. You can still run 1.x, but reading positions and bookmarks added in 2.0 do not carry back. Only if you want to reset everything, quit the app and run the following commands. This also erases 1.x data.

defaults delete jp.coo.cooViewer
rm -rf ~/Library/Application\ Support/jp.coo.cooViewer
rm -rf ~/Library/Caches/jp.coo.cooViewer

cooViewer 2.0b40

cooViewer 2.0b40 Pre-release
Pre-release

Choose a tag to compare

@shunnag shunnag released this 17 Sep 05:29
f0862d9

EPUB でもマウスのサイドボタンが使えるようになりました

  • EPUB(リフロー)モードでもサイドボタン・中ボタンが動作。 画像本と同じ規則で動きます。既定ではサイドボタンが前の本/次の本、ポインタが少し動いても(30 ポイント超でも)クリックとして実行し、1 秒を超える長押しはキャンセルします。EPUB を閉じて画像本に戻っても従来どおりです。
  • 自動更新(Sparkle)を 2.10.0 に更新。 差分更新の適用と進捗表示の修正が含まれます。
  • 書庫エンジン(KaitoKit 0.6.1)を同梱。 ZipCrypto で誤ったパスワードを CRC 不一致や破損として扱っていた点を「パスワードが違う」に正規化し、大きな ZIP の初回解析が中央ディレクトリの上限で拒否される問題を修正しました。

回帰テストを 12 件追加し、全 711 件のテストで失敗 0 件、既存のスキップ 1 件を確認しています。

動作環境: macOS 26 以降、Apple Silicon。

1.x に戻す場合 / Reverting to 1.x

2.0 は初回起動時に 1.x の設定・履歴・しおりを取り込み、旧データはその時点の内容で残します。1.x はそのまま起動できますが、2.0 で進めた読書位置や追加したしおりは 1.x には反映されません。

データを完全に消して初期状態へ戻したい場合だけ、アプリを終了してから次を実行してください。1.x のデータも消えます。

2.0 imports 1.x data once and leaves the legacy data unchanged. You can still run 1.x, but reading positions and bookmarks added in 2.0 do not carry back. Only if you want to reset everything, quit the app and run the following commands. This also erases 1.x data.

defaults delete jp.coo.cooViewer
rm -rf ~/Library/Application\ Support/jp.coo.cooViewer
rm -rf ~/Library/Caches/jp.coo.cooViewer

cooViewer 2.0b39

cooViewer 2.0b39 Pre-release
Pre-release

Choose a tag to compare

@shunnag shunnag released this 16 Sep 02:35
cf79e04

690さんへ(掲示板でご報告くださった方へ)

こちらの環境から 5ch へ書き込めない状態(規制でブロック)のため、この場でお返事します。マウスのサイドボタンと起動時の全画面について、具体的にご報告いただきありがとうございました。おかげで原因を特定できました。

サイドボタンが「設定してもたまに効かない」件
原因はこちらのバグでした。ボタンを押してから離すまでにマウスがわずかに(30 ポイント超)動くと、クリックではなくドラッグ操作と判定され、サイドボタンにはドラッグの割り当てが無いため何も起きていませんでした。堅いサイドボタンを押すと手が動きやすく、それで「たまに」効かなくなっていました。今回のバージョンで、動いてもクリックとして扱うよう修正しています。

お願いしたい確認事項

  1. このバージョンに更新後、サイドボタンの反応が安定したかどうか。
  2. もし今でもまったく反応しないことがある場合、そのマウスのメーカー名と、専用ソフト(Logi Options+ やマウスアシスタント等)を入れているか。専用ソフトがサイドボタンを別の操作に変換していると、アプリまで届かないことがあります。
  3. 以前に「設定 > マウスとジェスチャ」でマウス割り当てを保存したことがある場合、今回の新しい既定(サイドボタン=前の本/次の本)は自動では適用されません。同じ画面の「本とフォルダ」で「前の本」「次の本」にサイドボタンを割り当ててください。

変更内容

  • マウスのサイドボタンで同一フォルダ内の本を移動。 戻る/進むボタンの既定を「前の本」「次の本」に変更しました(綴じ方向に関係なく、ブラウザの戻る/進むと同じ意味)。ページ送りはクリック・キー・スワイプで従来どおり行えます。マウス割り当てを編集済みの方は、上記 3 のとおり手動で割り当ててください。
  • サイドボタン・中ボタンのクリック取りこぼしを修正。 押下中にポインタが動いてドラッグと判定された場合でも、そのボタンにドラッグ割り当てが無ければクリックとして実行します。左右ボタンのドラッグ操作は従来どおりです。
  • 起動時のウインドウ状態を選べるように。 設定「一般」に「起動時のウインドウ」を追加し、「常にウインドウ」(既定)/「フルスクリーンで常に開く」/「前回の状態」から選べます。「前回の状態」は終了時に全画面だったかを記憶して復元します。

回帰テストを 13 件追加し、全 699 件のテストで失敗 0 件、既存のスキップ 1 件を確認しています。

動作環境: macOS 26 以降、Apple Silicon。

1.x に戻す場合 / Reverting to 1.x

2.0 は初回起動時に 1.x の設定・履歴・しおりを取り込み、旧データはその時点の内容で残します。1.x はそのまま起動できますが、2.0 で進めた読書位置や追加したしおりは 1.x には反映されません。

データを完全に消して初期状態へ戻したい場合だけ、アプリを終了してから次を実行してください。1.x のデータも消えます。

2.0 imports 1.x data once and leaves the legacy data unchanged. You can still run 1.x, but reading positions and bookmarks added in 2.0 do not carry back. Only if you want to reset everything, quit the app and run the following commands. This also erases 1.x data.

defaults delete jp.coo.cooViewer
rm -rf ~/Library/Application\ Support/jp.coo.cooViewer
rm -rf ~/Library/Caches/jp.coo.cooViewer

cooViewer 2.0b38

cooViewer 2.0b38 Pre-release
Pre-release

Choose a tag to compare

@shunnag shunnag released this 15 Sep 08:01
d70f9ae

読書操作と保存処理の安定性を改善しました

  • 連続したページ移動やページカールを安定化。 読み込み中のジャンプ、見開き設定の変更、カールの取り消しが重なった場合に、古いページや位置へ戻される問題を修正しました。
  • ルーペと本の切り替えを修正。 遅れて完了した画像の読み込みやパスワード解除が、現在の本の表示を上書きしないようにしました。ウインドウを閉じた後に古い表示処理が続く問題も修正しました。
  • 本を移動するときのしおり・読書位置を保護。 移動先の状態ファイルへ書き込めない場合は、元の状態を残して再試行できるようにしました。
  • 固定レイアウト EPUB の並行描画を安定化。 複数の本を開いたときの描画処理とキャンセルの管理を修正しました。保存されたページ位置や進行率が不正な値でもクラッシュしないよう、境界の検査も強化しました。
  • キャッシュと進捗表示を改善。 ページキャッシュの参照処理を軽量化しました。ML 処理が利用可能になった後も代替画像が残る問題と、読み込みに失敗した項目を含む場合の進捗表示を修正しました。
  • ビルドと同梱物を改善。 KaitoKit / Washi のソース内容の変更を確実に検出して framework を再生成します。Washi の MIT ライセンス本文と謝辞を追加しました。

回帰テストを 42 件追加し、全 686 件のテストで失敗 0 件、既存のスキップ 1 件を確認しています。

動作環境: macOS 26 以降、Apple Silicon。

1.x に戻す場合 / Reverting to 1.x

2.0 は初回起動時に 1.x の設定・履歴・しおりを取り込み、旧データはその時点の内容で残します。1.x はそのまま起動できますが、2.0 で進めた読書位置や追加したしおりは 1.x には反映されません。

データを完全に消して初期状態へ戻したい場合だけ、アプリを終了してから次を実行してください。1.x のデータも消えます。

2.0 imports 1.x data once and leaves the legacy data unchanged. You can still run 1.x, but reading positions and bookmarks added in 2.0 do not carry back. Only if you want to reset everything, quit the app and run the following commands. This also erases 1.x data.

defaults delete jp.coo.cooViewer
rm -rf ~/Library/Application\ Support/jp.coo.cooViewer
rm -rf ~/Library/Caches/jp.coo.cooViewer

cooViewer 2.0b37

cooViewer 2.0b37 Pre-release
Pre-release

Choose a tag to compare

@shunnag shunnag released this 15 Sep 02:41
e76afd2

書庫エンジンが KaitoKit だけになりました

書庫の読み込みとファイル名の文字コード判定を KaitoKit(MIT) だけで行うようにし、XADMaster と UniversalDetector(LGPL 2.1)への依存をなくしました。アプリには LGPL のコンポーネントが含まれなくなり、ソースの取得にサブモジュールは不要です。

変わること

  • 分割 ZIP(.z01 … .zip)が KaitoKit で開けます。 WinZip / PKZIP / Info-ZIP zip -s が作る分割書庫(ZIP64、100 巻以上、.zx01 … .zipx を含む)に対応しました。最終巻でも途中巻でも開けます。欠けた巻がある場合は開けません(以前と同じ)。
  • ファイル名の文字コード判定が 39 言語・54 のコードページに広がりました。 日本語の判定精度は維持しつつ、ヘブライ語、アラビア語、ペルシア語、タイ語、ベトナム語、ギリシャ語、キリル文字各語、バルト・北欧・中東欧の各語などの旧コードページ名を判定します。UniversalDetector で誤判定していたタイ語・ベトナム語・ギリシャ語の名前(実測)は正しく表示されます。
  • 設定の「詳細」から「書庫エンジン」の選択が無くなりました。 以前に XADMaster を選んでいた場合も、この版では KaitoKit で開きます(設定値は書き換えないので、旧版に戻せば選択は残ります)。
  • 「Archive Engine Status…」(Debug メニュー)は、使用中のエンジンと、メモリマップ読み込みに失敗してファイル読み込みへ切り替えた回数を表示するようになりました。
  • 開発者向け: --audit-archives <folder> で手元の書庫コレクションを GUI なしで一括検査し、開けない書庫や名前・内容のハッシュを TSV に出せます(開発ガイド §2.1)。旧エンジンとの比較オラクルは別リポジトリ cooViewer-bench に移しました。

互換性の注意

  • 名前の付いていないエントリを含む書庫は、そのエントリだけを飛ばして残りを表示します。
  • 開けない書庫は以前のようにフォールバックせず、そのまま「読み込めない」扱いになります。手元の書庫で開けないものがあれば、上記の監査 CLI の出力(該当行と kaito list --raw の結果)を添えてお知らせください。

1.x に戻す場合(データ消去手順)

本の状態(しおり・本ごとの設定・最近開いた項目)は v2 ストア ~/Library/Application Support/jp.coo.cooViewer/BookStates/ に保存されます。v2 ストアを消去する場合は、アプリを終了してからこのフォルダを削除してください。1.x の旧設定は一度だけ取り込まれ、その後は変更されません。

To roll back to 1.x: this app stores per-book state (bookmarks, per-book settings, recents) under ~/Library/Application Support/jp.coo.cooViewer/BookStates/. Quit the app and remove that folder to clear the v2 store; the legacy 1.x keys were imported once and left untouched.

cooViewer 2.0b36

cooViewer 2.0b36 Pre-release
Pre-release

Choose a tag to compare

@shunnag shunnag released this 09 Sep 14:03

EPUB にハイライトとメモが付けられるようになりました

EPUB 対応の Washi を 1.17.0 に更新し、書庫エンジンの KaitoKit を 0.2.0 に更新しました。

変わること

  • 本文にハイライト(4 色 + 下線)とメモを付けて保存できます。
    位置は抽出した本文の文字範囲で持つので、文字サイズ・画面幅・テーマを変えても
    ずれません。描画は CSS Custom Highlight API で行い本文の DOM に触れないため、
    著者の CSS や選択・検索と干渉せず、範囲が重なっても表示が崩れません。

  • 音声同期(メディアオーバーレイ)が実用的になりました。
    再生を今開いているページの区間から始めるようになり、複数の文書にまたがる SMIL も
    正しく再生します。再生速度を 0.5〜3.0 倍で選べます。読み飛ばす区間を
    epub:type で指定できます(EPUB Reading Systems 3.3 §9.4.1)。

  • 開けなかった本が開けるようになりました。
    自炊層の梱包ミス(コンテナの綴じ方が規格から外れている本)から救済します。
    旧世代の固定レイアウト表明を使う本も固定レイアウトとして認識します。
    別名の無い -epub- 接頭辞 CSS を配信時に補います。

  • 本の中のリンクから外部サイトを開く前に確認するようになりました。

  • 壊れた書庫から読める範囲を取り出せるようになりました。
    途中で切れた ZIP・LHA・RAR5 でも、読めたファイルは取り出します。
    部分救済そのものも 19〜46 倍速くなりました。あわせて一部の 7z(coder を
    連ねた書庫)が開けるようになり、LHA と RAR5 の展開が速くなっています。

そのほか

  • 書庫エンジンは 2.0b34 以降と同じく KaitoKit が既定です。設定の「詳細」にある
    「書庫エンジン」で XADMaster に戻すこともできます。
  • KaitoKit 0.2.0 は ISO 9660 / cpio / ar / xar / RPM / CAB にも対応しましたが、
    本アプリが本として開ける種類は変わっていません。

1.x に戻す場合(データ消去手順)

本の状態(しおり・本ごとの設定・最近開いた項目)は v2 ストア ~/Library/Application Support/jp.coo.cooViewer/BookStates/ に保存されます。v2 ストアを消去する場合は、アプリを終了してからこのフォルダを削除してください。1.x の旧設定は一度だけ取り込まれ、その後は変更されません。

To roll back to 1.x: this app stores per-book state (bookmarks, per-book settings, recents) under ~/Library/Application Support/jp.coo.cooViewer/BookStates/. Quit the app and remove that folder to clear the v2 store; the legacy 1.x keys were imported once and left untouched.

cooViewer 2.0b35

cooViewer 2.0b35 Pre-release
Pre-release

Choose a tag to compare

@shunnag shunnag released this 08 Sep 22:38

EPUB の検索ジャンプで使うメモリを大きく減らしました

EPUB 対応の Washi を 1.16.4 に更新しました。今回は EPUB のメモリ使用量の改善が中心です。

変わること

  • 長い章で検索ヒットへジャンプしたあとのメモリ使用量が 4.6 分の 1 になります。
    1 章が 1 ファイルになっている本や、全文が 1 つの XHTML に入っている本では、
    ジャンプのたびに本文表示プロセスのメモリが増えたままになっていました。
    27 万文字の章で実測 78MB → 17MB です。数百ページ級の本を検索しながら読むときに
    効きます。

    内部的には、本文の 1 文字ごとに小さなオブジェクトを作って持っていた対応表を、
    型付き配列で持つように書き換えました。表示される本文・選択範囲・ハイライト位置は
    変わりません(27 万文字の全域で従来と完全一致することを確認しています)。

  • EPUB を組み込んで使う開発者向けに、handlesKeyboardNavigation を false にした
    ときの未処理キーを responder チェーンへ返せる API を追加しました(Washi 1.16.3)。
    cooViewer 自体の動作は変わりません。

そのほか

  • 書庫エンジンは 2.0b34 と同じく KaitoKit が既定です。