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 @@ + + +
+ +
+
+ Hikari - {info.label} { + 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 isProcessing} + + {:else} + + {/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}