変更履歴
Vantage のリリースごとの変更点。新しいものが上。まだプロトタイプ(0.x)のため、リリース間で API が変わることがあります。
Vantage のリリースごとの変更点です。新しいものが上に来ます。
v0.5.3
Squadbase の Project Storage をブラウザから扱うための Skill を同梱しました。^0.5.0 を
指定していればそのまま入ります。
追加
-
project-storageskill を同梱しました。 Squadbase の Project Storage(ユーザーが アップロードしたファイル)を、@squadbase/reactのuseStorage()でページやコンポーネント から扱う手順書です。ファイル一覧、画像 / 動画 / PDF の埋め込み(短命な URL の取り直しを 含む)、中身の読み取り、アップロードと削除・移動を扱います。配置は他の skill と同じで
vantage add skill --all(置き場を選ぶなら--dir)。 ライブラリのコードは変わっていないので、アプリ側の変更は要りません。
v0.5.2
再公開でビルドが差し替わったとき、開いたままのタブが古い chunk を取りに行って動かなくなる
不具合の修正です。^0.5.0 を指定していればそのまま入ります。
修正
-
再公開したあと、開きっぱなしのタブが自動で新しいビルドに追従するようになりました。 公開されたアプリはビルド単位で配信され、HTML は content hash の付いた chunk を指しています。 アプリを再公開すると、開いたままだったタブはもう配信されていない古いハッシュの chunkを 要求してしまい、ページ遷移(dynamic import)が
Failed to fetch dynamically imported moduleで失敗していました ― 画面はエラー表示のまま 止まり、手でリロードするまで戻りません。Vite が出す
vite:preloadError(と、同じ失敗が未捕捉の Promise リジェクションとして出る 場合)を捕捉して、一度だけページをリロードし、新しいビルドを読み直すようにしました。 リロードはsessionStorageに置いた 10 秒の cooldown で 1 回に制限しているので、chunk が 本当に取得できないとき(オフライン、あるいは配信から消えたビルド)でもリロードループには ならず、2 回目からは従来どおりエラーバウンダリに落ちます。アプリ側の変更は要りません。
v0.5.1
dark: ユーティリティがテーマトークンと同じスイッチに繋がっていなかった不具合の修正です。
^0.5.0 を指定していればそのまま入ります。
修正
-
dark:が OS の設定ではなく.darkクラスに従うようになりました。 Tailwind の既定のdark:は@media (prefers-color-scheme: dark)ですが、Vantage のトークンは祖先の.dark/[data-theme="dark"]でしか切り替わりません。そのため OS がダークのブラウザでは テーマが二つに割れていました ― 背景・文字色のトークンはライトのまま、dark:の付いた クラスだけが全部効いてしまう。白いカードの上でdark:text-slate-100の文字が消える、 バッジだけ黒地に反転する、といった症状が出ます。// 0.5.0: OS がダークだと、白いカードの上でこの文字が見えなくなっていた <div className="text-slate-900 dark:text-slate-100">{name}</div>theme.cssでdark:をトークンと同じクラスに繋ぎ直しました。.dark/[data-theme="dark"]を自分で付けない限り、アプリは常にライトで描かれます (→ UI とテーマ)。OS の設定に追従させていたつもりのアプリは、 ルート要素へ明示的にクラスを付けてください。 -
color-schemeを宣言するようになりました ― スクロールバー、<select>のポップアップ、 オートフィルといったブラウザ側の UI が、アプリはライトなのに OS 設定でダークになる、という ちぐはぐが解消します。
v0.5.0
ブラウザから開発ターミナルへの転送を Vite ネイティブの仕組みに置き換えました。転送される レベルと出力形式が変わる後方互換でない変更を含むため、0.x の方針に従って minor を上げています。
依存を "@squadbase/vantage": "^0.4.0" と書いているアプリには 0.5.0 は入りません。
^0.5.0 に上げてください。
変更
-
ブラウザ → ターミナルの転送が Vite の
server.forwardConsoleになりました (→ CLI リファレンス)― 自前のブリッジを置き換えたことで、未捕捉のエラーが ソースマップを解決した位置とコードフレーム付きで出るようになります。1:46:34 PM [vite] (client) [Unhandled error] TypeError: rows.map is not a function > src/sales/index.tsx:12:18 12 | return <ul>{rows.map((r) => <li key={r.id}>{r.name}</li>)}</ul> | ^ -
転送するのは
warn/errorだけになりました ― 描画のたびに走る 1 本のconsole.logで サーバー自身の出力が埋もれてしまうためです。設定で戻すことはできません。
追加
vantage dev --no-overlay― エラー時にブラウザへ出る全画面のオーバーレイを消します。 スクリーンショットやデモでオーバーレイが邪魔なとき、あるいはエラーの内容がすでにターミナルへ 転送されていて画面側は素の状態を見たいときに使います。既定はオンのままで、--overlayで 明示することもできます。
v0.4.0
明示した --port が厳格になりました。後方互換でない変更を含むため、0.x の方針に従って
minor を上げています。
依存を "@squadbase/vantage": "^0.3.0" と書いているアプリには 0.4.0 は入りません。
^0.4.0 に上げてください。
変更
- 明示した
--portは厳格になりました(→ CLI リファレンス)―--port 3000と書くのは、リバースプロキシ・コンテナのポートマッピング・OAuth のリダイレクト URI など プロセスの外側との約束があるからで、黙って 3001 で上がるのは復旧ではなく静かな失敗です (「3000 で誰かが listen しているか」だけを見る監視は、誰も到達できないサーバーを「起動成功」と 報告してしまいます)。--portを省いたときは従来どおり次の空きポートへずれるので、複数の プロジェクトを並べて立ち上げる手軽さは変わりません。 --portの値が不正なときはエラーになりました ― 整数でない・範囲外・値が無い場合、 これまでは黙って既定値で起動していました。
追加
--strict-port―--portを省いたときも、既定ポートが取れなければ起動しません。--no-strict-port―--portを明示したときも、埋まっていれば次の空きポートへずらします。 0.3.x までの挙動が必要なときに使ってください。
fullstack の vantage preview は Node サーバーを 1 ポートに bind するだけなので以前から常に
厳格で、--no-strict-port は効きません(その旨を表示します)。
v0.3.1
CLI の起動と、開発サーバー・ビルドの立ち上がりを速くしました。挙動を変える意図の変更は 含まれておらず、すべて後方互換です。
速くなったもの
check/routes/docs/search/add/doctorが約 3 倍速くなりました (実測 205ms → 65〜75ms)。これらのコマンドは Vite も Tailwind も使わないのに、CLI が 起動時に必ず読み込んでいました。コマンドごとに必要なものだけを読むようにしています。 エージェントや CI がcheckとroutesを繰り返し叩く場面ほど効きます。vantage devの起動が速くなりました ― 起動時にプロジェクトを 4 回走査していたのを 1 回にしました(生成も 2 回 → 1 回)。vantage buildでクライアントとサーバーを並列に建てるようになりました (server/があるプロジェクトのみ)。ログは「Building client…」「Building server…」の 2 行から「Building client and server…」の 1 行になります。vantage checkが同じファイルを読み直さなくなりました ― ページモジュールは 3 回、 プロジェクトツリーの走査は 2 回行われていました。大きなアプリほど差が出ます。- 開発サーバーの無駄な再走査を減らしました ― ディレクトリが作られるたびに全走査して いたのを、ページや API になり得る場所のときだけにしました。
- 依存のプリバンドルを先に宣言するようになりました ― UI キットが使う依存
(Base UI・ECharts・TanStack Table など)を Vite に先に伝えるので、初めてその
コンポーネントを使ったページを開いたときの「依存が見つかった → ページ全体がリロード」が
起きなくなります(
npm/yarnのように依存が巻き上げられる構成のとき)。
追加
VANTAGE_PROFILE=1(→ CLI リファレンス)― 任意のvantageコマンドの 各フェーズの所要時間を stderr に出します。「遅い」を測ってから直すための計測口です。 stdout には出さないので--jsonと併用できます。
v0.3.0
ページの置き場所として src/ を認識するようになりました。後方互換でない変更(src/ を持つ
プロジェクトの走査範囲)を含むため、0.x の方針に従って minor を上げています。
依存を "@squadbase/vantage": "^0.2.0" と書いているアプリには 0.3.0 は入りません。
^0.3.0 に上げてください。
変更
- ページ探索ルートが
src/の有無だけで決まるようになりました (→ ファイルベースルーティング)―<root>/srcがあればページはその中だけ、 無ければルート直下。設定は無く、検出されるだけです。1 ファイルのアプリは直下のままでよく、 育ったらsrc/を作ってまとめて移せます。server/とpublic/は常にプロジェクトルート 直下で、src/server/はスキャンされません。 styles.cssはページと同じ側から読まれます ―src/があればsrc/styles.css。vantage add page/add ui/add blockの書き込み先もページ探索ルート基準になりました (src/reports/index.tsx・src/components/ui/data-table.tsx)。- クイックモードにページファイルを渡したときの root が、そのファイルから上に辿って最初に
package.jsonがあるディレクトリになりました ―vantage ./demo/src/index.tsxの root は./demoです(これまでは親ディレクトリ固定で./demo/srcになっていました)。
追加
SRC_DIR_SPLIT(エラー) ―src/があるのにルート直下にページやstyles.cssが残って いる、またはsrc/server/がある場合に指摘します。いずれも「置いたのに動かない」形の事故に なるため、警告ではなくエラーです。SUSPICIOUS_ROUTE_DIR(警告) ―pages/・app/・utils/のような足場に見えるディレクトリ から URL が生まれたときに知らせます(pages/report.tsx→/pages/report)。ページ走査は除外 リスト方式なので、リストに無い名前は黙って URL になります。走査自体は止めないので、意図して その URL を作っている場合は無視できます。- 同梱の
AGENTS.mdに「ディレクトリ構造」の節が入り、Skill(vantage-app/vantage-add-feature)も追随しました。配置済みのAGENTS.mdはvantage upgradeで 同期されます。
v0.2.3
vantage routes を片側だけに絞れるようになり、各ルートの仕様も出せるようになりました。
すべて追加のみで後方互換です。
追加
vantage routesに--pages/--apisが付きました(→ CLI リファレンス) ― ページ(+ layout / 404 / error)だけ、API ルートだけに絞れます。排他ではないので、両方 付けても、どちらも付けなくても今までどおり全部出ます。--detailで各ルートの静的な仕様を併記します ― ページはdefinePageの title / navLabel / description とパスパラメータ、API はメソッドごとにsearchParamsで読むクエリキー・リクエストボディ(json/formData/text。 分割代入していればキーも)・レスポンスの status と content-type とオブジェクトのキー・HttpErrorの status とメッセージが並びます。既存 API の呼び方を確かめるのに、 ハンドラを開かずに済みます。--jsonと併せると、各要素にspecが増えます。既存のキー(route/file/dynamic/params)はそのままなので、今の読み手を壊しません。- 取れるのはソースを読んだだけの推定です(
checkと同じく、アプリのコードを import も 実行もしません)。実行時に組み立てるキーや、ヘルパー関数の中に隠れた入出力は出てきません ― 仕様の下書きであって契約ではありません。
v0.2.2
vantage add skill が配置先を走査するようになり、チャートがスタイルシートの差し替えにも
追従するようになりました。どちらも後方互換です。
変更
vantage add skillが配置済みの Skill を探してからコピーします ― プロジェクト内を 走査して<skill>/SKILL.mdを探し、既にあればスキップして場所を報告します。ルート直下 でも.claude/skills/でも.squadbase/skills/でも同じなので、再実行しても二重に配置 されません。エージェント側が置き場所の候補を覚えておく必要がなくなります。--forceは見つかった場所をその場で書き換えます(--dirを明示したときは、そちらが 配置先として優先されます)。配置済みコピーの更新に、前回と同じ--dirを思い出す必要は ありません。- 名前を省いた
vantage add skillは、一覧と配置場所を出すだけの表示コマンドに なりました(何も書き込まず exit 0)。 - 同梱の
AGENTS.mdも更新し、置き場所をlsで当てにいく手順を「CLI が探す」に 置き換えました(配置済みのAGENTS.mdはvantage upgradeで同期されます)。
修正
EChartが CSS の更新に追従しない場合がありました ― トークンの変化をhtml/bodyの属性でしか見ていなかったため、注入済みの<style>の 中身だけが差し替わる経路(開発中のstyles.cssの書き換え、テーマプリセットの適用など)で DOM のトークンは新しいのにチャートだけ前の色のまま残っていました(リロードで直るため 「プリセットが効いていない」と誤解しやすい状態でした)。スタイルシートの差し替えも監視 対象になり、トークンの値が実際に変わったときだけ描き直します。
v0.2.1
チャートをテーマトークンに追従させ、Select の値とラベルの対応を Vantage 側で組むように
しました。API はどちらも後方互換です。
変更
EChartがテーマトークンに追従するようになりました ― 系列色は--chart-1〜--chart-5、軸・凡例・ツールチップは文字色と境界色のトークンから 組まれ、ライト / ダークの切り替えにも追いかけます。ECharts が CSS 変数を読めないのは キャンバスの描画中の話なので、init のタイミングでトークンの実値を解決しています。 系列の色だけ変えたいときはoption.colorで上書きでき、その場合も軸まわりの追従は 残ります。チャート全体を自前のテーマで描きたいときはthemeプロップを渡してください (このときトークン追従は完全に無効になります)。Selectのitemsを書かなくてよくなりました ― Base UI のSelectValueは選択中の value をそのまま描く部品で、値とラベルが違うと トリガーにkantoのような生の値が出ていました。SelectItemから対応表を組む処理を Vantage 側に入れたので、普通に書けばラベルが出ます。明示したitemsは今までどおり 優先されるので、既存のコードはそのまま動きます(項目を別のコンポーネントが返している 場合は、これまでどおりitemsを渡してください)。
修正
useSearchParamの JSDoc に載せていたSegmentedControlの例が、存在しないonValueChangeを渡していました(正しくはonChange)。- 同梱の
AGENTS.mdと Skill を更新しました ―vantage add ui|blockでコピーできるのがdata-tableとsales-overviewの 2 つだけであること、モードはserver/の有無で決まり 「SPA から fullstack へ昇格する」手順ではないこと、配置済みの Skill を先に探すこと。 配置済みのAGENTS.mdはvantage upgradeで同期されます。
v0.2.0
vantage add skill の配置先を選べるようにし、相対 import の .js 指定子の規約を廃止しました。
後方互換でない変更(既定の配置先)を含むため、0.x の方針に従って minor を上げています。
依存を "@squadbase/vantage": "^0.1.0" と書いているアプリには 0.2.0 は入りません。
^0.2.0 に上げてください。
変更
vantage add skill --dir <path>― 配置先をコマンドで指定できるようになりました。 パスはプロジェクトルート(--rootを尊重)からの相対で解決され、絶対パスも渡せます。 Claude Code に自動認識させたい場合は--dir .claude/skills、他のエージェント向けには そのツールが期待するディレクトリを指定します(→ エージェントと Skills)。- 相対 import の
.js指定子の規約を廃止 ―./components/revenue-chart.jsのように 拡張子を書く必要はなくなりました(./components/revenue-chartで構いません)。Vantage の コードは常に Vite / tsup を通り、TypeScript もmoduleResolution: "Bundler"で解決する ため、Node が生の指定子を読む経路がそもそもありませんでした。既存の.js付きの import はそのまま動きます ― 書き換えは不要です。
v0.1.1
一覧・URL 状態・API 呼び出しの hook を追加し、開発時の 2 つの不具合を修正しました。 すべて後方互換です。
追加
- ルーティングの hook ―
useRoutes()/useCurrentRoute()を@squadbase/vantage/routerに追加。ファイルベースルーティングの一覧を そのまま受け取り、ナビゲーションを手で二重管理せずに組めます。 - URL 同期の状態 ―
useSearchParam(常に文字列。既定値/nullを書くとキーを消す)と、 JSON 値と関数更新に対応したuseSearchState<T>を追加。フィルタやタブの状態を URL に置けます。 - API 呼び出しの hook ―
useApiQuery/useApiMutationを@squadbase/vantage/queryに追加。server/apiを JSON で呼び、 エラーはHttpError→ApiError(status/body/requestId)に正規化されます。 definePageのnavLabel― ナビゲーションに出す表示名を、ページのタイトルと 独立して指定できるフィールドを追加(→ ページとメタデータ)。
修正
- dev の SPA フォールバック ―
/salesのような URL に直接アクセスすると、Vite がNo matching HTML proxy module foundのエラーオーバーレイを出していた問題を修正 (ページ自体は描画されていました)。注入スクリプトの id をシェル文書の URL から 導くようにしました。 - クエリが
pausedのまま止まる ― ブラウザのオフライン判定が誤って offline を返すと、 失敗したクエリがエラーにならず停止し、ページが読み込み表示から戻らないことがありました。 管理されたQueryClientのnetworkModeを"always"にして解消(自オリジンの API を 叩くダッシュボードでは、この判定に意味がありません)。
v0.1.0
最初のプロトタイプリリース。設定ファイル不要(config-free)な React ダッシュボード フレームワークの土台一式です。
追加
- config-free な土台 ― Vite 8 の上に構築。アプリ作者が書くのは
index.tsxだけで、 ルーティング・React・TanStack Query・Tailwind v4・UI キット・開発サーバー・ オプションの API サーバー・ビルドはすべて Vantage が所有します。 - ファイルベースルーティング ―
*.tsx(デフォルトエクスポート)がルートに、_layout.tsxがレイアウトに、_404.tsx/_error.tsxが not-found / error に、[param].tsxが動的ルートになります(→ ルーティング)。 - オプションの API サーバー ―
server/api/**を足すとバックエンドが有効になり、devと本番ビルドで同一に動きます(→ API とサーバー)。 - UI キットとコンポーネント ― Tailwind v4、shadcn/ui(Base UI 版)、その上に組んだ ダッシュボード向けの複合コンポーネント(→ UI とテーマ)。
- CLI ―
dev/build/preview/check/routes/add/upgrade(→ CLI リファレンス)。 - 同梱ドキュメントと検索 ―
vantage docsがパッケージ同梱のガイドとコンポーネント リファレンスをオフラインで表示し、vantage searchが同じ内容を BM25 で検索します。 - エージェント向けの配布物 ―
vantage add agentsがAGENTS.mdを、vantage add skillが Claude Code の Agent Skills をアプリへ配置します (→ エージェントと Skills)。