From 3abca03c2b695e08e89df979e558120c413f005a Mon Sep 17 00:00:00 2001 From: Naomi Carrigan Date: Thu, 15 Jan 2026 11:00:15 -0800 Subject: [PATCH] chore: format --- .gitea/issue_template/bug_report.yaml | 5 ++- .gitea/issue_template/config.yml | 2 +- .gitea/issue_template/feature_proposal.yml | 2 +- .gitea/issue_template/other.yml | 2 +- .gitea/workflows/security.yml | 26 +++++++------- .vscode/extensions.json | 6 +--- README.md | 42 ++++++++++++---------- eslint.config.js | 8 +---- src/lib/components/AnimeGirl.svelte | 37 +++++++++++++------ src/lib/components/PermissionModal.svelte | 26 ++++++++++---- src/lib/components/StatusBar.svelte | 11 ++++-- src/lib/components/Terminal.svelte | 8 ++--- src/routes/+page.svelte | 18 ++++++---- static/sprites/README.md | 23 ++++++------ 14 files changed, 126 insertions(+), 90 deletions(-) diff --git a/.gitea/issue_template/bug_report.yaml b/.gitea/issue_template/bug_report.yaml index bf17745..24ef890 100644 --- a/.gitea/issue_template/bug_report.yaml +++ b/.gitea/issue_template/bug_report.yaml @@ -1,6 +1,6 @@ name: 🐛 Bug Report description: Something isn't working as expected? Let us know! -title: '[BUG] - ' +title: "[BUG] - " labels: - "status/awaiting triage" body: @@ -50,7 +50,7 @@ body: description: The operating system you are using, including the version/build number. validations: required: true -# Remove this section for non-web apps. + # Remove this section for non-web apps. - type: input id: browser attributes: @@ -66,4 +66,3 @@ body: - No validations: required: true - diff --git a/.gitea/issue_template/config.yml b/.gitea/issue_template/config.yml index f1cdc86..268aa3e 100644 --- a/.gitea/issue_template/config.yml +++ b/.gitea/issue_template/config.yml @@ -2,4 +2,4 @@ blank_issues_enabled: false contact_links: - name: "Discord" url: "https://chat.nhcarrigan.com" - about: "Chat with us directly." \ No newline at end of file + about: "Chat with us directly." diff --git a/.gitea/issue_template/feature_proposal.yml b/.gitea/issue_template/feature_proposal.yml index b3fae97..37af46c 100644 --- a/.gitea/issue_template/feature_proposal.yml +++ b/.gitea/issue_template/feature_proposal.yml @@ -1,6 +1,6 @@ name: 💭 Feature Proposal description: Have an idea for how we can improve? Share it here! -title: '[FEAT] - ' +title: "[FEAT] - " labels: - "status/awaiting triage" body: diff --git a/.gitea/issue_template/other.yml b/.gitea/issue_template/other.yml index 2f1335f..51ae0cd 100644 --- a/.gitea/issue_template/other.yml +++ b/.gitea/issue_template/other.yml @@ -1,6 +1,6 @@ name: ❓ Other Issue description: I have something that is neither a bug nor a feature request. -title: '[OTHER] - ' +title: "[OTHER] - " labels: - "status/awaiting triage" body: diff --git a/.gitea/workflows/security.yml b/.gitea/workflows/security.yml index 3169f83..e7a3807 100644 --- a/.gitea/workflows/security.yml +++ b/.gitea/workflows/security.yml @@ -2,11 +2,11 @@ name: Security Scan and Upload on: push: - branches: [ main ] + branches: [main] pull_request: - branches: [ main ] + branches: [main] schedule: - - cron: '0 0 * * 1' + - cron: "0 0 * * 1" workflow_dispatch: jobs: @@ -24,18 +24,18 @@ jobs: env: DD_URL: ${{ secrets.DD_URL }} DD_TOKEN: ${{ secrets.DD_TOKEN }} - PRODUCT_NAME: ${{ github.repository }} - PRODUCT_TYPE_ID: 1 + PRODUCT_NAME: ${{ github.repository }} + PRODUCT_TYPE_ID: 1 run: | sudo apt-get install jq -y > /dev/null - + echo "Checking connection to $DD_URL..." - + # Check if product exists - capture HTTP code to debug connection issues RESPONSE=$(curl --write-out "%{http_code}" --silent --output /tmp/response.json \ -H "Authorization: Token $DD_TOKEN" \ "$DD_URL/api/v2/products/?name=$PRODUCT_NAME") - + # If response is not 200, print error if [ "$RESPONSE" != "200" ]; then echo "::error::Failed to query DefectDojo. HTTP Code: $RESPONSE" @@ -44,7 +44,7 @@ jobs: fi COUNT=$(cat /tmp/response.json | jq -r '.count') - + if [ "$COUNT" = "0" ]; then echo "Creating product '$PRODUCT_NAME'..." curl -s -X POST "$DD_URL/api/v2/products/" \ @@ -75,7 +75,7 @@ jobs: echo "Uploading Trivy results..." # Generate today's date in YYYY-MM-DD format TODAY=$(date +%Y-%m-%d) - + HTTP_CODE=$(curl --write-out "%{http_code}" --output response.txt --silent -X POST "$DD_URL/api/v2/import-scan/" \ -H "Authorization: Token $DD_TOKEN" \ -F "active=true" \ @@ -86,7 +86,7 @@ jobs: -F "scan_date=$TODAY" \ -F "auto_create_context=true" \ -F "file=@trivy-results.json") - + if [[ "$HTTP_CODE" != "200" && "$HTTP_CODE" != "201" ]]; then echo "::error::Upload Failed with HTTP $HTTP_CODE" echo "--- SERVER RESPONSE ---" @@ -154,7 +154,7 @@ jobs: run: | echo "Uploading Semgrep results..." TODAY=$(date +%Y-%m-%d) - + HTTP_CODE=$(curl --write-out "%{http_code}" --output response.txt --silent -X POST "$DD_URL/api/v2/import-scan/" \ -H "Authorization: Token $DD_TOKEN" \ -F "active=true" \ @@ -174,4 +174,4 @@ jobs: exit 1 else echo "Upload Success!" - fi \ No newline at end of file + fi diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 61343e9..ebddbf0 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,7 +1,3 @@ { - "recommendations": [ - "svelte.svelte-vscode", - "tauri-apps.tauri-vscode", - "rust-lang.rust-analyzer" - ] + "recommendations": ["svelte.svelte-vscode", "tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"] } diff --git a/README.md b/README.md index 504052a..cc881a6 100644 --- a/README.md +++ b/README.md @@ -23,26 +23,29 @@ claude # Follow the prompts to authenticate ### 2. Install Runtime Dependencies **Debian/Ubuntu:** + ```bash sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0 libayatana-appindicator3-1 xdg-utils ``` **Fedora:** + ```bash sudo dnf install webkit2gtk4.1 gtk3 libappindicator-gtk3 xdg-utils ``` **Arch Linux:** + ```bash sudo pacman -S webkit2gtk-4.1 gtk3 libappindicator-gtk3 xdg-utils ``` -| Package | Purpose | -|---------|---------| -| webkit2gtk-4.1 | WebView rendering (app UI) | -| gtk3 | Window management and native widgets | -| libappindicator | System tray support | -| xdg-utils | Opening URLs/files with default applications | +| Package | Purpose | +| --------------- | -------------------------------------------- | +| webkit2gtk-4.1 | WebView rendering (app UI) | +| gtk3 | Window management and native widgets | +| libappindicator | System tray support | +| xdg-utils | Opening URLs/files with default applications | ### 3. Install Hikari Desktop @@ -51,17 +54,20 @@ Download the latest release for your platform. #### Linux **AppImage** (any distro): + ```bash chmod +x hikari-desktop_*.AppImage ./hikari-desktop_*.AppImage ``` **Debian/Ubuntu:** + ```bash sudo dpkg -i hikari-desktop_*.deb ``` **Fedora:** + ```bash sudo rpm -i hikari-desktop-*.rpm ``` @@ -76,17 +82,17 @@ The Windows build requires WSL (Windows Subsystem for Linux) with Claude Code in ## Character States -| State | Trigger | -|-------|---------| -| Idle | Waiting for user input | -| Thinking | Processing/API call in progress | -| Typing | Streaming text output | -| Searching | Using Read/Glob/Grep tools | -| Coding | Using Edit/Write tools | -| MCP | Running MCP tool calls | -| Permission | Permission prompt needed | -| Success | Task completed | -| Error | Error occurred | +| State | Trigger | +| ---------- | ------------------------------- | +| Idle | Waiting for user input | +| Thinking | Processing/API call in progress | +| Typing | Streaming text output | +| Searching | Using Read/Glob/Grep tools | +| Coding | Using Edit/Write tools | +| MCP | Running MCP tool calls | +| Permission | Permission prompt needed | +| Success | Task completed | +| Error | Error occurred | ## Building from Source @@ -173,4 +179,4 @@ Copyright held by Naomi Carrigan. ## Contact -We may be contacted through our [Chat Server](http://chat.nhcarrigan.com) or via email at `contact@nhcarrigan.com`. \ No newline at end of file +We may be contacted through our [Chat Server](http://chat.nhcarrigan.com) or via email at `contact@nhcarrigan.com`. diff --git a/eslint.config.js b/eslint.config.js index 3fcbe8e..440d784 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -27,12 +27,6 @@ export default tseslint.config( }, }, { - ignores: [ - "build/", - ".svelte-kit/", - "dist/", - "src-tauri/target/", - "node_modules/", - ], + ignores: ["build/", ".svelte-kit/", "dist/", "src-tauri/target/", "node_modules/"], } ); diff --git a/src/lib/components/AnimeGirl.svelte b/src/lib/components/AnimeGirl.svelte index f9b39c5..129b03d 100644 --- a/src/lib/components/AnimeGirl.svelte +++ b/src/lib/components/AnimeGirl.svelte @@ -81,8 +81,12 @@
-
- +
+

{info.description}

@@ -123,7 +127,8 @@ } @keyframes idle-bob { - 0%, 100% { + 0%, + 100% { transform: translateY(0); } 50% { @@ -132,7 +137,8 @@ } @keyframes thinking-sway { - 0%, 100% { + 0%, + 100% { transform: rotate(-2deg); } 50% { @@ -141,7 +147,8 @@ } @keyframes typing-bounce { - 0%, 100% { + 0%, + 100% { transform: translateY(0) scale(1); } 50% { @@ -150,7 +157,8 @@ } @keyframes searching-look { - 0%, 100% { + 0%, + 100% { transform: translateX(0); } 25% { @@ -162,7 +170,8 @@ } @keyframes celebrate { - 0%, 100% { + 0%, + 100% { transform: scale(1) rotate(0deg); } 25% { @@ -177,13 +186,21 @@ } @keyframes shake { - 0%, 100% { + 0%, + 100% { transform: translateX(0); } - 10%, 30%, 50%, 70%, 90% { + 10%, + 30%, + 50%, + 70%, + 90% { transform: translateX(-5px); } - 20%, 40%, 60%, 80% { + 20%, + 40%, + 60%, + 80% { transform: translateX(5px); } } diff --git a/src/lib/components/PermissionModal.svelte b/src/lib/components/PermissionModal.svelte index d2d8621..12a41e3 100644 --- a/src/lib/components/PermissionModal.svelte +++ b/src/lib/components/PermissionModal.svelte @@ -37,7 +37,10 @@ claudeStore.grantTool(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(); // 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 {#if isVisible && permission} -
-
+
+
🔐 @@ -117,10 +124,14 @@ Please continue where we left off and retry that action now that you have permis
Tool
-
+
{permission.tool} {#if isToolAlreadyGranted(permission.tool)} - Already Granted + Already Granted {/if}
@@ -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}
Details
-
{formatInput(permission.input)}
+
{formatInput(
+              permission.input
+            )}
{/if} diff --git a/src/lib/components/StatusBar.svelte b/src/lib/components/StatusBar.svelte index eeed173..1a9d6ac 100644 --- a/src/lib/components/StatusBar.svelte +++ b/src/lib/components/StatusBar.svelte @@ -101,7 +101,9 @@ } -
+
@@ -111,7 +113,8 @@ {#if connectionStatus === "connected"} {#if workingDirectory}
- cwd: {workingDirectory} + cwd: + {workingDirectory}
{/if} {:else} @@ -143,7 +146,9 @@ title="Join our Discord" > - + {#if appVersion} diff --git a/src/lib/components/Terminal.svelte b/src/lib/components/Terminal.svelte index 5ad2488..e739a44 100644 --- a/src/lib/components/Terminal.svelte +++ b/src/lib/components/Terminal.svelte @@ -67,7 +67,9 @@
-
+
@@ -82,9 +84,7 @@ class="terminal-content h-[calc(100%-40px)] overflow-y-auto p-4 font-mono text-sm" > {#if lines.length === 0} -
- Waiting for Claude... Type a message below to start! -
+
Waiting for Claude... Type a message below to start!
{:else} {#each lines as line (line.id)}
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index b138bf5..baafbc2 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -17,7 +17,9 @@
-
+
@@ -33,15 +35,17 @@ diff --git a/static/sprites/README.md b/static/sprites/README.md index b0011fd..e1fa840 100644 --- a/static/sprites/README.md +++ b/static/sprites/README.md @@ -4,17 +4,17 @@ Place your anime girl sprites here! Each state needs a PNG image. ## Required Files -| Filename | State | Description | -|----------|-------|-------------| -| `idle.png` | Idle | Relaxed, waiting pose | -| `thinking.png` | Thinking | Hand on chin, contemplative | -| `typing.png` | Typing | Hands on keyboard, focused | -| `searching.png` | Searching | With magnifying glass or looking around | -| `coding.png` | Coding | Intense focus, maybe with glasses | -| `mcp.png` | MCP Tools | Magical aura, tech vibes | -| `permission.png` | Permission | Questioning look, curious expression | -| `success.png` | Success | Celebrating, happy! | -| `error.png` | Error | Concerned, sympathetic | +| Filename | State | Description | +| ---------------- | ---------- | --------------------------------------- | +| `idle.png` | Idle | Relaxed, waiting pose | +| `thinking.png` | Thinking | Hand on chin, contemplative | +| `typing.png` | Typing | Hands on keyboard, focused | +| `searching.png` | Searching | With magnifying glass or looking around | +| `coding.png` | Coding | Intense focus, maybe with glasses | +| `mcp.png` | MCP Tools | Magical aura, tech vibes | +| `permission.png` | Permission | Questioning look, curious expression | +| `success.png` | Success | Celebrating, happy! | +| `error.png` | Error | Concerned, sympathetic | ## Recommended Specs @@ -26,6 +26,7 @@ Place your anime girl sprites here! Each state needs a PNG image. ## Bonus: Animation Frames For animated states, you can add numbered frames: + - `typing_1.png`, `typing_2.png`, `typing_3.png` - `thinking_1.png`, `thinking_2.png` - etc.