@pheem49/mint 1.5.5 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.codex +0 -0
- package/.github/FUNDING.yml +2 -0
- package/.github/workflows/ci.yml +45 -0
- package/.github/workflows/release.yml +79 -0
- package/Cargo.lock +5792 -0
- package/Cargo.toml +32 -0
- package/README.md +387 -353
- package/assets/icon.png +0 -0
- package/bin/mint +0 -0
- package/crates/mint-cli/Cargo.toml +23 -0
- package/crates/mint-cli/src/agent.rs +851 -0
- package/crates/mint-cli/src/gmail.rs +216 -0
- package/crates/mint-cli/src/image.rs +142 -0
- package/crates/mint-cli/src/main.rs +2837 -0
- package/crates/mint-cli/src/mcp.rs +63 -0
- package/crates/mint-cli/src/onboard.rs +1149 -0
- package/crates/mint-cli/src/setup.rs +390 -0
- package/crates/mint-cli/src/skills.rs +8 -0
- package/crates/mint-cli/src/updater.rs +279 -0
- package/crates/mint-core/Cargo.toml +22 -0
- package/crates/mint-core/src/agent_loop.rs +94 -0
- package/crates/mint-core/src/api_server.rs +991 -0
- package/crates/mint-core/src/channels.rs +248 -0
- package/crates/mint-core/src/chat.rs +895 -0
- package/crates/mint-core/src/code_tools.rs +729 -0
- package/crates/mint-core/src/config.rs +368 -0
- package/crates/mint-core/src/files.rs +159 -0
- package/crates/mint-core/src/knowledge.rs +541 -0
- package/crates/mint-core/src/lib.rs +84 -0
- package/crates/mint-core/src/mcp.rs +273 -0
- package/crates/mint-core/src/memory.rs +673 -0
- package/crates/mint-core/src/orchestration.rs +2157 -0
- package/crates/mint-core/src/pictures.rs +314 -0
- package/crates/mint-core/src/plugins.rs +727 -0
- package/crates/mint-core/src/safety.rs +416 -0
- package/crates/mint-core/src/semantic.rs +254 -0
- package/crates/mint-core/src/shell.rs +317 -0
- package/crates/mint-core/src/skills.rs +71 -0
- package/crates/mint-core/src/symbols.rs +157 -0
- package/crates/mint-core/src/tasks.rs +308 -0
- package/crates/mint-core/src/tts.rs +92 -0
- package/crates/mint-core/src/weather.rs +93 -0
- package/crates/mint-core/src/web_search.rs +200 -0
- package/crates/mint-core/src/workflows.rs +81 -0
- package/crates/mint-core/tests/mcp_stdio.rs +45 -0
- package/crates/mint-core/tests/memory_persistence.rs +172 -0
- package/crates/mint-core/tests/pictures_storage.rs +14 -0
- package/crates/mint-core/tests/task_lifecycle.rs +87 -0
- package/package.json +35 -99
- package/src/bin/index.js +16 -0
- package/src/renderer/index-web.html +17 -0
- package/src/renderer/index.html +17 -0
- package/src/renderer/public/Live2DCubismCore.js +9 -0
- package/src/renderer/public/assets/icon.png +0 -0
- package/src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.model3.json +36 -0
- package/src/renderer/src/App.tsx +33 -0
- package/src/renderer/src/calculator.ts +47 -0
- package/src/renderer/src/components/ChatPanel.tsx +1598 -0
- package/src/renderer/src/components/DashboardSidebar.tsx +358 -0
- package/src/renderer/src/components/Live2DStage.tsx +374 -0
- package/src/renderer/src/components/MintDashboard.tsx +950 -0
- package/src/renderer/src/components/ModelPanel.tsx +154 -0
- package/src/renderer/src/components/PicturesLibrary.tsx +46 -0
- package/src/renderer/src/components/ProactiveGlow.tsx +19 -0
- package/src/renderer/src/components/ScreenPicker.tsx +579 -0
- package/src/renderer/src/components/SettingsWindow.tsx +1467 -0
- package/src/renderer/src/components/SpotlightWindow.tsx +280 -0
- package/src/renderer/src/components/WidgetWindow.tsx +36 -0
- package/src/renderer/src/components/WorkspacePanel.tsx +268 -0
- package/src/{UI → renderer/src/css}/settings.css +69 -16
- package/src/renderer/src/css/spotlight.css +113 -0
- package/src/renderer/src/css/styles.css +3722 -0
- package/src/renderer/src/css/widget.css +185 -0
- package/src/renderer/src/env.d.ts +116 -0
- package/src/renderer/src/index.css +379 -0
- package/src/renderer/src/main.tsx +13 -0
- package/src/renderer/src/tauri.ts +996 -0
- package/src/renderer/src-web/App.tsx +25 -0
- package/src/renderer/src-web/calculator.ts +47 -0
- package/src/renderer/src-web/components/ChatPanel.tsx +1662 -0
- package/src/renderer/src-web/components/DashboardSidebar.tsx +242 -0
- package/src/renderer/src-web/components/MintDashboard.tsx +763 -0
- package/src/renderer/src-web/components/PicturesLibrary.tsx +73 -0
- package/src/renderer/src-web/components/SettingsWindow.tsx +1500 -0
- package/src/renderer/src-web/css/settings.css +1100 -0
- package/src/{UI → renderer/src-web/css}/spotlight.css +4 -4
- package/src/{UI → renderer/src-web/css}/styles.css +1055 -159
- package/src/{UI → renderer/src-web/css}/widget.css +2 -2
- package/src/renderer/src-web/env.d.ts +107 -0
- package/src/renderer/src-web/index.css +379 -0
- package/src/renderer/src-web/main.tsx +13 -0
- package/src/renderer/src-web/tauri.ts +983 -0
- package/tsconfig.json +30 -0
- package/vite.config.ts +33 -0
- package/vite.config.web.ts +51 -0
- package/GUIDE_TH.md +0 -125
- package/assets/Agent_Mint.png +0 -0
- package/assets/CLI_Screen.png +0 -0
- package/assets/Settings.png +0 -0
- package/benchmark_ai.js +0 -71
- package/install.ps1 +0 -64
- package/install.sh +0 -54
- package/main.js +0 -139
- package/mint-cli-logic.js +0 -3
- package/mint-cli.js +0 -410
- package/models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.model3.json +0 -47
- package/models/Shiroko_Model/Shiroko//342/232/241/351/253/230/344/272/256/342/232/241/344/275/277/347/224/250/346/225/231/347/250/213/344/270/216/346/263/250/346/204/217/344/272/213/351/241/271.txt +0 -23
- package/preload-picker.js +0 -11
- package/preload-settings.js +0 -11
- package/preload.js +0 -41
- package/scripts/install_linux_desktop_entry.js +0 -48
- package/src/AI_Brain/Gemini_API.js +0 -813
- package/src/AI_Brain/agent_orchestrator.js +0 -73
- package/src/AI_Brain/autonomous_brain.js +0 -179
- package/src/AI_Brain/behavior_memory.js +0 -135
- package/src/AI_Brain/headless_agent.js +0 -143
- package/src/AI_Brain/knowledge_base.js +0 -349
- package/src/AI_Brain/memory_store.js +0 -662
- package/src/AI_Brain/proactive_engine.js +0 -172
- package/src/AI_Brain/provider_adapter.js +0 -365
- package/src/Automation_Layer/browser_automation.js +0 -149
- package/src/Automation_Layer/file_operations.js +0 -286
- package/src/Automation_Layer/open_app.js +0 -85
- package/src/Automation_Layer/open_website.js +0 -38
- package/src/CLI/approval_handler.js +0 -47
- package/src/CLI/chat_router.js +0 -247
- package/src/CLI/chat_ui.js +0 -1159
- package/src/CLI/cli_colors.js +0 -115
- package/src/CLI/cli_formatters.js +0 -94
- package/src/CLI/code_agent.js +0 -1667
- package/src/CLI/code_session_memory.js +0 -62
- package/src/CLI/gmail_auth.js +0 -210
- package/src/CLI/image_input.js +0 -90
- package/src/CLI/intent_detectors.js +0 -181
- package/src/CLI/interactive_chat.js +0 -658
- package/src/CLI/list_features.js +0 -64
- package/src/CLI/onboarding.js +0 -416
- package/src/CLI/repo_summarizer.js +0 -282
- package/src/CLI/semantic_code_search.js +0 -312
- package/src/CLI/skill_manager.js +0 -41
- package/src/CLI/slash_command_handler.js +0 -418
- package/src/CLI/symbol_indexer.js +0 -231
- package/src/CLI/updater.js +0 -230
- package/src/CLI/workspace_manager.js +0 -90
- package/src/Channels/brave_search_bridge.js +0 -35
- package/src/Channels/discord_bridge.js +0 -66
- package/src/Channels/google_search_bridge.js +0 -38
- package/src/Channels/line_bridge.js +0 -60
- package/src/Channels/slack_bridge.js +0 -48
- package/src/Channels/telegram_bridge.js +0 -41
- package/src/Channels/whatsapp_bridge.js +0 -57
- package/src/Command_Parser/parser.js +0 -45
- package/src/Plugins/dev_tools.js +0 -41
- package/src/Plugins/discord.js +0 -20
- package/src/Plugins/docker.js +0 -47
- package/src/Plugins/gmail.js +0 -251
- package/src/Plugins/google_calendar.js +0 -252
- package/src/Plugins/mcp_manager.js +0 -95
- package/src/Plugins/notion.js +0 -256
- package/src/Plugins/obsidian.js +0 -54
- package/src/Plugins/plugin_manager.js +0 -81
- package/src/Plugins/spotify.js +0 -173
- package/src/Plugins/system_metrics.js +0 -31
- package/src/Plugins/system_monitor.js +0 -72
- package/src/System/action_executor.js +0 -178
- package/src/System/bridge_manager.js +0 -76
- package/src/System/chat_history_manager.js +0 -83
- package/src/System/config_manager.js +0 -194
- package/src/System/custom_workflows.js +0 -163
- package/src/System/daemon_manager.js +0 -67
- package/src/System/google_tts_urls.js +0 -51
- package/src/System/granular_automation.js +0 -157
- package/src/System/ipc_handlers.js +0 -332
- package/src/System/notifications.js +0 -23
- package/src/System/optional_require.js +0 -23
- package/src/System/picture_store.js +0 -109
- package/src/System/proactive_loop.js +0 -153
- package/src/System/safety_manager.js +0 -273
- package/src/System/sandbox_runner.js +0 -182
- package/src/System/screen_capture.js +0 -175
- package/src/System/smart_context.js +0 -227
- package/src/System/system_automation.js +0 -162
- package/src/System/system_events.js +0 -79
- package/src/System/system_info.js +0 -125
- package/src/System/task_manager.js +0 -222
- package/src/System/tool_registry.js +0 -293
- package/src/System/window_manager.js +0 -220
- package/src/UI/floating.css +0 -80
- package/src/UI/floating.html +0 -17
- package/src/UI/floating.js +0 -67
- package/src/UI/live2d_manager.js +0 -600
- package/src/UI/preload-floating.js +0 -7
- package/src/UI/preload-spotlight.js +0 -11
- package/src/UI/preload-widget.js +0 -5
- package/src/UI/proactive-glow.html +0 -42
- package/src/UI/renderer.js +0 -2127
- package/src/UI/screenPicker.html +0 -214
- package/src/UI/screenPicker.js +0 -262
- package/src/UI/settings.html +0 -577
- package/src/UI/settings.js +0 -770
- package/src/UI/spotlight.html +0 -23
- package/src/UI/spotlight.js +0 -185
- package/src/UI/widget.html +0 -29
- package/src/UI/widget.js +0 -10
- /package/{models → src/renderer/public/models}/Shiroko_Model/Shiroko/Shiroko_Core/72d86db84cfa9730b894c241fd24c0db.png +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//345/233/264/350/243/231.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/apron.exp3.json} +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//347/214/253/345/222/252/346/273/244/351/225/234.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/catfilter.exp3.json} +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//347/202/271/344/270/200/344/270/213.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/click.exp3.json} +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//345/221/206/347/214/253.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/dazed.exp3.json} +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//345/221/206/347/214/253/347/234/274/347/217/240/346/221/207/346/231/203.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/dazedeyes.exp3.json} +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//347/234/274/351/225/234.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/glasses.exp3.json} +0 -0
- /package/{models → src/renderer/public/models}/Shiroko_Model/Shiroko/Shiroko_Core/items_pinned_to_model.json +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//346/213/277/347/254/224.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/pen.exp3.json} +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//346/213/215/347/205/247.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/photo.exp3.json} +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_00.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_00.png} +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_01.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_01.png} +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_02.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_02.png} +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_03.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_03.png} +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.cdi3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.cdi3.json} +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.moc3" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.moc3} +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.physics3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.physics3.json} +0 -0
- /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.vtube.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.vtube.json} +0 -0
package/src/UI/settings.html
DELETED
|
@@ -1,577 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en" data-theme="dark">
|
|
3
|
-
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="UTF-8">
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
-
<title>Mint - Settings</title>
|
|
8
|
-
<link rel="stylesheet" href="settings.css">
|
|
9
|
-
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600&family=Mali:wght@400;500;600&family=Prompt:wght@400;500&family=Sarabun:wght@400;500&display=swap" rel="stylesheet">
|
|
10
|
-
</head>
|
|
11
|
-
|
|
12
|
-
<body>
|
|
13
|
-
<div class="settings-container">
|
|
14
|
-
<header class="settings-header drag-region">
|
|
15
|
-
<div class="header-left">
|
|
16
|
-
<span class="settings-icon">⚙</span>
|
|
17
|
-
<div>
|
|
18
|
-
<h1>Settings</h1>
|
|
19
|
-
<p>Configure Mint assistant behavior and integrations.</p>
|
|
20
|
-
</div>
|
|
21
|
-
</div>
|
|
22
|
-
<button class="close-btn" id="close-btn" aria-label="Close">
|
|
23
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none"
|
|
24
|
-
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
25
|
-
<line x1="18" y1="6" x2="6" y2="18"></line>
|
|
26
|
-
<line x1="6" y1="6" x2="18" y2="18"></line>
|
|
27
|
-
</svg>
|
|
28
|
-
</button>
|
|
29
|
-
</header>
|
|
30
|
-
|
|
31
|
-
<main class="settings-body">
|
|
32
|
-
<nav class="settings-sidebar" id="settings-sidebar" aria-label="Settings sections">
|
|
33
|
-
<button class="tab-btn active" data-target="sect-general"><span>⚙</span><strong>General</strong></button>
|
|
34
|
-
<button class="tab-btn" data-target="sect-audio"><span>🔊</span><strong>Audio & Voice</strong></button>
|
|
35
|
-
<button class="tab-btn" data-target="sect-automation"><span>🤖</span><strong>Automation</strong></button>
|
|
36
|
-
<button class="tab-btn" data-target="sect-theme"><span>🎨</span><strong>Theme & UI</strong></button>
|
|
37
|
-
<button class="tab-btn" data-target="sect-plugins"><span>🧩</span><strong>Plugins</strong></button>
|
|
38
|
-
<button class="tab-btn" data-target="sect-shortcuts"><span>⌨</span><strong>Shortcuts</strong></button>
|
|
39
|
-
</nav>
|
|
40
|
-
|
|
41
|
-
<div class="settings-content" id="settings-content">
|
|
42
|
-
<div class="tab-pane active" id="sect-general">
|
|
43
|
-
<section class="setting-section">
|
|
44
|
-
<div class="section-heading">
|
|
45
|
-
<div>
|
|
46
|
-
<p class="section-kicker">AI routing</p>
|
|
47
|
-
<h2 class="section-title">Provider & Model</h2>
|
|
48
|
-
</div>
|
|
49
|
-
<p class="section-description">Choose which AI backend Mint uses, then set the default model for each provider.</p>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
<div class="form-grid compact">
|
|
53
|
-
<div class="setting-row wide">
|
|
54
|
-
<label for="ai-provider-select">Active Provider</label>
|
|
55
|
-
<select id="ai-provider-select">
|
|
56
|
-
<option value="gemini">Google Gemini (Cloud)</option>
|
|
57
|
-
<option value="anthropic">Anthropic Claude</option>
|
|
58
|
-
<option value="openai">OpenAI</option>
|
|
59
|
-
<option value="ollama">Ollama (Local / Private)</option>
|
|
60
|
-
<option value="huggingface">Hugging Face (Inference API)</option>
|
|
61
|
-
<option value="local_openai">Local (LM Studio / OpenAI Compatible)</option>
|
|
62
|
-
</select>
|
|
63
|
-
</div>
|
|
64
|
-
|
|
65
|
-
<div class="setting-row">
|
|
66
|
-
<label for="gemini-model-select">Gemini Model</label>
|
|
67
|
-
<select id="gemini-model-select">
|
|
68
|
-
<option value="gemini-2.5-flash">gemini-2.5-flash</option>
|
|
69
|
-
<option value="gemini-3.1-flash-lite">gemini-3.1-flash-lite</option>
|
|
70
|
-
<option value="gemini-3.1-flash-lite-preview">gemini-3.1-flash-lite-preview</option>
|
|
71
|
-
<option value="custom">Custom...</option>
|
|
72
|
-
</select>
|
|
73
|
-
</div>
|
|
74
|
-
<div class="setting-row hidden-row" id="gemini-model-custom-row">
|
|
75
|
-
<label for="gemini-model-custom">Custom Gemini Model</label>
|
|
76
|
-
<input type="text" id="gemini-model-custom" placeholder="e.g. gemini-3.1-flash-lite-preview">
|
|
77
|
-
</div>
|
|
78
|
-
|
|
79
|
-
<div class="setting-row">
|
|
80
|
-
<label for="openai-model-select">OpenAI Model</label>
|
|
81
|
-
<select id="openai-model-select">
|
|
82
|
-
<option value="gpt-4o">gpt-4o</option>
|
|
83
|
-
<option value="gpt-4o-mini">gpt-4o-mini</option>
|
|
84
|
-
<option value="o1-preview">o1-preview</option>
|
|
85
|
-
<option value="o1-mini">o1-mini</option>
|
|
86
|
-
<option value="custom">Custom...</option>
|
|
87
|
-
</select>
|
|
88
|
-
</div>
|
|
89
|
-
<div class="setting-row hidden-row" id="openai-model-custom-row">
|
|
90
|
-
<label for="openai-model-custom">Custom OpenAI Model</label>
|
|
91
|
-
<input type="text" id="openai-model-custom" placeholder="e.g. gpt-4o">
|
|
92
|
-
</div>
|
|
93
|
-
|
|
94
|
-
<div class="setting-row">
|
|
95
|
-
<label for="anthropic-model-select">Anthropic Model</label>
|
|
96
|
-
<select id="anthropic-model-select">
|
|
97
|
-
<option value="claude-3-5-sonnet-latest">claude-3-5-sonnet-latest</option>
|
|
98
|
-
<option value="claude-3-opus-latest">claude-3-opus-latest</option>
|
|
99
|
-
<option value="claude-3-5-haiku-latest">claude-3-5-haiku-latest</option>
|
|
100
|
-
<option value="custom">Custom...</option>
|
|
101
|
-
</select>
|
|
102
|
-
</div>
|
|
103
|
-
<div class="setting-row hidden-row" id="anthropic-model-custom-row">
|
|
104
|
-
<label for="anthropic-model-custom">Custom Anthropic Model</label>
|
|
105
|
-
<input type="text" id="anthropic-model-custom" placeholder="e.g. claude-3-5-sonnet-latest">
|
|
106
|
-
</div>
|
|
107
|
-
|
|
108
|
-
<div class="setting-row">
|
|
109
|
-
<label for="hf-model-name">Hugging Face Model</label>
|
|
110
|
-
<input type="text" id="hf-model-name" placeholder="e.g. meta-llama/Meta-Llama-3-8B-Instruct">
|
|
111
|
-
</div>
|
|
112
|
-
<div class="setting-row">
|
|
113
|
-
<label for="local-model-name">LM Studio Model</label>
|
|
114
|
-
<input type="text" id="local-model-name" placeholder="e.g. local-model">
|
|
115
|
-
</div>
|
|
116
|
-
<div class="setting-row">
|
|
117
|
-
<label for="ollama-model-input">Ollama Model</label>
|
|
118
|
-
<input type="text" id="ollama-model-input" placeholder="e.g. llama3:latest">
|
|
119
|
-
</div>
|
|
120
|
-
</div>
|
|
121
|
-
</section>
|
|
122
|
-
|
|
123
|
-
<section class="setting-section">
|
|
124
|
-
<div class="section-heading">
|
|
125
|
-
<div>
|
|
126
|
-
<p class="section-kicker">Credentials</p>
|
|
127
|
-
<h2 class="section-title">API Keys & Hosts</h2>
|
|
128
|
-
</div>
|
|
129
|
-
<p class="section-description">Cloud providers need API keys. Local providers need host URLs.</p>
|
|
130
|
-
</div>
|
|
131
|
-
|
|
132
|
-
<div class="form-grid">
|
|
133
|
-
<div class="setting-row">
|
|
134
|
-
<label for="api-key-input">Gemini API Key</label>
|
|
135
|
-
<div class="input-group">
|
|
136
|
-
<input type="password" id="api-key-input" placeholder="Enter Gemini API Key..." autocomplete="off">
|
|
137
|
-
<button class="toggle-visibility" onclick="const i = document.getElementById('api-key-input'); i.type = i.type === 'password' ? 'text' : 'password';" title="Show/Hide">👁</button>
|
|
138
|
-
</div>
|
|
139
|
-
</div>
|
|
140
|
-
<div class="setting-row">
|
|
141
|
-
<label for="openai-api-key-input">OpenAI API Key</label>
|
|
142
|
-
<div class="input-group">
|
|
143
|
-
<input type="password" id="openai-api-key-input" placeholder="Enter OpenAI API Key..." autocomplete="off">
|
|
144
|
-
<button class="toggle-visibility" onclick="const i = document.getElementById('openai-api-key-input'); i.type = i.type === 'password' ? 'text' : 'password';" title="Show/Hide">👁</button>
|
|
145
|
-
</div>
|
|
146
|
-
</div>
|
|
147
|
-
<div class="setting-row">
|
|
148
|
-
<label for="anthropic-api-key-input">Anthropic API Key</label>
|
|
149
|
-
<div class="input-group">
|
|
150
|
-
<input type="password" id="anthropic-api-key-input" placeholder="Enter Anthropic API Key..." autocomplete="off">
|
|
151
|
-
<button class="toggle-visibility" onclick="const i = document.getElementById('anthropic-api-key-input'); i.type = i.type === 'password' ? 'text' : 'password';" title="Show/Hide">👁</button>
|
|
152
|
-
</div>
|
|
153
|
-
</div>
|
|
154
|
-
<div class="setting-row">
|
|
155
|
-
<label for="hf-api-key">Hugging Face API Key</label>
|
|
156
|
-
<div class="input-group">
|
|
157
|
-
<input type="password" id="hf-api-key" placeholder="Enter Hugging Face API Key..." autocomplete="off">
|
|
158
|
-
<button class="toggle-visibility" onclick="const i = document.getElementById('hf-api-key'); i.type = i.type === 'password' ? 'text' : 'password';" title="Show/Hide">👁</button>
|
|
159
|
-
</div>
|
|
160
|
-
</div>
|
|
161
|
-
<div class="setting-row">
|
|
162
|
-
<label for="local-api-base-url">LM Studio Base URL</label>
|
|
163
|
-
<input type="text" id="local-api-base-url" placeholder="e.g. http://localhost:1234/v1">
|
|
164
|
-
</div>
|
|
165
|
-
<div class="setting-row">
|
|
166
|
-
<label for="ollama-host-input">Ollama Host</label>
|
|
167
|
-
<input type="text" id="ollama-host-input" placeholder="e.g. http://localhost:11434">
|
|
168
|
-
</div>
|
|
169
|
-
</div>
|
|
170
|
-
</section>
|
|
171
|
-
|
|
172
|
-
<section class="setting-section">
|
|
173
|
-
<div class="section-heading">
|
|
174
|
-
<div>
|
|
175
|
-
<p class="section-kicker">Desktop</p>
|
|
176
|
-
<h2 class="section-title">Assistant Presence</h2>
|
|
177
|
-
</div>
|
|
178
|
-
</div>
|
|
179
|
-
<div class="toggle-row">
|
|
180
|
-
<div>
|
|
181
|
-
<label for="show-desktop-widget">Show Desktop AI Candidate</label>
|
|
182
|
-
<p class="hint">Show the mini AI character on your desktop.</p>
|
|
183
|
-
</div>
|
|
184
|
-
<label class="toggle-switch">
|
|
185
|
-
<input type="checkbox" id="show-desktop-widget">
|
|
186
|
-
<span class="toggle-slider"></span>
|
|
187
|
-
</label>
|
|
188
|
-
</div>
|
|
189
|
-
</section>
|
|
190
|
-
</div>
|
|
191
|
-
|
|
192
|
-
<div class="tab-pane" id="sect-audio">
|
|
193
|
-
<section class="setting-section">
|
|
194
|
-
<div class="section-heading">
|
|
195
|
-
<div>
|
|
196
|
-
<p class="section-kicker">Speech</p>
|
|
197
|
-
<h2 class="section-title">Voice Reply</h2>
|
|
198
|
-
</div>
|
|
199
|
-
<p class="section-description">Control spoken responses and TTS behavior.</p>
|
|
200
|
-
</div>
|
|
201
|
-
|
|
202
|
-
<div class="toggle-row">
|
|
203
|
-
<div>
|
|
204
|
-
<label for="enable-voice-reply">Enable Voice Reply</label>
|
|
205
|
-
<p class="hint">Mint will speak responses out loud when this is enabled.</p>
|
|
206
|
-
</div>
|
|
207
|
-
<label class="toggle-switch">
|
|
208
|
-
<input type="checkbox" id="enable-voice-reply">
|
|
209
|
-
<span class="toggle-slider"></span>
|
|
210
|
-
</label>
|
|
211
|
-
</div>
|
|
212
|
-
|
|
213
|
-
<div class="form-grid single">
|
|
214
|
-
<div class="setting-row">
|
|
215
|
-
<label for="tts-provider-select">Voice Engine</label>
|
|
216
|
-
<select id="tts-provider-select">
|
|
217
|
-
<option value="google">Google Cloud (Natural, Auto Lang)</option>
|
|
218
|
-
<option value="native">OS Native (Supports Pitch)</option>
|
|
219
|
-
</select>
|
|
220
|
-
</div>
|
|
221
|
-
</div>
|
|
222
|
-
|
|
223
|
-
<div class="slider-stack">
|
|
224
|
-
<div class="setting-row">
|
|
225
|
-
<label for="tts-volume">Volume</label>
|
|
226
|
-
<div class="slider-group">
|
|
227
|
-
<input type="range" id="tts-volume" class="range-slider" min="0" max="1" step="0.1" value="1">
|
|
228
|
-
<span class="range-value" id="tts-volume-val">100%</span>
|
|
229
|
-
</div>
|
|
230
|
-
</div>
|
|
231
|
-
<div class="setting-row">
|
|
232
|
-
<label for="tts-speed">Speed</label>
|
|
233
|
-
<div class="slider-group">
|
|
234
|
-
<input type="range" id="tts-speed" class="range-slider" min="0.5" max="2" step="0.1" value="1">
|
|
235
|
-
<span class="range-value" id="tts-speed-val">1.0x</span>
|
|
236
|
-
</div>
|
|
237
|
-
</div>
|
|
238
|
-
<div class="setting-row">
|
|
239
|
-
<label for="tts-pitch">Pitch</label>
|
|
240
|
-
<div class="slider-group">
|
|
241
|
-
<input type="range" id="tts-pitch" class="range-slider" min="0" max="2" step="0.1" value="1">
|
|
242
|
-
<span class="range-value" id="tts-pitch-val">1.0</span>
|
|
243
|
-
</div>
|
|
244
|
-
<p class="hint">Pitch applies to OS native voice only.</p>
|
|
245
|
-
</div>
|
|
246
|
-
</div>
|
|
247
|
-
</section>
|
|
248
|
-
</div>
|
|
249
|
-
|
|
250
|
-
<div class="tab-pane" id="sect-automation">
|
|
251
|
-
<section class="setting-section">
|
|
252
|
-
<div class="section-heading">
|
|
253
|
-
<div>
|
|
254
|
-
<p class="section-kicker">Browser</p>
|
|
255
|
-
<h2 class="section-title">Automation Engine</h2>
|
|
256
|
-
</div>
|
|
257
|
-
</div>
|
|
258
|
-
<div class="form-grid single">
|
|
259
|
-
<div class="setting-row">
|
|
260
|
-
<label for="automation-browser-select">Browser Engine</label>
|
|
261
|
-
<select id="automation-browser-select">
|
|
262
|
-
<option value="chromium">Chromium (Bundled)</option>
|
|
263
|
-
<option value="/usr/bin/firefox">Firefox (System - Linux)</option>
|
|
264
|
-
</select>
|
|
265
|
-
</div>
|
|
266
|
-
</div>
|
|
267
|
-
</section>
|
|
268
|
-
|
|
269
|
-
<section class="setting-section">
|
|
270
|
-
<div class="section-heading">
|
|
271
|
-
<div>
|
|
272
|
-
<p class="section-kicker">Awareness</p>
|
|
273
|
-
<h2 class="section-title">Proactive Assistant</h2>
|
|
274
|
-
</div>
|
|
275
|
-
<p class="section-description">Tune screen analysis frequency and suggestion timing.</p>
|
|
276
|
-
</div>
|
|
277
|
-
<div class="slider-stack">
|
|
278
|
-
<div class="setting-row">
|
|
279
|
-
<label for="proactive-interval">Screen Capture Frequency</label>
|
|
280
|
-
<div class="slider-group">
|
|
281
|
-
<input type="range" id="proactive-interval" min="30" max="300" step="30" value="60" class="range-slider">
|
|
282
|
-
<span class="range-value" id="proactive-interval-display">60 sec</span>
|
|
283
|
-
</div>
|
|
284
|
-
<p class="hint">Lower values respond faster but use more API calls.</p>
|
|
285
|
-
</div>
|
|
286
|
-
<div class="setting-row">
|
|
287
|
-
<label for="proactive-cooldown">Suggestion Cooldown</label>
|
|
288
|
-
<div class="slider-group">
|
|
289
|
-
<input type="range" id="proactive-cooldown" min="60" max="600" step="60" value="120" class="range-slider">
|
|
290
|
-
<span class="range-value" id="proactive-cooldown-display">2 min</span>
|
|
291
|
-
</div>
|
|
292
|
-
<p class="hint">Minimum time between repeat suggestions.</p>
|
|
293
|
-
</div>
|
|
294
|
-
</div>
|
|
295
|
-
</section>
|
|
296
|
-
|
|
297
|
-
<section class="setting-section">
|
|
298
|
-
<div class="section-heading">
|
|
299
|
-
<div>
|
|
300
|
-
<p class="section-kicker">Rules</p>
|
|
301
|
-
<h2 class="section-title">Custom Workflows</h2>
|
|
302
|
-
</div>
|
|
303
|
-
</div>
|
|
304
|
-
<div class="toggle-row">
|
|
305
|
-
<div>
|
|
306
|
-
<label for="enable-custom-workflows">Enable Custom Workflows</label>
|
|
307
|
-
<p class="hint">Run "If This Then Mint" rules from the workflow JSON file.</p>
|
|
308
|
-
</div>
|
|
309
|
-
<label class="toggle-switch">
|
|
310
|
-
<input type="checkbox" id="enable-custom-workflows">
|
|
311
|
-
<span class="toggle-slider"></span>
|
|
312
|
-
</label>
|
|
313
|
-
</div>
|
|
314
|
-
<div class="button-row">
|
|
315
|
-
<button class="btn-secondary" id="open-workflows-btn">Open workflows.json</button>
|
|
316
|
-
<button class="btn-primary" id="reload-workflows-btn">Reload Rules</button>
|
|
317
|
-
</div>
|
|
318
|
-
</section>
|
|
319
|
-
|
|
320
|
-
<section class="setting-section">
|
|
321
|
-
<div class="section-heading">
|
|
322
|
-
<div>
|
|
323
|
-
<p class="section-kicker">Code mode</p>
|
|
324
|
-
<h2 class="section-title">Agent Collaboration</h2>
|
|
325
|
-
</div>
|
|
326
|
-
</div>
|
|
327
|
-
<div class="toggle-row">
|
|
328
|
-
<div>
|
|
329
|
-
<label for="enable-agent-collaboration">Enable Multi-Agent Review</label>
|
|
330
|
-
<p class="hint">Allow a secondary model to review code written by the primary model.</p>
|
|
331
|
-
</div>
|
|
332
|
-
<label class="toggle-switch">
|
|
333
|
-
<input type="checkbox" id="enable-agent-collaboration">
|
|
334
|
-
<span class="toggle-slider"></span>
|
|
335
|
-
</label>
|
|
336
|
-
</div>
|
|
337
|
-
</section>
|
|
338
|
-
</div>
|
|
339
|
-
|
|
340
|
-
<div class="tab-pane" id="sect-theme">
|
|
341
|
-
<section class="setting-section">
|
|
342
|
-
<div class="section-heading">
|
|
343
|
-
<div>
|
|
344
|
-
<p class="section-kicker">Appearance</p>
|
|
345
|
-
<h2 class="section-title">Theme</h2>
|
|
346
|
-
</div>
|
|
347
|
-
</div>
|
|
348
|
-
<div class="theme-grid">
|
|
349
|
-
<button class="theme-card" data-theme="dark" id="theme-dark">
|
|
350
|
-
<div class="theme-preview dark-preview"></div>
|
|
351
|
-
<span>Dark</span>
|
|
352
|
-
</button>
|
|
353
|
-
<button class="theme-card" data-theme="light" id="theme-light">
|
|
354
|
-
<div class="theme-preview light-preview"></div>
|
|
355
|
-
<span>Light</span>
|
|
356
|
-
</button>
|
|
357
|
-
<button class="theme-card" data-theme="midnight" id="theme-midnight">
|
|
358
|
-
<div class="theme-preview midnight-preview"></div>
|
|
359
|
-
<span>Midnight</span>
|
|
360
|
-
</button>
|
|
361
|
-
<button class="theme-card" data-theme="custom" id="theme-custom">
|
|
362
|
-
<div class="theme-preview custom-preview" id="custom-theme-preview-box"></div>
|
|
363
|
-
<span>Custom</span>
|
|
364
|
-
</button>
|
|
365
|
-
</div>
|
|
366
|
-
|
|
367
|
-
<div id="custom-theme-controls" class="custom-theme-panel hidden-row">
|
|
368
|
-
<div class="setting-row">
|
|
369
|
-
<label>Background Gradient</label>
|
|
370
|
-
<div class="color-range">
|
|
371
|
-
<input type="color" id="custom-bg-start" title="Start Color">
|
|
372
|
-
<span>→</span>
|
|
373
|
-
<input type="color" id="custom-bg-end" title="End Color">
|
|
374
|
-
</div>
|
|
375
|
-
</div>
|
|
376
|
-
<div class="setting-row">
|
|
377
|
-
<label for="custom-panel-bg">Panel Background</label>
|
|
378
|
-
<input type="color" id="custom-panel-bg">
|
|
379
|
-
</div>
|
|
380
|
-
</div>
|
|
381
|
-
</section>
|
|
382
|
-
|
|
383
|
-
<section class="setting-section">
|
|
384
|
-
<div class="section-heading">
|
|
385
|
-
<div>
|
|
386
|
-
<p class="section-kicker">Color</p>
|
|
387
|
-
<h2 class="section-title">Accent & Text</h2>
|
|
388
|
-
</div>
|
|
389
|
-
</div>
|
|
390
|
-
<div class="color-section">
|
|
391
|
-
<div>
|
|
392
|
-
<label>Accent Color</label>
|
|
393
|
-
<div class="color-presets">
|
|
394
|
-
<button class="color-dot accent-purple" data-color="#8b5cf6" title="Purple"></button>
|
|
395
|
-
<button class="color-dot accent-cyan" data-color="#06b6d4" title="Cyan"></button>
|
|
396
|
-
<button class="color-dot accent-green" data-color="#10b981" title="Green"></button>
|
|
397
|
-
<button class="color-dot accent-amber" data-color="#f59e0b" title="Amber"></button>
|
|
398
|
-
<button class="color-dot accent-red" data-color="#ef4444" title="Red"></button>
|
|
399
|
-
<button class="color-dot accent-pink" data-color="#ec4899" title="Pink"></button>
|
|
400
|
-
</div>
|
|
401
|
-
</div>
|
|
402
|
-
<div class="color-inputs">
|
|
403
|
-
<label for="custom-color">Custom Accent</label>
|
|
404
|
-
<input type="color" id="custom-color" value="#8b5cf6">
|
|
405
|
-
<label for="system-text-color">System Text</label>
|
|
406
|
-
<input type="color" id="system-text-color" value="#f8fafc">
|
|
407
|
-
</div>
|
|
408
|
-
</div>
|
|
409
|
-
</section>
|
|
410
|
-
|
|
411
|
-
<section class="setting-section">
|
|
412
|
-
<div class="section-heading">
|
|
413
|
-
<div>
|
|
414
|
-
<p class="section-kicker">Surface</p>
|
|
415
|
-
<h2 class="section-title">Interface Style</h2>
|
|
416
|
-
</div>
|
|
417
|
-
</div>
|
|
418
|
-
<div class="form-grid">
|
|
419
|
-
<div class="setting-row">
|
|
420
|
-
<label for="glass-blur-select">Glass Blur</label>
|
|
421
|
-
<select id="glass-blur-select">
|
|
422
|
-
<option value="blur(4px)">Low (4px)</option>
|
|
423
|
-
<option value="blur(16px)">Medium (16px) - Default</option>
|
|
424
|
-
<option value="blur(32px)">High (32px)</option>
|
|
425
|
-
<option value="none">Off (Solid)</option>
|
|
426
|
-
</select>
|
|
427
|
-
</div>
|
|
428
|
-
<div class="setting-row">
|
|
429
|
-
<label for="font-family-select">Font Family</label>
|
|
430
|
-
<select id="font-family-select">
|
|
431
|
-
<option value="'Outfit', sans-serif">Outfit (Default)</option>
|
|
432
|
-
<option value="'Mali', cursive">Mali (Cute Thai Font)</option>
|
|
433
|
-
<option value="'Prompt', sans-serif">Prompt (Modern Thai)</option>
|
|
434
|
-
<option value="'Sarabun', sans-serif">Sarabun (Formal Thai)</option>
|
|
435
|
-
</select>
|
|
436
|
-
</div>
|
|
437
|
-
<div class="setting-row">
|
|
438
|
-
<label for="font-size-select">Font Size</label>
|
|
439
|
-
<select id="font-size-select">
|
|
440
|
-
<option value="14px">Small</option>
|
|
441
|
-
<option value="15px">Medium (Default)</option>
|
|
442
|
-
<option value="16px">Large</option>
|
|
443
|
-
<option value="17px">Extra Large</option>
|
|
444
|
-
</select>
|
|
445
|
-
</div>
|
|
446
|
-
</div>
|
|
447
|
-
</section>
|
|
448
|
-
</div>
|
|
449
|
-
|
|
450
|
-
<div class="tab-pane" id="sect-plugins">
|
|
451
|
-
<section class="setting-section">
|
|
452
|
-
<div class="section-heading">
|
|
453
|
-
<div>
|
|
454
|
-
<p class="section-kicker">Integrations</p>
|
|
455
|
-
<h2 class="section-title">Built-in Plugins</h2>
|
|
456
|
-
</div>
|
|
457
|
-
</div>
|
|
458
|
-
<div class="plugin-list">
|
|
459
|
-
<div class="plugin-card">
|
|
460
|
-
<div class="plugin-icon">🎵</div>
|
|
461
|
-
<div class="plugin-info">
|
|
462
|
-
<div class="plugin-name">Spotify</div>
|
|
463
|
-
<div class="plugin-desc">Control playback with AI. Requires playerctl.</div>
|
|
464
|
-
</div>
|
|
465
|
-
<div class="plugin-actions">
|
|
466
|
-
<button class="btn-connect" id="btn-plugin-spotify" data-plugin="spotify">Connect</button>
|
|
467
|
-
</div>
|
|
468
|
-
</div>
|
|
469
|
-
<div class="plugin-card">
|
|
470
|
-
<div class="plugin-icon">📅</div>
|
|
471
|
-
<div class="plugin-info">
|
|
472
|
-
<div class="plugin-name">Google Calendar</div>
|
|
473
|
-
<div class="plugin-desc">Read and schedule events.</div>
|
|
474
|
-
</div>
|
|
475
|
-
<div class="plugin-actions">
|
|
476
|
-
<button class="btn-connect" id="btn-plugin-calendar" data-plugin="calendar">Connect</button>
|
|
477
|
-
</div>
|
|
478
|
-
</div>
|
|
479
|
-
<div class="plugin-card">
|
|
480
|
-
<div class="plugin-icon">✉</div>
|
|
481
|
-
<div class="plugin-info">
|
|
482
|
-
<div class="plugin-name">Gmail</div>
|
|
483
|
-
<div class="plugin-desc">Read email and create drafts safely.</div>
|
|
484
|
-
</div>
|
|
485
|
-
<div class="plugin-actions">
|
|
486
|
-
<button class="btn-connect" id="btn-plugin-gmail" data-plugin="gmail">Connect</button>
|
|
487
|
-
</div>
|
|
488
|
-
</div>
|
|
489
|
-
<div class="plugin-card">
|
|
490
|
-
<div class="plugin-icon">📝</div>
|
|
491
|
-
<div class="plugin-info">
|
|
492
|
-
<div class="plugin-name">Notion</div>
|
|
493
|
-
<div class="plugin-desc">Create notes, pages, and read databases.</div>
|
|
494
|
-
</div>
|
|
495
|
-
<div class="plugin-actions">
|
|
496
|
-
<button class="btn-connect" id="btn-plugin-notion" data-plugin="notion">Connect</button>
|
|
497
|
-
</div>
|
|
498
|
-
</div>
|
|
499
|
-
<div class="plugin-card">
|
|
500
|
-
<div class="plugin-icon">💬</div>
|
|
501
|
-
<div class="plugin-info">
|
|
502
|
-
<div class="plugin-name">Discord RPC</div>
|
|
503
|
-
<div class="plugin-desc">Show "Using Mint Assistant" on Discord status.</div>
|
|
504
|
-
</div>
|
|
505
|
-
<div class="plugin-actions">
|
|
506
|
-
<button class="btn-connect" id="btn-plugin-discord" data-plugin="discord">Connect</button>
|
|
507
|
-
</div>
|
|
508
|
-
</div>
|
|
509
|
-
</div>
|
|
510
|
-
</section>
|
|
511
|
-
|
|
512
|
-
<section class="setting-section">
|
|
513
|
-
<div class="section-heading">
|
|
514
|
-
<div>
|
|
515
|
-
<p class="section-kicker">External tools</p>
|
|
516
|
-
<h2 class="section-title">MCP Servers</h2>
|
|
517
|
-
</div>
|
|
518
|
-
<p class="section-description">Connect Mint to tools like search, GitHub, or filesystem servers.</p>
|
|
519
|
-
</div>
|
|
520
|
-
|
|
521
|
-
<div class="mcp-list" id="mcp-server-list"></div>
|
|
522
|
-
|
|
523
|
-
<div class="add-mcp-box">
|
|
524
|
-
<h3>Add MCP Server</h3>
|
|
525
|
-
<div class="form-grid">
|
|
526
|
-
<input type="text" id="mcp-new-name" placeholder="Server Name (e.g. google-search)">
|
|
527
|
-
<input type="text" id="mcp-new-command" placeholder="Command (e.g. npx)">
|
|
528
|
-
</div>
|
|
529
|
-
<input type="text" id="mcp-new-args" placeholder="Arguments (e.g. -y @modelcontextprotocol/server-brave-search)">
|
|
530
|
-
<textarea id="mcp-new-env" placeholder='Env JSON, e.g. {"BRAVE_API_KEY": "..."}'></textarea>
|
|
531
|
-
<button class="btn-primary full-width" id="btn-add-mcp">Add MCP Server</button>
|
|
532
|
-
</div>
|
|
533
|
-
|
|
534
|
-
<p class="hint">Browse more servers at <a href="https://github.com/modelcontextprotocol/servers" target="_blank">MCP Servers Registry</a></p>
|
|
535
|
-
</section>
|
|
536
|
-
</div>
|
|
537
|
-
|
|
538
|
-
<div class="tab-pane" id="sect-shortcuts">
|
|
539
|
-
<section class="setting-section">
|
|
540
|
-
<div class="section-heading">
|
|
541
|
-
<div>
|
|
542
|
-
<p class="section-kicker">Keyboard</p>
|
|
543
|
-
<h2 class="section-title">Shortcuts</h2>
|
|
544
|
-
</div>
|
|
545
|
-
</div>
|
|
546
|
-
<div class="shortcut-list">
|
|
547
|
-
<div class="shortcut-item">
|
|
548
|
-
<span>Show / Hide Mint Window</span>
|
|
549
|
-
<div class="keys"><kbd>Ctrl</kbd><kbd>Shift</kbd><kbd>Space</kbd></div>
|
|
550
|
-
</div>
|
|
551
|
-
<div class="shortcut-item">
|
|
552
|
-
<span>Open Spotlight</span>
|
|
553
|
-
<div class="keys"><kbd>Alt</kbd><kbd>Space</kbd></div>
|
|
554
|
-
</div>
|
|
555
|
-
<div class="shortcut-item">
|
|
556
|
-
<span>Close / Dismiss</span>
|
|
557
|
-
<div class="keys"><kbd>Esc</kbd></div>
|
|
558
|
-
</div>
|
|
559
|
-
</div>
|
|
560
|
-
</section>
|
|
561
|
-
</div>
|
|
562
|
-
</div>
|
|
563
|
-
</main>
|
|
564
|
-
|
|
565
|
-
<footer class="settings-footer">
|
|
566
|
-
<button class="btn-danger" id="quit-btn">Quit Application</button>
|
|
567
|
-
<div class="footer-actions">
|
|
568
|
-
<button class="btn-secondary" id="reset-btn">Reset to Default</button>
|
|
569
|
-
<button class="btn-primary" id="save-btn">Save Settings</button>
|
|
570
|
-
</div>
|
|
571
|
-
</footer>
|
|
572
|
-
</div>
|
|
573
|
-
|
|
574
|
-
<script src="settings.js"></script>
|
|
575
|
-
</body>
|
|
576
|
-
|
|
577
|
-
</html>
|