diff --git a/README.md b/README.md index 4981823..29ef3af 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,20 @@ --- +## 開発環境のトラブルシューティング + +### SSH接続エラー (Host Key Mismatch) + +サーバーの再構築等により `REMOTE HOST IDENTIFICATION HAS CHANGED!` エラーが発生した場合は、以下のコマンドで古いホストキーを削除してください。 + +```powershell +ssh-keygen -R [ホスト名] +``` + +例: `ssh-keygen -R server2022` + +--- + ## 開発者向け情報 ### ログ diff --git a/src-tauri/telos.db b/src-tauri/telos.db index e69de29..a4c308f 100644 --- a/src-tauri/telos.db +++ b/src-tauri/telos.db Binary files differ diff --git a/src-tauri/telos.db-shm b/src-tauri/telos.db-shm new file mode 100644 index 0000000..14ef4a8 --- /dev/null +++ b/src-tauri/telos.db-shm Binary files differ diff --git a/src-tauri/telos.db-wal b/src-tauri/telos.db-wal new file mode 100644 index 0000000..1f1d266 --- /dev/null +++ b/src-tauri/telos.db-wal Binary files differ diff --git a/src/App.css b/src/App.css index b9d355d..695957c 100644 --- a/src/App.css +++ b/src/App.css @@ -3,40 +3,63 @@ margin: 0 auto; padding: 2rem; text-align: center; +:root{ + --bg: #0f172a; + --panel: #0b1220; + --muted: #94a3b8; + --accent-purple: #c084fc; + --glass: rgba(255,255,255,0.04); + --glass-2: rgba(255,255,255,0.02); } -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); +body{ + background: linear-gradient(180deg, #05060a 0%, #0f172a 100%); + color: #e2e8f0; + font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial; + margin: 0; } -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } +.container{ + max-width: 980px; + margin: 24px auto; + padding: 16px; } -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } +.header{ + display: flex; + align-items: center; + gap: 12px; } -.card { - padding: 2em; +.status-badge{ + display: inline-flex; + align-items: center; + gap: 8px; + margin-right: 8px; } -.read-the-docs { - color: #888; +.status-dot{ + width: 12px; + height: 12px; + border-radius: 50%; + display: inline-block; + background: var(--muted); } + +.status-dot.idle{ background: var(--muted) } +.status-dot.ok{ background: #34d399 } +.status-dot.error{ background: #fb7185 } + +.accent-purple{ color: var(--accent-purple) } + +.actions{ margin-top: 12px; display: flex; gap: 8px } + +.secondary-btn{ + background: transparent; + border: 1px solid rgba(255,255,255,0.06); + color: inherit; + padding: 8px 10px; + border-radius: 6px; +} + +.hidden{ display: none } diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..d1967f0 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,10 @@ +import { ModelName } from './ModelName'; + +export default function App() { + return ( + <> + + {/* ...既存UIコンポーネントやレイアウト... */} + + ); +} diff --git a/src/ModelName.tsx b/src/ModelName.tsx new file mode 100644 index 0000000..1b20f61 --- /dev/null +++ b/src/ModelName.tsx @@ -0,0 +1,14 @@ +import { invoke } from '@tauri-apps/api/tauri'; +import { useEffect, useState } from 'react'; + +export function ModelName() { + const [modelName, setModelName] = useState(''); + + useEffect(() => { + invoke('get_model_name').then((name) => setModelName(name)); + }, []); + + return ( +
使用モデル: {modelName}
+ ); +} diff --git a/src/types/tauri.d.ts b/src/types/tauri.d.ts new file mode 100644 index 0000000..5e143c9 --- /dev/null +++ b/src/types/tauri.d.ts @@ -0,0 +1,3 @@ +declare module '@tauri-apps/api/tauri' { + export function invoke(cmd: string, args?: Record): Promise; +}