ナレッジベースと Slidev
VMark はワークスペース全体を、閲覧でき相互にリンクされたナレッジベースとして提供できます。また、Slidev のプレゼンテーションデッキのプレビューとエクスポートもできます — どちらも、VMark が必要に応じて起動する 1 つのローカルコンテンツサーバーによって動作します。
ステータス
この機能は段階的に展開中で、どのプラットフォームのリリースビルドにも、この機能が依存するコンテンツサーバーのランタイムは含まれていません — 要件を参照してください。そのため、この機能は開発者モードがオンでない限り非表示です。表示メニューの項目、コマンドパレットの項目、Ctrl + Shift + 4 ショートカットは、設定 → 詳細設定 → 開発者ツール を有効にしたときにのみ表示されます。これをオンにして ナレッジベース パネルを開くと、お使いのマシンに何があり、何が足りないかを確認できます。
要件
ナレッジベース、その関係グラフ、検索、ライブリロード、Slidev プレビューはすべて、1 つのローカルコンテンツサーバー上で動作します。これは VMark が必要に応じて起動する、独立した Node.js プログラムです。起動するには、次の 2 つが揃っている必要があります:
- Node.js。 VMark はターミナルと同じように、ログインシェルの
PATHを通じてnodeを解決します。そのため、プロジェクトローカルのツールからしか見えない Node.js は対象になりません。nodeがログインシェルのPATHにあるようにインストールしてください。 - コンテンツサーバー本体(VMark リポジトリの
server/content。ビルドするとcli.jsになります)。パッケージ化された VMark ビルドには、どのプラットフォームでもまだ含まれていません。 これは Linux や Windows だけの欠落ではありません。macOS の DMG にもコンテンツサーバーのランタイムは同梱されておらず、VMark のリリースチェックはすべてのリリースでそれを確認しています。リリース方針が整うまで、この機能には開発環境が必要です — コンテンツサーバーをビルドした VMark のチェックアウトを、VMARK_CONTENT_SERVER_CLI環境変数(または VMark のアプリケーションデータ内にプロビジョニングされたbase-kbランタイム)を通じて利用できるようにしてください。
パネルは開いたときに両方をチェックします。どちらかが欠けている場合は、成功し得ない起動を試みる代わりに、どちらが欠けていて何があれば満たせるかを表示します。
パネルを開く
ナレッジベースは、リリースビルドでは起動できないため、デフォルトでは非表示です。表示するには 設定 → 詳細設定 → 開発者ツール をオンにします。表示 → ナレッジベース のメニュー項目、コマンドパレットの項目(「ナレッジベースの表示切替」)、Ctrl + Shift + 4 ショートカットがすべて一緒に表示され、オフにするとすべて再び消えます。
開発者ツールがオンの状態では、表示 → ナレッジベース、コマンドパレット、または Ctrl + Shift + 4 からパネルを開けます。パネルは右側にドッキングされ、もう一度切り替えると非表示になります。
開発者ツールを再びオフにすると、入口が再び非表示になり、パネルも一緒に閉じます。パネル自体には閉じるボタンがないため、開いたままにすると、何によっても閉じられないドックが取り残されてしまうからです。すでに実行中のサーバーはそのまま残ります — 開発者ツールを再びオンにすれば停止ボタンにアクセスでき、いずれにしても VMark は終了時にコンテンツサーバーを停止します。
ナレッジベース
ワークスペースを開き、ナレッジベース パネルを起動します。VMark は 127.0.0.1(ループバックのみ)にバインドされたローカルサーバーを起動し、すべての Markdown ファイルをエディタと同じ Markdown セマンティクスで HTML として描画します — Wiki リンク、アラート、数式、表、タスクリスト、details はすべて同じように描画されます。
機能:
- Wiki リンクによるナビゲーション —
[[Page]]、[[dir/Page]]、[[Page#Heading]]、[[Page|Alias]]はワークスペース全体で解決されます。解決できないリンクは「missing」として描画されるため、欠落が見えるようになります。 - 関係グラフ — ノート、タグ(
#tagとフロントマターのtags:)、型付きのフロントマター関係(up、related、linksなど)が、バックリンク付きのインタラクティブなグラフを形成します。 - ワークスペース全体の全文検索。
- ライブリロード — 保存した編集内容が、提供中のページに自動で反映されます。
ナレッジベースは VMark 内(埋め込みパネル)で表示することも、ブラウザで開くこともできます。「ブラウザで開く」アクションは一度限りの認証付きハンドシェイクを行い、ブラウザーがセッション Cookie を受け取れるようにします。サーバーはループバック専用で Cookie によって保護されており、ワークスペースをマシンの外に公開することはありません。
Slidev プレゼンテーション
フロントマターで Slidev デッキとして示されている Markdown ファイル(例:theme:、layout: とスライド、または明示的な format: slidev)を開くと、VMark は本物の Slidev ツールチェーンを実行してライブプレビューできます。Slidev 自身が使うのと同じレンダラーなので、レイアウト、クリックアニメーション、コンポーネントが完全に忠実に再現されます。
デッキを開き、ナレッジベースパネルを実行した状態で、スライドをプレビュー を使うとライブデッキがブラウザーで開き、スライドをエクスポート を使うと描画されます。Slidev はディスク上のデッキを監視しているため、VMark で編集を保存すると、開いているプレビューがホットリロードされます。
エクスポート
Slidev デッキは PDF、PNG、PPTX にエクスポートできます。コンテンツサーバーは Slidev 自身の slidev export コマンドを実行し、playwright-chromium パッケージを通じて Chromium でスライドを描画します。VMark はそのためのブラウザーをダウンロードしたり探したりはしません。コンテンツサーバーのランタイム内で playwright-chromium が Slidev と並んでインストールされていない場合、エクスポートは失敗し、Slidev のエラーメッセージが表示されます。3 分を超えて実行されるエクスポートは停止されます。
プライバシーとセキュリティ
- サーバーは
127.0.0.1にのみバインドし、セッションごとのトークン(HttpOnly、SameSite=Strict の Cookie として配布)を要求します。 - ファイルアクセスはワークスペースのルート内に限定されます。パストラバーサルは拒否され、シンボリックリンクはたどりません。
- 描画された HTML はサニタイズされ、コンテンツセキュリティポリシーの下で提供されます。ここでワークスペースの信頼が変えるのは、ただ 1 つ — リモート画像を描画するかどうかです。 VMark はサーバーを起動するときにワークスペースの信頼状態を渡します。信頼されたワークスペースでは、ポリシーが
img-srcを緩めてhttps:の画像を読み込めるようにし、信頼されていないワークスペースではローカル画像とインライン画像のみが描画されます。信頼は、ワークスペースを提供するかどうかを決めるものではありません — 開いているワークスペースであればどれでも提供できます。ナレッジベースの実行中にワークスペースの信頼を変更するとサーバーが再起動し、ポリシーがその変更に追従します。