diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json
index 5caf529..00d73b4 100644
--- a/src-tauri/capabilities/default.json
+++ b/src-tauri/capabilities/default.json
@@ -19,6 +19,9 @@
"core:tray:default",
"fs:default",
"fs:allow-read-text-file",
- "fs:allow-write-text-file"
+ "fs:allow-write-text-file",
+ "core:window:allow-set-size",
+ "core:window:allow-set-always-on-top",
+ "core:window:allow-inner-size"
]
}
diff --git a/src-tauri/src/config.rs b/src-tauri/src/config.rs
index 5bf59fd..cc626e0 100644
--- a/src-tauri/src/config.rs
+++ b/src-tauri/src/config.rs
@@ -79,6 +79,9 @@ pub struct HikariConfig {
#[serde(default)]
pub streamer_hide_paths: bool,
+
+ #[serde(default)]
+ pub compact_mode: bool,
}
impl Default for HikariConfig {
@@ -101,6 +104,7 @@ impl Default for HikariConfig {
minimize_to_tray: false,
streamer_mode: false,
streamer_hide_paths: false,
+ compact_mode: false,
}
}
}
@@ -157,6 +161,7 @@ mod tests {
assert!(!config.minimize_to_tray);
assert!(!config.streamer_mode);
assert!(!config.streamer_hide_paths);
+ assert!(!config.compact_mode);
}
#[test]
@@ -177,6 +182,9 @@ mod tests {
character_panel_width: Some(400),
font_size: 16,
minimize_to_tray: true,
+ streamer_mode: false,
+ streamer_hide_paths: false,
+ compact_mode: false,
};
let json = serde_json::to_string(&config).unwrap();
diff --git a/src/lib/components/CompactMode.svelte b/src/lib/components/CompactMode.svelte
new file mode 100644
index 0000000..765db06
--- /dev/null
+++ b/src/lib/components/CompactMode.svelte
@@ -0,0 +1,560 @@
+
+
+
+
+
+
+

{
+ const target = e.currentTarget as HTMLImageElement;
+ target.src = "/sprites/placeholder.svg";
+ }}
+ />
+
+
{info.label}
+
+
+
+
+ {#if recentMessages.length > 0}
+ {#each recentMessages.slice(-1) as msg}
+
+ {msg.content}
+
+ {/each}
+ {:else}
+
Ask me anything~
+ {/if}
+
+
+
+
+
+
+ {#if streamerModeActive}
+
+ {/if}
+
+
+
diff --git a/src/lib/components/ConfigSidebar.svelte b/src/lib/components/ConfigSidebar.svelte
index 6015b62..de5d69d 100644
--- a/src/lib/components/ConfigSidebar.svelte
+++ b/src/lib/components/ConfigSidebar.svelte
@@ -29,6 +29,7 @@
font_size: 14,
streamer_mode: false,
streamer_hide_paths: false,
+ compact_mode: false,
});
let isOpen = $state(false);
diff --git a/src/lib/components/KeyboardShortcutsModal.svelte b/src/lib/components/KeyboardShortcutsModal.svelte
index 47e09d5..535af64 100644
--- a/src/lib/components/KeyboardShortcutsModal.svelte
+++ b/src/lib/components/KeyboardShortcutsModal.svelte
@@ -12,6 +12,8 @@
{ keys: ["Escape"], description: "Close modals and panels" },
{ keys: ["Ctrl", "L"], description: "Clear the terminal" },
{ keys: ["Ctrl", ","], description: "Open settings" },
+ { keys: ["Ctrl", "Shift", "M"], description: "Toggle compact mode" },
+ { keys: ["Ctrl", "Shift", "S"], description: "Toggle streamer mode" },
],
},
{
diff --git a/src/lib/components/StatusBar.svelte b/src/lib/components/StatusBar.svelte
index d89a1f5..e3b32c9 100644
--- a/src/lib/components/StatusBar.svelte
+++ b/src/lib/components/StatusBar.svelte
@@ -1,9 +1,10 @@
-
-
(achievementPanelOpen = !achievementPanelOpen)} />
+{#if compactModeActive}
+
+
+
+
+{:else}
+
+
+
(achievementPanelOpen = !achievementPanelOpen)}
+ onToggleCompact={enterCompactMode}
+ />
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
- (achievementPanelOpen = false)}
- />
-
-
+
+
+
+
+ (achievementPanelOpen = false)}
+ />
+
+
+{/if}