chore: format

This commit is contained in:
2026-01-15 11:00:15 -08:00
parent dbfd1f669d
commit 3abca03c2b
14 changed files with 126 additions and 90 deletions
+2 -3
View File
@@ -1,6 +1,6 @@
name: 🐛 Bug Report name: 🐛 Bug Report
description: Something isn't working as expected? Let us know! description: Something isn't working as expected? Let us know!
title: '[BUG] - ' title: "[BUG] - "
labels: labels:
- "status/awaiting triage" - "status/awaiting triage"
body: body:
@@ -50,7 +50,7 @@ body:
description: The operating system you are using, including the version/build number. description: The operating system you are using, including the version/build number.
validations: validations:
required: true required: true
# Remove this section for non-web apps. # Remove this section for non-web apps.
- type: input - type: input
id: browser id: browser
attributes: attributes:
@@ -66,4 +66,3 @@ body:
- No - No
validations: validations:
required: true required: true
+1 -1
View File
@@ -1,6 +1,6 @@
name: 💭 Feature Proposal name: 💭 Feature Proposal
description: Have an idea for how we can improve? Share it here! description: Have an idea for how we can improve? Share it here!
title: '[FEAT] - ' title: "[FEAT] - "
labels: labels:
- "status/awaiting triage" - "status/awaiting triage"
body: body:
+1 -1
View File
@@ -1,6 +1,6 @@
name: ❓ Other Issue name: ❓ Other Issue
description: I have something that is neither a bug nor a feature request. description: I have something that is neither a bug nor a feature request.
title: '[OTHER] - ' title: "[OTHER] - "
labels: labels:
- "status/awaiting triage" - "status/awaiting triage"
body: body:
+3 -3
View File
@@ -2,11 +2,11 @@ name: Security Scan and Upload
on: on:
push: push:
branches: [ main ] branches: [main]
pull_request: pull_request:
branches: [ main ] branches: [main]
schedule: schedule:
- cron: '0 0 * * 1' - cron: "0 0 * * 1"
workflow_dispatch: workflow_dispatch:
jobs: jobs:
+1 -5
View File
@@ -1,7 +1,3 @@
{ {
"recommendations": [ "recommendations": ["svelte.svelte-vscode", "tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"]
"svelte.svelte-vscode",
"tauri-apps.tauri-vscode",
"rust-lang.rust-analyzer"
]
} }
+8 -2
View File
@@ -23,22 +23,25 @@ claude # Follow the prompts to authenticate
### 2. Install Runtime Dependencies ### 2. Install Runtime Dependencies
**Debian/Ubuntu:** **Debian/Ubuntu:**
```bash ```bash
sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0 libayatana-appindicator3-1 xdg-utils sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0 libayatana-appindicator3-1 xdg-utils
``` ```
**Fedora:** **Fedora:**
```bash ```bash
sudo dnf install webkit2gtk4.1 gtk3 libappindicator-gtk3 xdg-utils sudo dnf install webkit2gtk4.1 gtk3 libappindicator-gtk3 xdg-utils
``` ```
**Arch Linux:** **Arch Linux:**
```bash ```bash
sudo pacman -S webkit2gtk-4.1 gtk3 libappindicator-gtk3 xdg-utils sudo pacman -S webkit2gtk-4.1 gtk3 libappindicator-gtk3 xdg-utils
``` ```
| Package | Purpose | | Package | Purpose |
|---------|---------| | --------------- | -------------------------------------------- |
| webkit2gtk-4.1 | WebView rendering (app UI) | | webkit2gtk-4.1 | WebView rendering (app UI) |
| gtk3 | Window management and native widgets | | gtk3 | Window management and native widgets |
| libappindicator | System tray support | | libappindicator | System tray support |
@@ -51,17 +54,20 @@ Download the latest release for your platform.
#### Linux #### Linux
**AppImage** (any distro): **AppImage** (any distro):
```bash ```bash
chmod +x hikari-desktop_*.AppImage chmod +x hikari-desktop_*.AppImage
./hikari-desktop_*.AppImage ./hikari-desktop_*.AppImage
``` ```
**Debian/Ubuntu:** **Debian/Ubuntu:**
```bash ```bash
sudo dpkg -i hikari-desktop_*.deb sudo dpkg -i hikari-desktop_*.deb
``` ```
**Fedora:** **Fedora:**
```bash ```bash
sudo rpm -i hikari-desktop-*.rpm sudo rpm -i hikari-desktop-*.rpm
``` ```
@@ -77,7 +83,7 @@ The Windows build requires WSL (Windows Subsystem for Linux) with Claude Code in
## Character States ## Character States
| State | Trigger | | State | Trigger |
|-------|---------| | ---------- | ------------------------------- |
| Idle | Waiting for user input | | Idle | Waiting for user input |
| Thinking | Processing/API call in progress | | Thinking | Processing/API call in progress |
| Typing | Streaming text output | | Typing | Streaming text output |
+1 -7
View File
@@ -27,12 +27,6 @@ export default tseslint.config(
}, },
}, },
{ {
ignores: [ ignores: ["build/", ".svelte-kit/", "dist/", "src-tauri/target/", "node_modules/"],
"build/",
".svelte-kit/",
"dist/",
"src-tauri/target/",
"node_modules/",
],
} }
); );
+27 -10
View File
@@ -81,8 +81,12 @@
</div> </div>
<div class="speech-bubble mt-4 max-w-xs"> <div class="speech-bubble mt-4 max-w-xs">
<div class="relative bg-[var(--bg-secondary)] rounded-lg px-4 py-2 border border-[var(--border-color)]"> <div
<div class="absolute -top-2 left-1/2 transform -translate-x-1/2 w-0 h-0 border-l-8 border-r-8 border-b-8 border-transparent border-b-[var(--bg-secondary)]"></div> class="relative bg-[var(--bg-secondary)] rounded-lg px-4 py-2 border border-[var(--border-color)]"
>
<div
class="absolute -top-2 left-1/2 transform -translate-x-1/2 w-0 h-0 border-l-8 border-r-8 border-b-8 border-transparent border-b-[var(--bg-secondary)]"
></div>
<p class="text-sm text-gray-300 text-center italic">{info.description}</p> <p class="text-sm text-gray-300 text-center italic">{info.description}</p>
</div> </div>
</div> </div>
@@ -123,7 +127,8 @@
} }
@keyframes idle-bob { @keyframes idle-bob {
0%, 100% { 0%,
100% {
transform: translateY(0); transform: translateY(0);
} }
50% { 50% {
@@ -132,7 +137,8 @@
} }
@keyframes thinking-sway { @keyframes thinking-sway {
0%, 100% { 0%,
100% {
transform: rotate(-2deg); transform: rotate(-2deg);
} }
50% { 50% {
@@ -141,7 +147,8 @@
} }
@keyframes typing-bounce { @keyframes typing-bounce {
0%, 100% { 0%,
100% {
transform: translateY(0) scale(1); transform: translateY(0) scale(1);
} }
50% { 50% {
@@ -150,7 +157,8 @@
} }
@keyframes searching-look { @keyframes searching-look {
0%, 100% { 0%,
100% {
transform: translateX(0); transform: translateX(0);
} }
25% { 25% {
@@ -162,7 +170,8 @@
} }
@keyframes celebrate { @keyframes celebrate {
0%, 100% { 0%,
100% {
transform: scale(1) rotate(0deg); transform: scale(1) rotate(0deg);
} }
25% { 25% {
@@ -177,13 +186,21 @@
} }
@keyframes shake { @keyframes shake {
0%, 100% { 0%,
100% {
transform: translateX(0); transform: translateX(0);
} }
10%, 30%, 50%, 70%, 90% { 10%,
30%,
50%,
70%,
90% {
transform: translateX(-5px); transform: translateX(-5px);
} }
20%, 40%, 60%, 80% { 20%,
40%,
60%,
80% {
transform: translateX(5px); transform: translateX(5px);
} }
} }
+20 -6
View File
@@ -37,7 +37,10 @@
claudeStore.grantTool(approvedTool); claudeStore.grantTool(approvedTool);
const newGrantedTools = [...grantedToolsList, approvedTool]; const newGrantedTools = [...grantedToolsList, approvedTool];
claudeStore.addLine("system", `Permission granted for: ${approvedTool}. Reconnecting with context...`); claudeStore.addLine(
"system",
`Permission granted for: ${approvedTool}. Reconnecting with context...`
);
claudeStore.clearPermission(); claudeStore.clearPermission();
// Stop current session and reconnect with new permissions // Stop current session and reconnect with new permissions
@@ -97,8 +100,12 @@ Please continue where we left off and retry that action now that you have permis
</script> </script>
{#if isVisible && permission} {#if isVisible && permission}
<div class="permission-overlay fixed inset-0 bg-black/70 flex items-center justify-center z-50 backdrop-blur-sm"> <div
<div class="permission-modal bg-[var(--bg-primary)] border border-[var(--border-color)] rounded-xl p-6 max-w-md w-full mx-4 shadow-2xl"> class="permission-overlay fixed inset-0 bg-black/70 flex items-center justify-center z-50 backdrop-blur-sm"
>
<div
class="permission-modal bg-[var(--bg-primary)] border border-[var(--border-color)] rounded-xl p-6 max-w-md w-full mx-4 shadow-2xl"
>
<div class="flex items-center gap-3 mb-4"> <div class="flex items-center gap-3 mb-4">
<div class="w-10 h-10 rounded-full bg-yellow-500/20 flex items-center justify-center"> <div class="w-10 h-10 rounded-full bg-yellow-500/20 flex items-center justify-center">
<span class="text-xl">🔐</span> <span class="text-xl">🔐</span>
@@ -117,10 +124,14 @@ Please continue where we left off and retry that action now that you have permis
<div class="mb-4"> <div class="mb-4">
<div class="text-sm text-gray-400 mb-1">Tool</div> <div class="text-sm text-gray-400 mb-1">Tool</div>
<div class="px-3 py-2 bg-[var(--bg-secondary)] rounded-md text-[var(--accent-primary)] font-mono flex items-center justify-between"> <div
class="px-3 py-2 bg-[var(--bg-secondary)] rounded-md text-[var(--accent-primary)] font-mono flex items-center justify-between"
>
<span>{permission.tool}</span> <span>{permission.tool}</span>
{#if isToolAlreadyGranted(permission.tool)} {#if isToolAlreadyGranted(permission.tool)}
<span class="text-xs text-green-400 bg-green-500/20 px-2 py-0.5 rounded">Already Granted</span> <span class="text-xs text-green-400 bg-green-500/20 px-2 py-0.5 rounded"
>Already Granted</span
>
{/if} {/if}
</div> </div>
</div> </div>
@@ -135,7 +146,10 @@ Please continue where we left off and retry that action now that you have permis
{#if Object.keys(permission.input).length > 0} {#if Object.keys(permission.input).length > 0}
<div class="mb-6"> <div class="mb-6">
<div class="text-sm text-gray-400 mb-1">Details</div> <div class="text-sm text-gray-400 mb-1">Details</div>
<pre class="px-3 py-2 bg-[var(--bg-terminal)] rounded-md text-gray-300 text-xs overflow-x-auto max-h-32">{formatInput(permission.input)}</pre> <pre
class="px-3 py-2 bg-[var(--bg-terminal)] rounded-md text-gray-300 text-xs overflow-x-auto max-h-32">{formatInput(
permission.input
)}</pre>
</div> </div>
{/if} {/if}
+8 -3
View File
@@ -101,7 +101,9 @@
} }
</script> </script>
<div class="status-bar flex items-center justify-between px-4 py-2 bg-[var(--bg-secondary)] border-b border-[var(--border-color)]"> <div
class="status-bar flex items-center justify-between px-4 py-2 bg-[var(--bg-secondary)] border-b border-[var(--border-color)]"
>
<div class="flex items-center gap-4"> <div class="flex items-center gap-4">
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<div class="w-2.5 h-2.5 rounded-full {getStatusColor()}"></div> <div class="w-2.5 h-2.5 rounded-full {getStatusColor()}"></div>
@@ -111,7 +113,8 @@
{#if connectionStatus === "connected"} {#if connectionStatus === "connected"}
{#if workingDirectory} {#if workingDirectory}
<div class="text-sm text-gray-500"> <div class="text-sm text-gray-500">
<span class="text-gray-600">cwd:</span> {workingDirectory} <span class="text-gray-600">cwd:</span>
{workingDirectory}
</div> </div>
{/if} {/if}
{:else} {:else}
@@ -143,7 +146,9 @@
title="Join our Discord" title="Join our Discord"
> >
<svg class="w-5 h-5" viewBox="0 0 24 24" fill="currentColor"> <svg class="w-5 h-5" viewBox="0 0 24 24" fill="currentColor">
<path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z"/> <path
d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z"
/>
</svg> </svg>
</button> </button>
{#if appVersion} {#if appVersion}
+4 -4
View File
@@ -67,7 +67,9 @@
<div <div
class="terminal-container flex-1 overflow-hidden rounded-lg bg-[var(--bg-terminal)] border border-[var(--border-color)]" class="terminal-container flex-1 overflow-hidden rounded-lg bg-[var(--bg-terminal)] border border-[var(--border-color)]"
> >
<div class="terminal-header flex items-center gap-2 px-4 py-2 border-b border-[var(--border-color)] bg-[var(--bg-secondary)]"> <div
class="terminal-header flex items-center gap-2 px-4 py-2 border-b border-[var(--border-color)] bg-[var(--bg-secondary)]"
>
<div class="flex gap-1.5"> <div class="flex gap-1.5">
<div class="w-3 h-3 rounded-full bg-red-500"></div> <div class="w-3 h-3 rounded-full bg-red-500"></div>
<div class="w-3 h-3 rounded-full bg-yellow-500"></div> <div class="w-3 h-3 rounded-full bg-yellow-500"></div>
@@ -82,9 +84,7 @@
class="terminal-content h-[calc(100%-40px)] overflow-y-auto p-4 font-mono text-sm" class="terminal-content h-[calc(100%-40px)] overflow-y-auto p-4 font-mono text-sm"
> >
{#if lines.length === 0} {#if lines.length === 0}
<div class="text-gray-500 italic"> <div class="text-gray-500 italic">Waiting for Claude... Type a message below to start!</div>
Waiting for Claude... Type a message below to start!
</div>
{:else} {:else}
{#each lines as line (line.id)} {#each lines as line (line.id)}
<div class="terminal-line mb-2 {getLineClass(line.type)}"> <div class="terminal-line mb-2 {getLineClass(line.type)}">
+11 -7
View File
@@ -17,7 +17,9 @@
<main class="flex-1 flex overflow-hidden"> <main class="flex-1 flex overflow-hidden">
<!-- Left panel: Character display --> <!-- Left panel: Character display -->
<div class="character-panel w-1/3 flex flex-col items-center justify-center border-r border-[var(--border-color)] bg-[var(--bg-secondary)]/50"> <div
class="character-panel w-1/3 flex flex-col items-center justify-center border-r border-[var(--border-color)] bg-[var(--bg-secondary)]/50"
>
<AnimeGirl /> <AnimeGirl />
</div> </div>
@@ -33,15 +35,17 @@
<style> <style>
.app-container { .app-container {
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; font-family:
"Inter",
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
Roboto,
sans-serif;
} }
.character-panel { .character-panel {
min-width: 320px; min-width: 320px;
background: linear-gradient( background: linear-gradient(180deg, var(--bg-secondary) 0%, var(--bg-primary) 100%);
180deg,
var(--bg-secondary) 0%,
var(--bg-primary) 100%
);
} }
</style> </style>
+2 -1
View File
@@ -5,7 +5,7 @@ Place your anime girl sprites here! Each state needs a PNG image.
## Required Files ## Required Files
| Filename | State | Description | | Filename | State | Description |
|----------|-------|-------------| | ---------------- | ---------- | --------------------------------------- |
| `idle.png` | Idle | Relaxed, waiting pose | | `idle.png` | Idle | Relaxed, waiting pose |
| `thinking.png` | Thinking | Hand on chin, contemplative | | `thinking.png` | Thinking | Hand on chin, contemplative |
| `typing.png` | Typing | Hands on keyboard, focused | | `typing.png` | Typing | Hands on keyboard, focused |
@@ -26,6 +26,7 @@ Place your anime girl sprites here! Each state needs a PNG image.
## Bonus: Animation Frames ## Bonus: Animation Frames
For animated states, you can add numbered frames: For animated states, you can add numbered frames:
- `typing_1.png`, `typing_2.png`, `typing_3.png` - `typing_1.png`, `typing_2.png`, `typing_3.png`
- `thinking_1.png`, `thinking_2.png` - `thinking_1.png`, `thinking_2.png`
- etc. - etc.