fix: OS release prep - bootstrap script, deps, docs

- Fix bootstrap script (.env.example.local → .env.example)
- Fix @langchain/core version conflict (^1.0.1 → ^0.3.0)
- Add settings:open event listener for LocalKeyGate button
- Pin Next.js to 15.1.3 (was "latest")
- Default runtime to 'local' mode
- Remove desktop app references from UI text
- Rewrite MCP docs for web-only context
- Add SECURITY.md, CODE_OF_CONDUCT.md, CHANGELOG.md
- Add docs/README.md, docs/TROUBLESHOOTING.md
- Update README with platform support table

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
“BeeRad”
2025-12-30 12:24:56 +11:00
co-authored by Claude Opus 4.5
parent ffbd47563e
commit 0e6bf12ad3
15 changed files with 394 additions and 72 deletions
+1 -1
View File
@@ -503,7 +503,7 @@ export default function RAHChat({
borderRadius: '6px',
lineHeight: 1.4
}}>
{quotaError?.message ?? 'Your monthly allowance has been used. Upgrade your plan to keep chatting with RA-H.'}
{quotaError?.message ?? 'Rate limit reached. Please wait a moment and try again.'}
</div>
)}
<TerminalInput
@@ -112,6 +112,16 @@ export default function ThreePanelLayout() {
return () => window.removeEventListener('keydown', handleKeyDown);
}, [setNodesCollapsed, setChatCollapsed]);
// Listen for settings:open events (from LocalKeyGate)
useEffect(() => {
const handleSettingsOpen = (e: CustomEvent<{ tab?: SettingsTab }>) => {
setSettingsInitialTab(e.detail?.tab || 'apikeys');
setShowSettings(true);
};
window.addEventListener('settings:open', handleSettingsOpen as EventListener);
return () => window.removeEventListener('settings:open', handleSettingsOpen as EventListener);
}, []);
// SSE connection for real-time updates
useEffect(() => {
@@ -34,7 +34,7 @@ export default function ExternalAgentsPanel() {
setError(null);
} catch (err) {
console.error('Failed to load MCP status', err);
setError('Unable to read local MCP status. Open the desktop app to bootstrap it.');
setError('MCP server not running. See docs/8_mcp.md for setup instructions.');
setStatus(initialStatus);
} finally {
setLoading(false);
@@ -84,7 +84,7 @@ export default function ExternalAgentsPanel() {
<div>
<div style={{ fontSize: '14px', color: '#94a3b8' }}>Connector URL</div>
<div style={{ fontSize: '18px', color: connectorUrl ? '#fff' : '#64748b', marginTop: '4px' }}>
{loading ? 'Loading…' : connectorUrl ?? 'Unavailable (start the RA-H desktop app)'}
{loading ? 'Loading…' : connectorUrl ?? 'Unavailable (MCP server not running)'}
</div>
{status.last_updated && (
<div style={{ fontSize: '12px', color: '#475569', marginTop: '6px' }}>