diff --git a/README.md b/README.md index 91df42a..5de480f 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ make dev ### キューブをつなぐ -1. 画面右上の「Connect」を押し、表示された一覧からキューブを選びます +1. 画面右上の「接続」を押し、表示された一覧からキューブを選びます 2. GAN のキューブは、通信の暗号化に MAC アドレスを使います。自動で取れなかったときは入力欄が出るので、`chrome://bluetooth-internals` や OS の Bluetooth 設定で確認して入力します(ブラウザに保存され、次回からは聞かれません) Chrome で `chrome://flags/#enable-experimental-web-platform-features` を有効にすると、MAC アドレスを自動で取れることがあります。 diff --git a/cubalyst-spec.md b/cubalyst-spec.md index 4565117..01f95a0 100644 --- a/cubalyst-spec.md +++ b/cubalyst-spec.md @@ -51,7 +51,7 @@ ssh -L 5173:localhost:5173 nuc ## 5. 機能仕様 ### 5.1 キューブ接続 -- 「Connect」ボタンからキューブに接続し、接続状態とバッテリー残量を常時表示する +- 「接続」ボタンからキューブに接続し、接続状態とバッテリー残量を常時表示する - 回転イベント(move)と面の状態(facelets)をリアルタイムに受信する - 画面上に3Dキューブを表示し、実機の状態に同期させる - 「状態リセット」ボタン(実機が完成状態のときに押して同期を取り直す)を用意する diff --git a/docs/lan.md b/docs/lan.md index aa840b8..e87dd7a 100644 --- a/docs/lan.md +++ b/docs/lan.md @@ -105,7 +105,7 @@ VLAN を分けている場合は、ルーター側でも、ほかの VLAN から 端末のブラウザで `https://<サーバーのIP>` を開きます。 - アドレスバーに警告が出なければ、証明書は信頼されています。 -- ヘッダー右上の「Connect」が押せる状態なら、Web Bluetooth が使えます(使えないときは押せない状態になり、理由がツールチップに出ます)。 +- ヘッダー右上の「接続」が押せる状態なら、Web Bluetooth が使えます(使えないときは押せない状態になり、理由がツールチップに出ます)。 ## 同じサーバーでほかのアプリも公開するとき diff --git a/web/src/App.tsx b/web/src/App.tsx index 2514c0d..6ab7003 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -16,7 +16,7 @@ import { setNavCollapsed, useNavCollapsed } from './ui/prefs' /** * 左のメニュー。match に当てはまるパスでも選択中にする(解析は履歴・統計・AI解析の3つのタブをまとめ、履歴から開く)。 - * 中継はヘッダーの LIVE から開く。 + * 中継はヘッダーの「中継」から開く。 */ const NAV: { to: string; label: string; icon: ReactNode; end?: boolean; match?: RegExp }[] = [ { @@ -118,7 +118,7 @@ export default function App() { aria-label="中継" > )} ⚙} + trigger={ + + } title="設定・システムの状態" buttonClassName="icon-button" > diff --git a/web/src/components/ConnectionPanel.tsx b/web/src/components/ConnectionPanel.tsx index 1d093d1..28492fd 100644 --- a/web/src/components/ConnectionPanel.tsx +++ b/web/src/components/ConnectionPanel.tsx @@ -10,7 +10,7 @@ import { Dialog } from '../ui/Dialog' import { Popover } from '../ui/Popover' /** - * ヘッダー右上のキューブ接続。未接続なら「Connect」、接続中はデバイス名とバッテリーを出し、 + * ヘッダー右上のキューブ接続。未接続なら「接続」、接続中はデバイス名とバッテリーを出し、 * 押すと詳細(状態リセット・切断など)を開く。 */ export function CubeConnectionControl() { @@ -43,7 +43,7 @@ export function CubeConnectionControl() { disabled={!isWebBluetoothAvailable()} title={isWebBluetoothAvailable() ? 'キューブに接続' : 'Web Bluetoothが使えません(http://localhost から開いてください)'} > - Connect + 接続 ) diff --git a/web/src/components/PracticeRunner.tsx b/web/src/components/PracticeRunner.tsx index 5fb5b36..94cb5a1 100644 --- a/web/src/components/PracticeRunner.tsx +++ b/web/src/components/PracticeRunner.tsx @@ -58,7 +58,7 @@ export function PracticeRunner({ {overlay?.(state)} )} - {status === 'disconnected' &&

右上の「Connect」でキューブを接続すると練習できます

} + {status === 'disconnected' &&

右上の「接続」でキューブを接続すると練習できます

} {error &&

{error}

} } diff --git a/web/src/index.css b/web/src/index.css index f6923e2..b40e900 100644 --- a/web/src/index.css +++ b/web/src/index.css @@ -1459,26 +1459,28 @@ a.kind-badge:hover { display: inline-flex; align-items: center; gap: 5px; - padding: 2px 8px; - border: 1px solid color-mix(in srgb, var(--error) 55%, transparent); - border-radius: 4px; - color: var(--error); - font-size: 0.75rem; - font-weight: 700; - letter-spacing: 0.08em; + padding: 4px 10px; + border: 1px solid color-mix(in srgb, var(--ink) 12%, transparent); + border-radius: 8px; + color: var(--mute); + font-size: 0.85rem; line-height: 1.4; text-decoration: none; white-space: nowrap; } .live-link:hover { - background: color-mix(in srgb, var(--error) 10%, transparent); + color: var(--ink); + background: color-mix(in srgb, var(--ink) 6%, transparent); } .live-link.active { + color: var(--ink); + border-color: color-mix(in srgb, var(--ink) 30%, transparent); +} + +.live-link.active .live-dot { background: var(--error); - border-color: var(--error); - color: #fff; } .live-dot { @@ -1521,7 +1523,7 @@ a.kind-badge:hover { } .system-icon { - font-size: 1rem; + display: block; color: var(--mute); } diff --git a/web/src/pages/AlgDrillPage.tsx b/web/src/pages/AlgDrillPage.tsx index df876c7..2a19d73 100644 --- a/web/src/pages/AlgDrillPage.tsx +++ b/web/src/pages/AlgDrillPage.tsx @@ -316,7 +316,7 @@ function DrillView({ c, alg, onBack, onSaved }: { c: CaseInfo; alg: string; onBa )} - {status === 'disconnected' &&

右上の「Connect」でキューブを接続すると練習できます

} + {status === 'disconnected' &&

右上の「接続」でキューブを接続すると練習できます

} {settingUp && setup && setupState ? ( @@ -330,7 +330,7 @@ function DrillView({ c, alg, onBack, onSaved }: { c: CaseInfo; alg: string; onBa ? `${state.moveCount}手` : last != null ? last <= targetMs - ? `目標(${target}秒)以内!` + ? `目標(${target}秒)以内` : `目標まで ${((last - targetMs) / 1000).toFixed(2)}秒` : '手順を回すと計測します'} diff --git a/web/src/pages/LivePage.tsx b/web/src/pages/LivePage.tsx index 310c26e..4abda8e 100644 --- a/web/src/pages/LivePage.tsx +++ b/web/src/pages/LivePage.tsx @@ -12,7 +12,7 @@ import { useLiveFeed } from '../live/hooks' /** * 中継:キューブをつないだブラウザ(メイン)のタイマー画面を映す。見るだけで、記録も操作もしない。 - * この端末のキューブ(右上の Connect)とは別のストアに映すので、ここでキューブをつないでも混ざらない。 + * この端末のキューブ(右上の「接続」)とは別のストアに映すので、ここでキューブをつないでも混ざらない。 */ export function LivePage() { const { kpuzzle } = useCubeStore() diff --git a/web/src/pages/TimerPage.tsx b/web/src/pages/TimerPage.tsx index 657e676..6bc72af 100644 --- a/web/src/pages/TimerPage.tsx +++ b/web/src/pages/TimerPage.tsx @@ -67,7 +67,7 @@ export function TimerPage() { )} {status === 'disconnected' && ( -

右上の「Connect」でキューブを接続すると、回転を記録して保存できます

+

右上の「接続」でキューブを接続すると、回転を記録して保存できます

)} {saveError &&

{saveError}

}