Skip to content

Latest commit

 

History

History
392 lines (322 loc) · 39.6 KB

File metadata and controls

392 lines (322 loc) · 39.6 KB

SideNote

SideNoteは、Obsidianのプラグインで、ノートにコメントを追加することができます。これらのコメントは専用のサイドペインに表示され、メインのテキストを乱雑にすることなく、注釈を簡単に確認・ナビゲートできます。コメントはエディタ内で直接ハイライト表示されるため、視覚的に素早く参照できます。

主な機能

基本機能

  • 選択範囲へのコメント追加: Markdownノート内の選択したテキストに簡単にコメントを追加できます
  • ノートコメント: テキストを選択せずにノート全体へコメントを追加できます — エディタで何も選択しない状態で右クリック、またはコマンドパレットから「Add note comment」を実行
  • 2つの表示モード:
    • サイドバーモード: 右サイドバーにコメントを開いて常時表示
    • スプリットビューモード: ノートの横に分割ペインとしてコメントを開く
  • 視覚的なハイライト: コメントしたテキストがエディタ内で自動的にハイライト表示(スタイルは設定で変更可能、デフォルトは黄色の背景と下線)
  • 自動追跡: ノートを編集してもハッシュベースのマッチングによりコメントが自動的にテキストを追跡
  • クリックで移動:
    • サイドペインの任意のコメントをクリックすると、エディタ内の該当箇所にジャンプ
    • コメントをダブルクリックすると直接編集モーダルが開く
    • エディタ内のハイライトされたテキストをクリックすると、サイドバーが開き対応するコメントがハイライトされます
  • 内部リンク対応: コメント本文内の [[WikiLink]] がクリック可能になり、リンク先のノートを開ける
  • 検索フィルター: サイドバー上部の検索欄にキーワードを入力するとコメントをリアルタイム絞り込み(ハイライトテキストとコメント本文が対象。Current File・All Notes 両モードで動作)
  • 編集と削除: サイドペインから直接コメントを管理できます
  • インラインエディット: コメントの追加・編集はサイドバー内のインラインテキストエリアで直接行います — モーダル不要。Cmd/Ctrl + Enter で保存、Esc でキャンセル(編集中は画面上にもヒントを表示)
  • 選択テキストの引用挿入: コメント編集中に「Quote selection」をクリックすると、ノート側で選択中のテキストを引用(blockquote)としてカーソル位置に挿入
  • 未保存変更の保護: 未保存の変更があるままキャンセルすると確認ダイアログが表示され、下書きが誤って破棄されるのを防ぎます
  • コメントの折りたたみ: シェブロンボタンで各コメントを個別に折りたたみ/展開可能。解決済みコメントはデフォルトで折りたたまれます
  • 柔軟なソート: コメントをファイル内の位置順または作成日時順で並べ替え可能(昇順/降順の切り替えも可能)
  • オーファン化されたコメントの管理: 元のテキストが削除されると、コメントは「オーファン化」され、個別に管理できます

高度な機能

  • Operational Transformation 追跡: コメントの位置は絶対文字オフセットとして保存され、CodeMirror 6 の ChangeSet.mapPos() を使ってあらゆるドキュメント編集に追従します。
  • 正確な重複テキスト対応: 同じ文字列が複数箇所に存在しても、各コメントは自分のテキストインスタンスを追跡します。ハイライトが別の出現箇所に移動することはありません。
  • 即時オーファン検出: コメント対象テキストが削除されると範囲が直ちに潰れ(collapse)、別の出現箇所に移ることなく赤いマーカーが表示されます。赤いドットはその後の編集にも OT で追従し続けます。
  • Undo でのリアルタイム復帰: Ctrl+Z で削除したテキストが復元されると、ファイル保存を待たずにリアルタイムでコメントが黄色に戻ります。
  • セッションをまたいだオフセット保存: startOffset/endOffset(絶対文字オフセット)をコメントごとに保存するため、Obsidian 再起動後も再検索なしで正確な位置を復元できます。
  • アクティブファイルの自動更新: サイドバーモード使用時、ファイルを切り替えるとコメントビューが自動更新
  • オーファン化されたコメントのハイライト: 削除されたテキストの位置に赤い文字1文字でマーク(設定でオフ可能)
  • オプションのMarkdown保存: コメントをノートごとのサイドノートMarkdownファイルに保存可能(デフォルトは side-note-comments フォルダ)

使い方

選択したテキストへのコメント追加

  1. エディタでテキストを選択(推奨は3文字以上、正確性のためには10文字以上)
  2. 選択したテキストを右クリックし、「Add comment to selection」を選択
    • またはコマンドパレット(Cmd/Ctrl + P)→「Side Note: Add comment to selection」
  3. サイドバーにインラインフォームが表示されるので、コメントを入力
    • Cmd/Ctrl + Enter で保存
    • Esc でキャンセル
  4. テキストが設定中のスタイルで自動的にハイライトされます(デフォルト:黄色の背景と下線)

コメントなしでハイライト

  1. エディタでテキストを選択
  2. 右クリックして「Highlight selection」を選択
    • またはコマンドパレット → 「Side Note: Highlight selection (without comment)」 — 設定 → ホットキーでキーを割り当てれば、読書の流れを止めずにハイライトできます
  3. 本文なしのコメントとして即座にハイライトされます。後から「Edit」で本文を追加することもできます

インラインフォームから空のコメントを保存できるようにするには、設定で Allow empty comments を有効にしてください。

ノートコメントの追加(テキスト選択不要)

  1. エディタの任意の場所をクリック(テキストは選択しない)
  2. 右クリックして「Add note comment」を選択
    • またはコマンドパレット → 「Side Note: Add note comment」
  3. サイドバーに表示されるインラインフォームにコメントを入力
  4. Cmd/Ctrl + Enter で保存、Esc でキャンセル

ノートコメントはファイル全体に紐付けられ、特定の文章には紐付きません。サイドバーではファイル名をタイトルとして表示され、青い左ボーダーが付きます。クリックするとファイルの先頭に移動します。

コメントの表示

オプション1: サイドバーモード

  • リボンのメッセージスクエアアイコンをクリック
  • またはコマンドパレットから「Side Note: Open in Sidebar」を実行
  • ビューはサイドバーに表示され、ファイルを切り替えると自動的に更新されます

オプション2: スプリットビューモード

  • コマンドパレットから「Side Note: Open in Split View」を実行
  • 現在のファイルのコメントを表示する新しいペインが右側に開きます

コメント間の移動

  • サイドペインの任意のコメントをクリックすると、エディタ内の該当箇所にジャンプ
  • コメントをダブルクリックすると直接編集モーダルが開く
  • エディタ内のハイライトされたテキストをクリックすると、サイドバーが開き(まだ開いていない場合)、対応するコメントがハイライトされます
  • コメントはテキスト内で直接ハイライトされているため、視覚的に簡単に参照できます

コメントの検索

Side Note パネル上部の検索欄にキーワードを入力すると、コメントをリアルタイムで絞り込めます。ハイライトされたテキストとコメント本文の両方が検索対象です。Current File・All Notes の両モードで動作します。日本語・中国語・韓国語などの IME 入力にも完全対応しており、変換中に絞り込みが割り込むことはありません。

コメントの管理

  • 編集: ... メニュー → Edit、またはコメントをダブルクリック — サイドバーにインラインテキストエリアが表示されます。Cmd/Ctrl + Enter で保存、Esc でキャンセル。編集中もノート本文は自由に選択可能で、「Quote selection」で引用として挿入するか、そのままコピー&ペーストできます
  • 削除: 各コメントの ... メニュー → Delete
  • 折りたたみ/展開: コメントタイトル横のシェブロンをクリックして本文の表示/非表示を切り替え
  • ソート: 設定 → Comment sort order で並び順を変更(位置順またはタイムスタンプ順、昇順/降順)

設定

設定 → Side Note からアクセス:

  • Comment Sort Order: ファイル内の位置順またはタイムスタンプ順を選択
  • Reverse Sort Order: コメントを降順(新しい順 / ファイル末尾側から)で表示
  • Show Highlights in Editor: エディタ内の視覚的なハイライトのオン/オフ切り替え
  • Show Resolved Comments: 解決済みコメントをサイドバーに表示するかどうか(サイドバー上部の「Resolved」チェックボックスからも切り替え可能)
  • Allow empty comments: 選択テキストへのコメントを本文なしで保存できるようにし、単なるハイライトとして使えるようにする(デフォルトはオフ。ノートコメントは引き続き本文が必要)
  • Highlight color: コメントのハイライト色を選択
  • Highlight opacity: ハイライトの透明度を調整(0 = 透明、1 = 不透明)
  • Highlight style: エディタ内のハイライト表示スタイルを選択:
    • Underline + Background(デフォルト — 下線 + 背景色)
    • Background only(背景色のみ)
    • Underline only(実線の下線のみ)
    • Dashed underline only(破線の下線のみ)
    • Wavy underline only(波線の下線のみ)
  • Markdown comments folder: サイドノートMarkdownファイルを保存するフォルダ(Vault相対)を指定
  • Orphaned Comments: オーファン化されたコメントの数を表示し、一括削除可能

モバイル対応

SideNote v1.0.3以降は、iOS(Obsidian モバイルアプリ)とAndroidデバイスの両方に完全対応しました!

モバイル機能

  • レスポンシブデザイン: コメントモーダルはモバイル画面サイズに自動的に適応
  • タッチフレンドリーなボタン: すべてのボタンに適切なタッチターゲットサイズ(最小44px)があり、簡単にタップ可能
  • モバイルキーボード最適化: テキスト入力はモバイルキーボード向けに最適化され、iOSの自動ズーム防止のため16pxフォントサイズを使用
  • 改善されたフォーカス管理: タッチデバイスでのシームレスなモーダル操作のための、より良いフォーカス処理
  • テキスト選択サポート: モバイルエディタでのテキスト選択とコメント追加に完全対応

モバイルでコメントを追加する方法

  1. ノートを編集モードで開く
  2. コメントを付けたいテキストを長押しして選択
    • テキストの開始位置で長押しし、終了位置までドラッグします
  3. エディタ上部のツールバーに表示される**メッセージアイコン(💬)**をタップ
    • ツールバーにアイコンが表示されない場合は、ツールバーを左右にスワイプしてください
  4. コメント入力モーダルが表示されるので、コメントを入力
  5. Addボタンをタップして保存

モバイルでコメント一覧を開く方法

サイドバーでコメント一覧を表示

iOS(Obsidian iOS版):

  1. 画面左上のハンバーガーメニュー(≡)をタップ
  2. 右にスワイプするか、「Open in Sidebar」コマンドを実行
  3. サイドバーにコメント一覧が表示される

Android(Obsidian Android版):

  1. 画面上部のメニュー(≡)をタップ
  2. 「Side Note: Open in Sidebar」コマンドを実行(検索して実行)
  3. 右側のパネルにコメント一覧が表示される

コマンドパレットから直接開く

  1. 画面上部のメニュー(≡ または ⋮)をタップ
  2. コマンドパレットを開く
  3. 「side note」で検索
  4. 「Side Note: Open in Sidebar」をタップ
  5. サイドバーが開き、現在のノートのコメント一覧が表示される

コメント一覧からコメントをクリック

  • サイドバーで各コメントをタップすると、エディタ内でそのコメント位置にジャンプ
  • コメント横の**編集(鉛筆)**アイコンをタップするとコメントを編集
  • コメント横の**削除(ゴミ箱)**アイコンをタップするとコメントを削除

モバイルのトラブルシューティング

  • ツールバーにメッセージアイコンが表示されない: ツールバーを左右にスワイプして探してください。Obsidianのモバイル設定でツールバーのカスタマイズが可能です。
  • 「Add」ボタンが反応しない: ボタンをしっかりタップしてください。コメント欄にテキストが入力されていることを確認してください(空のコメントは保存できません)。
  • テキスト選択が困難: より長いテキスト(10文字以上)を選択してください。より確実なマッチングが期待できます。
  • サイドバーが表示されない: 画面上部のメニュー(≡)からコマンドパレットを開き、「Side Note: Open in Sidebar」を実行してください。

重要な注意事項

テキスト追跡の制限事項

短いテキスト(10文字未満): 非常に短いテキストへのコメントは動作が不安定になったり、近くの同一テキストに飛ぶことがあります。最良の結果を得るには、コメント時に少なくとも10文字以上を選択してください。

重複テキスト: OT ベースの追跡により、編集セッション中は各コメントが自分のテキストインスタンスに追従し続けます。Obsidian 再起動後やファイルを外部で編集した場合は、まず保存済みの絶対オフセットを検証し、無効な場合のみ ±50 行の近接検索で位置を再アンカーします。元の位置から 50 行以内に同一テキストが存在すると稀に誤ったインスタンスにマッチすることがあります。

今後の計画

CRDT への移行: 現在の OT 実装(CM6 の ChangeSet.mapPos() を利用)は単一デバイスでの編集セッションにおいて良好に動作しますが、デバイス間の同期(例: Obsidian Sync)ではフォールバックの再検索に依存しています。将来的には、アノテーション追跡を完全な CRDT(Conflict-free Replicated Data Type) モデルへ移行することを計画しています。実装には VS Code Live Share などにも採用されている Yjs ライブラリを活用する方向で検討しています。CRDT 化により以下が実現されます。

  • 位置情報を CRDT ドキュメントとして符号化することで再検索を完全に不要にし、複数デバイスでの同時オフライン編集後でも正確に収束する
  • 同じノートを複数デバイスで同時編集してもコンフリクトなしに真のマルチデバイスアノテーション同期を実現する
  • 再検索ウィンドウ内に同一テキストが存在する場合にコメントが誤った出現箇所に再アンカーされる残存エッジケースを解消する

ハイライトのバリエーション: カスタマイズ可能なハイライトの色とスタイルを追加する予定 — v1.0.9 で実装済み。設定から5つのスタイルを選択可能。

リッチな編集UI: 新しいMarkdown保存オプションの上で、ショートカットやプレビューなど、よりリッチなMarkdown編集体験を追加する予定です。

技術的詳細

  • コメントは選択テキスト・SHA256 ハッシュ・絶対文字オフセット(startOffset/endOffset)・行/文字座標とともに data.json に保存されます
  • ハイライト追跡は Operational Transformation(OT)で実現: 絶対オフセットをドキュメントへの変更のたびに CodeMirror 6 の ChangeSet.mapPos() で変換 — 編集セッション中にテキスト検索は行いません
  • mapPos のバイアスは範囲開始に assoc=+1、範囲終了に assoc=-1 を使用し、ハイライト境界への挿入がトラッキング範囲外に留まることを保証します
  • オーファン化されたコメント(赤いマーカー)も OT トラッカーに残り続け、その後の編集に追従。元のテキストが再出現すると(例: Ctrl+Z)即座に黄色に復帰します
  • コールドスタートや外部ファイル変更時は保存済みの絶対オフセットを先に検証し、無効な場合のみ ±50 行近接 SHA256 検索を実行します
  • エディタ内のハイライトには CodeMirror 6 のデコレーション機能を使用

バージョン履歴

1.2.0

  • 「Highlight selection (without comment)」コマンドを追加(#33)
    • サイドバーのフォームを開かずに、選択テキストを本文なしのコメントとして即座にハイライトします。ホットキーを割り当てれば、読む流れを止めずにハイライトできます。テキスト選択時の右クリックメニューにも「Highlight selection」を追加しました
  • 「Allow empty comments」設定を追加(デフォルトはオフ)
    • 有効にすると、サイドバーのインライン追加/編集フォームで本文が空のままでも保存できます。対象は選択テキストへのコメントのみで、ノートコメントには引き続き本文が必要です。本文が空のコメントは、サイドバーではヘッダーのみ表示されます
  • サイドバーのヘッダーに「Resolved」チェックボックスを追加(#34)
    • 「Show resolved comments」設定と連動し、設定画面を開かずに解決済みコメントの表示/非表示を切り替えられます。現在のファイルのコメントがすべて解決済みで非表示になっている場合は「All comments in this file are resolved.」と表示するようにしました
  • ライブプレビューの表の中でのハイライトと位置を修正(#35)
    • 表の中のコメント対象テキストのハイライトが、ライブプレビューでは表示されていませんでした(ソースモードでのみ表示)。描画された表のセルにもハイライトを適用するようにし、コールアウトや埋め込みなど他の描画ブロックでも表示されるようになりました
    • 表のセルからコメントを追加すると、セル内での相対座標が保存され、コメントへのジャンプに失敗することがありました。選択範囲をノートのメインエディタから取得するようにし、ノート全体での位置を保存するようにしました
    • 表全体を書き換える操作(行の追加など)で、表の中のコメントが孤立しないようにしました
    • 描画されたハイライトをクリックしたときに、サイドバーが2回反応しないようにしました

1.1.1

  • テキストが残っているのに孤立コメントが再ハイライトされない問題を修正
    • コメントが孤立化すると、保存されているオフセットと行/文字座標は1点に折りたたまれます。孤立コメントの座標復元は「厳密なオフセット一致」と「厳密な行/文字一致」しか試さず(折りたたみ後はどちらも必ず失敗します)、テキスト検索へフォールバックしていませんでした。その結果、選択テキストがノート内にまだ存在していても、コメントは孤立状態(ハイライトなし)のままになっていました。新規追加したコメントは正しくハイライトされるため、この問題は既存コメントだけに影響していました
    • 修正後:孤立コメントは、ドキュメント全体からその選択テキストを厳密に検索して復元するようになりました(保存済みの SHA256 ハッシュで照合)。同じテキストが複数回出現する場合は、コメントの直近の既知位置に最も近い箇所を選びます。実際に削除されたテキストや、3文字未満の選択は、これまで通り正しく孤立のままになります
  • ノートを開いたときにもハイライトが復元されるように(編集時だけでなく)
    • 従来、座標復元はファイルの modify(編集)イベント時にしか実行されず、古い/孤立したコメントを含むノートを開き直しても、編集するまでハイライトが戻りませんでした。復元は active-leaf-change(ファイルを開く/切り替える)時にも実行されるようになり、コメントが実際に変化したときだけノートを再保存します
  • 折りたたまれた孤立座標の内部一貫性を維持 — コメントが孤立化する際、startLine/startChar だけでなく endLine/endChar も更新するようにし、古い値が残って後の復元を誤らせないようにしました

1.1.0

  • 編集中にフォーカスがコメント欄へ強制的に戻される問題を修正
    • コメント編集中は、アクティブなリーフの切り替えやノート本文の編集など様々なイベントでサイドバーが再描画されます。従来はこの再描画のたびに textarea.focus() が無条件で呼ばれており、そのたびにフォーカスがノートから奪われ、編集中はノート本文のテキストを選択・コピーできませんでした
    • 修正後:textarea へのフォーカスは、ダブルクリック・... メニューの Edit・「コメントを追加」など、ユーザーが明示的に編集を開始した時だけ発生するようになりました。編集中でもノート本文を自由に選択できます
    • あわせて、再描画のたびに失われていたコメント欄内のカーソル位置・選択範囲も保持されるようになりました
  • 編集中のtextarea内でダブルクリックすると入力内容が消える問題を修正
    • 単語選択のためにtextarea内でダブルクリックすると(通常のブラウザの挙動)、外側の「ダブルクリックで編集開始」ハンドラも反応してしまい、下書きが保存済みのコメント本文で上書きされ、入力途中の内容が消えていました
    • 修正後:既に編集中のコメントに対しては、ダブルクリックで再度編集モードに入らないようにしました
  • 「Quote selection」機能を追加 — コメント編集中に、ノート側で選択中のテキストを引用(blockquote)としてカーソル位置に挿入できます
  • 未保存の下書きを破棄する前に確認ダイアログを追加 — Esc やCancelボタンで未保存の変更を破棄する際、確認を挟むようになりました
  • コメントの折りたたみ表示を追加 — シェブロンボタンで各コメントを個別に折りたたみ/展開可能。解決済みコメントはデフォルトで折りたたまれます
  • ソート順の反転オプションを追加 — 新しい「Reverse sort order」設定で、コメントを新しい順 / ファイル末尾側から表示できます
  • キーボードショートカットのヒント表示を追加 — 編集・新規追加フォームに Ctrl+Enter / ⌘+Enter で保存、Esc でキャンセルというヒントを表示

1.0.9

  • 「Current File」/「All Notes」トグルボタンのラベルが逆になっていた問題を修正(issue #27)
    • ボタンが「現在表示中のモード」ではなく「クリック後に切り替わるモード」を表示していたため、逆に見えていた
    • 修正後:ボタンは常に現在アクティブな表示モードを示すようになった
  • ハイライトスタイル設定を追加(issue #28)
    • 設定 → Side Note に新しい Highlight style ドロップダウンを追加。5種類から選択可能:
      • Underline + Background(デフォルト — 従来通り)
      • Background only(背景色のみ)
      • Underline only(実線の下線のみ)
      • Dashed underline only(破線の下線のみ)
      • Wavy underline only(波線の下線のみ)
    • コメントが多いユーザーにとって、背景色 + 下線の組み合わせが煩わしく感じる場合に有用
    • 既存の色・透明度設定と組み合わせて使用可能

1.0.8

  • サイドバーのコメントクリック時のスクロール位置を修正 — コメントをクリックすると、ハイライト箇所がエディタの中央に表示されるように
    • scrollIntoView の直後に editor.focus() を呼んでいたため、ブラウザのフォーカス起因スクロール(nearest モード)がセンタリングを上書きしていた
    • setActiveLeaf が既にフォーカスを処理しているため focus() を削除し、setActiveLeaf の副作用が完了してからスクロールを実行するよう短い遅延を追加
  • コメント本文内の ![[embed]] 埋め込み展開に対応
    • ![[note.md]] がコメントカード内にインライン表示されるようになった(従来はプレーンなwikiリンクに変換していた)
    • MarkdownRenderer.render に正しい sourcePath と component を渡すことで埋め込みコンテンツの解決・表示が可能になった
    • 非推奨の MarkdownRenderer.renderMarkdown から現行の MarkdownRenderer.render API に移行
  • コメント本文内のコールアウトと引用のスタイルを修正
    • > [!NOTE] などのコールアウトや > ... の引用ブロックがスタイルなしのプレーンテキストで表示されていた問題を修正
    • 原因:ObsidianのCSSはコールアウト・引用のスタイルを .markdown-rendered という祖先クラスにスコープしており、コメントのコンテンツラッパーにそのクラスが付いていなかった
    • コンテンツラッパーに markdown-rendered を追加し、余分なマージンでコメントカードが膨らまないようCSSも調整

1.0.7

  • ノートコメントを追加 — テキストを選択せずにノート全体へコメントを付けられる機能を追加
    • コマンドパレットに「Side Note: Add note comment」コマンドを追加
    • テキスト未選択時に右クリックすると「Add note comment」が表示されるように
    • ノートコメントはファイル名をラベルとして表示(青い左ボーダー付き)し、クリックするとファイル先頭に移動
    • ノートコメントはテキストアンカーがないためエディタ内でハイライト表示されない
  • コメント本文内の ![[embed]] リンクと見出しリンクを修正
    • ![[note.md]] が表示されなかった問題を修正。クリック可能な [[note.md]] リンクとして表示されるように
    • [[note#heading]] リンクが指定見出しでリンク先ノートを開くように
    • [[#heading]] リンクが同一ファイル内の見出しへ移動するように
  • コメント追加・編集をポップアップモーダルからインラインサイドバー編集に変更
    • コメントの追加と編集がサイドバー内のインラインテキストエリアで直接行えるようになり、モーダルは表示されない
    • ノートコメント・テキスト選択コメントのどちらでも動作
    • Ctrl/Cmd+Enter で保存(グローバルホットキーとの競合を避けるため Obsidian の Scope システムを経由)、Esc でキャンセル
    • バックグラウンドイベント(ファイル保存など)でサイドバーが再描画されても入力中のドラフトが保持される
  • コメント内の外部URLおよびObsidianプロトコルリンクが正しく開かない問題を修正(issue #25)
    • https://・http://・obsidian:// などで始まるリンクがエラーになる代わりに、システムブラウザ/アプリで正しく開くように修正
    • 従来はすべての href を内部リンク専用の openLinkText に渡していたことが原因
  • コメント内のwikiリンクをCtrl/Cmd+Clickで新しいタブに開く機能を追加(issue #24)
    • Ctrl(Windows/Linux)または Cmd(Mac)を押しながらコメント内の [[WikiLink]] をクリックすると、現在のタブを置き換えず新しいタブでノートを開きます
  • OT mapPos バイアスのバグを修正 — ハイライト境界での編集でオーファン化しなくなった(issue #26)
    • ChangeSet.mapPos() の assoc 引数が逆になっており、from に -1(左バイアス)、to に +1(右バイアス)を使用していた
    • これによりハイライトの開始または終了位置への挿入が追跡範囲を拡大させ、テキスト検証が失敗して即座にオーファン化する問題が発生していた
    • from を assoc=+1、to を assoc=-1 に修正し、境界への挿入が範囲外に留まるよう修正
  • オーファン化された(赤い)ハイライトも OT で追従するように改善(issue #26)
    • 従来、赤いドットはオーファン化した瞬間の位置に凍結され、その後の編集でもずれたまま表示されていた
    • 新しい orphanedAt トラッカーがオーファン位置に対しても ChangeSet.mapPos() を適用し続けるため、赤いドットが正しい位置を追う
    • Undo 回復はリアルタイムで動作: 追跡位置に元のテキストが再出現するとファイル保存を待たずに即座に黄色に戻る
  • セッション横断的な精度向上のため絶対オフセットを保存(issue #26)
    • 新しい startOffset/endOffset フィールドを data.json に保存し、OT トラッカーが変更ごとに更新
    • Obsidian 再起動時は保存済みオフセットを先に検証し、古い場合のみ再検索を実行
  • 外部同期の再検索ウィンドウを ±10 行から ±50 行に拡大
    • 他のデバイスでノートを編集してコメント対象テキストが大きく移動した場合の復元精度が向上

1.0.6

  • コメント内の [[WikiLink]] 内部リンクが動作しない問題を修正(issue #11)
    • コメントテキスト内のリンクが正しくリンク先ノートを開くように修正
    • カスタムサイドバービューでは Obsidian のワークスペースレベルのリンクハンドラが有効にならないため、明示的な openLinkText ハンドラを追加
    • リンクのクリックが「エディタの該当箇所へジャンプ」動作と干渉しなくなった
  • サイドバーに検索フィルターを追加(issue #20)
    • Side Note パネル上部に検索入力欄を追加
    • ハイライトテキスト・コメント本文をリアルタイムで絞り込み
    • Current File・All Notes の両モードで動作
    • 日本語・中国語・韓国語などの IME 入力に対応し、変換中に絞り込みが割り込まない
  • ダブルクリックで編集(issue #19)
    • サイドバーのコメントをダブルクリックすると直接編集モーダルが開く。シングルクリックはエディタ位置へのジャンプのまま
  • ハイライト追跡を再設計(issue #23)
    • テキスト検索ベースの位置管理を CodeMirror 6 の ChangeSet.mapPos() を使った Operational Transformation(OT)に置き換え
    • ハイライトが同一文字列の別の出現箇所にドリフトすることなく編集に追従するようになった
    • コメント対象テキストを削除すると即座にオーファン化(赤いマーカー表示)され、別の箇所にハイライトが移らなくなった
    • ハイライトドリフトの根本原因だったドキュメント全体ハッシュ検索(findTextByHashOptimized)を削除。Obsidian 外で編集されたファイル向けに ±10 行近接検索を残した
    • Undo(Ctrl+Z)でファイル保存時にコメントが自動的に復帰する
  • セキュリティ強化(issue #21)
    • normalizeCommentsFolderPath() を追加: 絶対パスおよび .. を含むパスを拒否し、デフォルトフォルダへフォールバック
    • Markdown ブロック解析の多行正規表現([^]*?)を indexOf ベースの決定論的な処理に置き換え
    • イベントリスナーリークを修正: バインドしたクリックハンドラをクラスプロパティに保存し、destroy 時に正しく削除されるよう修正

1.0.5

  • コメントが重複して作成される問題を修正(issue #16, #18, #10)
    • クリック/タッチイベントの二重実行を防ぐため、モーダルのsubmit処理を強化
    • 連続送信をブロックするsubmit再入防止ガードとデバウンスを追加
    • コメントの識別子をtimestampから安定したUUID(id)に移行し、正確なターゲット指定を実現
    • マークダウンマーカーをid形式に変更し、レガシーtimestamp形式へのフォールバックを維持
  • オーファン化されたコメントが復帰しない問題を修正(issue #15)
    • オーファン化されたコメントもファイル更新のたびに再検索され、テキストが見つかれば自動的に復帰するように改善
  • 「View all comments」コマンドを追加
    • コマンドパレットから全ノートのコメントをファイルごとにまとめて表示できる新コマンドを追加

1.0.4

  • モバイル環境での座標ずれ問題を修正
    • 動的テキスト検索の実装により、編集中もハイライトが常に正確な位置に表示されるように改善
    • Android/iOSで行編集時にハイライト位置がずれる問題を解決
    • ハイライト描画時に毎回テキストを検索することで、キャッシュされた座標の古さによるずれを防止
  • コメントクリック時のorphaned問題を修正
    • コメントをクリックした際に不要な座標更新が実行され、コメントがorphanedになる問題を解決
    • 動的検索により座標更新が不要になったため、クリックハンドラーから座標更新処理を削除
  • 削除時の確認モーダルを追加
    • コメント削除ボタンを押すと確認モーダルが表示されるようになり、誤削除を防止
    • 「Cancel」と「Delete」の2つのオプションで安全に削除操作を実行

1.0.3

  • iOS/Androidデバイスの完全なモバイル対応を追加
  • モバイルエディタツールバーにコメント追加ボタンを追加(メッセージアイコン)
  • コメントモーダルの改善とより良いフォーカス管理を実装
  • タッチフレンドリーなインターフェース向けのモバイルレスポンシブCSSを追加
  • テキスト選択検証の強化により、より良いエラーメッセージを提供
  • モバイルデバイス向けのキーボードハンドリング最適化
  • ボタンのタッチターゲットサイズを拡大(44px)してモバイルでの操作性を向上
  • モバイルでのモーダルのスクロールと表示問題を修正
  • iOSの自動ズーム防止のためフォントサイズ最適化(16px)を追加

1.0.2

  • ハイライトされたテキストをクリックしてサイドバーを開き、コメントに移動する機能を追加
  • コメントモーダルにキーボードショートカットを追加:
    • Cmd/Ctrl + Enterで保存して閉じる
    • Escでキャンセル
    • モーダル外をクリックで閉じる
  • コメント追加後にハイライトがすぐに表示されないバグを修正
  • ハイライトをクリックしたときのビジュアルフィードバックを追加(サイドバーでコメントがハイライト)
  • コメントをオプションでMarkdownファイルに保存できるように追加(設定でフォルダ指定可能、ノートごとのサイドノートファイル)
  • Markdown保存を有効化した際に既存コメントをMarkdownへ移行
  • ノートのリネーム時にサイドノートファイルもリネームし参照を同期
  • 複数エディタを開いているときのハイライト位置ずれを修正

1.0.1

  • ハッシュベースのテキスト追跡を追加し、堅牢なコメントアンカリングを実現
  • 3段階マッチング戦略を実装(ハッシュ+近接度 → ファイル全体ハッシュ → オーファン化)
  • CodeMirror 6デコレーションによるエディタ内ハイライト表示を追加
  • オーファン化されたコメントの検出と管理機能を追加
  • 2つの表示モード(サイドバーとスプリットビュー)を追加
  • アクティブリーフ変更追跡による自動更新を追加
  • 制限事項の警告を含む包括的なREADMEドキュメントを作成

1.0.0

  • 初回リリース
  • 基本的なコメント機能
  • コメントの追加、編集、削除
  • コメント表示用のサイドペインビュー

ライセンス

このプラグインは、MITライセンスの下で公開されています。