Skip to content

Instantly share code, notes, and snippets.

@konard
Created February 6, 2026 17:37
Show Gist options
  • Select an option

  • Save konard/0900a6eea8e01d97df28380f04c97095 to your computer and use it in GitHub Desktop.

Select an option

Save konard/0900a6eea8e01d97df28380f04c97095 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
# Solve.mjs Log - 2026-02-06T17:20:33.053Z
[2026-02-06T17:20:33.054Z] [INFO] 📁 Log file: /home/hive/solve-2026-02-06T17-20-33-052Z.log
[2026-02-06T17:20:33.055Z] [INFO] (All output will be logged here)
[2026-02-06T17:20:33.514Z] [INFO]
[2026-02-06T17:20:33.515Z] [INFO] 🚀 solve v1.16.0
[2026-02-06T17:20:33.515Z] [INFO] 🔧 Raw command executed:
[2026-02-06T17:20:33.516Z] [INFO] /home/hive/.nvm/versions/node/v20.20.0/bin/node /home/hive/.bun/bin/solve https://github.com/netkeep80/isocubic/issues/269 --model opus --attach-logs --verbose --no-tool-check --auto-resume-on-limit-reset --tokens-budget-stats
[2026-02-06T17:20:33.517Z] [INFO]
[2026-02-06T17:20:33.535Z] [INFO]
[2026-02-06T17:20:33.536Z] [WARNING] ⚠️ SECURITY WARNING: --attach-logs is ENABLED
[2026-02-06T17:20:33.537Z] [INFO]
[2026-02-06T17:20:33.537Z] [INFO] This option will upload the complete solution draft log file to the Pull Request.
[2026-02-06T17:20:33.538Z] [INFO] The log may contain sensitive information such as:
[2026-02-06T17:20:33.538Z] [INFO] • API keys, tokens, or secrets
[2026-02-06T17:20:33.538Z] [INFO] • File paths and directory structures
[2026-02-06T17:20:33.538Z] [INFO] • Command outputs and error messages
[2026-02-06T17:20:33.538Z] [INFO] • Internal system information
[2026-02-06T17:20:33.539Z] [INFO]
[2026-02-06T17:20:33.539Z] [INFO] ⚠️ DO NOT use this option with public repositories or if the log
[2026-02-06T17:20:33.539Z] [INFO] might contain sensitive data that should not be shared publicly.
[2026-02-06T17:20:33.539Z] [INFO]
[2026-02-06T17:20:33.539Z] [INFO] Continuing in 5 seconds... (Press Ctrl+C to abort)
[2026-02-06T17:20:33.540Z] [INFO]
[2026-02-06T17:20:38.546Z] [INFO]
[2026-02-06T17:20:38.569Z] [INFO] 💾 Disk space check: 41560MB available (2048MB required) ✅
[2026-02-06T17:20:38.571Z] [INFO] 🧠 Memory check: 9805MB available, swap: 4095MB (145MB used), total: 13755MB (256MB required) ✅
[2026-02-06T17:20:38.589Z] [INFO] ⏩ Skipping tool connection validation (dry-run mode or skip-tool-connection-check enabled)
[2026-02-06T17:20:38.589Z] [INFO] ⏩ Skipping GitHub authentication check (dry-run mode or skip-tool-connection-check enabled)
[2026-02-06T17:20:38.589Z] [INFO] 📋 URL validation:
[2026-02-06T17:20:38.590Z] [INFO] Input URL: https://github.com/netkeep80/isocubic/issues/269
[2026-02-06T17:20:38.590Z] [INFO] Is Issue URL: true
[2026-02-06T17:20:38.590Z] [INFO] Is PR URL: false
[2026-02-06T17:20:38.590Z] [INFO] 🔍 Checking repository access for auto-fork...
[2026-02-06T17:20:39.415Z] [INFO] Repository visibility: public
[2026-02-06T17:20:39.416Z] [INFO] ✅ Auto-fork: No write access detected, enabling fork mode
[2026-02-06T17:20:39.416Z] [INFO] ✅ Repository access check: Skipped (fork mode enabled)
[2026-02-06T17:20:39.787Z] [INFO] Repository visibility: public
[2026-02-06T17:20:39.787Z] [INFO] Auto-cleanup default: false (repository is public)
[2026-02-06T17:20:39.788Z] [INFO] 🔍 Auto-continue enabled: Checking for existing PRs for issue #269...
[2026-02-06T17:20:40.452Z] [INFO] 🔍 Fork mode: Checking for existing branches in konard/netkeep80-isocubic...
[2026-02-06T17:20:41.543Z] [INFO] 📋 Found 1 existing PR(s) linked to issue #269
[2026-02-06T17:20:41.544Z] [INFO] PR #268: created 1h ago (OPEN, ready)
[2026-02-06T17:20:41.544Z] [INFO] PR #268: Branch 'issue-245-50afe0ff71b2' doesn't match expected pattern 'issue-269-*' - skipping
[2026-02-06T17:20:41.544Z] [INFO] ⏭️ No suitable PRs found (missing CLAUDE.md/.gitkeep or older than 24h) - creating new PR as usual
[2026-02-06T17:20:41.545Z] [INFO] 📝 Issue mode: Working with issue #269
[2026-02-06T17:20:41.546Z] [INFO]
Creating temporary directory: /tmp/gh-issue-solver-1770398441546
[2026-02-06T17:20:41.549Z] [INFO]
🍴 Fork mode: ENABLED
[2026-02-06T17:20:41.550Z] [INFO] Checking fork status...
[2026-02-06T17:20:41.890Z] [INFO] 🔍 Detecting fork conflicts...
[2026-02-06T17:20:42.849Z] [INFO] ✅ No fork conflict: Safe to proceed
[2026-02-06T17:20:43.189Z] [INFO] ✅ Fork exists: konard/netkeep80-isocubic
[2026-02-06T17:20:43.189Z] [INFO] 🔍 Validating fork parent...
[2026-02-06T17:20:43.619Z] [INFO] ✅ Fork parent validated: netkeep80/isocubic
[2026-02-06T17:20:43.621Z] [INFO]
📥 Cloning repository: konard/netkeep80-isocubic
[2026-02-06T17:20:45.094Z] [INFO] ✅ Cloned to: /tmp/gh-issue-solver-1770398441546
[2026-02-06T17:20:45.139Z] [INFO] 🔗 Setting upstream: netkeep80/isocubic
[2026-02-06T17:20:45.186Z] [INFO] ℹ️ Upstream exists: Using existing upstream remote
[2026-02-06T17:20:45.186Z] [INFO] 🔄 Fetching upstream...
[2026-02-06T17:20:45.554Z] [INFO] ✅ Upstream fetched: Successfully
[2026-02-06T17:20:45.555Z] [INFO] 🔄 Syncing default branch...
[2026-02-06T17:20:45.974Z] [INFO] ℹ️ Default branch: main
[2026-02-06T17:20:46.058Z] [INFO] ✅ Default branch synced: with upstream/main
[2026-02-06T17:20:46.058Z] [INFO] 🔄 Pushing to fork: main branch
[2026-02-06T17:20:46.523Z] [INFO] ✅ Fork updated: Default branch pushed to fork
[2026-02-06T17:20:46.665Z] [INFO]
📌 Default branch: main
[2026-02-06T17:20:46.717Z] [INFO]
🌿 Creating branch: issue-269-5d06a50ee25a from main (default)
[2026-02-06T17:20:46.766Z] [INFO] 🔍 Verifying: Branch creation...
[2026-02-06T17:20:46.808Z] [INFO] ✅ Branch created: issue-269-5d06a50ee25a
[2026-02-06T17:20:46.808Z] [INFO] ✅ Current branch: issue-269-5d06a50ee25a
[2026-02-06T17:20:46.808Z] [INFO] Branch operation: Create new branch
[2026-02-06T17:20:46.809Z] [INFO] Branch verification: Matches expected
[2026-02-06T17:20:46.812Z] [INFO]
🚀 Auto PR creation: ENABLED
[2026-02-06T17:20:46.812Z] [INFO] Creating: Initial commit and draft PR...
[2026-02-06T17:20:46.812Z] [INFO]
[2026-02-06T17:20:46.857Z] [INFO] Using CLAUDE.md mode (--claude-file=true, --gitkeep-file=false, --auto-gitkeep-file=true)
[2026-02-06T17:20:46.858Z] [INFO] 📝 Creating: CLAUDE.md with task details
[2026-02-06T17:20:46.859Z] [INFO] Issue URL from argv['issue-url']: https://github.com/netkeep80/isocubic/issues/269
[2026-02-06T17:20:46.859Z] [INFO] Issue URL from argv._[0]: undefined
[2026-02-06T17:20:46.859Z] [INFO] Final issue URL: https://github.com/netkeep80/isocubic/issues/269
[2026-02-06T17:20:46.860Z] [INFO] ✅ File created: CLAUDE.md
[2026-02-06T17:20:46.860Z] [INFO] 📦 Adding file: To git staging
[2026-02-06T17:20:46.961Z] [INFO] Git status after add: A CLAUDE.md
[2026-02-06T17:20:46.961Z] [INFO] 📝 Creating commit: With CLAUDE.md file
[2026-02-06T17:20:47.021Z] [INFO] ✅ Commit created: Successfully with CLAUDE.md
[2026-02-06T17:20:47.025Z] [INFO] Commit output: [issue-269-5d06a50ee25a 7dbb4de] Initial commit with task details
1 file changed, 7 insertions(+)
create mode 100644 CLAUDE.md
[2026-02-06T17:20:47.079Z] [INFO] Commit hash: 7dbb4de...
[2026-02-06T17:20:47.120Z] [INFO] Latest commit: 7dbb4de Initial commit with task details
[2026-02-06T17:20:47.168Z] [INFO] Git status: clean
[2026-02-06T17:20:47.213Z] [INFO] Remotes: origin https://github.com/konard/netkeep80-isocubic.git (fetch)
[2026-02-06T17:20:47.266Z] [INFO] Branch info: * issue-269-5d06a50ee25a 7dbb4de [origin/main: ahead 1] Initial commit with task details
main 85db0cd [origin/main] Merge pull request #267 from konard/issue-266-1aeb1ec4d873
[2026-02-06T17:20:47.267Z] [INFO] 📤 Pushing branch: To remote repository...
[2026-02-06T17:20:47.267Z] [INFO] Push command: git push -u origin issue-269-5d06a50ee25a
[2026-02-06T17:20:48.225Z] [INFO] Push exit code: 0
[2026-02-06T17:20:48.225Z] [INFO] Push output: remote:
remote: Create a pull request for 'issue-269-5d06a50ee25a' on GitHub by visiting:
remote: https://github.com/konard/netkeep80-isocubic/pull/new/issue-269-5d06a50ee25a
remote:
To https://github.com/konard/netkeep80-isocubic.git
* [new branch] issue-269-5d06a50ee25a -> issue-269-5d06a50ee25a
branch 'issue-269-5d06a50ee25a' set up to track 'origin/issue-269-5d06a50ee25a'.
[2026-02-06T17:20:48.225Z] [INFO] ✅ Branch pushed: Successfully to remote
[2026-02-06T17:20:48.226Z] [INFO] Push output: remote:
remote: Create a pull request for 'issue-269-5d06a50ee25a' on GitHub by visiting:
remote: https://github.com/konard/netkeep80-isocubic/pull/new/issue-269-5d06a50ee25a
remote:
To https://github.com/konard/netkeep80-isocubic.git
* [new branch] issue-269-5d06a50ee25a -> issue-269-5d06a50ee25a
branch 'issue-269-5d06a50ee25a' set up to track 'origin/issue-269-5d06a50ee25a'.
[2026-02-06T17:20:48.226Z] [INFO] Waiting for GitHub to sync...
[2026-02-06T17:20:50.769Z] [INFO] Compare API check: 1 commit(s) ahead of main
[2026-02-06T17:20:50.770Z] [INFO] GitHub compare API ready: 1 commit(s) found
[2026-02-06T17:20:51.083Z] [INFO] Branch verified on GitHub: issue-269-5d06a50ee25a
[2026-02-06T17:20:51.435Z] [INFO] Remote commit SHA: 7dbb4de...
[2026-02-06T17:20:51.436Z] [INFO] 📋 Getting issue: Title from GitHub...
[2026-02-06T17:20:51.781Z] [INFO] Issue title: "Окно/таб соцсетей галереей сообщества отображается некорректно"
[2026-02-06T17:20:51.781Z] [INFO] 👤 Getting user: Current GitHub account...
[2026-02-06T17:20:52.108Z] [INFO] Current user: konard
[2026-02-06T17:20:52.374Z] [INFO] User is not a collaborator (will skip assignment)
[2026-02-06T17:20:52.376Z] [INFO] User is not a collaborator (will skip assignment)
[2026-02-06T17:20:52.378Z] [INFO] 🔄 Fetching: Latest main branch...
[2026-02-06T17:20:52.767Z] [INFO] ✅ Base updated: Fetched latest main
[2026-02-06T17:20:52.769Z] [INFO] 🔍 Checking: Commits between branches...
[2026-02-06T17:20:52.821Z] [INFO] Commits ahead of origin/main: 1
[2026-02-06T17:20:52.821Z] [INFO] ✅ Commits found: 1 commit(s) ahead
[2026-02-06T17:20:52.822Z] [INFO] 🔀 Creating PR: Draft pull request...
[2026-02-06T17:20:52.822Z] [INFO] 🎯 Target branch: main (default)
[2026-02-06T17:20:52.822Z] [INFO] PR Title: [WIP] Окно/таб соцсетей галереей сообщества отображается некорректно
[2026-02-06T17:20:52.823Z] [INFO] Base branch: main
[2026-02-06T17:20:52.823Z] [INFO] Head branch: issue-269-5d06a50ee25a
[2026-02-06T17:20:52.823Z] [INFO] Assignee: konard
[2026-02-06T17:20:52.823Z] [INFO] PR Body:
## 🤖 AI-Powered Solution Draft
This pull request is being automatically generated to solve issue netkeep80/isocubic#269.
### 📋 Issue Reference
Fixes netkeep80/isocubic#269
### 🚧 Status
**Work in Progress** - The AI assistant is currently analyzing and implementing the solution draft.
### 📝 Implementation Details
_Details will be added as the solution draft is developed..._
---
*This PR was created automatically by the AI issue solver*
[2026-02-06T17:20:52.824Z] [INFO] Command: cd "/tmp/gh-issue-solver-1770398441546" && gh pr create --draft --title "$(cat '/tmp/pr-title-1770398452824.txt')" --body-file "/tmp/pr-body-1770398452824.md" --base main --head konard:issue-269-5d06a50ee25a --repo netkeep80/isocubic
[2026-02-06T17:20:54.779Z] [INFO] 🔍 Verifying: PR creation...
[2026-02-06T17:20:55.227Z] [INFO] ✅ Verification: PR exists on GitHub
[2026-02-06T17:20:55.228Z] [INFO] ✅ PR created: #270
[2026-02-06T17:20:55.229Z] [INFO] 📍 PR URL: https://github.com/netkeep80/isocubic/pull/270
[2026-02-06T17:20:55.229Z] [INFO] ℹ️ Note: Could not assign (no permission)
[2026-02-06T17:20:55.229Z] [INFO] 🔗 Linking: Issue #269 to PR #270...
[2026-02-06T17:20:55.601Z] [INFO] Issue node ID: I_kwDORDc5r87o6uLP
[2026-02-06T17:20:55.974Z] [INFO] PR node ID: PR_kwDORDc5r87CC--_
[2026-02-06T17:20:56.389Z] [INFO]
[2026-02-06T17:20:56.389Z] [WARNING] ⚠️ ISSUE LINK MISSING: PR not linked to issue
[2026-02-06T17:20:56.390Z] [INFO]
[2026-02-06T17:20:56.390Z] [WARNING] The PR was created from a fork but wasn't linked to the issue.
[2026-02-06T17:20:56.390Z] [WARNING] Expected: "Fixes netkeep80/isocubic#269" in PR body
[2026-02-06T17:20:56.390Z] [INFO]
[2026-02-06T17:20:56.390Z] [WARNING] To fix manually:
[2026-02-06T17:20:56.391Z] [WARNING] 1. Edit the PR description at: https://github.com/netkeep80/isocubic/pull/270
[2026-02-06T17:20:56.391Z] [WARNING] 2. Add this line: Fixes netkeep80/isocubic#269
[2026-02-06T17:20:56.391Z] [INFO]
[2026-02-06T17:20:56.694Z] [INFO] 👤 Current user: konard
[2026-02-06T17:20:56.695Z] [INFO]
📊 Comment counting conditions:
[2026-02-06T17:20:56.695Z] [INFO] prNumber: 270
[2026-02-06T17:20:56.696Z] [INFO] branchName: issue-269-5d06a50ee25a
[2026-02-06T17:20:56.696Z] [INFO] isContinueMode: false
[2026-02-06T17:20:56.696Z] [INFO] Will count comments: true
[2026-02-06T17:20:56.696Z] [INFO] 💬 Counting comments: Checking for new comments since last commit...
[2026-02-06T17:20:56.696Z] [INFO] PR #270 on branch: issue-269-5d06a50ee25a
[2026-02-06T17:20:56.696Z] [INFO] Owner/Repo: netkeep80/isocubic
[2026-02-06T17:20:57.162Z] [INFO] 📅 Last commit time (from API): 2026-02-06T17:20:47.000Z
[2026-02-06T17:20:58.173Z] [INFO] 💬 New PR comments: 0
[2026-02-06T17:20:58.174Z] [INFO] 💬 New PR review comments: 0
[2026-02-06T17:20:58.174Z] [INFO] 💬 New issue comments: 0
[2026-02-06T17:20:58.174Z] [INFO] Total new comments: 0
[2026-02-06T17:20:58.174Z] [INFO] Comment lines to add: No (saving tokens)
[2026-02-06T17:20:58.174Z] [INFO] PR review comments fetched: 0
[2026-02-06T17:20:58.174Z] [INFO] PR conversation comments fetched: 0
[2026-02-06T17:20:58.175Z] [INFO] Total PR comments checked: 0
[2026-02-06T17:21:00.999Z] [INFO] Feedback info will be added to prompt:
[2026-02-06T17:21:01.000Z] [INFO] - Pull request description was edited after last commit
[2026-02-06T17:21:01.000Z] [INFO] 📅 Getting timestamps: From GitHub servers...
[2026-02-06T17:21:01.329Z] [INFO] 📝 Issue updated: 2026-02-06T17:19:36.000Z
[2026-02-06T17:21:01.635Z] [INFO] 💬 Comments: None found
[2026-02-06T17:21:02.062Z] [INFO] 🔀 Recent PR: 2026-02-06T17:20:54.000Z
[2026-02-06T17:21:02.063Z] [INFO]
✅ Reference time: 2026-02-06T17:20:54.000Z
[2026-02-06T17:21:02.063Z] [INFO]
🔍 Checking for uncommitted changes to include as feedback...
[2026-02-06T17:21:02.119Z] [INFO] ✅ No uncommitted changes found
[2026-02-06T17:21:02.494Z] [INFO] 📦 Fork workflows detected: https://github.com/konard/netkeep80-isocubic/actions?query=branch%3Aissue-269-5d06a50ee25a
[2026-02-06T17:21:04.801Z] [INFO] 🎭 Playwright MCP detected - enabling browser automation hints
[2026-02-06T17:21:04.922Z] [INFO] 👁️ Model vision capability: supported
[2026-02-06T17:21:04.923Z] [INFO]
📝 Final prompt structure:
[2026-02-06T17:21:04.923Z] [INFO] Characters: 484
[2026-02-06T17:21:04.924Z] [INFO] System prompt characters: 12660
[2026-02-06T17:21:04.924Z] [INFO] Feedback info: Included
[2026-02-06T17:21:04.925Z] [INFO]
🤖 Executing Claude: OPUS
[2026-02-06T17:21:04.926Z] [INFO] Model: opus
[2026-02-06T17:21:04.926Z] [INFO] Working directory: /tmp/gh-issue-solver-1770398441546
[2026-02-06T17:21:04.926Z] [INFO] Branch: issue-269-5d06a50ee25a
[2026-02-06T17:21:04.926Z] [INFO] Prompt length: 484 chars
[2026-02-06T17:21:04.926Z] [INFO] System prompt length: 12660 chars
[2026-02-06T17:21:04.926Z] [INFO] Feedback info included: Yes (1 lines)
[2026-02-06T17:21:04.984Z] [INFO] 📈 System resources before execution:
[2026-02-06T17:21:04.984Z] [INFO] Memory: MemFree: 8603584 kB
[2026-02-06T17:21:04.984Z] [INFO] Load: 1.80 1.42 1.46 2/494 627532
[2026-02-06T17:21:04.984Z] [INFO]
📝 Raw command:
[2026-02-06T17:21:04.984Z] [INFO] (cd "/tmp/gh-issue-solver-1770398441546" && claude --output-format stream-json --verbose --dangerously-skip-permissions --model claude-opus-4-6 -p "Issue to solve: https://github.com/netkeep80/isocubic/issues/269
Your prepared branch: issue-269-5d06a50ee25a
Your prepared working directory: /tmp/gh-issue-solver-1770398441546
Your prepared Pull Request: https://github.com/netkeep80/isocubic/pull/270
Your forked repository: konard/netkeep80-isocubic
Original repository (upstream): netkeep80/isocubic
GitHub Actions on your fork: https://github.com/konard/netkeep80-isocubic/actions?query=branch%3Aissue-269-5d06a50ee25a
Proceed.
" --append-system-prompt "You are an AI issue solver. You prefer to find the root cause of each and every issue. When you talk, you prefer to speak with facts which you have double-checked yourself or cite sources that provide evidence, like quote actual code or give references to documents or pages found on the internet. You are polite and patient, and prefer to assume good intent, trying your best to be helpful. If you are unsure or have assumptions, you prefer to test them yourself or ask questions to clarify requirements.
General guidelines.
- When you execute commands, always save their logs to files for easier reading if the output becomes large.
- When running commands, do not set a timeout yourself — let them run as long as needed (default timeout - 2 minutes is more than enough), and once they finish, review the logs in the file.
- When running sudo commands (especially package installations like apt-get, yum, npm install, etc.), always run them in the background to avoid timeout issues and permission errors when the process needs to be killed. Use the run_in_background parameter or append & to the command.
- When CI is failing or user reports failures, consider adding a detailed investigation protocol to your todo list with these steps:
Step 1: List recent runs with timestamps using: gh run list --repo netkeep80/isocubic --branch issue-269-5d06a50ee25a --limit 5 --json databaseId,conclusion,createdAt,headSha
Step 2: Verify runs are after the latest commit by checking timestamps and SHA
Step 3: For each non-passing run, download logs to preserve them: gh run view {run-id} --repo netkeep80/isocubic --log > ci-logs/{workflow}-{run-id}.log
Step 4: Read each downloaded log file using Read tool to understand the actual failures
Step 5: Report findings with specific errors and line numbers from logs
This detailed investigation is especially helpful when user mentions CI failures, asks to investigate logs, you see non-passing status, or when finalizing a PR.
Note: If user says \"failing\" but tools show \"passing\", this might indicate stale data - consider downloading fresh logs and checking timestamps to resolve the discrepancy.
- When a code or log file has more than 1500 lines, read it in chunks of 1500 lines.
- When facing a complex problem, do as much tracing as possible and turn on all verbose modes.
- When you create debug, test, or example/experiment scripts for fixing, always keep them in an ./examples and/or ./experiments folders so you can reuse them later.
- When testing your assumptions, use the experiment scripts, and add it to ./experiments folder.
- When your experiments can show real world use case of the software, add it to ./examples folder.
- When you face something extremely hard, use divide and conquer — it always helps.
Initial research.
- When you start, make sure you create detailed plan for yourself and follow your todo list step by step, make sure that as many points from these guidelines are added to your todo list to keep track of everything that can help you solve the issue with highest possible quality.
- When user mentions CI failures or asks to investigate logs, consider adding these todos to track the investigation: (1) List recent CI runs with timestamps, (2) Download logs from failed runs to ci-logs/ directory, (3) Analyze error messages and identify root cause, (4) Implement fix, (5) Verify fix resolves the specific errors found in logs.
- When you read issue, read all details and comments thoroughly.
- When you see screenshots or images in issue descriptions, pull request descriptions, comments, or discussions, use WebFetch tool (or fetch tool) to download the image first, then use Read tool to view and analyze it. IMPORTANT: Before reading downloaded images with the Read tool, verify the file is a valid image (not HTML). Use a CLI tool like 'file' command to check the actual file format. Reading corrupted or non-image files (like GitHub's HTML 404 pages saved as .png) can cause \"Could not process image\" errors and may crash the AI solver process. If the file command shows \"HTML\" or \"text\", the download failed and you should retry or skip the image.
- When you need issue details, use gh issue view https://github.com/netkeep80/isocubic/issues/269.
- When you need related code, use gh search code --owner netkeep80 [keywords].
- When you need repo context, read files in your working directory.
- When you study related work, study the most recent related pull requests.
- When issue is not defined enough, write a comment to ask clarifying questions.
- When accessing GitHub Gists (especially private ones), use gh gist view command instead of direct URL fetching to ensure proper authentication.
- When you are fixing a bug, please make sure you first find the actual root cause, do as many experiments as needed.
- When you are fixing a bug and code does not have enough tracing/logs, add them and make sure they stay in the code, but are switched off by default.
- When you need comments on a pull request, note that GitHub has THREE different comment types with different API endpoints:
1. PR review comments (inline code comments): gh api repos/netkeep80/isocubic/pulls/270/comments --paginate
2. PR conversation comments (general discussion): gh api repos/netkeep80/isocubic/issues/270/comments --paginate
3. PR reviews (approve/request changes): gh api repos/netkeep80/isocubic/pulls/270/reviews --paginate
IMPORTANT: The command \"gh pr view --json comments\" ONLY returns conversation comments and misses review comments!
- When you need latest comments on issue, use gh api repos/netkeep80/isocubic/issues/269/comments --paginate.
Solution development and testing.
- When issue is solvable, implement code with tests.
- When implementing features, search for similar existing implementations in the codebase and use them as examples instead of implementing everything from scratch.
- When coding, each atomic step that can be useful by itself should be commited to the pull request's branch, meaning if work will be interrupted by any reason parts of solution will still be kept intact and safe in pull request.
- When you test:
start from testing of small functions using separate scripts;
write unit tests with mocks for easy and quick start.
- When you test integrations, use existing framework.
- When you test solution draft, include automated checks in pr.
- When issue is unclear, write comment on issue asking questions.
- When you encounter any problems that you unable to solve yourself (any human feedback or help), write a comment to the pull request asking for help.
- When you need human help, use gh pr comment 270 --body \"your message\" to comment on existing PR.
Preparing pull request.
- When you code, follow contributing guidelines.
- When you commit, write clear message.
- When you need examples of style, use gh pr list --repo netkeep80/isocubic --state merged --search [keywords].
- When you open pr, describe solution draft and include tests.
- When there is a package with version and GitHub Actions workflows for automatic release, update the version (or other necessary release trigger) in your pull request to prepare for next release.
- When you update existing pr 270, use gh pr edit to modify title and description.
- When you are about to commit or push code, ALWAYS run local CI checks first if they are available in contributing guidelines (like ruff check, mypy, eslint, etc.) to catch errors before pushing.
- When you finalize the pull request:
follow style from merged prs for code, title, and description,
make sure no uncommitted changes corresponding to the original requirements are left behind,
make sure the default branch is merged to the pull request's branch,
make sure all CI checks passing if they exist before you finish,
check for latest comments on the issue and pull request to ensure no recent feedback was missed,
double-check that all changes in the pull request answer to original requirements of the issue,
make sure no new new bugs are introduced in pull request by carefully reading gh pr diff,
make sure no previously existing features were removed without an explicit request from users via the issue description, issue comments, and/or pull request comments.
- When you finish implementation, use gh pr ready 270.
Workflow and collaboration.
- When you check branch, verify with git branch --show-current.
- When you push, push only to branch issue-269-5d06a50ee25a.
- When you finish, create a pull request from branch issue-269-5d06a50ee25a. (Note: PR 270 already exists, update it instead)
- When you organize workflow, use pull requests instead of direct merges to default branch (main or master).
- When you manage commits, preserve commit history for later analysis.
- When you contribute, keep repository history forward-moving with regular commits, pushes, and reverts if needed.
- When you face conflict that you cannot resolve yourself, ask for help.
- When you collaborate, respect branch protections by working only on issue-269-5d06a50ee25a.
- When you mention result, include pull request url or comment url.
- When you need to create pr, remember pr 270 already exists for this branch.
Self review.
- When you check your solution draft, run all tests locally.
- When you check your solution draft, verify git status shows a clean working tree with no uncommitted changes.
- When you compare with repo style, use gh pr diff [number].
- When you finalize, confirm code, tests, and description are consistent.
GitHub CLI command patterns.
- IMPORTANT: Always use --paginate flag when fetching lists from GitHub API to ensure all results are returned (GitHub returns max 30 per page by default).
- When listing PR review comments (inline code comments), use gh api repos/OWNER/REPO/pulls/NUMBER/comments --paginate.
- When listing PR conversation comments, use gh api repos/OWNER/REPO/issues/NUMBER/comments --paginate.
- When listing PR reviews, use gh api repos/OWNER/REPO/pulls/NUMBER/reviews --paginate.
- When listing issue comments, use gh api repos/OWNER/REPO/issues/NUMBER/comments --paginate.
- When adding PR comment, use gh pr comment NUMBER --body \"text\" --repo OWNER/REPO.
- When adding issue comment, use gh issue comment NUMBER --body \"text\" --repo OWNER/REPO.
- When viewing PR details, use gh pr view NUMBER --repo OWNER/REPO.
- When filtering with jq, use gh api repos/\${owner}/\${repo}/pulls/\${prNumber}/comments --paginate --jq 'reverse | .[0:5]'.
Playwright MCP usage (browser automation via mcp__playwright__* tools).
- When you develop frontend web applications (HTML, CSS, JavaScript, React, Vue, Angular, etc.), use Playwright MCP tools to test the UI in a real browser.
- When WebFetch tool fails to retrieve expected content (e.g., returns empty content, JavaScript-rendered pages, or login-protected pages), use Playwright MCP tools (browser_navigate, browser_snapshot) as a fallback for web browsing.
- When you need to interact with dynamic web pages that require JavaScript execution, use Playwright MCP tools.
- When you need to visually verify how a web page looks or take screenshots, use browser_take_screenshot from Playwright MCP.
- When you need to fill forms, click buttons, or perform user interactions on web pages, use Playwright MCP tools (browser_click, browser_type, browser_fill_form).
- When you need to test responsive design or different viewport sizes, use browser_resize from Playwright MCP.
- When you finish using the browser, always close it with browser_close to free resources.
Visual UI work and screenshots.
- When you work on visual UI changes (frontend, CSS, HTML, design), include a render or screenshot of the final result in the pull request description.
- When you need to show visual results, take a screenshot and save it to the repository (e.g., in a docs/screenshots/ or assets/ folder).
- When you save screenshots to the repository, use permanent raw file links in the pull request description markdown (e.g., https://raw.githubusercontent.com/netkeep80/isocubic/issue-269-5d06a50ee25a/docs/screenshots/result.png).
- When uploading images, commit them to the branch first, then reference them using the raw GitHub URL format.
- When the visual result is important for review, mention it explicitly in the pull request description with the embedded image." | jq -c .)
[2026-02-06T17:21:04.985Z] [INFO]
[2026-02-06T17:21:04.985Z] [INFO] 📋 User prompt:
[2026-02-06T17:21:04.985Z] [INFO] ---BEGIN USER PROMPT---
[2026-02-06T17:21:04.985Z] [INFO] Issue to solve: https://github.com/netkeep80/isocubic/issues/269
Your prepared branch: issue-269-5d06a50ee25a
Your prepared working directory: /tmp/gh-issue-solver-1770398441546
Your prepared Pull Request: https://github.com/netkeep80/isocubic/pull/270
Your forked repository: konard/netkeep80-isocubic
Original repository (upstream): netkeep80/isocubic
GitHub Actions on your fork: https://github.com/konard/netkeep80-isocubic/actions?query=branch%3Aissue-269-5d06a50ee25a
Proceed.
[2026-02-06T17:21:04.985Z] [INFO] ---END USER PROMPT---
[2026-02-06T17:21:04.985Z] [INFO]
[2026-02-06T17:21:04.986Z] [INFO] 📋 System prompt:
[2026-02-06T17:21:04.986Z] [INFO] ---BEGIN SYSTEM PROMPT---
[2026-02-06T17:21:04.986Z] [INFO] You are an AI issue solver. You prefer to find the root cause of each and every issue. When you talk, you prefer to speak with facts which you have double-checked yourself or cite sources that provide evidence, like quote actual code or give references to documents or pages found on the internet. You are polite and patient, and prefer to assume good intent, trying your best to be helpful. If you are unsure or have assumptions, you prefer to test them yourself or ask questions to clarify requirements.
General guidelines.
- When you execute commands, always save their logs to files for easier reading if the output becomes large.
- When running commands, do not set a timeout yourself — let them run as long as needed (default timeout - 2 minutes is more than enough), and once they finish, review the logs in the file.
- When running sudo commands (especially package installations like apt-get, yum, npm install, etc.), always run them in the background to avoid timeout issues and permission errors when the process needs to be killed. Use the run_in_background parameter or append & to the command.
- When CI is failing or user reports failures, consider adding a detailed investigation protocol to your todo list with these steps:
Step 1: List recent runs with timestamps using: gh run list --repo netkeep80/isocubic --branch issue-269-5d06a50ee25a --limit 5 --json databaseId,conclusion,createdAt,headSha
Step 2: Verify runs are after the latest commit by checking timestamps and SHA
Step 3: For each non-passing run, download logs to preserve them: gh run view {run-id} --repo netkeep80/isocubic --log > ci-logs/{workflow}-{run-id}.log
Step 4: Read each downloaded log file using Read tool to understand the actual failures
Step 5: Report findings with specific errors and line numbers from logs
This detailed investigation is especially helpful when user mentions CI failures, asks to investigate logs, you see non-passing status, or when finalizing a PR.
Note: If user says "failing" but tools show "passing", this might indicate stale data - consider downloading fresh logs and checking timestamps to resolve the discrepancy.
- When a code or log file has more than 1500 lines, read it in chunks of 1500 lines.
- When facing a complex problem, do as much tracing as possible and turn on all verbose modes.
- When you create debug, test, or example/experiment scripts for fixing, always keep them in an ./examples and/or ./experiments folders so you can reuse them later.
- When testing your assumptions, use the experiment scripts, and add it to ./experiments folder.
- When your experiments can show real world use case of the software, add it to ./examples folder.
- When you face something extremely hard, use divide and conquer — it always helps.
Initial research.
- When you start, make sure you create detailed plan for yourself and follow your todo list step by step, make sure that as many points from these guidelines are added to your todo list to keep track of everything that can help you solve the issue with highest possible quality.
- When user mentions CI failures or asks to investigate logs, consider adding these todos to track the investigation: (1) List recent CI runs with timestamps, (2) Download logs from failed runs to ci-logs/ directory, (3) Analyze error messages and identify root cause, (4) Implement fix, (5) Verify fix resolves the specific errors found in logs.
- When you read issue, read all details and comments thoroughly.
- When you see screenshots or images in issue descriptions, pull request descriptions, comments, or discussions, use WebFetch tool (or fetch tool) to download the image first, then use Read tool to view and analyze it. IMPORTANT: Before reading downloaded images with the Read tool, verify the file is a valid image (not HTML). Use a CLI tool like 'file' command to check the actual file format. Reading corrupted or non-image files (like GitHub's HTML 404 pages saved as .png) can cause "Could not process image" errors and may crash the AI solver process. If the file command shows "HTML" or "text", the download failed and you should retry or skip the image.
- When you need issue details, use gh issue view https://github.com/netkeep80/isocubic/issues/269.
- When you need related code, use gh search code --owner netkeep80 [keywords].
- When you need repo context, read files in your working directory.
- When you study related work, study the most recent related pull requests.
- When issue is not defined enough, write a comment to ask clarifying questions.
- When accessing GitHub Gists (especially private ones), use gh gist view command instead of direct URL fetching to ensure proper authentication.
- When you are fixing a bug, please make sure you first find the actual root cause, do as many experiments as needed.
- When you are fixing a bug and code does not have enough tracing/logs, add them and make sure they stay in the code, but are switched off by default.
- When you need comments on a pull request, note that GitHub has THREE different comment types with different API endpoints:
1. PR review comments (inline code comments): gh api repos/netkeep80/isocubic/pulls/270/comments --paginate
2. PR conversation comments (general discussion): gh api repos/netkeep80/isocubic/issues/270/comments --paginate
3. PR reviews (approve/request changes): gh api repos/netkeep80/isocubic/pulls/270/reviews --paginate
IMPORTANT: The command "gh pr view --json comments" ONLY returns conversation comments and misses review comments!
- When you need latest comments on issue, use gh api repos/netkeep80/isocubic/issues/269/comments --paginate.
Solution development and testing.
- When issue is solvable, implement code with tests.
- When implementing features, search for similar existing implementations in the codebase and use them as examples instead of implementing everything from scratch.
- When coding, each atomic step that can be useful by itself should be commited to the pull request's branch, meaning if work will be interrupted by any reason parts of solution will still be kept intact and safe in pull request.
- When you test:
start from testing of small functions using separate scripts;
write unit tests with mocks for easy and quick start.
- When you test integrations, use existing framework.
- When you test solution draft, include automated checks in pr.
- When issue is unclear, write comment on issue asking questions.
- When you encounter any problems that you unable to solve yourself (any human feedback or help), write a comment to the pull request asking for help.
- When you need human help, use gh pr comment 270 --body "your message" to comment on existing PR.
Preparing pull request.
- When you code, follow contributing guidelines.
- When you commit, write clear message.
- When you need examples of style, use gh pr list --repo netkeep80/isocubic --state merged --search [keywords].
- When you open pr, describe solution draft and include tests.
- When there is a package with version and GitHub Actions workflows for automatic release, update the version (or other necessary release trigger) in your pull request to prepare for next release.
- When you update existing pr 270, use gh pr edit to modify title and description.
- When you are about to commit or push code, ALWAYS run local CI checks first if they are available in contributing guidelines (like ruff check, mypy, eslint, etc.) to catch errors before pushing.
- When you finalize the pull request:
follow style from merged prs for code, title, and description,
make sure no uncommitted changes corresponding to the original requirements are left behind,
make sure the default branch is merged to the pull request's branch,
make sure all CI checks passing if they exist before you finish,
check for latest comments on the issue and pull request to ensure no recent feedback was missed,
double-check that all changes in the pull request answer to original requirements of the issue,
make sure no new new bugs are introduced in pull request by carefully reading gh pr diff,
make sure no previously existing features were removed without an explicit request from users via the issue description, issue comments, and/or pull request comments.
- When you finish implementation, use gh pr ready 270.
Workflow and collaboration.
- When you check branch, verify with git branch --show-current.
- When you push, push only to branch issue-269-5d06a50ee25a.
- When you finish, create a pull request from branch issue-269-5d06a50ee25a. (Note: PR 270 already exists, update it instead)
- When you organize workflow, use pull requests instead of direct merges to default branch (main or master).
- When you manage commits, preserve commit history for later analysis.
- When you contribute, keep repository history forward-moving with regular commits, pushes, and reverts if needed.
- When you face conflict that you cannot resolve yourself, ask for help.
- When you collaborate, respect branch protections by working only on issue-269-5d06a50ee25a.
- When you mention result, include pull request url or comment url.
- When you need to create pr, remember pr 270 already exists for this branch.
Self review.
- When you check your solution draft, run all tests locally.
- When you check your solution draft, verify git status shows a clean working tree with no uncommitted changes.
- When you compare with repo style, use gh pr diff [number].
- When you finalize, confirm code, tests, and description are consistent.
GitHub CLI command patterns.
- IMPORTANT: Always use --paginate flag when fetching lists from GitHub API to ensure all results are returned (GitHub returns max 30 per page by default).
- When listing PR review comments (inline code comments), use gh api repos/OWNER/REPO/pulls/NUMBER/comments --paginate.
- When listing PR conversation comments, use gh api repos/OWNER/REPO/issues/NUMBER/comments --paginate.
- When listing PR reviews, use gh api repos/OWNER/REPO/pulls/NUMBER/reviews --paginate.
- When listing issue comments, use gh api repos/OWNER/REPO/issues/NUMBER/comments --paginate.
- When adding PR comment, use gh pr comment NUMBER --body "text" --repo OWNER/REPO.
- When adding issue comment, use gh issue comment NUMBER --body "text" --repo OWNER/REPO.
- When viewing PR details, use gh pr view NUMBER --repo OWNER/REPO.
- When filtering with jq, use gh api repos/${owner}/${repo}/pulls/${prNumber}/comments --paginate --jq 'reverse | .[0:5]'.
Playwright MCP usage (browser automation via mcp__playwright__* tools).
- When you develop frontend web applications (HTML, CSS, JavaScript, React, Vue, Angular, etc.), use Playwright MCP tools to test the UI in a real browser.
- When WebFetch tool fails to retrieve expected content (e.g., returns empty content, JavaScript-rendered pages, or login-protected pages), use Playwright MCP tools (browser_navigate, browser_snapshot) as a fallback for web browsing.
- When you need to interact with dynamic web pages that require JavaScript execution, use Playwright MCP tools.
- When you need to visually verify how a web page looks or take screenshots, use browser_take_screenshot from Playwright MCP.
- When you need to fill forms, click buttons, or perform user interactions on web pages, use Playwright MCP tools (browser_click, browser_type, browser_fill_form).
- When you need to test responsive design or different viewport sizes, use browser_resize from Playwright MCP.
- When you finish using the browser, always close it with browser_close to free resources.
Visual UI work and screenshots.
- When you work on visual UI changes (frontend, CSS, HTML, design), include a render or screenshot of the final result in the pull request description.
- When you need to show visual results, take a screenshot and save it to the repository (e.g., in a docs/screenshots/ or assets/ folder).
- When you save screenshots to the repository, use permanent raw file links in the pull request description markdown (e.g., https://raw.githubusercontent.com/netkeep80/isocubic/issue-269-5d06a50ee25a/docs/screenshots/result.png).
- When uploading images, commit them to the branch first, then reference them using the raw GitHub URL format.
- When the visual result is important for review, mention it explicitly in the pull request description with the embedded image.
[2026-02-06T17:21:04.986Z] [INFO] ---END SYSTEM PROMPT---
[2026-02-06T17:21:04.986Z] [INFO]
[2026-02-06T17:21:04.987Z] [INFO] 📊 CLAUDE_CODE_MAX_OUTPUT_TOKENS: 128000
[2026-02-06T17:21:04.987Z] [INFO] 📊 MCP_TIMEOUT: 900000ms (server startup)
[2026-02-06T17:21:04.987Z] [INFO] 📊 MCP_TOOL_TIMEOUT: 900000ms (tool execution)
[2026-02-06T17:21:04.988Z] [INFO] 📋 Command details:
[2026-02-06T17:21:04.988Z] [INFO] 📂 Working directory: /tmp/gh-issue-solver-1770398441546
[2026-02-06T17:21:04.988Z] [INFO] 🌿 Branch: issue-269-5d06a50ee25a
[2026-02-06T17:21:04.988Z] [INFO] 🤖 Model: Claude OPUS
[2026-02-06T17:21:04.988Z] [INFO] 🍴 Fork: konard/netkeep80-isocubic
[2026-02-06T17:21:04.988Z] [INFO]
▶️ Streaming output:
[2026-02-06T17:21:07.483Z] [INFO] {
"type": "system",
"subtype": "init",
"cwd": "/tmp/gh-issue-solver-1770398441546",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"tools": [
"Task",
"TaskOutput",
"Bash",
"Glob",
"Grep",
"ExitPlanMode",
"Read",
"Edit",
"Write",
"NotebookEdit",
"WebFetch",
"TodoWrite",
"WebSearch",
"TaskStop",
"AskUserQuestion",
"Skill",
"EnterPlanMode",
"ToolSearch",
"mcp__playwright__browser_close",
"mcp__playwright__browser_resize",
"mcp__playwright__browser_console_messages",
"mcp__playwright__browser_handle_dialog",
"mcp__playwright__browser_evaluate",
"mcp__playwright__browser_file_upload",
"mcp__playwright__browser_fill_form",
"mcp__playwright__browser_install",
"mcp__playwright__browser_press_key",
"mcp__playwright__browser_type",
"mcp__playwright__browser_navigate",
"mcp__playwright__browser_navigate_back",
"mcp__playwright__browser_network_requests",
"mcp__playwright__browser_run_code",
"mcp__playwright__browser_take_screenshot",
"mcp__playwright__browser_snapshot",
"mcp__playwright__browser_click",
"mcp__playwright__browser_drag",
"mcp__playwright__browser_hover",
"mcp__playwright__browser_select_option",
"mcp__playwright__browser_tabs",
"mcp__playwright__browser_wait_for"
],
"mcp_servers": [
{
"name": "playwright",
"status": "connected"
}
],
"model": "claude-opus-4-6",
"permissionMode": "bypassPermissions",
"slash_commands": [
"keybindings-help",
"debug",
"compact",
"context",
"cost",
"init",
"pr-comments",
"release-notes",
"review",
"security-review",
"insights"
],
"apiKeySource": "none",
"claude_code_version": "2.1.33",
"output_style": "default",
"agents": [
"Bash",
"general-purpose",
"statusline-setup",
"Explore",
"Plan"
],
"skills": [
"keybindings-help",
"debug"
],
"plugins": [],
"uuid": "57a26fb3-343f-4135-ab6d-9364cf8ed84e"
}
[2026-02-06T17:21:07.484Z] [INFO] 📌 Session ID: cc8a3d02-3872-415e-b0af-91bf8cc77c67
[2026-02-06T17:21:07.488Z] [INFO] 📁 Log renamed to: /home/hive/cc8a3d02-3872-415e-b0af-91bf8cc77c67.log
[2026-02-06T17:21:10.524Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01JHybXTkk7orw2vLusjbEtr",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "\n\nI'll start by reading the issue details and understanding the codebase. Let me gather all the necessary information first."
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 2,
"cache_creation_input_tokens": 7243,
"cache_read_input_tokens": 18845,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 7243
},
"output_tokens": 2,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "4f94bbce-f40e-431d-b710-37427d13f9ad"
}
[2026-02-06T17:21:11.430Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01JHybXTkk7orw2vLusjbEtr",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01X8n8YNYm1rHppi3eZw4hTC",
"name": "Bash",
"input": {
"command": "gh issue view https://github.com/netkeep80/isocubic/issues/269 2>&1",
"description": "View issue details"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 2,
"cache_creation_input_tokens": 7243,
"cache_read_input_tokens": 18845,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 7243
},
"output_tokens": 2,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "48ca2c25-397a-4958-bee3-8870cdedea22"
}
[2026-02-06T17:21:12.093Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01JHybXTkk7orw2vLusjbEtr",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_013WgbiW6QfDRUh7a7oWbGWX",
"name": "Bash",
"input": {
"command": "gh pr view 270 --repo netkeep80/isocubic 2>&1",
"description": "View existing PR details"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 2,
"cache_creation_input_tokens": 7243,
"cache_read_input_tokens": 18845,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 7243
},
"output_tokens": 2,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "6b0ff084-f181-49ab-b6ef-98f7f0cb39e2"
}
[2026-02-06T17:21:12.676Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01JHybXTkk7orw2vLusjbEtr",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01444uXXR25LYHXN28exVyHu",
"name": "Bash",
"input": {
"command": "git branch --show-current && git log --oneline -10",
"description": "Check current branch and recent commits"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 2,
"cache_creation_input_tokens": 7243,
"cache_read_input_tokens": 18845,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 7243
},
"output_tokens": 2,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "7846350b-bbfe-4f6b-8175-c7b5f050f253"
}
[2026-02-06T17:21:13.163Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01X8n8YNYm1rHppi3eZw4hTC",
"type": "tool_result",
"content": "title:\tОкно/таб соцсетей галереей сообщества отображается некорректно\n\nstate:\tOPEN\nauthor:\tnetkeep80\nlabels:\t\ncomments:\t0\nassignees:\t\nprojects:\t\nmilestone:\t\nnumber:\t269\n--\n![Screenshot_2026-02-06-20-17-22-86_21da60175e70af211acc4f26191b7a77.jpg](https://github.com/user-attachments/assets/b25763b8-3d1f-41bd-ba1b-529ca0808d2a)",
"is_error": false
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "a6d76992-b386-477e-a8e9-9f0de49ac0ea",
"tool_use_result": {
"stdout": "title:\tОкно/таб соцсетей галереей сообщества отображается некорректно\n\nstate:\tOPEN\nauthor:\tnetkeep80\nlabels:\t\ncomments:\t0\nassignees:\t\nprojects:\t\nmilestone:\t\nnumber:\t269\n--\n![Screenshot_2026-02-06-20-17-22-86_21da60175e70af211acc4f26191b7a77.jpg](https://github.com/user-attachments/assets/b25763b8-3d1f-41bd-ba1b-529ca0808d2a)",
"stderr": "",
"interrupted": false,
"isImage": false
}
}
[2026-02-06T17:21:14.970Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_013WgbiW6QfDRUh7a7oWbGWX",
"type": "tool_result",
"content": "title:\t[WIP] Окно/таб соцсетей галереей сообщества отображается некорректно\nstate:\tDRAFT\nauthor:\tkonard\nlabels:\t\nassignees:\t\nreviewers:\t\nprojects:\t\nmilestone:\t\nnumber:\t270\nurl:\thttps://github.com/netkeep80/isocubic/pull/270\nadditions:\t7\ndeletions:\t0\nauto-merge:\tdisabled\n--\n## 🤖 AI-Powered Solution Draft\n\nThis pull request is being automatically generated to solve issue netkeep80/isocubic#269.\n\n### 📋 Issue Reference\nFixes netkeep80/isocubic#269\n\n### 🚧 Status\n**Work in Progress** - The AI assistant is currently analyzing and implementing the solution draft.\n\n### 📝 Implementation Details\n_Details will be added as the solution draft is developed..._\n\n---\n*This PR was created automatically by the AI issue solver*",
"is_error": false
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "ce67932d-d206-41b2-8bf3-2457633a5e0e",
"tool_use_result": {
"stdout": "title:\t[WIP] Окно/таб соцсетей галереей сообщества отображается некорректно\nstate:\tDRAFT\nauthor:\tkonard\nlabels:\t\nassignees:\t\nreviewers:\t\nprojects:\t\nmilestone:\t\nnumber:\t270\nurl:\thttps://github.com/netkeep80/isocubic/pull/270\nadditions:\t7\ndeletions:\t0\nauto-merge:\tdisabled\n--\n## 🤖 AI-Powered Solution Draft\n\nThis pull request is being automatically generated to solve issue netkeep80/isocubic#269.\n\n### 📋 Issue Reference\nFixes netkeep80/isocubic#269\n\n### 🚧 Status\n**Work in Progress** - The AI assistant is currently analyzing and implementing the solution draft.\n\n### 📝 Implementation Details\n_Details will be added as the solution draft is developed..._\n\n---\n*This PR was created automatically by the AI issue solver*",
"stderr": "",
"interrupted": false,
"isImage": false
}
}
[2026-02-06T17:21:15.047Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01444uXXR25LYHXN28exVyHu",
"type": "tool_result",
"content": "issue-269-5d06a50ee25a\n7dbb4de Initial commit with task details\n85db0cd Merge pull request #267 from konard/issue-266-1aeb1ec4d873\n38e0074 Revert \"Initial commit with task details\"\na2f1261 Fix UnifiedEditor prop binding: use :current-cube instead of :cube\n318349d Initial commit with task details\ndb989fc Merge pull request #265 from konard/issue-264-285bb69fba25\n40cdfaa Revert \"Initial commit with task details\"\n11c5e23 Analyze MetaMode implementation and fix identified issues\ncea9b87 Initial commit with task details\n0cfde66 Update metamode.json",
"is_error": false
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "8846351a-6517-48ae-aeb2-0131b066b224",
"tool_use_result": {
"stdout": "issue-269-5d06a50ee25a\n7dbb4de Initial commit with task details\n85db0cd Merge pull request #267 from konard/issue-266-1aeb1ec4d873\n38e0074 Revert \"Initial commit with task details\"\na2f1261 Fix UnifiedEditor prop binding: use :current-cube instead of :cube\n318349d Initial commit with task details\ndb989fc Merge pull request #265 from konard/issue-264-285bb69fba25\n40cdfaa Revert \"Initial commit with task details\"\n11c5e23 Analyze MetaMode implementation and fix identified issues\ncea9b87 Initial commit with task details\n0cfde66 Update metamode.json",
"stderr": "",
"interrupted": false,
"isImage": false
}
}
[2026-02-06T17:21:17.993Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_015CVWezU3ozrhQcJvkDG2Tu",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "The issue title translates to \"The social media window/tab of the community gallery displays incorrectly\" and includes a screenshot. Let me download and view the screenshot, and then explore the codebase."
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 916,
"cache_read_input_tokens": 26088,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 916
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "7054e459-0ae1-44da-bb51-ef29023da9d9"
}
[2026-02-06T17:21:21.384Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_015CVWezU3ozrhQcJvkDG2Tu",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_011CNVL8RjNoxE51NRn4zhbn",
"name": "Bash",
"input": {
"command": "curl -sL -o /tmp/claude-1000/-tmp-gh-issue-solver-1770398441546/cc8a3d02-3872-415e-b0af-91bf8cc77c67/scratchpad/issue-screenshot.jpg \"https://github.com/user-attachments/assets/b25763b8-3d1f-41bd-ba1b-529ca0808d2a\" 2>&1 && file /tmp/claude-1000/-tmp-gh-issue-solver-1770398441546/cc8a3d02-3872-415e-b0af-91bf8cc77c67/scratchpad/issue-screenshot.jpg",
"description": "Download issue screenshot"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 916,
"cache_read_input_tokens": 26088,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 916
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "6b1517fc-3553-456b-b1f5-25c0bd85ff0c"
}
[2026-02-06T17:21:25.995Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_011CNVL8RjNoxE51NRn4zhbn",
"type": "tool_result",
"content": "/tmp/claude-1000/-tmp-gh-issue-solver-1770398441546/cc8a3d02-3872-415e-b0af-91bf8cc77c67/scratchpad/issue-screenshot.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 1080x2392, components 3",
"is_error": false
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "6c8eec9b-6950-4202-95a4-8642c74eed35",
"tool_use_result": {
"stdout": "/tmp/claude-1000/-tmp-gh-issue-solver-1770398441546/cc8a3d02-3872-415e-b0af-91bf8cc77c67/scratchpad/issue-screenshot.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 1080x2392, components 3",
"stderr": "",
"interrupted": false,
"isImage": false
}
}
[2026-02-06T17:21:26.221Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_015CVWezU3ozrhQcJvkDG2Tu",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"name": "Task",
"input": {
"description": "Explore codebase structure",
"prompt": "Explore the codebase at /tmp/gh-issue-solver-1770398441546 thoroughly. I need to understand:\n1. What kind of project this is (framework, language, structure)\n2. Find all files related to \"social media\", \"gallery\", \"community\", \"socials\", \"tabs\" - anything that might relate to a social media tab/window in a community gallery\n3. Find any Vue/React/UI component files that handle tab-based layouts\n4. Look at the project's package.json or similar config files\n5. List the directory structure\n\nBe very thorough - search for keywords in Russian too (соцсет, галере, сообществ, табл, вкладк)",
"subagent_type": "Explore"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 916,
"cache_read_input_tokens": 26088,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 916
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "f73be0ba-7b5c-4318-bb86-886c8dcd3490"
}
[2026-02-06T17:21:26.239Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"type": "text",
"text": "Explore the codebase at /tmp/gh-issue-solver-1770398441546 thoroughly. I need to understand:\n1. What kind of project this is (framework, language, structure)\n2. Find all files related to \"social media\", \"gallery\", \"community\", \"socials\", \"tabs\" - anything that might relate to a social media tab/window in a community gallery\n3. Find any Vue/React/UI component files that handle tab-based layouts\n4. Look at the project's package.json or similar config files\n5. List the directory structure\n\nBe very thorough - search for keywords in Russian too (соцсет, галере, сообществ, табл, вкладк)"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "beefc361-adc2-48b0-9d33-a28ad3d851ac"
}
[2026-02-06T17:21:27.619Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01AqaTjU3YnABrW7EGEVKncH",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01VCjHBQy1Va4ZaP5Gk59Ykq",
"name": "Bash",
"input": {
"command": "find /tmp/gh-issue-solver-1770398441546 -type f -name \"*.json\" | head -20",
"description": "Find JSON config files in the project"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 3,
"cache_creation_input_tokens": 1644,
"cache_read_input_tokens": 12793,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1644
},
"output_tokens": 3,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "ec70cd1c-e7a0-4b13-8f44-a6c0b6577407"
}
[2026-02-06T17:21:27.771Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01VCjHBQy1Va4ZaP5Gk59Ykq",
"type": "tool_result",
"content": "/tmp/gh-issue-solver-1770398441546/tsconfig.json\n/tmp/gh-issue-solver-1770398441546/metamode.json\n/tmp/gh-issue-solver-1770398441546/metamode.schema.json\n/tmp/gh-issue-solver-1770398441546/package.json\n/tmp/gh-issue-solver-1770398441546/wasm-fft/metamode.json\n/tmp/gh-issue-solver-1770398441546/wasm-fft/src/metamode.json\n/tmp/gh-issue-solver-1770398441546/package-lock.json\n/tmp/gh-issue-solver-1770398441546/tsconfig.node.json\n/tmp/gh-issue-solver-1770398441546/scripts/metamode.json\n/tmp/gh-issue-solver-1770398441546/docs/metamode.json\n/tmp/gh-issue-solver-1770398441546/server/tsconfig.json\n/tmp/gh-issue-solver-1770398441546/server/metamode.json\n/tmp/gh-issue-solver-1770398441546/server/package.json\n/tmp/gh-issue-solver-1770398441546/server/package-lock.json\n/tmp/gh-issue-solver-1770398441546/server/src/metamode.json\n/tmp/gh-issue-solver-1770398441546/experiments/metamode.json\n/tmp/gh-issue-solver-1770398441546/metamode-compact.schema.json\n/tmp/gh-issue-solver-1770398441546/.github/metamode.json\n/tmp/gh-issue-solver-1770398441546/.github/workflows/metamode.json\n/tmp/gh-issue-solver-1770398441546/.github/issue-attachments/metamode.json",
"is_error": false
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "a60e6ebc-47d6-4968-8f83-9b8b34666112"
}
[2026-02-06T17:21:27.923Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01AqaTjU3YnABrW7EGEVKncH",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_016Fsu79zGAv4B3khcueriXh",
"name": "Bash",
"input": {
"command": "ls -la /tmp/gh-issue-solver-1770398441546/",
"description": "List root directory contents"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 3,
"cache_creation_input_tokens": 1644,
"cache_read_input_tokens": 12793,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1644
},
"output_tokens": 3,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "3c0fc9a2-ce03-43f2-88c8-c2fc3d72e3b9"
}
[2026-02-06T17:21:28.011Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_016Fsu79zGAv4B3khcueriXh",
"type": "tool_result",
"content": "total 636\ndrwxrwxr-x 13 hive hive 4096 Feb 6 18:20 .\ndrwxrwxrwt 196 root root 20480 Feb 6 18:21 ..\ndrwxrwxr-x 8 hive hive 4096 Feb 6 18:21 .git\ndrwxrwxr-x 4 hive hive 4096 Feb 6 18:20 .github\n-rw-rw-r-- 1 hive hive 429 Feb 6 18:20 .gitignore\n-rw-rw-r-- 1 hive hive 107 Feb 6 18:20 .prettierrc\n-rw-rw-r-- 1 hive hive 28064 Feb 6 18:20 ANALYSIS.md\n-rw-rw-r-- 1 hive hive 289 Feb 6 18:20 CLAUDE.md\n-rw-rw-r-- 1 hive hive 1211 Feb 6 18:20 LICENSE\n-rw-rw-r-- 1 hive hive 30933 Feb 6 18:20 README.md\n-rw-rw-r-- 1 hive hive 117385 Feb 6 18:20 description.md\ndrwxrwxr-x 2 hive hive 4096 Feb 6 18:20 docs\n-rw-rw-r-- 1 hive hive 3414 Feb 6 18:20 env.d.ts\n-rw-rw-r-- 1 hive hive 1116 Feb 6 18:20 eslint.config.js\ndrwxrwxr-x 2 hive hive 4096 Feb 6 18:20 examples\ndrwxrwxr-x 2 hive hive 4096 Feb 6 18:20 experiments\n-rw-rw-r-- 1 hive hive 2607 Feb 6 18:20 index.html\n-rw-rw-r-- 1 hive hive 3443 Feb 6 18:20 metamode-compact.schema.json\n-rw-rw-r-- 1 hive hive 3367 Feb 6 18:20 metamode.json\n-rw-rw-r-- 1 hive hive 22873 Feb 6 18:20 metamode.md\n-rw-rw-r-- 1 hive hive 3037 Feb 6 18:20 metamode.schema.json\n-rw-rw-r-- 1 hive hive 307571 Feb 6 18:20 package-lock.json\n-rw-rw-r-- 1 hive hive 2127 Feb 6 18:20 package.json\ndrwxrwxr-x 3 hive hive 4096 Feb 6 18:20 packages\ndrwxrwxr-x 5 hive hive 4096 Feb 6 18:20 public\ndrwxrwxr-x 2 hive hive 4096 Feb 6 18:20 scripts\ndrwxrwxr-x 3 hive hive 4096 Feb 6 18:20 server\ndrwxrwxr-x 10 hive hive 4096 Feb 6 18:20 src\n-rw-rw-r-- 1 hive hive 857 Feb 6 18:20 tsconfig.app.json\n-rw-rw-r-- 1 hive hive 107 Feb 6 18:20 tsconfig.json\n-rw-rw-r-- 1 hive hive 653 Feb 6 18:20 tsconfig.node.json\n-rw-rw-r-- 1 hive hive 870 Feb 6 18:20 vite.config.ts\ndrwxrwxr-x 3 hive hive 4096 Feb 6 18:20 wasm-fft",
"is_error": false
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "7c9ca3c9-84a7-400d-be81-86c3438686d5"
}
[2026-02-06T17:21:29.316Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01RddYzRJunAXtEo9VnTPVAc",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_0184Q3hRtsxpjV4yTbj2rs7B",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/package.json"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 1813,
"cache_read_input_tokens": 14437,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1813
},
"output_tokens": 6,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "b95e3f54-6593-466d-b1d8-cd3ed9655dc1"
}
[2026-02-06T17:21:29.320Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_0184Q3hRtsxpjV4yTbj2rs7B",
"type": "tool_result",
"content": " 1→{\n 2→ \"name\": \"isocubic\",\n 3→ \"private\": true,\n 4→ \"version\": \"0.1.0\",\n 5→ \"type\": \"module\",\n 6→ \"scripts\": {\n 7→ \"dev\": \"vite\",\n 8→ \"build\": \"vue-tsc --noEmit && vite build\",\n 9→ \"lint\": \"eslint .\",\n 10→ \"lint:fix\": \"eslint . --fix\",\n 11→ \"format\": \"prettier --write \\\"src/**/*.{ts,tsx,vue,js,jsx,json,css}\\\" \\\"*.{ts,js,json}\\\"\",\n 12→ \"format:check\": \"prettier --check \\\"src/**/*.{ts,tsx,vue,js,jsx,json,css}\\\" \\\"*.{ts,js,json}\\\"\",\n 13→ \"typecheck\": \"vue-tsc --noEmit\",\n 14→ \"preview\": \"vite preview\",\n 15→ \"test\": \"vitest\",\n 16→ \"test:run\": \"vitest run\",\n 17→ \"test:coverage\": \"vitest run --coverage\",\n 18→ \"metamode:validate\": \"tsx scripts/metamode-preprocessor.ts --check\",\n 19→ \"metamode:validate:verbose\": \"tsx scripts/metamode-preprocessor.ts --check --verbose\",\n 20→ \"metamode:compile\": \"tsx scripts/metamode-preprocessor.ts --compile\",\n 21→ \"metamode:ai\": \"tsx scripts/metamode-preprocessor.ts --ai\",\n 22→ \"metamode:ai:analyze\": \"tsx scripts/metamode-ai-optimizer.ts --analyze\",\n 23→ \"check:all\": \"npm run lint && npm run typecheck && npm run format:check && npm run metamode:validate && npm run test:run\"\n 24→ },\n 25→ \"dependencies\": {\n 26→ \"@tresjs/cientos\": \"^5.2.5\",\n 27→ \"@tresjs/core\": \"^5.3.3\",\n 28→ \"ajv\": \"^8.17.1\",\n 29→ \"ajv-formats\": \"^3.0.1\",\n 30→ \"pinia\": \"^3.0.2\",\n 31→ \"three\": \"^0.182.0\",\n 32→ \"vue\": \"^3.5.13\"\n 33→ },\n 34→ \"devDependencies\": {\n 35→ \"@eslint/js\": \"^9.39.1\",\n 36→ \"@tailwindcss/vite\": \"^4.1.18\",\n 37→ \"@testing-library/jest-dom\": \"^6.9.1\",\n 38→ \"@testing-library/vue\": \"^8.1.0\",\n 39→ \"@types/node\": \"^24.10.1\",\n 40→ \"@types/three\": \"^0.182.0\",\n 41→ \"@vitejs/plugin-vue\": \"^6.0.3\",\n 42→ \"@vitest/coverage-v8\": \"^3.2.4\",\n 43→ \"@vue/compiler-dom\": \"^3.5.27\",\n 44→ \"@vue/server-renderer\": \"^3.5.27\",\n 45→ \"@vue/test-utils\": \"^2.4.6\",\n 46→ \"eslint\": \"^9.39.1\",\n 47→ \"eslint-config-prettier\": \"^10.1.8\",\n 48→ \"eslint-plugin-prettier\": \"^5.5.5\",\n 49→ \"eslint-plugin-vue\": \"^10.7.0\",\n 50→ \"globals\": \"^16.5.0\",\n 51→ \"jsdom\": \"^27.4.0\",\n 52→ \"prettier\": \"^3.8.1\",\n 53→ \"tailwindcss\": \"^4.1.18\",\n 54→ \"tsx\": \"^4.21.0\",\n 55→ \"typescript\": \"~5.9.3\",\n 56→ \"typescript-eslint\": \"^8.46.4\",\n 57→ \"vite\": \"^7.2.4\",\n 58→ \"vitest\": \"^3.1.4\",\n 59→ \"vue-tsc\": \"^2.2.8\"\n 60→ }\n 61→}\n 62→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "94b140bc-b52d-4b23-8d61-df5edc65fe4b"
}
[2026-02-06T17:21:29.657Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01RddYzRJunAXtEo9VnTPVAc",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01RFXZjsyMtsSSC32Jgh8qHx",
"name": "Bash",
"input": {
"command": "ls -la /tmp/gh-issue-solver-1770398441546/src/",
"description": "List src directory structure"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 1813,
"cache_read_input_tokens": 14437,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1813
},
"output_tokens": 6,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "b5f4838a-7cd2-4159-9d8a-52200b0973b0"
}
[2026-02-06T17:21:29.755Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01RFXZjsyMtsSSC32Jgh8qHx",
"type": "tool_result",
"content": "total 188\ndrwxrwxr-x 10 hive hive 4096 Feb 6 18:20 .\ndrwxrwxr-x 13 hive hive 4096 Feb 6 18:20 ..\n-rw-rw-r-- 1 hive hive 92420 Feb 6 18:20 App.css\n-rw-rw-r-- 1 hive hive 26548 Feb 6 18:20 App.vue\n-rw-rw-r-- 1 hive hive 11143 Feb 6 18:20 App.vue.test.ts\ndrwxrwxr-x 3 hive hive 4096 Feb 6 18:20 components\ndrwxrwxr-x 2 hive hive 4096 Feb 6 18:20 composables\ndrwxrwxr-x 2 hive hive 4096 Feb 6 18:20 e2e\n-rw-rw-r-- 1 hive hive 1185 Feb 6 18:20 index.css\ndrwxrwxr-x 2 hive hive 4096 Feb 6 18:20 lib\n-rw-rw-r-- 1 hive hive 208 Feb 6 18:20 main.ts\n-rw-rw-r-- 1 hive hive 1791 Feb 6 18:20 metamode.json\ndrwxrwxr-x 2 hive hive 4096 Feb 6 18:20 shaders\ndrwxrwxr-x 2 hive hive 4096 Feb 6 18:20 store\ndrwxrwxr-x 2 hive hive 4096 Feb 6 18:20 test\ndrwxrwxr-x 2 hive hive 4096 Feb 6 18:20 types\n-rw-rw-r-- 1 hive hive 38 Feb 6 18:20 vite-env.d.ts",
"is_error": false
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "ffcf00bd-9e4c-496e-8241-8175c152d007"
}
[2026-02-06T17:21:31.258Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01JExARcVDkxXCWVKMxhsyNA",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01UXHmiusG9KjD21Qkr2sAAd",
"name": "Glob",
"input": {
"pattern": "/tmp/gh-issue-solver-1770398441546/**/*.vue"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 1985,
"cache_read_input_tokens": 16250,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1985
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "f6f456d1-ebf6-462c-8e0a-338396e38369"
}
[2026-02-06T17:21:31.442Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01UXHmiusG9KjD21Qkr2sAAd",
"type": "tool_result",
"content": "/tmp/gh-issue-solver-1770398441546/packages/metamode/examples/basic-usage.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CollaborativeParamEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ActionHistory.vue\n/tmp/gh-issue-solver-1770398441546/src/components/AnnotationCanvas.vue\n/tmp/gh-issue-solver-1770398441546/src/components/AuthForms.vue\n/tmp/gh-issue-solver-1770398441546/src/App.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ComponentContextPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CommentsSection.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CommandBar.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CommunityGallery.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ComponentInfo.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ConversationPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CubeGrid.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CubePreview.vue\n/tmp/gh-issue-solver-1770398441546/src/components/EnergyCube.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CubeStack.vue\n/tmp/gh-issue-solver-1770398441546/src/components/DraggableWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ExportPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/EnergyVisualizationEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CubeStackGrid.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ExtendedSearchPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/FFTChannelEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/FFTParamEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/LODStatisticsDisplay.vue\n/tmp/gh-issue-solver-1770398441546/src/components/LODCubeGrid.vue\n/tmp/gh-issue-solver-1770398441546/src/components/IssueDraftPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/GitHubAuthButton.vue\n/tmp/gh-issue-solver-1770398441546/src/components/Gallery.vue\n/tmp/gh-issue-solver-1770398441546/src/components/LODConfigEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetamodeTreePanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ParamEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeQueryPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/NotificationPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeIndicator.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetamodeTreeNode.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MagicCubeDemo.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ParticipantCursor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/SharePanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/PromptGenerator.vue\n/tmp/gh-issue-solver-1770398441546/src/components/SessionPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ParametricCube.vue\n/tmp/gh-issue-solver-1770398441546/src/components/StackPresetPicker.vue\n/tmp/gh-issue-solver-1770398441546/src/components/StackEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/SubscriptionButton.vue\n/tmp/gh-issue-solver-1770398441546/src/components/UnifiedEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/UserProfile.vue\n/tmp/gh-issue-solver-1770398441546/src/components/WindowTaskbar.vue\n/tmp/gh-issue-solver-1770398441546/src/components/windows/ExtendedSearchPanelWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/windows/CubePreviewWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/windows/CommunityGalleryWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/windows/ActionHistoryWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/windows/UnifiedEditorWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/windows/ConversationPanelWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/windows/PromptGeneratorWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/windows/SharePanelWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/windows/NotificationPanelWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/windows/ExportPanelWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/windows/GalleryWindow.vue"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "495d33ce-df10-4755-921f-8cd9531c959c"
}
[2026-02-06T17:21:31.451Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01JExARcVDkxXCWVKMxhsyNA",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_019wEa1aXdDRoVRwCdSDpeB6",
"name": "Glob",
"input": {
"pattern": "/tmp/gh-issue-solver-1770398441546/**/*.ts"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 1985,
"cache_read_input_tokens": 16250,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1985
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "89d136f2-a7d2-4277-91dd-906efbf708f7"
}
[2026-02-06T17:21:31.633Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_019wEa1aXdDRoVRwCdSDpeB6",
"type": "tool_result",
"content": "/tmp/gh-issue-solver-1770398441546/env.d.ts\n/tmp/gh-issue-solver-1770398441546/examples/metamode-usage.ts\n/tmp/gh-issue-solver-1770398441546/experiments/debug-test.ts\n/tmp/gh-issue-solver-1770398441546/packages/metamode/src/components/MetaModeProvider.ts\n/tmp/gh-issue-solver-1770398441546/packages/metamode/src/index.ts\n/tmp/gh-issue-solver-1770398441546/packages/metamode/src/types/common.ts\n/tmp/gh-issue-solver-1770398441546/packages/metamode/src/types/issue-generator.ts\n/tmp/gh-issue-solver-1770398441546/packages/metamode/src/types/metamode.ts\n/tmp/gh-issue-solver-1770398441546/packages/metamode/examples/advanced-usage.ts\n/tmp/gh-issue-solver-1770398441546/scripts/vite-plugin-metamode.ts\n/tmp/gh-issue-solver-1770398441546/scripts/metamode-preprocessor.ts\n/tmp/gh-issue-solver-1770398441546/scripts/metamode-inline-extractor.ts\n/tmp/gh-issue-solver-1770398441546/scripts/metamode-ai-optimizer.ts\n/tmp/gh-issue-solver-1770398441546/scripts/metamode-shared.ts\n/tmp/gh-issue-solver-1770398441546/server/vitest.config.ts\n/tmp/gh-issue-solver-1770398441546/server/src/auth.test.ts\n/tmp/gh-issue-solver-1770398441546/server/src/http-server.ts\n/tmp/gh-issue-solver-1770398441546/server/src/types.ts\n/tmp/gh-issue-solver-1770398441546/server/src/session-store.test.ts\n/tmp/gh-issue-solver-1770398441546/server/src/index.ts\n/tmp/gh-issue-solver-1770398441546/server/src/auth.ts\n/tmp/gh-issue-solver-1770398441546/server/src/session-store.ts\n/tmp/gh-issue-solver-1770398441546/server/src/websocket-server.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ActionHistory.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/AnnotationCanvas.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/AuthForms.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/App.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CommandBar.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CommandBar.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CommunityGallery.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CommentsSection.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CollaborativeParamEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ComponentContextPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ConversationPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CubePreview.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CubeGrid.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ComponentInfo.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/DraggableWindow.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/EnergyCube.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/EnergyVisualizationEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ExportPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CubeStack.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/DraggableWindow.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/FFTChannelEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/FFTParamEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ExtendedSearchPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/IssueDraftPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/GitHubAuthButton.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/LODCubeGrid.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/LODStatisticsDisplay.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/Gallery.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/LODConfigEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeWindow.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ParamEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/MagicCubeDemo.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeProvider.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/NotificationPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeQueryPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ParametricCube.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/PromptGenerator.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/SharePanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/SessionPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ParticipantCursor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/UnifiedEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/StackEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/SubscriptionButton.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/StackPresetPicker.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/WindowTaskbar.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/WindowTaskbar.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/UserProfile.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/windows/UnifiedEditorWindow.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/windows/PromptGeneratorWindow.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/windows/CubePreviewWindow.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/windows/SharePanelWindow.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/windows/CommunityGalleryWindow.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/windows/ConversationPanelWindow.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/windows/GalleryWindow.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/windows/NotificationPanelWindow.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/windows/ExtendedSearchPanelWindow.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/windows/ExportPanelWindow.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/windows/ActionHistoryWindow.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/windows/test-utils.ts\n/tmp/gh-issue-solver-1770398441546/src/composables/useResponsiveLayout.test.ts\n/tmp/gh-issue-solver-1770398441546/src/composables/useTouchGestures.test.ts\n/tmp/gh-issue-solver-1770398441546/src/composables/useWindowManager.ts\n/tmp/gh-issue-solver-1770398441546/src/composables/useTouchGestures.ts\n/tmp/gh-issue-solver-1770398441546/src/composables/useWindowManager.test.ts\n/tmp/gh-issue-solver-1770398441546/src/composables/useLODStatistics.ts\n/tmp/gh-issue-solver-1770398441546/src/composables/useResponsiveLayout.ts\n/tmp/gh-issue-solver-1770398441546/src/composables/useCubeEditor.ts\n/tmp/gh-issue-solver-1770398441546/src/composables/useDeviceType.ts\n/tmp/gh-issue-solver-1770398441546/src/composables/useMetamodeDatabase.ts\n/tmp/gh-issue-solver-1770398441546/src/lib/ai-metadata-processor.test.ts\n/tmp/gh-issue-solver-1770398441546/src/e2e/responsive.e2e.test.ts\n/tmp/gh-issue-solver-1770398441546/src/e2e/command-bar.e2e.test.ts\n/tmp/gh-issue-solver-1770398441546/src/e2e/window-manager.e2e.test.ts\n/tmp/gh-issue-solver-1770398441546/src/e2e/workflow.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/lib/community-gallery.ts\n/tmp/gh-issue-solver-1770398441546/src/lib/auth.test.ts\n/tmp/gh-issue-solver-1770398441546/src/lib/command-macros.ts\n(Results are truncated. Consider using a more specific path or pattern.)"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "1a1ee2cf-cbc3-4039-8579-da9c447dae84"
}
[2026-02-06T17:21:31.682Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01JExARcVDkxXCWVKMxhsyNA",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01VC72vBerdwcsrhbnPKVfTH",
"name": "Glob",
"input": {
"pattern": "/tmp/gh-issue-solver-1770398441546/**/*.tsx"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 1985,
"cache_read_input_tokens": 16250,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1985
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "2aae7818-812a-4e9a-9bc9-0f3dac817ee9"
}
[2026-02-06T17:21:31.835Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01VC72vBerdwcsrhbnPKVfTH",
"type": "tool_result",
"content": "No files found"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "50927a4a-ceb7-4f55-a0fa-3137d438029f"
}
[2026-02-06T17:21:31.864Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01JExARcVDkxXCWVKMxhsyNA",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01RNdo1GgXwt8CuigcYv4iCB",
"name": "Glob",
"input": {
"pattern": "/tmp/gh-issue-solver-1770398441546/src/**"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 1985,
"cache_read_input_tokens": 16250,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1985
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "5bdce278-ac41-4310-b35c-19324fc4a5ab"
}
[2026-02-06T17:21:31.882Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01RNdo1GgXwt8CuigcYv4iCB",
"type": "tool_result",
"content": "/tmp/gh-issue-solver-1770398441546/src/App.css\n/tmp/gh-issue-solver-1770398441546/src/components/ActionHistory.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CollaborativeParamEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ActionHistory.vue\n/tmp/gh-issue-solver-1770398441546/src/components/AnnotationCanvas.vue\n/tmp/gh-issue-solver-1770398441546/src/components/.gitkeep\n/tmp/gh-issue-solver-1770398441546/src/components/AnnotationCanvas.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/AuthForms.vue\n/tmp/gh-issue-solver-1770398441546/src/components/AuthForms.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/App.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/App.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CommandBar.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CommandBar.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ComponentContextPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CommunityGallery.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CommentsSection.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CommentsSection.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CollaborativeParamEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ComponentContextPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CommandBar.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CommunityGallery.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ConversationPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ComponentInfo.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CubePreview.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ConversationPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CubeGrid.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CubeGrid.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CubePreview.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ComponentInfo.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/DraggableWindow.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/EnergyCube.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/EnergyVisualizationEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ExportPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/EnergyCube.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CubeStack.vue\n/tmp/gh-issue-solver-1770398441546/src/components/DraggableWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ExportPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CubeStack.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/EnergyVisualizationEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/DraggableWindow.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/CubeStackGrid.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ExtendedSearchPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/FFTChannelEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/FFTChannelEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/FFTParamEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/FFTParamEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ExtendedSearchPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/IssueDraftPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/LODStatisticsDisplay.vue\n/tmp/gh-issue-solver-1770398441546/src/components/LODCubeGrid.vue\n/tmp/gh-issue-solver-1770398441546/src/components/IssueDraftPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/GitHubAuthButton.vue\n/tmp/gh-issue-solver-1770398441546/src/components/GitHubAuthButton.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/LODCubeGrid.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/LODStatisticsDisplay.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/Gallery.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/Gallery.vue\n/tmp/gh-issue-solver-1770398441546/src/components/LODConfigEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/LODConfigEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/MetamodeTreePanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeWindow.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ParamEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeQueryPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ParamEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/MagicCubeDemo.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/NotificationPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeProvider.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeIndicator.vue\n/tmp/gh-issue-solver-1770398441546/src/components/NotificationPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeQueryPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/MetamodeTreeNode.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MagicCubeDemo.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ParametricCube.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ParticipantCursor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/PromptGenerator.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/SharePanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/SharePanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/SessionPanel.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/PromptGenerator.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ParticipantCursor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/SessionPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ParametricCube.vue\n/tmp/gh-issue-solver-1770398441546/src/components/StackPresetPicker.vue\n/tmp/gh-issue-solver-1770398441546/src/components/UnifiedEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/StackEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/SubscriptionButton.vue\n/tmp/gh-issue-solver-1770398441546/src/components/UnifiedEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/StackEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/SubscriptionButton.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/StackPresetPicker.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/WindowTaskbar.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/UserProfile.vue\n/tmp/gh-issue-solver-1770398441546/src/components/WindowTaskbar.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/metamode.json\n/tmp/gh-issue-solver-1770398441546/src/components/WindowTaskbar.vue\n/tmp/gh-issue-solver-1770398441546/src/components/UserProfile.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/windows/ExtendedSearchPanelWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/windows/CubePreviewWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/windows/CommunityGalleryWindow.vue\n(Results are truncated. Consider using a more specific path or pattern.)"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "cecd7309-b08a-4b1b-977e-748bc2d0fc7e"
}
[2026-02-06T17:21:33.693Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01QnCqnSqVP81Kdw7ZA2iAxe",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01U41vTQEQQusyxgGtFDQUqa",
"name": "Grep",
"input": {
"pattern": "social|socials|media|instagram|facebook|twitter|youtube",
"path": "/tmp/gh-issue-solver-1770398441546/src/components",
"output_mode": "files_with_matches"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 7766,
"cache_read_input_tokens": 18235,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 7766
},
"output_tokens": 6,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "07e48d65-433a-4303-91c1-da25c9032d54"
}
[2026-02-06T17:21:33.869Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01U41vTQEQQusyxgGtFDQUqa",
"type": "tool_result",
"content": "Found 10 files\nsrc/components/WindowTaskbar.vue\nsrc/components/StackPresetPicker.vue\nsrc/components/SubscriptionButton.vue\nsrc/components/SharePanel.vue\nsrc/components/NotificationPanel.vue\nsrc/components/DraggableWindow.vue\nsrc/components/EnergyCube.vue\nsrc/components/CommandBar.vue\nsrc/components/CommentsSection.vue\nsrc/components/CommunityGallery.vue"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "078268f8-e84f-4144-809d-42e69c2a7be5"
}
[2026-02-06T17:21:34.128Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01QnCqnSqVP81Kdw7ZA2iAxe",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01NCj9R7HMgBrSrnUP2ZEzNZ",
"name": "Grep",
"input": {
"pattern": "tab|вкладк|tabs",
"path": "/tmp/gh-issue-solver-1770398441546/src/components",
"output_mode": "files_with_matches"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 7766,
"cache_read_input_tokens": 18235,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 7766
},
"output_tokens": 6,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "5f41e588-32a2-43d3-821f-2455b2cbacfc"
}
[2026-02-06T17:21:34.543Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01NCj9R7HMgBrSrnUP2ZEzNZ",
"type": "tool_result",
"content": "Found 39 files\nsrc/components/UserProfile.vue.test.ts\nsrc/components/WindowTaskbar.vue\nsrc/components/StackEditor.vue\nsrc/components/StackEditor.vue.test.ts\nsrc/components/StackPresetPicker.vue\nsrc/components/StackPresetPicker.vue.test.ts\nsrc/components/SubscriptionButton.vue\nsrc/components/UnifiedEditor.vue\nsrc/components/UnifiedEditor.vue.test.ts\nsrc/components/PromptGenerator.vue\nsrc/components/SharePanel.vue\nsrc/components/MagicCubeDemo.vue\nsrc/components/MagicCubeDemo.vue.test.ts\nsrc/components/MetaModeProvider.test.ts\nsrc/components/MetaModeQueryPanel.vue\nsrc/components/MetaModeQueryPanel.vue.test.ts\nsrc/components/MetamodeTreePanel.vue\nsrc/components/MetaModeWindow.vue\nsrc/components/MetaModeWindow.vue.test.ts\nsrc/components/NotificationPanel.vue\nsrc/components/Gallery.vue\nsrc/components/ExtendedSearchPanel.vue\nsrc/components/ExtendedSearchPanel.vue.test.ts\nsrc/components/FFTChannelEditor.vue\nsrc/components/FFTChannelEditor.vue.test.ts\nsrc/components/FFTParamEditor.vue\nsrc/components/DraggableWindow.vue\nsrc/components/EnergyCube.vue.test.ts\nsrc/components/ExportPanel.vue\nsrc/components/ComponentInfo.vue\nsrc/components/ComponentInfo.vue.test.ts\nsrc/components/CubePreview.vue\nsrc/components/CommandBar.vue\nsrc/components/CommentsSection.vue\nsrc/components/CommunityGallery.vue\nsrc/components/ComponentContextPanel.vue\nsrc/components/ComponentContextPanel.vue.test.ts\nsrc/components/AuthForms.vue\nsrc/components/AuthForms.vue.test.ts"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "845524e0-82d0-439a-a13b-cbe848d31eb4"
}
[2026-02-06T17:21:34.757Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01QnCqnSqVP81Kdw7ZA2iAxe",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01HFJJzg7gZvG5ouybRdqQB1",
"name": "Grep",
"input": {
"pattern": "соцсет|галере|сообществ|табл|вкладк",
"path": "/tmp/gh-issue-solver-1770398441546/src",
"output_mode": "files_with_matches"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 7766,
"cache_read_input_tokens": 18235,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 7766
},
"output_tokens": 6,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "f0cf9672-1133-4fc6-8766-aac95d25c9a6"
}
[2026-02-06T17:21:34.782Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01HFJJzg7gZvG5ouybRdqQB1",
"type": "tool_result",
"content": "Found 5 files\nsrc/lib/tinyLLM.ts\nsrc/lib/extended-search.test.ts\nsrc/lib/extended-search.ts\nsrc/lib/ai-metadata-processor.ts\nsrc/lib/ai-metadata-processor.test.ts"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "43f04225-bc6b-4ac6-96ee-691afa86fadf"
}
[2026-02-06T17:21:36.105Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01NtH1QoENQSfHLigSchHkNJ",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_0169YFWLKux3ne7imTSgrEMT",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/components/CommunityGallery.vue"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 1134,
"cache_read_input_tokens": 26001,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1134
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "6e76178d-f642-433d-8e0a-2edc3eff4725"
}
[2026-02-06T17:21:36.108Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_0169YFWLKux3ne7imTSgrEMT",
"type": "tool_result",
"content": " 1→<!--\n 2→ Community Gallery Component (Vue 3.0 SFC)\n 3→ Displays published cubes from the community with search, filtering, and sorting\n 4→\n 5→ TASK 45: Initial implementation\n 6→ TASK 64: Migration from React to Vue 3.0 SFC (Phase 10)\n 7→\n 8→ Features:\n 9→ - Browse community-published cubes\n 10→ - Search by name, tags, author\n 11→ - Filter by category and material type\n 12→ - Sort by recent, popular, trending, etc.\n 13→ - Like/unlike cubes\n 14→ - Pagination support\n 15→-->\n 16→<script lang=\"ts\">\n 17→import type { ComponentMeta } from '../types/component-meta'\n 18→import { registerComponentMeta } from '../types/component-meta'\n 19→\n 20→/**\n 21→ * Component metadata for Developer Mode\n 22→ */\n 23→export const COMMUNITY_GALLERY_META: ComponentMeta = {\n 24→ id: 'community-gallery',\n 25→ name: 'CommunityGallery',\n 26→ version: '1.1.0',\n 27→ summary: 'Browse and interact with community-published cubes.',\n 28→ description:\n 29→ 'CommunityGallery is the public gallery for viewing cubes published by other users. ' +\n 30→ 'It provides search, filtering by category and material type, sorting options, and ' +\n 31→ 'social features like liking cubes. The component supports pagination for browsing ' +\n 32→ 'large collections efficiently.',\n 33→ phase: 7,\n 34→ taskId: 'TASK 45',\n 35→ filePath: 'components/CommunityGallery.vue',\n 36→ history: [\n 37→ {\n 38→ version: '1.0.0',\n 39→ date: '2026-01-29T22:00:00Z',\n 40→ description: 'Initial implementation with search, filter, sort, and like features',\n 41→ taskId: 'TASK 45',\n 42→ type: 'created',\n 43→ },\n 44→ {\n 45→ version: '1.1.0',\n 46→ date: '2026-01-31T00:00:00Z',\n 47→ description: 'Migrated from React to Vue 3.0 SFC',\n 48→ taskId: 'TASK 64',\n 49→ type: 'updated',\n 50→ },\n 51→ ],\n 52→ features: [\n 53→ {\n 54→ id: 'search',\n 55→ name: 'Search',\n 56→ description: 'Search cubes by name, tags, prompt, or author',\n 57→ enabled: true,\n 58→ taskId: 'TASK 45',\n 59→ },\n 60→ {\n 61→ id: 'filter-category',\n 62→ name: 'Category Filter',\n 63→ description: 'Filter by category (Nature, Building, Fantasy, etc.)',\n 64→ enabled: true,\n 65→ taskId: 'TASK 45',\n 66→ },\n 67→ {\n 68→ id: 'filter-material',\n 69→ name: 'Material Filter',\n 70→ description: 'Filter by material type (Stone, Wood, Metal, etc.)',\n 71→ enabled: true,\n 72→ taskId: 'TASK 45',\n 73→ },\n 74→ {\n 75→ id: 'sorting',\n 76→ name: 'Sorting',\n 77→ description: 'Sort by recent, popular, trending, downloads, views',\n 78→ enabled: true,\n 79→ taskId: 'TASK 45',\n 80→ },\n 81→ {\n 82→ id: 'likes',\n 83→ name: 'Like System',\n 84→ description: 'Like and unlike cubes with persisted state',\n 85→ enabled: true,\n 86→ taskId: 'TASK 45',\n 87→ },\n 88→ {\n 89→ id: 'pagination',\n 90→ name: 'Pagination',\n 91→ description: 'Navigate through pages of results',\n 92→ enabled: true,\n 93→ taskId: 'TASK 45',\n 94→ },\n 95→ ],\n 96→ dependencies: [\n 97→ {\n 98→ name: 'community-gallery',\n 99→ type: 'lib',\n 100→ path: 'lib/community-gallery.ts',\n 101→ purpose: 'API service for community cubes',\n 102→ },\n 103→ { name: 'community', type: 'lib', path: 'types/community.ts', purpose: 'Type definitions' },\n 104→ ],\n 105→ relatedFiles: [\n 106→ {\n 107→ path: 'components/CommunityGallery.vue.test.ts',\n 108→ type: 'test',\n 109→ description: 'Unit tests for CommunityGallery',\n 110→ },\n 111→ {\n 112→ path: 'lib/community-gallery.ts',\n 113→ type: 'util',\n 114→ description: 'Community gallery service',\n 115→ },\n 116→ { path: 'types/community.ts', type: 'type', description: 'Community types' },\n 117→ ],\n 118→ props: [\n 119→ {\n 120→ name: 'onCubeSelect',\n 121→ type: '(cube: SpectralCube) => void',\n 122→ required: false,\n 123→ description: 'Callback when a cube is selected for use',\n 124→ },\n 125→ {\n 126→ name: 'onCubePreview',\n 127→ type: '(cube: PublishedCube) => void',\n 128→ required: false,\n 129→ description: 'Callback to preview a cube details',\n 130→ },\n 131→ { name: 'className', type: 'string', required: false, description: 'Additional CSS class' },\n 132→ ],\n 133→ tips: [\n 134→ 'Use the search bar to find specific cubes by name or tags',\n 135→ 'Click the heart icon to like a cube and save it for later',\n 136→ 'Switch between sorting options to discover new and popular cubes',\n 137→ 'Filter by category to focus on specific types of materials',\n 138→ ],\n 139→ tags: ['community', 'gallery', 'social', 'search', 'filter', 'phase-7'],\n 140→ status: 'stable',\n 141→ lastUpdated: '2026-01-31T00:00:00Z',\n 142→}\n 143→\n 144→// Register metadata in the global registry\n 145→registerComponentMeta(COMMUNITY_GALLERY_META)\n 146→</script>\n 147→\n 148→<script setup lang=\"ts\">\n 149→import { ref, computed, watch } from 'vue'\n 150→import type { SpectralCube, MaterialType } from '../types/cube'\n 151→import type {\n 152→ PublishedCube,\n 153→ CommunityGallerySearchParams,\n 154→ CubeCategory,\n 155→ CommunitySortOption,\n 156→ PaginationMeta,\n 157→} from '../types/community'\n 158→import { CATEGORY_INFO, SORT_OPTION_INFO, formatCount } from '../types/community'\n 159→import { communityGalleryService } from '../lib/community-gallery'\n 160→\n 161→// ============================================================================\n 162→// Constants\n 163→// ============================================================================\n 164→\n 165→/** Material types with labels */\n 166→const MATERIAL_TYPES: { id: MaterialType | 'all'; label: string }[] = [\n 167→ { id: 'all', label: 'All Materials' },\n 168→ { id: 'stone', label: 'Stone' },\n 169→ { id: 'wood', label: 'Wood' },\n 170→ { id: 'metal', label: 'Metal' },\n 171→ { id: 'glass', label: 'Glass' },\n 172→ { id: 'crystal', label: 'Crystal' },\n 173→ { id: 'organic', label: 'Organic' },\n 174→ { id: 'liquid', label: 'Liquid' },\n 175→]\n 176→\n 177→/** Categories with labels */\n 178→const CATEGORIES: { id: CubeCategory | 'all'; label: string }[] = [\n 179→ { id: 'all', label: 'All Categories' },\n 180→ ...Object.entries(CATEGORY_INFO).map(([id, info]) => ({\n 181→ id: id as CubeCategory,\n 182→ label: info.label,\n 183→ })),\n 184→]\n 185→\n 186→/** Sort options with labels */\n 187→const SORT_OPTIONS: { id: CommunitySortOption; label: string }[] = Object.entries(\n 188→ SORT_OPTION_INFO\n 189→).map(([id, info]) => ({\n 190→ id: id as CommunitySortOption,\n 191→ label: info.label,\n 192→}))\n 193→\n 194→// ============================================================================\n 195→// Props\n 196→// ============================================================================\n 197→\n 198→interface CommunityGalleryProps {\n 199→ /** Custom class name */\n 200→ className?: string\n 201→}\n 202→\n 203→withDefaults(defineProps<CommunityGalleryProps>(), {\n 204→ className: '',\n 205→})\n 206→\n 207→const emit = defineEmits<{\n 208→ cubeSelect: [cube: SpectralCube]\n 209→ cubePreview: [cube: PublishedCube]\n 210→}>()\n 211→\n 212→// ============================================================================\n 213→// Helper Functions\n 214→// ============================================================================\n 215→\n 216→function colorToCSS(color: [number, number, number]): string {\n 217→ const r = Math.round(color[0] * 255)\n 218→ const g = Math.round(color[1] * 255)\n 219→ const b = Math.round(color[2] * 255)\n 220→ return `rgb(${r}, ${g}, ${b})`\n 221→}\n 222→\n 223→function generateCubeGradient(cube: SpectralCube): string {\n 224→ const baseColor = colorToCSS(cube.base.color)\n 225→\n 226→ if (!cube.gradients || cube.gradients.length === 0) {\n 227→ return baseColor\n 228→ }\n 229→\n 230→ const gradient = cube.gradients[0]\n 231→ const shift = gradient.color_shift\n 232→ const endColor = colorToCSS([\n 233→ Math.max(0, Math.min(1, cube.base.color[0] + shift[0] * gradient.factor)),\n 234→ Math.max(0, Math.min(1, cube.base.color[1] + shift[1] * gradient.factor)),\n 235→ Math.max(0, Math.min(1, cube.base.color[2] + shift[2] * gradient.factor)),\n 236→ ])\n 237→\n 238→ switch (gradient.axis) {\n 239→ case 'y':\n 240→ return `linear-gradient(to top, ${baseColor}, ${endColor})`\n 241→ case 'x':\n 242→ return `linear-gradient(to right, ${baseColor}, ${endColor})`\n 243→ case 'z':\n 244→ return `linear-gradient(135deg, ${baseColor}, ${endColor})`\n 245→ case 'radial':\n 246→ return `radial-gradient(circle, ${endColor}, ${baseColor})`\n 247→ default:\n 248→ return baseColor\n 249→ }\n 250→}\n 251→\n 252→// ============================================================================\n 253→// State\n 254→// ============================================================================\n 255→\n 256→const cubes = ref<PublishedCube[]>([])\n 257→const pagination = ref<PaginationMeta | null>(null)\n 258→const isLoading = ref(true)\n 259→const error = ref<string | null>(null)\n 260→\n 261→const searchQuery = ref('')\n 262→const selectedCategory = ref<CubeCategory | 'all'>('all')\n 263→const selectedMaterial = ref<MaterialType | 'all'>('all')\n 264→const sortBy = ref<CommunitySortOption>('recent')\n 265→const currentPage = ref(1)\n 266→\n 267→// Build search params from state\n 268→const searchParams = computed<CommunityGallerySearchParams>(() => ({\n 269→ filters: {\n 270→ query: searchQuery.value || undefined,\n 271→ category: selectedCategory.value !== 'all' ? selectedCategory.value : undefined,\n 272→ materialType: selectedMaterial.value !== 'all' ? selectedMaterial.value : undefined,\n 273→ },\n 274→ sortBy: sortBy.value,\n 275→ sortDirection: 'desc',\n 276→ page: currentPage.value,\n 277→ pageSize: 12,\n 278→}))\n 279→\n 280→// Fetch cubes when params change\n 281→watch(\n 282→ searchParams,\n 283→ async (params) => {\n 284→ const localCancelled = { value: false }\n 285→\n 286→ isLoading.value = true\n 287→ error.value = null\n 288→\n 289→ try {\n 290→ const response = await communityGalleryService.search(params)\n 291→ if (!localCancelled.value) {\n 292→ cubes.value = response.cubes\n 293→ pagination.value = response.pagination\n 294→ }\n 295→ } catch (err) {\n 296→ if (!localCancelled.value) {\n 297→ error.value = 'Failed to load community cubes'\n 298→ console.error('CommunityGallery fetch error:', err)\n 299→ }\n 300→ } finally {\n 301→ if (!localCancelled.value) {\n 302→ isLoading.value = false\n 303→ }\n 304→ }\n 305→ },\n 306→ { immediate: true }\n 307→)\n 308→\n 309→// Reset page when filters change\n 310→watch([searchQuery, selectedCategory, selectedMaterial, sortBy], () => {\n 311→ currentPage.value = 1\n 312→})\n 313→\n 314→// Handle cube selection\n 315→function handleCubeSelect(pub: PublishedCube) {\n 316→ emit('cubeSelect', pub.cube)\n 317→ communityGalleryService.recordDownload(pub.id)\n 318→}\n 319→\n 320→// Handle like toggle\n 321→async function handleLikeToggle(e: Event, cubeId: string) {\n 322→ e.stopPropagation()\n 323→\n 324→ try {\n 325→ const result = await communityGalleryService.toggleLike(cubeId)\n 326→ if (result.success) {\n 327→ cubes.value = cubes.value.map((cube) =>\n 328→ cube.id === cubeId\n 329→ ? {\n 330→ ...cube,\n 331→ isLiked: result.isLiked,\n 332→ stats: { ...cube.stats, likes: result.likeCount },\n 333→ }\n 334→ : cube\n 335→ )\n 336→ }\n 337→ } catch (err) {\n 338→ console.error('Failed to toggle like:', err)\n 339→ }\n 340→}\n 341→\n 342→// Handle pagination\n 343→function handlePageChange(page: number) {\n 344→ currentPage.value = page\n 345→ window.scrollTo({ top: 0, behavior: 'smooth' })\n 346→}\n 347→\n 348→// Handle keyboard interaction on cube items\n 349→function handleCubeKeyDown(e: KeyboardEvent, pub: PublishedCube) {\n 350→ if (e.key === 'Enter' || e.key === ' ') {\n 351→ e.preventDefault()\n 352→ handleCubeSelect(pub)\n 353→ }\n 354→}\n 355→\n 356→// Pagination pages computation\n 357→const paginationPages = computed(() => {\n 358→ if (!pagination.value || pagination.value.totalPages <= 1) return null\n 359→\n 360→ const pages: (number | string)[] = []\n 361→ const { currentPage: cp, totalPages } = pagination.value\n 362→\n 363→ pages.push(1)\n 364→\n 365→ if (cp > 3) {\n 366→ pages.push('...')\n 367→ }\n 368→\n 369→ for (let i = Math.max(2, cp - 1); i <= Math.min(totalPages - 1, cp + 1); i++) {\n 370→ if (!pages.includes(i)) {\n 371→ pages.push(i)\n 372→ }\n 373→ }\n 374→\n 375→ if (cp < totalPages - 2) {\n 376→ pages.push('...')\n 377→ }\n 378→\n 379→ if (totalPages > 1 && !pages.includes(totalPages)) {\n 380→ pages.push(totalPages)\n 381→ }\n 382→\n 383→ return pages\n 384→})\n 385→</script>\n 386→\n 387→<template>\n 388→ <div :class=\"['community-gallery', className]\">\n 389→ <!-- Header -->\n 390→ <div class=\"community-gallery__header\">\n 391→ <h2 class=\"community-gallery__title\">Community Gallery</h2>\n 392→ <p class=\"community-gallery__subtitle\">Discover cubes created by the isocubic community</p>\n 393→ </div>\n 394→\n 395→ <!-- Search and Filters -->\n 396→ <div class=\"community-gallery__controls\">\n 397→ <!-- Search Input -->\n 398→ <div class=\"community-gallery__search\">\n 399→ <input\n 400→ v-model=\"searchQuery\"\n 401→ type=\"text\"\n 402→ class=\"community-gallery__search-input\"\n 403→ placeholder=\"Search by name, tags, author...\"\n 404→ aria-label=\"Search community cubes\"\n 405→ />\n 406→ <button\n 407→ v-if=\"searchQuery\"\n 408→ type=\"button\"\n 409→ class=\"community-gallery__search-clear\"\n 410→ aria-label=\"Clear search\"\n 411→ @click=\"searchQuery = ''\"\n 412→ >\n 413→ ×\n 414→ </button>\n 415→ </div>\n 416→\n 417→ <!-- Filter Controls -->\n 418→ <div class=\"community-gallery__filters\">\n 419→ <select\n 420→ v-model=\"selectedCategory\"\n 421→ class=\"community-gallery__select\"\n 422→ aria-label=\"Filter by category\"\n 423→ >\n 424→ <option v-for=\"cat in CATEGORIES\" :key=\"cat.id\" :value=\"cat.id\">\n 425→ {{ cat.label }}\n 426→ </option>\n 427→ </select>\n 428→\n 429→ <select\n 430→ v-model=\"selectedMaterial\"\n 431→ class=\"community-gallery__select\"\n 432→ aria-label=\"Filter by material\"\n 433→ >\n 434→ <option v-for=\"mat in MATERIAL_TYPES\" :key=\"mat.id\" :value=\"mat.id\">\n 435→ {{ mat.label }}\n 436→ </option>\n 437→ </select>\n 438→\n 439→ <select v-model=\"sortBy\" class=\"community-gallery__select\" aria-label=\"Sort by\">\n 440→ <option v-for=\"opt in SORT_OPTIONS\" :key=\"opt.id\" :value=\"opt.id\">\n 441→ {{ opt.label }}\n 442→ </option>\n 443→ </select>\n 444→ </div>\n 445→ </div>\n 446→\n 447→ <!-- Loading State -->\n 448→ <div v-if=\"isLoading\" class=\"community-gallery__loading\">\n 449→ <div class=\"community-gallery__spinner\" />\n 450→ <span>Loading cubes...</span>\n 451→ </div>\n 452→\n 453→ <!-- Error State -->\n 454→ <div v-if=\"error\" class=\"community-gallery__error\" role=\"alert\">\n 455→ {{ error }}\n 456→ </div>\n 457→\n 458→ <!-- Cube Grid -->\n 459→ <template v-if=\"!isLoading && !error\">\n 460→ <div class=\"community-gallery__grid\">\n 461→ <div v-if=\"cubes.length === 0\" class=\"community-gallery__empty\">\n 462→ {{\n 463→ searchQuery || selectedCategory !== 'all' || selectedMaterial !== 'all'\n 464→ ? 'No cubes match your search criteria'\n 465→ : 'No community cubes available yet'\n 466→ }}\n 467→ </div>\n 468→ <div\n 469→ v-for=\"pub in cubes\"\n 470→ v-else\n 471→ :key=\"pub.id\"\n 472→ class=\"community-gallery__item\"\n 473→ role=\"button\"\n 474→ :tabindex=\"0\"\n 475→ :aria-label=\"`Select ${pub.cube.meta?.name || pub.cube.id}`\"\n 476→ @click=\"handleCubeSelect(pub)\"\n 477→ @keydown=\"handleCubeKeyDown($event, pub)\"\n 478→ >\n 479→ <!-- Badges -->\n 480→ <div class=\"community-gallery__badges\">\n 481→ <span\n 482→ v-if=\"pub.isFeatured\"\n 483→ class=\"community-gallery__badge community-gallery__badge--featured\"\n 484→ >\n 485→ Featured\n 486→ </span>\n 487→ <span\n 488→ v-if=\"pub.isStaffPick\"\n 489→ class=\"community-gallery__badge community-gallery__badge--staff\"\n 490→ >\n 491→ Staff Pick\n 492→ </span>\n 493→ </div>\n 494→\n 495→ <!-- Thumbnail -->\n 496→ <div\n 497→ class=\"community-gallery__thumbnail\"\n 498→ :style=\"{\n 499→ background: generateCubeGradient(pub.cube),\n 500→ opacity: pub.cube.base.transparency ?? 1,\n 501→ }\"\n 502→ >\n 503→ <div\n 504→ v-if=\"pub.cube.noise?.type\"\n 505→ :class=\"[\n 506→ 'community-gallery__noise-indicator',\n 507→ `community-gallery__noise-indicator--${pub.cube.noise.type}`,\n 508→ ]\"\n 509→ />\n 510→ </div>\n 511→\n 512→ <!-- Info -->\n 513→ <div class=\"community-gallery__item-info\">\n 514→ <span class=\"community-gallery__item-name\">\n 515→ {{ pub.cube.meta?.name || pub.cube.id }}\n 516→ </span>\n 517→ <span class=\"community-gallery__item-author\"> by {{ pub.author.displayName }} </span>\n 518→ </div>\n 519→\n 520→ <!-- Stats -->\n 521→ <div class=\"community-gallery__item-stats\">\n 522→ <button\n 523→ type=\"button\"\n 524→ :class=\"[\n 525→ 'community-gallery__like-btn',\n 526→ { 'community-gallery__like-btn--liked': pub.isLiked },\n 527→ ]\"\n 528→ :aria-label=\"pub.isLiked ? 'Unlike' : 'Like'\"\n 529→ @click=\"handleLikeToggle($event, pub.id)\"\n 530→ >\n 531→ <span class=\"community-gallery__like-icon\">{{\n 532→ pub.isLiked ? '\\u2764\\uFE0F' : '\\U0001F90D'\n 533→ }}</span>\n 534→ <span class=\"community-gallery__like-count\">{{ formatCount(pub.stats.likes) }}</span>\n 535→ </button>\n 536→ <span class=\"community-gallery__views\">\n 537→ \\uD83D\\uDC41 {{ formatCount(pub.stats.views) }}\n 538→ </span>\n 539→ <span class=\"community-gallery__downloads\">\n 540→ \\u2B07 {{ formatCount(pub.stats.downloads) }}\n 541→ </span>\n 542→ </div>\n 543→\n 544→ <!-- Tags -->\n 545→ <div\n 546→ v-if=\"pub.cube.meta?.tags && pub.cube.meta.tags.length > 0\"\n 547→ class=\"community-gallery__item-tags\"\n 548→ >\n 549→ <span\n 550→ v-for=\"tag in pub.cube.meta.tags.slice(0, 3)\"\n 551→ :key=\"tag\"\n 552→ class=\"community-gallery__item-tag\"\n 553→ >\n 554→ {{ tag }}\n 555→ </span>\n 556→ <span\n 557→ v-if=\"pub.cube.meta.tags.length > 3\"\n 558→ class=\"community-gallery__item-tag community-gallery__item-tag--more\"\n 559→ >\n 560→ +{{ pub.cube.meta.tags.length - 3 }}\n 561→ </span>\n 562→ </div>\n 563→ </div>\n 564→ </div>\n 565→\n 566→ <!-- Pagination -->\n 567→ <div v-if=\"paginationPages\" class=\"community-gallery__pagination\">\n 568→ <button\n 569→ type=\"button\"\n 570→ class=\"community-gallery__page-btn\"\n 571→ :disabled=\"!pagination?.hasPrevPage\"\n 572→ aria-label=\"Previous page\"\n 573→ @click=\"handlePageChange(currentPage - 1)\"\n 574→ >\n 575→ &lt;\n 576→ </button>\n 577→\n 578→ <template\n 579→ v-for=\"(page, index) in paginationPages\"\n 580→ :key=\"typeof page === 'number' ? page : `ellipsis-${index}`\"\n 581→ >\n 582→ <button\n 583→ v-if=\"typeof page === 'number'\"\n 584→ type=\"button\"\n 585→ :class=\"[\n 586→ 'community-gallery__page-btn',\n 587→ { 'community-gallery__page-btn--active': page === currentPage },\n 588→ ]\"\n 589→ @click=\"handlePageChange(page)\"\n 590→ >\n 591→ {{ page }}\n 592→ </button>\n 593→ <span v-else class=\"community-gallery__ellipsis\">{{ page }}</span>\n 594→ </template>\n 595→\n 596→ <button\n 597→ type=\"button\"\n 598→ class=\"community-gallery__page-btn\"\n 599→ :disabled=\"!pagination?.hasNextPage\"\n 600→ aria-label=\"Next page\"\n 601→ @click=\"handlePageChange(currentPage + 1)\"\n 602→ >\n 603→ &gt;\n 604→ </button>\n 605→ </div>\n 606→\n 607→ <!-- Results Count -->\n 608→ <div v-if=\"pagination\" class=\"community-gallery__footer\">\n 609→ <span class=\"community-gallery__count\">\n 610→ Showing {{ cubes.length }} of {{ pagination.totalItems }} cubes\n 611→ <template v-if=\"pagination.totalPages > 1\">\n 612→ (Page {{ pagination.currentPage }} of {{ pagination.totalPages }})\n 613→ </template>\n 614→ </span>\n 615→ </div>\n 616→ </template>\n 617→ </div>\n 618→</template>\n 619→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "a74923e1-9093-4ded-a1e5-21f5eeabfa8d"
}
[2026-02-06T17:21:36.462Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01NtH1QoENQSfHLigSchHkNJ",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01SFToBASjvv5rdbyxDzooXp",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/lib/community-gallery.ts"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 1134,
"cache_read_input_tokens": 26001,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1134
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "d527ba3d-7c3f-4674-be58-c6d04d708cc0"
}
[2026-02-06T17:21:36.465Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01SFToBASjvv5rdbyxDzooXp",
"type": "tool_result",
"content": " 1→/**\n 2→ * Community Gallery Service (TASK 45)\n 3→ * Provides API for browsing, searching, and interacting with community-published cubes\n 4→ *\n 5→ * Current implementation: Mock service with in-memory data\n 6→ * Future: Replace with real API calls to backend (Supabase/Firebase)\n 7→ */\n 8→\n 9→import type { SpectralCube } from '../types/cube'\n 10→import type { UserProfile } from '../types/auth'\n 11→import type {\n 12→ PublishedCube,\n 13→ CubeAuthor,\n 14→ CubeStats,\n 15→ CubeCategory,\n 16→ CubeVisibility,\n 17→ PublishedCubeStatus,\n 18→ CommunityGalleryFilters,\n 19→ CommunityGallerySearchParams,\n 20→ CommunityGalleryResponse,\n 21→ PaginationMeta,\n 22→ LikeResult,\n 23→ PublishCubeRequest,\n 24→ CubeOperationResult,\n 25→ CommunitySortOption,\n 26→} from '../types/community'\n 27→import { DEFAULT_CUBE_STATS, COMMUNITY_STORAGE_KEYS } from '../types/community'\n 28→\n 29→// ============================================================================\n 30→// Mock Data Generation\n 31→// ============================================================================\n 32→\n 33→/**\n 34→ * Mock authors for community cubes\n 35→ */\n 36→const MOCK_AUTHORS: CubeAuthor[] = [\n 37→ { id: 'user-1', displayName: 'CubeArtist', avatarUrl: undefined },\n 38→ { id: 'user-2', displayName: 'PixelMaster', avatarUrl: undefined },\n 39→ { id: 'user-3', displayName: 'VoxelCreator', avatarUrl: undefined },\n 40→ { id: 'user-4', displayName: 'IsoCrafter', avatarUrl: undefined },\n 41→ { id: 'user-5', displayName: 'CubeDesigner', avatarUrl: undefined },\n 42→]\n 43→\n 44→/**\n 45→ * Sample cube configurations for mock data\n 46→ */\n 47→const SAMPLE_CUBES: SpectralCube[] = [\n 48→ {\n 49→ id: 'community-mossy-brick',\n 50→ prompt: 'Aged brick wall covered with green moss',\n 51→ base: { color: [0.6, 0.3, 0.25], roughness: 0.85, transparency: 1.0 },\n 52→ gradients: [{ axis: 'y', factor: 0.3, color_shift: [0.1, 0.2, 0.05] }],\n 53→ noise: { type: 'worley', scale: 6.0, octaves: 3, persistence: 0.5 },\n 54→ physics: { material: 'stone', density: 2.2, break_pattern: 'crumble' },\n 55→ meta: { name: 'Mossy Brick', tags: ['brick', 'moss', 'aged', 'wall'], author: 'CubeArtist' },\n 56→ },\n 57→ {\n 58→ id: 'community-golden-metal',\n 59→ prompt: 'Polished golden metal with subtle scratches',\n 60→ base: { color: [0.85, 0.7, 0.3], roughness: 0.2, transparency: 1.0 },\n 61→ gradients: [{ axis: 'radial', factor: 0.15, color_shift: [0.1, 0.05, -0.1] }],\n 62→ noise: { type: 'perlin', scale: 20.0, octaves: 2, persistence: 0.3 },\n 63→ physics: { material: 'metal', density: 19.3, break_pattern: 'shatter' },\n 64→ meta: {\n 65→ name: 'Golden Metal',\n 66→ tags: ['gold', 'metal', 'shiny', 'luxury'],\n 67→ author: 'PixelMaster',\n 68→ },\n 69→ },\n 70→ {\n 71→ id: 'community-mystic-crystal',\n 72→ prompt: 'Glowing purple crystal with inner energy',\n 73→ base: { color: [0.5, 0.2, 0.8], roughness: 0.1, transparency: 0.7 },\n 74→ gradients: [{ axis: 'y', factor: 0.4, color_shift: [0.2, 0.1, 0.3] }],\n 75→ noise: { type: 'crackle', scale: 4.0, octaves: 5, persistence: 0.6 },\n 76→ physics: { material: 'crystal', density: 3.5, break_pattern: 'shatter' },\n 77→ meta: {\n 78→ name: 'Mystic Crystal',\n 79→ tags: ['crystal', 'magic', 'purple', 'glowing'],\n 80→ author: 'VoxelCreator',\n 81→ },\n 82→ },\n 83→ {\n 84→ id: 'community-ancient-wood',\n 85→ prompt: 'Ancient oak wood with deep grain patterns',\n 86→ base: { color: [0.4, 0.25, 0.15], roughness: 0.7, transparency: 1.0 },\n 87→ gradients: [{ axis: 'x', factor: 0.2, color_shift: [-0.1, -0.05, 0.0] }],\n 88→ noise: { type: 'perlin', scale: 3.0, octaves: 6, persistence: 0.7 },\n 89→ physics: { material: 'wood', density: 0.8, break_pattern: 'splinter' },\n 90→ meta: { name: 'Ancient Oak', tags: ['wood', 'oak', 'ancient', 'grain'], author: 'IsoCrafter' },\n 91→ },\n 92→ {\n 93→ id: 'community-lava-flow',\n 94→ prompt: 'Flowing lava with bright orange cracks',\n 95→ base: { color: [0.9, 0.3, 0.1], roughness: 0.3, transparency: 1.0 },\n 96→ gradients: [{ axis: 'y', factor: 0.5, color_shift: [0.1, -0.2, -0.05] }],\n 97→ noise: { type: 'worley', scale: 5.0, octaves: 4, persistence: 0.5 },\n 98→ physics: { material: 'liquid', density: 2.5, break_pattern: 'melt' },\n 99→ meta: { name: 'Lava Flow', tags: ['lava', 'fire', 'hot', 'volcanic'], author: 'CubeDesigner' },\n 100→ },\n 101→ {\n 102→ id: 'community-ice-glacier',\n 103→ prompt: 'Translucent blue glacier ice with air bubbles',\n 104→ base: { color: [0.7, 0.85, 0.95], roughness: 0.15, transparency: 0.6 },\n 105→ gradients: [{ axis: 'z', factor: 0.25, color_shift: [-0.1, 0.0, 0.1] }],\n 106→ noise: { type: 'perlin', scale: 8.0, octaves: 3, persistence: 0.4 },\n 107→ physics: { material: 'glass', density: 0.9, break_pattern: 'shatter' },\n 108→ meta: { name: 'Glacier Ice', tags: ['ice', 'glacier', 'cold', 'frozen'], author: 'CubeArtist' },\n 109→ },\n 110→ {\n 111→ id: 'community-rusty-iron',\n 112→ prompt: 'Heavily corroded iron with orange rust patches',\n 113→ base: { color: [0.35, 0.25, 0.2], roughness: 0.95, transparency: 1.0 },\n 114→ gradients: [{ axis: 'radial', factor: 0.3, color_shift: [0.25, 0.1, -0.05] }],\n 115→ noise: { type: 'worley', scale: 10.0, octaves: 4, persistence: 0.6 },\n 116→ physics: { material: 'metal', density: 7.8, break_pattern: 'crumble' },\n 117→ meta: {\n 118→ name: 'Rusty Iron',\n 119→ tags: ['metal', 'rust', 'iron', 'corroded'],\n 120→ author: 'PixelMaster',\n 121→ },\n 122→ },\n 123→ {\n 124→ id: 'community-enchanted-emerald',\n 125→ prompt: 'Magical emerald gem with swirling energy',\n 126→ base: { color: [0.15, 0.7, 0.35], roughness: 0.05, transparency: 0.65 },\n 127→ gradients: [{ axis: 'y', factor: 0.35, color_shift: [0.1, 0.15, 0.05] }],\n 128→ noise: { type: 'crackle', scale: 6.0, octaves: 4, persistence: 0.5 },\n 129→ physics: { material: 'crystal', density: 4.0, break_pattern: 'shatter' },\n 130→ meta: {\n 131→ name: 'Enchanted Emerald',\n 132→ tags: ['emerald', 'gem', 'magic', 'green'],\n 133→ author: 'VoxelCreator',\n 134→ },\n 135→ },\n 136→ {\n 137→ id: 'community-sandstone-desert',\n 138→ prompt: 'Weathered desert sandstone with wind erosion',\n 139→ base: { color: [0.85, 0.75, 0.55], roughness: 0.8, transparency: 1.0 },\n 140→ gradients: [{ axis: 'y', factor: 0.2, color_shift: [-0.1, -0.08, -0.05] }],\n 141→ noise: { type: 'perlin', scale: 12.0, octaves: 5, persistence: 0.55 },\n 142→ physics: { material: 'stone', density: 2.0, break_pattern: 'crumble' },\n 143→ meta: {\n 144→ name: 'Desert Sandstone',\n 145→ tags: ['sand', 'desert', 'stone', 'weathered'],\n 146→ author: 'IsoCrafter',\n 147→ },\n 148→ },\n 149→ {\n 150→ id: 'community-neon-plasma',\n 151→ prompt: 'Pulsating neon plasma with electric blue glow',\n 152→ base: { color: [0.2, 0.6, 1.0], roughness: 0.0, transparency: 0.5 },\n 153→ gradients: [{ axis: 'radial', factor: 0.5, color_shift: [0.3, 0.2, -0.2] }],\n 154→ noise: { type: 'crackle', scale: 3.0, octaves: 3, persistence: 0.7 },\n 155→ physics: { material: 'liquid', density: 0.1, break_pattern: 'dissolve' },\n 156→ meta: {\n 157→ name: 'Neon Plasma',\n 158→ tags: ['plasma', 'neon', 'energy', 'electric'],\n 159→ author: 'CubeDesigner',\n 160→ },\n 161→ },\n 162→ {\n 163→ id: 'community-marble-veined',\n 164→ prompt: 'White marble with gray and gold veins',\n 165→ base: { color: [0.95, 0.93, 0.9], roughness: 0.25, transparency: 1.0 },\n 166→ gradients: [{ axis: 'x', factor: 0.1, color_shift: [-0.05, -0.03, 0.02] }],\n 167→ noise: { type: 'worley', scale: 4.0, octaves: 4, persistence: 0.6 },\n 168→ physics: { material: 'stone', density: 2.7, break_pattern: 'shatter' },\n 169→ meta: {\n 170→ name: 'Veined Marble',\n 171→ tags: ['marble', 'luxury', 'white', 'elegant'],\n 172→ author: 'CubeArtist',\n 173→ },\n 174→ },\n 175→ {\n 176→ id: 'community-copper-patina',\n 177→ prompt: 'Aged copper with turquoise green patina',\n 178→ base: { color: [0.3, 0.5, 0.45], roughness: 0.6, transparency: 1.0 },\n 179→ gradients: [{ axis: 'y', factor: 0.4, color_shift: [0.4, 0.15, -0.1] }],\n 180→ noise: { type: 'perlin', scale: 7.0, octaves: 3, persistence: 0.5 },\n 181→ physics: { material: 'metal', density: 8.9, break_pattern: 'crumble' },\n 182→ meta: {\n 183→ name: 'Copper Patina',\n 184→ tags: ['copper', 'patina', 'aged', 'turquoise'],\n 185→ author: 'PixelMaster',\n 186→ },\n 187→ },\n 188→]\n 189→\n 190→/**\n 191→ * Generates mock published cubes from sample data\n 192→ */\n 193→function generateMockPublishedCubes(): PublishedCube[] {\n 194→ const now = Date.now()\n 195→ const dayMs = 24 * 60 * 60 * 1000\n 196→\n 197→ return SAMPLE_CUBES.map((cube, index) => {\n 198→ const author = MOCK_AUTHORS[index % MOCK_AUTHORS.length]\n 199→ const daysAgo = Math.floor(Math.random() * 30)\n 200→ const publishedAt = new Date(now - daysAgo * dayMs).toISOString()\n 201→\n 202→ // Determine category based on material type\n 203→ let category: CubeCategory = 'other'\n 204→ const material = cube.physics?.material\n 205→ if (material === 'stone' || material === 'wood') category = 'nature'\n 206→ else if (material === 'metal') category = 'industrial'\n 207→ else if (material === 'crystal' || material === 'glass') category = 'fantasy'\n 208→ else if (material === 'liquid') category = 'nature'\n 209→ else if (material === 'organic') category = 'organic'\n 210→\n 211→ // Generate random stats\n 212→ const stats: CubeStats = {\n 213→ views: Math.floor(Math.random() * 1000) + 50,\n 214→ likes: Math.floor(Math.random() * 200) + 10,\n 215→ downloads: Math.floor(Math.random() * 100) + 5,\n 216→ comments: Math.floor(Math.random() * 20),\n 217→ }\n 218→\n 219→ return {\n 220→ id: `pub-${cube.id}`,\n 221→ cube,\n 222→ author,\n 223→ status: 'published' as PublishedCubeStatus,\n 224→ visibility: 'public' as CubeVisibility,\n 225→ category,\n 226→ stats,\n 227→ isLiked: false,\n 228→ publishedAt,\n 229→ updatedAt: publishedAt,\n 230→ isFeatured: index < 3, // First 3 are featured\n 231→ isStaffPick: index === 0 || index === 4, // Some are staff picks\n 232→ }\n 233→ })\n 234→}\n 235→\n 236→// ============================================================================\n 237→// In-Memory Mock Database\n 238→// ============================================================================\n 239→\n 240→/** Mock database of published cubes */\n 241→let mockPublishedCubes: PublishedCube[] = generateMockPublishedCubes()\n 242→\n 243→/** Set of liked cube IDs (stored in localStorage) */\n 244→let likedCubeIds: Set<string> = new Set()\n 245→\n 246→/**\n 247→ * Loads liked cubes from localStorage\n 248→ */\n 249→function loadLikedCubes(): void {\n 250→ try {\n 251→ const stored = localStorage.getItem(COMMUNITY_STORAGE_KEYS.LIKED_CUBES)\n 252→ if (stored) {\n 253→ likedCubeIds = new Set(JSON.parse(stored))\n 254→ }\n 255→ } catch {\n 256→ likedCubeIds = new Set()\n 257→ }\n 258→}\n 259→\n 260→/**\n 261→ * Saves liked cubes to localStorage\n 262→ */\n 263→function saveLikedCubes(): void {\n 264→ try {\n 265→ localStorage.setItem(\n 266→ COMMUNITY_STORAGE_KEYS.LIKED_CUBES,\n 267→ JSON.stringify(Array.from(likedCubeIds))\n 268→ )\n 269→ } catch {\n 270→ // Ignore storage errors\n 271→ }\n 272→}\n 273→\n 274→// Initialize liked cubes from storage\n 275→loadLikedCubes()\n 276→\n 277→// ============================================================================\n 278→// Community Gallery Service\n 279→// ============================================================================\n 280→\n 281→/**\n 282→ * Simulates network delay for realistic async behavior\n 283→ */\n 284→async function simulateNetworkDelay(ms: number = 300): Promise<void> {\n 285→ return new Promise((resolve) => setTimeout(resolve, ms))\n 286→}\n 287→\n 288→/**\n 289→ * Filters cubes based on search parameters\n 290→ */\n 291→function filterCubes(cubes: PublishedCube[], filters: CommunityGalleryFilters): PublishedCube[] {\n 292→ return cubes.filter((pub) => {\n 293→ // Text search\n 294→ if (filters.query) {\n 295→ const query = filters.query.toLowerCase()\n 296→ const cube = pub.cube\n 297→ const matchesName = cube.meta?.name?.toLowerCase().includes(query)\n 298→ const matchesTags = cube.meta?.tags?.some((tag) => tag.toLowerCase().includes(query))\n 299→ const matchesPrompt = cube.prompt?.toLowerCase().includes(query)\n 300→ const matchesAuthor = pub.author.displayName.toLowerCase().includes(query)\n 301→ if (!matchesName && !matchesTags && !matchesPrompt && !matchesAuthor) {\n 302→ return false\n 303→ }\n 304→ }\n 305→\n 306→ // Material type filter\n 307→ if (filters.materialType && filters.materialType !== 'all') {\n 308→ if (pub.cube.physics?.material !== filters.materialType) {\n 309→ return false\n 310→ }\n 311→ }\n 312→\n 313→ // Category filter\n 314→ if (filters.category && filters.category !== 'all') {\n 315→ if (pub.category !== filters.category) {\n 316→ return false\n 317→ }\n 318→ }\n 319→\n 320→ // Author filter\n 321→ if (filters.authorId) {\n 322→ if (pub.author.id !== filters.authorId) {\n 323→ return false\n 324→ }\n 325→ }\n 326→\n 327→ // Time range filter\n 328→ if (filters.timeRange && filters.timeRange !== 'all') {\n 329→ const pubDate = new Date(pub.publishedAt).getTime()\n 330→ const now = Date.now()\n 331→ const dayMs = 24 * 60 * 60 * 1000\n 332→\n 333→ let maxAge: number\n 334→ switch (filters.timeRange) {\n 335→ case 'today':\n 336→ maxAge = dayMs\n 337→ break\n 338→ case 'week':\n 339→ maxAge = 7 * dayMs\n 340→ break\n 341→ case 'month':\n 342→ maxAge = 30 * dayMs\n 343→ break\n 344→ case 'year':\n 345→ maxAge = 365 * dayMs\n 346→ break\n 347→ default:\n 348→ maxAge = Infinity\n 349→ }\n 350→\n 351→ if (now - pubDate > maxAge) {\n 352→ return false\n 353→ }\n 354→ }\n 355→\n 356→ // Featured filter\n 357→ if (filters.featuredOnly && !pub.isFeatured) {\n 358→ return false\n 359→ }\n 360→\n 361→ // Staff picks filter\n 362→ if (filters.staffPicksOnly && !pub.isStaffPick) {\n 363→ return false\n 364→ }\n 365→\n 366→ // Tags filter\n 367→ if (filters.tags && filters.tags.length > 0) {\n 368→ const cubeTags = pub.cube.meta?.tags || []\n 369→ const hasMatchingTag = filters.tags.some((tag) =>\n 370→ cubeTags.some((cubeTag) => cubeTag.toLowerCase() === tag.toLowerCase())\n 371→ )\n 372→ if (!hasMatchingTag) {\n 373→ return false\n 374→ }\n 375→ }\n 376→\n 377→ return true\n 378→ })\n 379→}\n 380→\n 381→/**\n 382→ * Sorts cubes based on sort option\n 383→ */\n 384→function sortCubes(\n 385→ cubes: PublishedCube[],\n 386→ sortBy: CommunitySortOption,\n 387→ sortDirection: 'asc' | 'desc' = 'desc'\n 388→): PublishedCube[] {\n 389→ const sorted = [...cubes]\n 390→ const multiplier = sortDirection === 'desc' ? -1 : 1\n 391→\n 392→ sorted.sort((a, b) => {\n 393→ let comparison: number\n 394→ switch (sortBy) {\n 395→ case 'recent':\n 396→ comparison = new Date(a.publishedAt).getTime() - new Date(b.publishedAt).getTime()\n 397→ break\n 398→ case 'popular':\n 399→ comparison = a.stats.likes - b.stats.likes\n 400→ break\n 401→ case 'trending': {\n 402→ // Trending = likes weighted by recency\n 403→ const ageA = (Date.now() - new Date(a.publishedAt).getTime()) / (24 * 60 * 60 * 1000) + 1\n 404→ const ageB = (Date.now() - new Date(b.publishedAt).getTime()) / (24 * 60 * 60 * 1000) + 1\n 405→ comparison = a.stats.likes / ageA - b.stats.likes / ageB\n 406→ break\n 407→ }\n 408→ case 'downloads':\n 409→ comparison = a.stats.downloads - b.stats.downloads\n 410→ break\n 411→ case 'views':\n 412→ comparison = a.stats.views - b.stats.views\n 413→ break\n 414→ case 'alphabetical': {\n 415→ const nameA = a.cube.meta?.name || a.cube.id\n 416→ const nameB = b.cube.meta?.name || b.cube.id\n 417→ comparison = nameA.localeCompare(nameB)\n 418→ break\n 419→ }\n 420→ default:\n 421→ comparison = 0\n 422→ }\n 423→ return comparison * multiplier\n 424→ })\n 425→\n 426→ return sorted\n 427→}\n 428→\n 429→/**\n 430→ * Paginates an array of items\n 431→ */\n 432→function paginate<T>(\n 433→ items: T[],\n 434→ page: number,\n 435→ pageSize: number\n 436→): { items: T[]; meta: PaginationMeta } {\n 437→ const totalItems = items.length\n 438→ const totalPages = Math.ceil(totalItems / pageSize)\n 439→ const currentPage = Math.max(1, Math.min(page, totalPages || 1))\n 440→ const startIndex = (currentPage - 1) * pageSize\n 441→ const endIndex = startIndex + pageSize\n 442→\n 443→ return {\n 444→ items: items.slice(startIndex, endIndex),\n 445→ meta: {\n 446→ currentPage,\n 447→ totalPages,\n 448→ totalItems,\n 449→ pageSize,\n 450→ hasNextPage: currentPage < totalPages,\n 451→ hasPrevPage: currentPage > 1,\n 452→ },\n 453→ }\n 454→}\n 455→\n 456→/**\n 457→ * Community Gallery Service API\n 458→ */\n 459→export const communityGalleryService = {\n 460→ /**\n 461→ * Searches and retrieves published cubes\n 462→ */\n 463→ async search(params: CommunityGallerySearchParams): Promise<CommunityGalleryResponse> {\n 464→ await simulateNetworkDelay()\n 465→\n 466→ // Filter cubes\n 467→ let filtered = filterCubes(mockPublishedCubes, params.filters)\n 468→\n 469→ // Sort cubes\n 470→ filtered = sortCubes(filtered, params.sortBy, params.sortDirection)\n 471→\n 472→ // Apply liked status\n 473→ filtered = filtered.map((pub) => ({\n 474→ ...pub,\n 475→ isLiked: likedCubeIds.has(pub.id),\n 476→ }))\n 477→\n 478→ // Paginate\n 479→ const { items, meta } = paginate(filtered, params.page, params.pageSize)\n 480→\n 481→ return {\n 482→ cubes: items,\n 483→ pagination: meta,\n 484→ params,\n 485→ }\n 486→ },\n 487→\n 488→ /**\n 489→ * Gets a single published cube by ID\n 490→ */\n 491→ async getCube(id: string): Promise<PublishedCube | null> {\n 492→ await simulateNetworkDelay(150)\n 493→\n 494→ const cube = mockPublishedCubes.find((pub) => pub.id === id)\n 495→ if (!cube) return null\n 496→\n 497→ // Increment view count\n 498→ cube.stats.views += 1\n 499→\n 500→ return {\n 501→ ...cube,\n 502→ isLiked: likedCubeIds.has(cube.id),\n 503→ }\n 504→ },\n 505→\n 506→ /**\n 507→ * Gets featured cubes\n 508→ */\n 509→ async getFeatured(limit: number = 6): Promise<PublishedCube[]> {\n 510→ await simulateNetworkDelay(200)\n 511→\n 512→ const featured = mockPublishedCubes\n 513→ .filter((pub) => pub.isFeatured)\n 514→ .slice(0, limit)\n 515→ .map((pub) => ({\n 516→ ...pub,\n 517→ isLiked: likedCubeIds.has(pub.id),\n 518→ }))\n 519→\n 520→ return featured\n 521→ },\n 522→\n 523→ /**\n 524→ * Gets trending cubes\n 525→ */\n 526→ async getTrending(limit: number = 10): Promise<PublishedCube[]> {\n 527→ await simulateNetworkDelay(200)\n 528→\n 529→ const sorted = sortCubes(mockPublishedCubes, 'trending', 'desc')\n 530→ return sorted.slice(0, limit).map((pub) => ({\n 531→ ...pub,\n 532→ isLiked: likedCubeIds.has(pub.id),\n 533→ }))\n 534→ },\n 535→\n 536→ /**\n 537→ * Likes or unlikes a cube\n 538→ */\n 539→ async toggleLike(cubeId: string): Promise<LikeResult> {\n 540→ await simulateNetworkDelay(100)\n 541→\n 542→ const cube = mockPublishedCubes.find((pub) => pub.id === cubeId)\n 543→ if (!cube) {\n 544→ return { success: false, isLiked: false, likeCount: 0 }\n 545→ }\n 546→\n 547→ const wasLiked = likedCubeIds.has(cubeId)\n 548→ if (wasLiked) {\n 549→ likedCubeIds.delete(cubeId)\n 550→ cube.stats.likes = Math.max(0, cube.stats.likes - 1)\n 551→ } else {\n 552→ likedCubeIds.add(cubeId)\n 553→ cube.stats.likes += 1\n 554→ }\n 555→\n 556→ saveLikedCubes()\n 557→\n 558→ return {\n 559→ success: true,\n 560→ isLiked: !wasLiked,\n 561→ likeCount: cube.stats.likes,\n 562→ }\n 563→ },\n 564→\n 565→ /**\n 566→ * Publishes a cube to the community gallery\n 567→ */\n 568→ async publishCube(\n 569→ request: PublishCubeRequest,\n 570→ author: UserProfile\n 571→ ): Promise<CubeOperationResult> {\n 572→ await simulateNetworkDelay(500)\n 573→\n 574→ const now = new Date().toISOString()\n 575→ const newCube: PublishedCube = {\n 576→ id: `pub-${request.cube.id}-${Date.now()}`,\n 577→ cube: request.cube,\n 578→ author: {\n 579→ id: author.id,\n 580→ displayName: author.displayName,\n 581→ avatarUrl: author.avatarUrl,\n 582→ },\n 583→ status: 'published',\n 584→ visibility: request.visibility,\n 585→ category: request.category,\n 586→ stats: { ...DEFAULT_CUBE_STATS },\n 587→ isLiked: false,\n 588→ publishedAt: now,\n 589→ updatedAt: now,\n 590→ isFeatured: false,\n 591→ isStaffPick: false,\n 592→ }\n 593→\n 594→ // Add tags from request\n 595→ if (request.tags) {\n 596→ newCube.cube.meta = {\n 597→ ...newCube.cube.meta,\n 598→ tags: [...(newCube.cube.meta?.tags || []), ...request.tags],\n 599→ }\n 600→ }\n 601→\n 602→ mockPublishedCubes.unshift(newCube)\n 603→\n 604→ return {\n 605→ success: true,\n 606→ cube: newCube,\n 607→ }\n 608→ },\n 609→\n 610→ /**\n 611→ * Gets all unique tags from published cubes\n 612→ */\n 613→ async getAllTags(): Promise<string[]> {\n 614→ await simulateNetworkDelay(100)\n 615→\n 616→ const tagSet = new Set<string>()\n 617→ mockPublishedCubes.forEach((pub) => {\n 618→ pub.cube.meta?.tags?.forEach((tag) => tagSet.add(tag))\n 619→ })\n 620→\n 621→ return Array.from(tagSet).sort()\n 622→ },\n 623→\n 624→ /**\n 625→ * Gets cubes by author\n 626→ */\n 627→ async getByAuthor(authorId: string, limit?: number): Promise<PublishedCube[]> {\n 628→ await simulateNetworkDelay(200)\n 629→\n 630→ let cubes = mockPublishedCubes.filter((pub) => pub.author.id === authorId)\n 631→ if (limit) {\n 632→ cubes = cubes.slice(0, limit)\n 633→ }\n 634→\n 635→ return cubes.map((pub) => ({\n 636→ ...pub,\n 637→ isLiked: likedCubeIds.has(pub.id),\n 638→ }))\n 639→ },\n 640→\n 641→ /**\n 642→ * Increments the download count for a cube\n 643→ */\n 644→ async recordDownload(cubeId: string): Promise<void> {\n 645→ const cube = mockPublishedCubes.find((pub) => pub.id === cubeId)\n 646→ if (cube) {\n 647→ cube.stats.downloads += 1\n 648→ }\n 649→ },\n 650→\n 651→ /**\n 652→ * Resets the mock database (for testing)\n 653→ */\n 654→ _resetMockData(): void {\n 655→ mockPublishedCubes = generateMockPublishedCubes()\n 656→ likedCubeIds.clear()\n 657→ saveLikedCubes()\n 658→ },\n 659→\n 660→ /**\n 661→ * Gets the current mock data (for testing)\n 662→ */\n 663→ _getMockData(): PublishedCube[] {\n 664→ return mockPublishedCubes\n 665→ },\n 666→}\n 667→\n 668→export default communityGalleryService\n 669→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "c85a9fa4-54d6-425c-a6ab-4805a3d1a041"
}
[2026-02-06T17:21:36.662Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01NtH1QoENQSfHLigSchHkNJ",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01CHuUupY62acF4yoVdSbPyz",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/components/SharePanel.vue",
"limit": 100
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 1134,
"cache_read_input_tokens": 26001,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1134
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "59fc8947-c648-4d97-8e11-56ec08c34e54"
}
[2026-02-06T17:21:36.741Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01CHuUupY62acF4yoVdSbPyz",
"type": "tool_result",
"content": " 1→<!--\n 2→ SharePanel component for managing share links (Vue 3 SFC)\n 3→ Provides UI for creating, viewing, and managing share links for cubes\n 4→\n 5→ TASK 46: Initial implementation\n 6→ TASK 64: Migration from React to Vue 3.0 SFC (Phase 10)\n 7→\n 8→ Features:\n 9→ - Generate unique share links for cubes\n 10→ - QR code generation for mobile sharing\n 11→ - Password protection for private links\n 12→ - Link expiration settings\n 13→ - Copy to clipboard functionality\n 14→ - Analytics overview\n 15→-->\n 16→<script lang=\"ts\">\n 17→import type { ComponentMeta } from '../types/component-meta'\n 18→import { registerComponentMeta } from '../types/component-meta'\n 19→\n 20→/**\n 21→ * Component metadata for Developer Mode\n 22→ */\n 23→export const SHARE_PANEL_META: ComponentMeta = {\n 24→ id: 'share-panel',\n 25→ name: 'SharePanel',\n 26→ version: '1.1.0',\n 27→ summary: 'Share link management panel for cube configurations.',\n 28→ description:\n 29→ 'SharePanel provides a comprehensive UI for creating and managing share links for cubes. ' +\n 30→ 'It supports generating unique short URLs, QR codes for mobile sharing, password protection ' +\n 31→ 'for private links, configurable expiration times, and clipboard copying. The panel also ' +\n 32→ 'displays a list of created share links with analytics and management options.',\n 33→ phase: 7,\n 34→ taskId: 'TASK 46',\n 35→ filePath: 'components/SharePanel.vue',\n 36→ history: [\n 37→ {\n 38→ version: '1.0.0',\n 39→ date: '2026-01-29T22:00:00Z',\n 40→ description:\n 41→ 'Initial implementation with share link creation, QR codes, password protection, and analytics',\n 42→ taskId: 'TASK 46',\n 43→ type: 'created',\n 44→ },\n 45→ {\n 46→ version: '1.1.0',\n 47→ date: '2026-01-31T00:00:00Z',\n 48→ description: 'Migrated from React to Vue 3.0 SFC',\n 49→ taskId: 'TASK 64',\n 50→ type: 'updated',\n 51→ },\n 52→ ],\n 53→ features: [\n 54→ {\n 55→ id: 'link-generation',\n 56→ name: 'Link Generation',\n 57→ description: 'Generate unique short URLs for sharing cubes',\n 58→ enabled: true,\n 59→ taskId: 'TASK 46',\n 60→ },\n 61→ {\n 62→ id: 'qr-code',\n 63→ name: 'QR Code',\n 64→ description: 'Generate QR codes for mobile sharing',\n 65→ enabled: true,\n 66→ taskId: 'TASK 46',\n 67→ },\n 68→ {\n 69→ id: 'password-protection',\n 70→ name: 'Password Protection',\n 71→ description: 'Protect share links with a password',\n 72→ enabled: true,\n 73→ taskId: 'TASK 46',\n 74→ },\n 75→ {\n 76→ id: 'link-expiration',\n 77→ name: 'Link Expiration',\n 78→ description: 'Set automatic expiration for share links',\n 79→ enabled: true,\n 80→ taskId: 'TASK 46',\n 81→ },\n 82→ {\n 83→ id: 'clipboard-copy',\n 84→ name: 'Clipboard Copy',\n 85→ description: 'Copy share link URL to clipboard',\n 86→ enabled: true,\n 87→ taskId: 'TASK 46',\n 88→ },\n 89→ {\n 90→ id: 'link-analytics',\n 91→ name: 'Link Analytics',\n 92→ description: 'View basic analytics for share links',\n 93→ enabled: true,\n 94→ taskId: 'TASK 46',\n 95→ },\n 96→ ],\n 97→ dependencies: [\n 98→ {\n 99→ name: '../lib/share-links',\n 100→ type: 'lib',\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "04900c55-89c7-40f7-b783-4d28db854c95"
}
[2026-02-06T17:21:39.372Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01PgXarHTYYf5XM73afVeyxL",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01MYZdQjMpySFDtnFDYkQbbf",
"name": "Bash",
"input": {
"command": "find /tmp/gh-issue-solver-1770398441546 -type f -name \"*.vue\" -o -name \"*.ts\" | xargs grep -l \"tab\\|вкладк\" | head -20",
"description": "Find files containing tab-related content"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 18591,
"cache_read_input_tokens": 27135,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 18591
},
"output_tokens": 2,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "4613a1b8-f376-4f93-9c13-07e2aada3c9b"
}
[2026-02-06T17:21:39.613Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01MYZdQjMpySFDtnFDYkQbbf",
"type": "tool_result",
"content": "/tmp/gh-issue-solver-1770398441546/scripts/vite-plugin-metamode.ts\n/tmp/gh-issue-solver-1770398441546/scripts/metamode-preprocessor.ts\n/tmp/gh-issue-solver-1770398441546/scripts/metamode-inline-extractor.ts\n/tmp/gh-issue-solver-1770398441546/scripts/metamode-ai-optimizer.ts\n/tmp/gh-issue-solver-1770398441546/scripts/metamode-shared.ts\n/tmp/gh-issue-solver-1770398441546/env.d.ts\n/tmp/gh-issue-solver-1770398441546/server/src/session-store.ts\n/tmp/gh-issue-solver-1770398441546/experiments/debug-test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ExtendedSearchPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/FFTChannelEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ComponentContextPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetamodeTreePanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/StackPresetPicker.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeWindow.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/FFTChannelEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeQueryPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/FFTParamEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/UnifiedEditor.vue.test.ts\n/tmp/gh-issue-solver-1770398441546/src/components/ComponentInfo.vue\n/tmp/gh-issue-solver-1770398441546/src/components/StackEditor.vue\nxargs: grep: terminated by signal 13",
"is_error": false
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "5d48d6ce-7c3b-402d-847c-be4ccd37e473"
}
[2026-02-06T17:21:39.675Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01PgXarHTYYf5XM73afVeyxL",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_019ArYCfdzSdG57buPcbg8s1",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/ANALYSIS.md",
"limit": 100
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 18591,
"cache_read_input_tokens": 27135,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 18591
},
"output_tokens": 2,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "b2f1a051-781a-418e-b27a-24a140eb00e6"
}
[2026-02-06T17:21:39.694Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_019ArYCfdzSdG57buPcbg8s1",
"type": "tool_result",
"content": " 1→# Анализ методов параметрического описания и генерации воксельных кубиков\n 2→\n 3→## Введение\n 4→\n 5→Данный документ содержит детальный анализ различных подходов к параметрическому описанию и генерации воксельных кубиков для веб-редактора isocubic. Основная задача — выбрать оптимальный метод, который обеспечит:\n 6→\n 7→- **Идеальную сшивку границ** между соседними кубиками\n 8→- **Высокую производительность** в браузере (60 FPS на мобильных устройствах)\n 9→- **Компактное хранение данных** (минимальный размер JSON-конфигов)\n 10→- **Гибкость генерации** (поддержка ИИ-генерации по промпту)\n 11→- **Физическую интерпретацию** (энергия, плотность материи, разрушение)\n 12→\n 13→---\n 14→\n 15→## 1. 3D Частотный RGBA Спектр (FFT-подход)\n 16→\n 17→### 1.1 Описание метода\n 18→\n 19→Каждый кубик представляется как 3D-массив спектральных коэффициентов в частотной области. Используется дискретное преобразование Фурье (FFT) для перехода между пространственным и спектральным представлением.\n 20→\n 21→#### Математическая основа\n 22→\n 23→Для функции $f(x,y,z)$ размером $N \\times N \\times N$:\n 24→\n 25→```math\n 26→F(u,v,w) = \\sum_{x=0}^{N-1} \\sum_{y=0}^{N-1} \\sum_{z=0}^{N-1} f(x,y,z) \\cdot e^{-2\\pi i (ux/N + vy/N + wz/N)}\n 27→```\n 28→\n 29→**Ключевое свойство:** FFT предполагает периодичность сигнала, что гарантирует 100% сшивку границ:\n 30→- $f(0,y,z) = f(N,y,z)$\n 31→- $f(x,0,z) = f(x,N,z)$\n 32→- $f(x,y,0) = f(x,y,N)$\n 33→\n 34→#### Энергетический формализм\n 35→\n 36→Вместо прямой работы с RGBA-значениями, используется **комплексный потенциал** $\\psi$:\n 37→\n 38→```math\n 39→\\psi_c(x,y,z) = A_c(x,y,z) \\cdot e^{i\\phi_c(x,y,z)}\n 40→```\n 41→\n 42→где $c \\in \\{r, g, b, a\\}$\n 43→\n 44→**Плотность энергии:**\n 45→```math\n 46→E_c(x,y,z) = |\\psi_c(x,y,z)|^2 = A_c^2(x,y,z)\n 47→```\n 48→\n 49→**Преимущества энергетического подхода:**\n 50→- При $\\psi = 0$ везде → $E = 0$ → полный вакуум (нет проблем с DC-компонентом)\n 51→- Закон сохранения энергии при преобразованиях (теорема Парсеваля)\n 52→- Физически осмысленная интерпретация для игровых механик\n 53→\n 54→### 1.2 Структура данных\n 55→\n 56→```json\n 57→{\n 58→ \"id\": \"energy_cube_001\",\n 59→ \"fft_size\": 8,\n 60→ \"energy_capacity\": 185.3,\n 61→ \"is_magical\": false,\n 62→ \"channels\": {\n 63→ \"r\": {\n 64→ \"dc_amplitude\": 0.75,\n 65→ \"dc_phase\": 0.0,\n 66→ \"coefficients\": [\n 67→ {\"freq\": [1,0,0], \"amp\": 0.65, \"phase\": 1.8},\n 68→ {\"freq\": [0,2,0], \"amp\": 0.45, \"phase\": 4.2}\n 69→ ]\n 70→ },\n 71→ \"g\": { ... },\n 72→ \"b\": { ... },\n 73→ \"a\": {\n 74→ \"dc_amplitude\": 0.9,\n 75→ \"dc_phase\": 0.3,\n 76→ \"coefficients\": [\n 77→ {\"freq\": [3,0,0], \"amp\": 0.8, \"phase\": 2.7}\n 78→ ]\n 79→ }\n 80→ },\n 81→ \"physics\": {\n 82→ \"coherence_loss\": 0.03,\n 83→ \"fracture_threshold\": 120.0\n 84→ }\n 85→}\n 86→```\n 87→\n 88→### 1.3 Реализация шейдера\n 89→\n 90→```glsl\n 91→// energy_cube_fft.glsl\n 92→#define PI 3.14159265359\n 93→#define EPSILON 0.00001\n 94→\n 95→uniform sampler3D fftCoefficients;\n 96→uniform int fftSize;\n 97→\n 98→float energy_density(vec3 pos, int channel) {\n 99→ vec2 psi = reconstruct_psi(pos, channel);\n 100→ return dot(psi, psi); // |ψ|² = Re² + Im²\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "64801a81-5e56-4f71-8d4a-53ba2fa4346c"
}
[2026-02-06T17:21:41.608Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01N4rDFz8nozcBAQoj5V4U5o",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01B8Mwnf4XrUPjJjze6JHN2M",
"name": "Bash",
"input": {
"command": "git log --oneline --all | head -20",
"description": "View recent commits to understand the issue"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 2629,
"cache_read_input_tokens": 45726,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 2629
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "f25664d1-2bdf-47fd-8167-2bf65d4c824a"
}
[2026-02-06T17:21:41.774Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01B8Mwnf4XrUPjJjze6JHN2M",
"type": "tool_result",
"content": "7dbb4de Initial commit with task details\n79dc7f0 Revert \"Initial commit with task details\"\n1efde42 TASK 82: Add build system for @isocubic/metamode package (Phase 13)\n3be328f Initial commit with task details\n85db0cd Merge pull request #267 from konard/issue-266-1aeb1ec4d873\n38e0074 Revert \"Initial commit with task details\"\na2f1261 Fix UnifiedEditor prop binding: use :current-cube instead of :cube\n318349d Initial commit with task details\ndb989fc Merge pull request #265 from konard/issue-264-285bb69fba25\n40cdfaa Revert \"Initial commit with task details\"\n11c5e23 Analyze MetaMode implementation and fix identified issues\ncea9b87 Initial commit with task details\n0cfde66 Update metamode.json\n1166ecf update\n6166a23 Merge pull request #263 from konard/issue-262-d515f91860b0\n45ced62 Revert \"Initial commit with task details\"\n1af6056 Fix screenshot capturing entire viewport instead of just cube preview (#262)\n17731f9 Initial commit with task details\n0ed9108 Add screenshot for issue: screenshot-screenshot_1770203730652_d95v2vt-1770203730652.png\n1831277 Merge pull request #261 from konard/issue-260-5684c33679a5",
"is_error": false
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "f9424f83-346f-44f9-93af-a66c1045631d"
}
[2026-02-06T17:21:41.975Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01N4rDFz8nozcBAQoj5V4U5o",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01TAmdrp8KrsYTNRNwZKEsXB",
"name": "Bash",
"input": {
"command": "git log -1 --format=%B",
"description": "Get the commit message for context"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 2629,
"cache_read_input_tokens": 45726,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 2629
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "ed449454-89d8-4481-a8ae-569eecb0d1cd"
}
[2026-02-06T17:21:42.198Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01TAmdrp8KrsYTNRNwZKEsXB",
"type": "tool_result",
"content": "Initial commit with task details\n\nAdding CLAUDE.md with task information for AI processing.\nThis file will be removed when the task is complete.\n\nIssue: https://github.com/netkeep80/isocubic/issues/269",
"is_error": false
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "cd989b98-e358-4a6c-8fae-9ec1de84f71b"
}
[2026-02-06T17:21:42.275Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01N4rDFz8nozcBAQoj5V4U5o",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01XXBY9Vpv5KqQXmLck2zxTX",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/description.md",
"limit": 150
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 2629,
"cache_read_input_tokens": 45726,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 2629
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "a66702e9-8fff-4bfb-87d4-3aca02789dd7"
}
[2026-02-06T17:21:42.302Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01XXBY9Vpv5KqQXmLck2zxTX",
"type": "tool_result",
"content": " 1→Отлично! Собираем всё в **готовые промпты для ИИ-агентов**, которые будут генерировать код, архитектуру и контент. Каждый промпт содержит **контекст, требования, примеры и формат вывода** — так агенты дадут точные результаты.\n 2→\n 3→---\n 4→\n 5→### **Промпт 1: Описание игры для генерации архитектуры движка** \n 6→**Контекст**: \n 7→> Я — инди-разработчик с 25-летним опытом. Создаю веб-игру в духе **Diablo 1** и **X-COM: UFO**, но с современным стеком (Three.js, WASM, TensorFlow.js). Мир — изометрический 2.5D, с процедурной генерацией локаций. Ключевые механики: \n 8→> - Тактические бои в реальном времени с паузой (как в X-COM) \n 9→> - Гибридная система ресурсов: технологическая энергия + магическая мана \n 10→> - Управление базой: исследования, найм солдат, перманентные последствия смертей \n 11→> - Сеттинг: постапокалиптическое фэнтези, где магия и технологии слились после катастрофы (биомеханические демоны, одержимые учёные). \n 12→> \n 13→> **Требования к архитектуре**: \n 14→> 1. Многослойная метапрограммная система: каждый слой — DSL + виртуальная машина (от физики до нарратива). \n 15→> 2. Поддержка веба: PWA, прогрессивная загрузка, работа на мобильных устройствах. \n 16→> 3. Интеграция ИИ: генерация квестов через LLM, балансировка сложности через RL-агентов. \n 17→\n 18→**Задача для агента**: \n 19→Сгенерируй **схему архитектуры движка** в формате Mermaid, с описанием: \n 20→- Названия слоёв (от 0 до 4) \n 21→- Технологии для каждого слоя (Three.js, Rapier.js и т.д.) \n 22→- Примеры DSL-команд для слоёв 2 (боевая логика) и 4 (нарратив) \n 23→- Как данные передаются между слоями \n 24→\n 25→**Формат вывода**: \n 26→```markdown\n 27→### Архитектура движка \"Aethelgard\"\n 28→\n 29→```mermaid\n 30→graph TD\n 31→ A[Слой 0: Системные примитивы] -->|WASM память| B[Слой 1: Графика/физика]\n 32→ B -->|События коллайдеров| C[Слой 2: Боевая логика]\n 33→ C -->|Ресурсы| D[Слой 3: Тактика/база]\n 34→ D -->|Сюжетные триггеры| E[Слой 4: Нарратив/ИИ]\n 35→```\n 36→\n 37→**Слой 2 (пример DSL):** \n 38→```relations\n 39→ability CyberPulse {\n 40→ cost: Energy(30) | Mana(15);\n 41→ effect: Damage(25) + Slow(3s);\n 42→}\n 43→```\n 44→\n 45→**Слой 4 (пример генерации):** \n 46→Запрос к LLM: \n 47→\"Создай квест про восстановление артефакта в лаборатории, где технологии смешались с магией. Включи 1 ловушку и 1 NPC-предателя\"\n 48→```\n 49→\n 50→---\n 51→\n 52→### **Промпт 2: Идея про кубический элемент для генерации шейдеров и физики** \n 53→**Контекст**: \n 54→> Заменяем традиционные 3D-модели на **параметрические кубы в кубической сетке**. Каждый куб: \n 55→> - Хранит **спектральные коэффициенты** (как в JPEG), а не текстуры \n 56→> - Имеет **базовый цвет**, **градиенты** (по осям/радиусу), **шум** (Perlin/Worley) и **прозрачность** \n 57→> - Автоматически **сшивает границы** с соседями через интерполяцию параметров \n 58→> - Поддерживает **динамические изменения**: удар → трещины (добавление высокочастотных коэффициентов), магия → свечение (изменение emission) \n 59→> \n 60→> **Требования**: \n 61→> 1. Шейдер должен рисовать куб без артефактов на границах, даже при частичной прозрачности. \n 62→> 2. Физика: каждый куб — convex hull из 8 точек (оптимизация для Rapier.js). \n 63→> 3. Данные хранятся в JSON с чёткой схемой (пример ниже). \n 64→\n 65→**Задача для агента**: \n 66→Сгенерируй **GLSL-шейдер для сшивки кубов** и **JSON-схему конфига** с комментариями. Учти: \n 67→- Поддержку прозрачности в спектральном пространстве \n 68→- Анимацию разрушения через параметры \n 69→- Совместимость с Three.js и WebGPU \n 70→\n 71→**Формат вывода**: \n 72→```glsl\n 73→// spectral_cube_shader.glsl\n 74→uniform sampler3D dctCoefficients;\n 75→uniform float time;\n 76→\n 77→vec4 calculateColor(vec3 worldPos) {\n 78→ // [КОД ШЕЙДЕРА: сшивка 8 соседних кубов, интерполяция градиентов, шум]\n 79→}\n 80→```\n 81→\n 82→```json\n 83→{\n 84→ \"id\": \"stone_wall_moss_001\",\n 85→ \"base\": { \"color\": [0.65, 0.55, 0.45], \"transparency\": 1.0 },\n 86→ \"spectral\": [\n 87→ { \"axis\": \"y\", \"factor\": 0.4, \"color_shift\": [0.2, 0.35, 0.15] } // мох внизу\n 88→ ],\n 89→ \"noise\": {\n 90→ \"type\": \"perlin\",\n 91→ \"scale\": 8.0,\n 92→ \"mask\": \"bottom_40%\" // шум только в нижней части\n 93→ }\n 94→}\n 95→```\n 96→\n 97→---\n 98→\n 99→### **Промпт 3: Редактор элементов с ИИ для генерации UI и логики** \n 100→**Контекст**: \n 101→> Нужен **веб-редактор** для создания параметрических кубов. Основные функции: \n 102→> - Генерация по текстовому промпту (например: «кусок каменной средневековой кладки поросшей мхом из песчанника») \n 103→> - Визуализация в реальном времени через Three.js \n 104→> - Ручная настройка параметров: цвет, градиенты, тип шума \n 105→> - Экспорт в JSON для генератора уровней \n 106→> \n 107→> **Технические требования**: \n 108→> 1. Фронтенд: React + Three.js (через drei) \n 109→> 2. ИИ: TinyLLM на TensorFlow.js (клиентская модель, 5MB) \n 110→> 3. Хранение: LocalStorage + экспорт в файл \n 111→> 4. Производительность: рендеринг 60 FPS на мобильных устройствах \n 112→\n 113→**Задача для агента**: \n 114→Сгенерируй **React-компонент редактора** с: \n 115→- Полем ввода для промпта \n 116→- Three.js-превью куба \n 117→- Кнопкой экспорта JSON \n 118→- Интеграцией с TinyLLM (заглушка для тестов) \n 119→\n 120→**Формат вывода**: \n 121→```jsx\n 122→// CubikEditor.jsx\n 123→import { useState } from 'react';\n 124→import { Canvas } from '@react-three/fiber';\n 125→import CubePreview from './CubePreview';\n 126→\n 127→export default function CubikEditor() {\n 128→ const [prompt, setPrompt] = useState('');\n 129→ const [cubeConfig, setCubeConfig] = useState(DEFAULT_CONFIG);\n 130→ \n 131→ const generateFromPrompt = async () => {\n 132→ // [КОД: вызов TinyLLM, парсинг JSON, обновление cubeConfig]\n 133→ };\n 134→\n 135→ return (\n 136→ <div className=\"editor-container\">\n 137→ <textarea \n 138→ value={prompt}\n 139→ onChange={(e) => setPrompt(e.target.value)}\n 140→ placeholder=\"Опишите кубик...\"\n 141→ />\n 142→ <button onClick={generateFromPrompt}>Создать по описанию</button>\n 143→ \n 144→ <Canvas>\n 145→ <CubePreview config={cubeConfig} />\n 146→ </Canvas>\n 147→ \n 148→ <button onClick={() => downloadJSON(cubeConfig)}>Экспортировать JSON</button>\n 149→ </div>\n 150→ );\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "83979104-acfd-4c65-b086-f8bbcf20b5ee"
}
[2026-02-06T17:21:44.112Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_017y8TeBAgv7iyFcnZiixHUv",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01PJbX45WW4mnsSuvGLJQaL1",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/components/UnifiedEditor.vue",
"limit": 150
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 3747,
"cache_read_input_tokens": 48355,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 3747
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "d43d1b00-bee2-4410-a1bd-ee47c1951a40"
}
[2026-02-06T17:21:44.115Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01PJbX45WW4mnsSuvGLJQaL1",
"type": "tool_result",
"content": " 1→<!--\n 2→ UnifiedEditor Component\n 3→ Vue.js 3.0 SFC combining all editors into a single adaptive interface with tabs\n 4→\n 5→ Migrated from React (UnifiedEditor.tsx) to Vue.js SFC as part of Phase 10 (TASK 63)\n 6→\n 7→ TASK 34: Unified Editor\n 8→ TASK 40: Developer Mode metadata support\n 9→-->\n 10→<script lang=\"ts\">\n 11→import type { ComponentMeta } from '../types/component-meta'\n 12→import { registerComponentMeta } from '../types/component-meta'\n 13→\n 14→/**\n 15→ * Component metadata for Developer Mode\n 16→ */\n 17→export const UNIFIED_EDITOR_META: ComponentMeta = {\n 18→ id: 'unified-editor',\n 19→ name: 'UnifiedEditor',\n 20→ version: '1.2.0',\n 21→ summary: 'Main editor component combining all sub-editors into a unified tabbed interface.',\n 22→ description:\n 23→ 'UnifiedEditor is the primary editing interface for isocubic. It combines ParamEditor, ' +\n 24→ 'FFTParamEditor, StackEditor, CollaborativeParamEditor, LODConfigEditor, and EnergyVisualizationEditor ' +\n 25→ 'into a single adaptive component with tab-based navigation.',\n 26→ phase: 10,\n 27→ taskId: 'TASK 63',\n 28→ filePath: 'components/UnifiedEditor.vue',\n 29→ history: [\n 30→ {\n 31→ version: '1.0.0',\n 32→ date: '2026-01-29T19:00:00Z',\n 33→ description: 'Initial implementation of UnifiedEditor with tabbed interface',\n 34→ taskId: 'TASK 34',\n 35→ type: 'created',\n 36→ },\n 37→ {\n 38→ version: '1.1.0',\n 39→ date: '2026-01-29T21:00:00Z',\n 40→ description: 'Added Developer Mode metadata support',\n 41→ taskId: 'TASK 40',\n 42→ type: 'updated',\n 43→ },\n 44→ {\n 45→ version: '1.2.0',\n 46→ date: '2026-01-31T16:00:00Z',\n 47→ description: 'Migrated to Vue.js 3.0 SFC',\n 48→ taskId: 'TASK 63',\n 49→ type: 'updated',\n 50→ },\n 51→ ],\n 52→ features: [\n 53→ {\n 54→ id: 'tab-navigation',\n 55→ name: 'Tab Navigation',\n 56→ description: 'Tab-based navigation for organizing editor sections',\n 57→ enabled: true,\n 58→ taskId: 'TASK 34',\n 59→ },\n 60→ {\n 61→ id: 'mode-switching',\n 62→ name: 'Editor Mode Switching',\n 63→ description: 'Switch between Spectral, FFT, and Stack editing modes',\n 64→ enabled: true,\n 65→ taskId: 'TASK 34',\n 66→ },\n 67→ {\n 68→ id: 'quick-actions',\n 69→ name: 'Quick Actions',\n 70→ description: 'Panel with common operations (Reset, Duplicate, Randomize, Copy, Export)',\n 71→ enabled: true,\n 72→ taskId: 'TASK 34',\n 73→ },\n 74→ {\n 75→ id: 'keyboard-shortcuts',\n 76→ name: 'Keyboard Shortcuts',\n 77→ description: 'Keyboard shortcuts for quick actions',\n 78→ enabled: true,\n 79→ taskId: 'TASK 34',\n 80→ },\n 81→ {\n 82→ id: 'lazy-loading',\n 83→ name: 'Lazy Loading',\n 84→ description: 'Sub-editors are loaded on-demand for better initial load performance',\n 85→ enabled: true,\n 86→ taskId: 'TASK 34',\n 87→ },\n 88→ ],\n 89→ dependencies: [],\n 90→ relatedFiles: [],\n 91→ props: [],\n 92→ tags: ['editor', 'ui', 'tabs', 'spectral', 'fft', 'stack', 'collaboration', 'phase-10'],\n 93→ status: 'stable',\n 94→ lastUpdated: '2026-01-31T16:00:00Z',\n 95→}\n 96→\n 97→registerComponentMeta(UNIFIED_EDITOR_META)\n 98→</script>\n 99→\n 100→<script setup lang=\"ts\">\n 101→import { ref, computed, watch, onMounted, onUnmounted, defineAsyncComponent } from 'vue'\n 102→import type { SpectralCube, FFTCubeConfig } from '../types/cube'\n 103→import type { CubeStackConfig } from '../types/stack'\n 104→import type { LODConfig, LODStatistics } from '../types/lod'\n 105→import type { Participant, CollaborativeAction, ParticipantId } from '../types/collaboration'\n 106→import type { EnergyVisualizationEditorSettings } from '../lib/energy-visualization-defaults'\n 107→import { createDefaultCube, createDefaultFFTCube } from '../types/cube'\n 108→import { createCubeStack } from '../types/stack'\n 109→import { CollaborationManager } from '../lib/collaboration'\n 110→import { DEFAULT_EDITOR_SETTINGS } from '../lib/energy-visualization-defaults'\n 111→\n 112→// Lazy load heavy editor components\n 113→const ParamEditor = defineAsyncComponent(() => import('./ParamEditor.vue'))\n 114→const FFTParamEditor = defineAsyncComponent(() => import('./FFTParamEditor.vue'))\n 115→const StackEditor = defineAsyncComponent(() => import('./StackEditor.vue'))\n 116→const LODConfigEditor = defineAsyncComponent(() => import('./LODConfigEditor.vue'))\n 117→const EnergyVisualizationEditor = defineAsyncComponent(\n 118→ () => import('./EnergyVisualizationEditor.vue')\n 119→)\n 120→const FFTChannelEditor = defineAsyncComponent(() => import('./FFTChannelEditor.vue'))\n 121→// TODO: CollaborativeParamEditor will be migrated in TASK 65\n 122→\n 123→/** Editor mode determines which type of cube/object is being edited */\n 124→export type EditorMode = 'spectral' | 'fft' | 'stack'\n 125→\n 126→/** Tab identifiers for the unified editor */\n 127→export type EditorTab =\n 128→ | 'general'\n 129→ | 'appearance'\n 130→ | 'physics'\n 131→ | 'energy'\n 132→ | 'stack'\n 133→ | 'lod'\n 134→ | 'collaboration'\n 135→\n 136→/** Quick action types */\n 137→export type QuickActionType =\n 138→ | 'reset'\n 139→ | 'duplicate'\n 140→ | 'randomize'\n 141→ | 'save_preset'\n 142→ | 'load_preset'\n 143→ | 'export_json'\n 144→ | 'copy_config'\n 145→\n 146→/** Quick action definition */\n 147→export interface QuickAction {\n 148→ type: QuickActionType\n 149→ label: string\n 150→ icon: string\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "8bc0b733-8b10-42e9-8649-ba87669126d3"
}
[2026-02-06T17:21:44.567Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_017y8TeBAgv7iyFcnZiixHUv",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01MQ537P5Bfqy7LrzZpQUdGD",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/components/windows/CommunityGalleryWindow.vue",
"limit": 100
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 3747,
"cache_read_input_tokens": 48355,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 3747
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "b59b4394-5591-42ca-a937-9a75ac97ee00"
}
[2026-02-06T17:21:44.570Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01MQ537P5Bfqy7LrzZpQUdGD",
"type": "tool_result",
"content": " 1→<!--\n 2→ CommunityGalleryWindow.vue — Window wrapper for CommunityGallery component\n 3→ Phase 11, TASK 74: Window wrapper components\n 4→-->\n 5→<script setup lang=\"ts\">\n 6→import CommunityGallery from '../CommunityGallery.vue'\n 7→import { COMMUNITY_GALLERY_META } from '../CommunityGallery.vue'\n 8→import ComponentInfo from '../ComponentInfo.vue'\n 9→import type { CubeConfig } from '../../types/cube'\n 10→\n 11→const emit = defineEmits<{\n 12→ cubeSelect: [cube: CubeConfig]\n 13→}>()\n 14→\n 15→function handleCubeSelect(cube: CubeConfig) {\n 16→ emit('cubeSelect', cube)\n 17→}\n 18→</script>\n 19→\n 20→<template>\n 21→ <ComponentInfo :meta=\"COMMUNITY_GALLERY_META\">\n 22→ <CommunityGallery @cube-select=\"handleCubeSelect\" />\n 23→ </ComponentInfo>\n 24→</template>\n 25→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "ba356265-9dfe-471d-9a6d-431385d71e07"
}
[2026-02-06T17:21:45.210Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_017y8TeBAgv7iyFcnZiixHUv",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_013PD5o5WutCQCNfQJeAwgjS",
"name": "Bash",
"input": {
"command": "grep -r \"social\\|вкладк\\|社交\\|tab\" /tmp/gh-issue-solver-1770398441546/src/components/CommunityGallery.vue | head -20",
"description": "Search for social and tab references in CommunityGallery"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 3747,
"cache_read_input_tokens": 48355,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 3747
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "3ba5458b-b2f3-4d95-b987-9f198c913b52"
}
[2026-02-06T17:21:45.295Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_013PD5o5WutCQCNfQJeAwgjS",
"type": "tool_result",
"content": " 'social features like liking cubes. The component supports pagination for browsing ' +\n tags: ['community', 'gallery', 'social', 'search', 'filter', 'phase-7'],\n status: 'stable',\n :tabindex=\"0\"",
"is_error": false
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "d2c9633b-dd6b-4faa-a08d-f8421a54c8f7"
}
[2026-02-06T17:21:47.230Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_016gAEu9R5eNgNLvGPFzEb7F",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01WDzpFGdMGXbakSUCDAFwEV",
"name": "Bash",
"input": {
"command": "git log --all --oneline | grep -i \"269\\|social\\|tab\\|вкладк\"",
"description": "Search for commits related to issue 269"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 2975,
"cache_read_input_tokens": 52102,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 2975
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "13a72911-3520-4e06-a38b-6805df4f153e"
}
[2026-02-06T17:21:47.526Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01WDzpFGdMGXbakSUCDAFwEV",
"type": "tool_result",
"content": "dccef4e Fix task data loss when switching tabs in MetaMode window\n9f2c1ee Add MetaNet tree view tab to VueDevMode window\n5c51704 Merge pull request #209 from konard/issue-208-35f56db26904\ndca41ba Исправление тестов для нового таба Social\n22692d8 fix: remove remaining lastIndexUpdate reference\n6b837ab feat: implement social functions (TASK 47) - comments, subscriptions, notifications, favorites\n22699cf Merge pull request #41 from konard/issue-27-286c2e020895",
"is_error": false
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "722d6377-66af-47ee-8c9b-d6a7132708f8"
}
[2026-02-06T17:21:47.773Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_016gAEu9R5eNgNLvGPFzEb7F",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_014mswZWu4qCwWTD915xczev",
"name": "Bash",
"input": {
"command": "ls -la /tmp/gh-issue-solver-1770398441546/src/components/ | grep -i \"community\\|share\\|gallery\"",
"description": "List community-related components"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 2975,
"cache_read_input_tokens": 52102,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 2975
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "d21792d1-e38b-4cee-b296-b788b0510398"
}
[2026-02-06T17:21:48.106Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_014mswZWu4qCwWTD915xczev",
"type": "tool_result",
"content": "-rw-rw-r-- 1 hive hive 18637 Feb 6 18:20 CommunityGallery.vue\n-rw-rw-r-- 1 hive hive 19676 Feb 6 18:20 CommunityGallery.vue.test.ts\n-rw-rw-r-- 1 hive hive 15762 Feb 6 18:20 Gallery.vue\n-rw-rw-r-- 1 hive hive 13743 Feb 6 18:20 Gallery.vue.test.ts\n-rw-rw-r-- 1 hive hive 17486 Feb 6 18:20 SharePanel.vue\n-rw-rw-r-- 1 hive hive 23758 Feb 6 18:20 SharePanel.vue.test.ts",
"is_error": false
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "85b7b401-cb6e-4a8b-9502-d463c094081c"
}
[2026-02-06T17:21:48.269Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_016gAEu9R5eNgNLvGPFzEb7F",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01L7JK54BPQjvxkFr9SjEdBr",
"name": "Bash",
"input": {
"command": "find /tmp/gh-issue-solver-1770398441546 -type f -name \"*.md\" | xargs grep -l \"269\\|social\\|social media\\|вкладк\" | head -5",
"description": "Find markdown files mentioning the issue"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 2975,
"cache_read_input_tokens": 52102,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 2975
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "76631b7d-9d19-41f1-91b8-fd4bb64c8302"
}
[2026-02-06T17:21:48.359Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01L7JK54BPQjvxkFr9SjEdBr",
"type": "tool_result",
"content": "/tmp/gh-issue-solver-1770398441546/CLAUDE.md\n/tmp/gh-issue-solver-1770398441546/docs/phase-5.md\n/tmp/gh-issue-solver-1770398441546/docs/phase-12.md\n/tmp/gh-issue-solver-1770398441546/docs/phase-7.md\n/tmp/gh-issue-solver-1770398441546/docs/phase-9.md",
"is_error": false
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "4556c015-4407-492e-97ee-54f6bda8a5a4"
}
[2026-02-06T17:21:49.980Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01G6rmwzR78LGB9SKMJA7M4B",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01VE9eyEG8nNJpGuwiEAFkaL",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/docs/phase-7.md"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 1011,
"cache_read_input_tokens": 55077,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1011
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "81ce02a4-5e23-4053-8d04-ae55806f03fb"
}
[2026-02-06T17:21:49.983Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01VE9eyEG8nNJpGuwiEAFkaL",
"type": "tool_result",
"content": " 1→# Фаза 7: Публикация и шаринг кубиков\n 2→\n 3→Данный документ содержит предварительное планирование задач для реализации системы публикации и шаринга кубиков.\n 4→\n 5→**Статус**: ✅ Завершена\n 6→\n 7→---\n 8→\n 9→## Обзор\n 10→\n 11→**Цель**: Создать систему публикации и шаринга кубиков для сообщества.\n 12→\n 13→**Основные требования**:\n 14→- Система аутентификации пользователей\n 15→- Публичная галерея кубиков сообщества\n 16→- Share-ссылки для быстрого обмена\n 17→- Социальные функции (лайки, комментарии)\n 18→- Подписки на авторов\n 19→\n 20→---\n 21→\n 22→## Планируемые TASK\n 23→\n 24→### TASK 44: Система аутентификации\n 25→\n 26→**Заголовок**: `Реализация системы аутентификации пользователей`\n 27→\n 28→**Статус**: ✅ Завершено (в рамках предыдущей работы)\n 29→\n 30→**Описание**:\n 31→Создать систему регистрации и авторизации пользователей для публикации кубиков.\n 32→\n 33→**Задачи**:\n 34→- [x] Выбор провайдера аутентификации (Firebase Auth, Auth0, Supabase) — выбран Supabase\n 35→- [x] Создание UI для регистрации и входа — AuthForms компонент\n 36→- [x] Профили пользователей — UserProfile компонент\n 37→- [x] OAuth интеграция (Google, GitHub) — mock-реализация для интеграции с Supabase\n 38→\n 39→**Критерии приёмки**:\n 40→- ✅ Пользователь может зарегистрироваться и войти в систему\n 41→- ✅ OAuth авторизация через Google и/или GitHub работает (mock)\n 42→- ✅ Профиль пользователя отображает базовую информацию\n 43→- ✅ Безопасное хранение токенов авторизации (localStorage)\n 44→\n 45→**Реализовано**:\n 46→- `src/types/auth.ts` — типы и валидация для аутентификации\n 47→- `src/lib/auth.tsx` — AuthProvider, useAuth и вспомогательные хуки\n 48→- `src/components/AuthForms.tsx` — формы входа и регистрации\n 49→- `src/components/UserProfile.tsx` — профиль пользователя и аватар\n 50→- Полное покрытие тестами (1578 тестов проходят)\n 51→\n 52→**Метки**: `auth`, `users`, `security`\n 53→\n 54→---\n 55→\n 56→### TASK 45: Галерея сообщества\n 57→\n 58→**Заголовок**: `Создание публичной галереи кубиков сообщества`\n 59→\n 60→**Статус**: ✅ Завершено\n 61→\n 62→**Описание**:\n 63→Разработать публичную галерею для просмотра и поиска кубиков других пользователей.\n 64→\n 65→**Задачи**:\n 66→- [x] Дизайн галереи\n 67→- [x] Система поиска и фильтрации\n 68→- [x] Категоризация по типам\n 69→- [x] Сортировка (популярные, новые, избранные)\n 70→\n 71→**Критерии приёмки**:\n 72→- ✅ Пользователь может просматривать галерею опубликованных кубиков\n 73→- ✅ Работает поиск по названию, тегам и автору\n 74→- ✅ Фильтрация по категориям и типам материалов\n 75→- ✅ Сортировка (недавние, популярные, тренды, скачивания)\n 76→- ✅ Лайки с персистентным хранением\n 77→- ✅ Пагинация для больших коллекций\n 78→\n 79→**Реализовано**:\n 80→- `src/types/community.ts` — типы для галереи сообщества, публикаций, статистики\n 81→- `src/lib/community-gallery.ts` — сервис с mock API для работы с галереей\n 82→- `src/components/CommunityGallery.tsx` — компонент галереи сообщества\n 83→- Полное покрытие тестами (1730 тестов проходят)\n 84→\n 85→**Метки**: `gallery`, `community`, `ui`\n 86→\n 87→---\n 88→\n 89→### TASK 46: Share-ссылки\n 90→\n 91→**Заголовок**: `Реализация системы share-ссылок для кубиков`\n 92→\n 93→**Статус**: ✅ Завершено\n 94→\n 95→**Описание**:\n 96→Создать возможность генерации уникальных ссылок для быстрого обмена кубиками.\n 97→\n 98→**Задачи**:\n 99→- [x] Генерация уникальных коротких ссылок\n 100→- [x] Превью при шаринге (OG meta tags)\n 101→- [x] QR-коды для мобильного шаринга\n 102→- [x] Приватные ссылки с паролем\n 103→\n 104→**Критерии приёмки**:\n 105→- ✅ Пользователь может создать share-ссылку для любого кубика\n 106→- ✅ Генерируются уникальные короткие URL (8 символов)\n 107→- ✅ Поддерживаются режимы видимости: public, unlisted, protected\n 108→- ✅ Защита паролем с хешированием\n 109→- ✅ Настраиваемое время жизни ссылки (never, 1h, 24h, 7d, 30d)\n 110→- ✅ Генерация QR-кодов в SVG формате\n 111→- ✅ OG meta tags для социальных сетей\n 112→- ✅ Аналитика: просмотры, уникальные посетители\n 113→- ✅ Копирование в буфер обмена\n 114→- ✅ Управление ссылками: деактивация, удаление\n 115→\n 116→**Реализовано**:\n 117→- `src/types/share.ts` — типы для share-ссылок, QR-кодов, аналитики\n 118→- `src/lib/share-links.ts` — сервис с mock API для создания и управления ссылками\n 119→- `src/components/SharePanel.tsx` — компонент панели шаринга с QR-кодами\n 120→- Полное покрытие тестами\n 121→\n 122→**Метки**: `sharing`, `links`, `social`, `qr-code`\n 123→\n 124→---\n 125→\n 126→### TASK 47: Социальные функции\n 127→\n 128→**Заголовок**: `Добавление социальных функций в галерею`\n 129→\n 130→**Статус**: ✅ Завершено\n 131→\n 132→**Описание**:\n 133→Реализовать социальные функции для взаимодействия между пользователями.\n 134→\n 135→**Задачи**:\n 136→- [x] Лайки и избранное — система избранного с коллекциями и заметками\n 137→- [x] Комментарии к кубикам — полнофункциональная система комментариев с ответами\n 138→- [x] Подписки на авторов — follow/unfollow с уведомлениями\n 139→- [x] Уведомления — система уведомлений с фильтрацией по типам\n 140→\n 141→**Критерии приёмки**:\n 142→- ✅ Пользователь может добавлять кубики в избранное\n 143→- ✅ Избранное организуется в коллекции с заметками\n 144→- ✅ Полнофункциональные комментарии с ответами и лайками\n 145→- ✅ Редактирование и удаление собственных комментариев\n 146→- ✅ Подписки на авторов с отображением счётчика подписчиков\n 147→- ✅ Система уведомлений (новые подписчики, лайки, комментарии)\n 148→- ✅ Фильтрация уведомлений по типам\n 149→- ✅ Отметка уведомлений как прочитанных\n 150→\n 151→**Реализовано**:\n 152→- `src/types/social.ts` — типы для комментариев, подписок, уведомлений, избранного\n 153→- `src/lib/social.ts` — сервис с mock API для всех социальных функций\n 154→- `src/components/CommentsSection.tsx` — компонент комментариев с ответами\n 155→- `src/components/NotificationPanel.tsx` — панель уведомлений\n 156→- `src/components/SubscriptionButton.tsx` — кнопка подписки на автора\n 157→- Полное покрытие тестами (1953 тестов проходят)\n 158→\n 159→**Метки**: `social`, `community`, `engagement`, `comments`, `notifications`, `subscriptions`\n 160→\n 161→---\n 162→\n 163→### TASK 48: API для публикации\n 164→\n 165→**Заголовок**: `Создание REST API для публикации и управления кубиками`\n 166→\n 167→**Статус**: ✅ Завершено\n 168→\n 169→**Описание**:\n 170→Разработать API для серверной части системы публикации.\n 171→\n 172→**Задачи**:\n 173→- [x] Выбор бэкенд-решения (Supabase, Firebase, custom) — выбран Supabase для консистентности с auth\n 174→- [x] CRUD операции для кубиков — полный набор операций с валидацией\n 175→- [x] Модерация контента — автоматическая и ручная модерация\n 176→- [x] Rate limiting и защита — многоуровневая система лимитов\n 177→\n 178→**Критерии приёмки**:\n 179→- ✅ Полный CRUD API для публикации кубиков (create, read, update, delete)\n 180→- ✅ Валидация входных данных с детальными сообщениями об ошибках\n 181→- ✅ Система автоматической модерации (auto-approve при высоком рейтинге)\n 182→- ✅ Очередь ручной модерации для модераторов и администраторов\n 183→- ✅ Флагирование контента пользователями с автоскрытием\n 184→- ✅ Rate limiting на уровне пользователей и эндпоинтов\n 185→- ✅ Разграничение прав (user, creator, moderator, admin)\n 186→- ✅ Batch-операции для массовых действий\n 187→- ✅ Персистентное хранение в localStorage (mock для Supabase)\n 188→\n 189→**Реализовано**:\n 190→- `src/types/publishing-api.ts` — типы для REST API:\n 191→ - HTTP и статус-коды API\n 192→ - Типы запросов/ответов для CRUD операций\n 193→ - Система модерации (статусы, записи, история)\n 194→ - Rate limiting (тиры, конфигурация эндпоинтов)\n 195→ - Batch-операции\n 196→ - Валидаторы и хелперы\n 197→- `src/lib/publishing-api.ts` — сервис с mock API:\n 198→ - `createCube()` — публикация нового кубика с авто-модерацией\n 199→ - `getCube()` — получение кубика с подсчётом просмотров\n 200→ - `listCubes()` — листинг с фильтрацией, сортировкой, пагинацией\n 201→ - `updateCube()` — обновление с проверкой прав\n 202→ - `deleteCube()` — удаление с проверкой прав\n 203→ - `getModerationQueue()` — очередь модерации для модераторов\n 204→ - `moderateCube()` — одобрение/отклонение контента\n 205→ - `flagContent()` — флагирование пользователями\n 206→ - `batchOperation()` — массовые операции\n 207→ - Rate limiting с разными лимитами по ролям\n 208→- Полное покрытие тестами\n 209→\n 210→**Метки**: `api`, `backend`, `security`, `moderation`, `rate-limiting`\n 211→\n 212→---\n 213→\n 214→## Оценка объёма работ\n 215→\n 216→| TASK | Сложность | Приоритет | Статус |\n 217→|------|-----------|-----------|--------|\n 218→| 44. Аутентификация | Средняя | Критический | ✅ Завершено |\n 219→| 45. Галерея сообщества | Средняя | Критический | ✅ Завершено |\n 220→| 46. Share-ссылки | Низкая | Высокий | ✅ Завершено |\n 221→| 47. Социальные функции | Средняя | Средний | ✅ Завершено |\n 222→| 48. API для публикации | Высокая | Критический | ✅ Завершено |\n 223→\n 224→---\n 225→\n 226→## Следующие шаги\n 227→\n 228→После завершения Фазы 7 планируется:\n 229→\n 230→- **Фаза 8**: [Интеграция AI с системой метаданных](phase-8.md)\n 231→ - AI Query Interface для DevMode\n 232→ - AI Metadata Processor\n 233→ - Component Context Assistant\n 234→ - Расширенный поиск компонентов\n 235→ - Интеграция с TinyLLM\n 236→\n 237→---\n 238→\n 239→**Назад к [README](../../README.md)**\n 240→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "8670d65c-20e7-44f0-898a-59fff0f7829b"
}
[2026-02-06T17:21:50.431Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01G6rmwzR78LGB9SKMJA7M4B",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01B4i2MeGSqwfXZufyZ53tnR",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/docs/phase-9.md"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 1011,
"cache_read_input_tokens": 55077,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1011
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "0a3a7250-d083-4ed3-9356-41cadd17f5e5"
}
[2026-02-06T17:21:50.440Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01B4i2MeGSqwfXZufyZ53tnR",
"type": "tool_result",
"content": " 1→# Фаза 9: GOD MODE — Автоматизация интерактивной разработки\n 2→\n 3→Данный документ содержит планирование задач для создания системы интерактивной разработки приложений с AI-агентом (GOD MODE).\n 4→\n 5→**Статус**: ✅ Завершена\n 6→\n 7→---\n 8→\n 9→## Обзор\n 10→\n 11→**Цель**: Создать систему интерактивной разработки, позволяющую пользователям взаимодействовать с AI-агентом прямо внутри приложения для формулировки и автоматического создания задач (GitHub issues).\n 12→\n 13→**Проблема**: Текущая система DevMode представлена несколькими разрозненными панелями (DevModeQueryPanel, ComponentContextPanel, ExtendedSearchPanel), которые:\n 14→- Появляются в разных местах экрана, что неудобно\n 15→- Не предоставляют единую точку взаимодействия с AI-агентом\n 16→- Не позволяют автоматически создавать задачи в репозитории\n 17→- Тесно связаны с кодовой базой isocubic и не могут быть переиспользованы\n 18→\n 19→**Решение**: GOD MODE — единый интерфейс интерактивной разработки:\n 20→- **Отдельное плавающее окно** с вкладками для всех DevMode-функций\n 21→- **AI-агент** для обсуждения улучшений и формулировки задач\n 22→- **Автоматическое создание issues** в GitHub-репозитории\n 23→- **Выделение в библиотеку** для использования в других проектах\n 24→\n 25→**Концепция**: Визуальный WYSIWYG для разработки — пользователь \"путешествует\" по приложению с AI-компаньоном, обсуждает что нужно изменить, а AI формирует задачу для \"Hive Mind\" (команды разработчиков или других AI-агентов).\n 26→\n 27→---\n 28→\n 29→## Планируемые TASK\n 30→\n 31→### TASK 54: Unified DevMode Window ✅\n 32→\n 33→**Заголовок**: `Единое плавающее окно для DevMode`\n 34→\n 35→**Статус**: ✅ Завершено\n 36→\n 37→**Описание**:\n 38→Создать единое плавающее окно, объединяющее все DevMode-панели в один интерфейс с вкладками.\n 39→\n 40→**Выполненные задачи**:\n 41→- [x] Создание компонента GodModeWindow (плавающее окно)\n 42→- [x] Drag-and-drop перемещение окна\n 43→- [x] Изменение размера окна (8 направлений: углы и стороны)\n 44→- [x] Система вкладок (Query, Context, Search, Conversation, Issues)\n 45→- [x] Сохранение позиции и размера в localStorage\n 46→- [x] Интеграция существующих панелей в вкладки\n 47→- [x] Клавиатурные сокращения (Ctrl+Shift+G для открытия)\n 48→- [x] Кнопки Pin/Minimize/Close\n 49→\n 50→**Критерии приёмки**:\n 51→- [x] Окно можно перемещать по экрану\n 52→- [x] Окно можно изменять в размерах\n 53→- [x] Все существующие панели доступны через вкладки\n 54→- [x] Позиция и размер сохраняются между сессиями\n 55→- [x] Окно не перекрывает основной контент (React Portal для z-index)\n 56→\n 57→**Созданные файлы**:\n 58→- `src/components/GodModeWindow.tsx` — основной компонент окна\n 59→- `src/components/GodModeWindow.test.tsx` — тесты компонента\n 60→- `src/types/god-mode.ts` — типы и утилиты для GOD MODE\n 61→- `src/types/god-mode.test.ts` — тесты типов\n 62→\n 63→**Метки**: `god-mode`, `ui`, `devmode`, `window`\n 64→\n 65→---\n 66→\n 67→### TASK 55: AI Conversation Agent ✅\n 68→\n 69→**Заголовок**: `AI-агент для интерактивного обсуждения`\n 70→\n 71→**Статус**: ✅ Завершено\n 72→\n 73→**Описание**:\n 74→Создать AI-агента для полноценного диалога с пользователем о возможных улучшениях приложения.\n 75→\n 76→**Выполненные задачи**:\n 77→- [x] Создание компонента ConversationPanel\n 78→- [x] История сообщений (chat-like interface)\n 79→- [x] Контекстное понимание текущего состояния приложения\n 80→- [x] Возможность \"показать\" AI текущий экран/компонент\n 81→- [x] Подсказки для формулировки предложений\n 82→- [x] Интеграция с TinyLLM для генерации ответов\n 83→- [x] Режим \"guided brainstorming\" для генерации идей\n 84→\n 85→**Критерии приёмки**:\n 86→- [x] Пользователь может вести диалог с AI на естественном языке\n 87→- [x] AI понимает контекст текущего компонента/экрана\n 88→- [x] История сохраняется в сессии\n 89→- [x] AI помогает сформулировать предложения по улучшению\n 90→\n 91→**Созданные файлы**:\n 92→- `src/components/ConversationPanel.tsx` — компонент чата с AI\n 93→- `src/components/ConversationPanel.test.tsx` — тесты компонента\n 94→- `src/lib/conversation-agent.ts` — AI-агент с определением намерений и генерацией ответов\n 95→- `src/lib/conversation-agent.test.ts` — тесты агента\n 96→\n 97→**Обновлённые файлы**:\n 98→- `src/types/god-mode.ts` — добавлены типы ConversationMessage, ConversationSession, утилиты для управления сессиями\n 99→- `src/components/GodModeWindow.tsx` — интеграция ConversationPanel во вкладку \"Conversation\"\n 100→\n 101→**Особенности реализации**:\n 102→- Поддержка русского и английского языков\n 103→- Определение намерений пользователя (improvement, bug, feature, question, task, general)\n 104→- Автоматические подсказки на основе намерения\n 105→- Интеграция с метаданными компонентов для контекстного понимания\n 106→- Сохранение истории диалога в localStorage\n 107→- Индикатор набора текста при обработке сообщений\n 108→- Кнопка очистки истории диалога\n 109→\n 110→**Метки**: `god-mode`, `ai`, `chat`, `conversation`\n 111→\n 112→---\n 113→\n 114→### TASK 56: Issue Draft Generator ✅\n 115→\n 116→**Заголовок**: `Генератор черновиков задач (issues)`\n 117→\n 118→**Статус**: ✅ Завершено\n 119→\n 120→**Описание**:\n 121→Создать модуль для автоматической генерации структурированных черновиков GitHub issues на основе диалога с пользователем.\n 122→\n 123→**Выполненные задачи**:\n 124→- [x] Создание типов IssueDraft, IssueTemplate\n 125→- [x] Парсинг диалога для извлечения требований\n 126→- [x] Генерация заголовка issue\n 127→- [x] Генерация структурированного описания\n 128→- [x] Предложение меток (labels)\n 129→- [x] Preview черновика перед публикацией\n 130→- [x] Редактирование черновика вручную\n 131→- [x] Шаблоны для разных типов задач (bug, feature, improvement)\n 132→- [x] Автоматическое определение типа и приоритета\n 133→- [x] Интеграция с компонентной системой\n 134→- [x] Валидация черновиков\n 135→- [x] Расчет уверенности (confidence)\n 136→- [x] Поддержка русских и английских языков\n 137→\n 138→**Критерии приёмки**:\n 139→- [x] AI генерирует структурированный черновик issue\n 140→- [x] Пользователь может просмотреть и отредактировать черновик\n 141→- [x] Поддержка разных типов задач\n 142→- [x] Автоматическое определение приоритета и сложности\n 143→\n 144→**Созданные файлы**:\n 145→- `src/types/issue-generator.ts` — типы для черновиков и шаблонов\n 146→- `src/lib/issue-generator.ts` — генератор черновиков с AI\n 147→- `src/components/IssueDraftPanel.tsx` — UI компонент для создания и редактирования\n 148→- `src/types/issue-generator.test.ts` — тесты типов и утилит\n 149→- `src/lib/issue-generator.test.ts` — тесты генератора\n 150→- `src/components/IssueDraftPanel.test.tsx` — тесты UI компонента\n 151→\n 152→**Особенности реализации**:\n 153→- Поддержка 6 типов задач: bug, feature, improvement, documentation, question, maintenance\n 154→- Автоматическое определение типа по ключевым словам (русский/английский)\n 155→- 3 встроенных шаблона: Bug Report, Feature Request, Improvement\n 156→- Система приоритетов: low, medium, high, critical\n 157→- Автоматическое предложение меток для GitHub\n 158→- Интеграция с метаданными компонентов\n 159→- Валидация черновиков с подсказками\n 160→- Поддержка скриншотов и аннотаций (заготовлено)\n 161→- Confidence score для оценки качества генерации\n 162→\n 163→**Метки**: `god-mode`, `ai`, `issues`, `generator`\n 164→\n 165→---\n 166→\n 167→### TASK 57: GitHub Integration ✅\n 168→\n 169→**Заголовок**: `Интеграция с GitHub API`\n 170→\n 171→**Статус**: ✅ Завершено\n 172→\n 173→**Описание**:\n 174→Реализовать интеграцию с GitHub API для автоматического создания issues в репозитории проекта.\n 175→\n 176→**Выполненные задачи**:\n 177→- [x] OAuth авторизация через GitHub (Device Flow + PAT)\n 178→- [x] Получение информации о репозитории\n 179→- [x] Создание issues через GitHub API\n 180→- [x] Получение списка labels репозитория\n 181→- [x] Получение шаблонов issues (если есть)\n 182→- [x] Уведомление о созданном issue\n 183→- [x] Ссылка на созданный issue\n 184→\n 185→**Критерии приёмки**:\n 186→- [x] Пользователь может авторизоваться через GitHub\n 187→- [x] Issues создаются в выбранном репозитории\n 188→- [x] Labels автоматически применяются\n 189→- [x] После создания показывается ссылка на issue\n 190→\n 191→**Созданные файлы**:\n 192→- `src/lib/github-api.ts` — клиент GitHub API (auth, issues, labels, templates)\n 193→- `src/lib/github-api.test.ts` — тесты клиента API\n 194→- `src/components/GitHubAuthButton.tsx` — компонент авторизации GitHub\n 195→- `src/components/GitHubAuthButton.test.tsx` — тесты компонента авторизации\n 196→\n 197→**Обновлённые файлы**:\n 198→- `src/components/IssueDraftPanel.tsx` — интеграция публикации issues на GitHub\n 199→- `src/components/GodModeWindow.tsx` — передача GitHub конфигурации в IssueDraftPanel\n 200→\n 201→**Особенности реализации**:\n 202→- Два метода аутентификации: Personal Access Token (PAT) и OAuth Device Flow\n 203→- Сохранение токена и метода аутентификации в localStorage\n 204→- Получение информации о репозитории, метках и шаблонах issues\n 205→- Создание issues с автоматическим применением меток\n 206→- Создание меток (labels) в репозитории при их отсутствии\n 207→- Парсинг GitHub issue templates (markdown frontmatter)\n 208→- Компактный и полный режимы кнопки авторизации\n 209→- Поддержка русского и английского языков\n 210→- Отображение результата публикации (ссылка на issue, номер)\n 211→\n 212→**Зависимости**:\n 213→- GitHub OAuth App (необходима настройка в репозитории)\n 214→\n 215→**Метки**: `god-mode`, `github`, `api`, `oauth`\n 216→\n 217→---\n 218→\n 219→### TASK 58: Screen Capture & Annotation ✅\n 220→\n 221→**Заголовок**: `Захват экрана и аннотации`\n 222→\n 223→**Статус**: ✅ Завершено\n 224→\n 225→**Описание**:\n 226→Реализовать возможность захвата скриншотов текущего состояния приложения и добавления аннотаций для иллюстрации issues.\n 227→\n 228→**Выполненные задачи**:\n 229→- [x] Захват скриншота текущего viewport\n 230→- [x] Захват отдельного компонента (по CSS-селектору или data-testid)\n 231→- [x] Инструменты аннотации (стрелки, круги, прямоугольники, текст, выделение)\n 232→- [x] Загрузка изображения в issue (base64 интеграция с IssueDraft)\n 233→- [x] Сохранение аннотированных скриншотов (localStorage persistence)\n 234→- [x] Интеграция с IssueDraftPanel (захват, просмотр, аннотирование, удаление)\n 235→\n 236→**Критерии приёмки**:\n 237→- [x] Можно сделать скриншот текущего экрана\n 238→- [x] Можно добавить аннотации на скриншот\n 239→- [x] Скриншоты прикрепляются к issues\n 240→\n 241→**Созданные файлы**:\n 242→- `src/lib/screen-capture.ts` — библиотека захвата экрана (Canvas API, SVG foreignObject, annotation rendering)\n 243→- `src/lib/screen-capture.test.ts` — тесты библиотеки захвата (53 теста)\n 244→- `src/components/AnnotationCanvas.tsx` — UI компонент для аннотирования скриншотов\n 245→- `src/components/AnnotationCanvas.test.tsx` — тесты компонента аннотаций (36 тестов)\n 246→\n 247→**Обновлённые файлы**:\n 248→- `src/components/IssueDraftPanel.tsx` — интеграция захвата скриншотов и аннотирования\n 249→\n 250→**Особенности реализации**:\n 251→- Захват viewport через Canvas API с SVG foreignObject fallback\n 252→- Прямое копирование для canvas-элементов (Three.js viewport)\n 253→- 5 инструментов аннотации: стрелки, круги, прямоугольники, текст, выделение\n 254→- 8 предустановленных цветов для аннотаций\n 255→- Undo/redo поддержка при аннотировании\n 256→- Масштабирование изображения с сохранением пропорций\n 257→- Модальное окно для аннотирования из IssueDraftPanel\n 258→- Превью скриншотов в IssueDraftPanel с возможностью удаления\n 259→- Конфигурируемый формат (PNG/JPEG/WebP), качество и масштаб\n 260→- ScreenCaptureManager для управления коллекцией скриншотов\n 261→- Сохранение/загрузка из localStorage с лимитом на количество\n 262→- Поддержка русского и английского языков\n 263→\n 264→**Метки**: `god-mode`, `screenshot`, `annotation`, `ui`\n 265→\n 266→---\n 267→\n 268→### TASK 59: GOD MODE Library Extraction ✅\n 269→\n 270→**Заголовок**: `Выделение GOD MODE в отдельную библиотеку`\n 271→\n 272→**Статус**: ✅ Завершено\n 273→\n 274→**Описание**:\n 275→Выделить GOD MODE в отдельный npm-пакет для использования в других React-проектах.\n 276→\n 277→**Выполненные задачи**:\n 278→- [x] Создание структуры npm-пакета\n 279→- [x] Абстрагирование от isocubic-специфичного кода\n 280→- [x] Конфигурируемый API для интеграции\n 281→- [x] Документация библиотеки\n 282→- [x] Примеры использования\n 283→- [ ] Публикация в npm registry (после стабилизации API)\n 284→- [ ] Настройка CI для автоматической публикации (после стабилизации API)\n 285→\n 286→**Критерии приёмки**:\n 287→- [x] Библиотека устанавливается через `npm install @isocubic/god-mode`\n 288→- [x] Простая интеграция через `<GodModeProvider>`\n 289→- [x] Конфигурация через props (GitHub repo, labels, etc.)\n 290→- [x] Работает с любым React-приложением\n 291→\n 292→**Созданные файлы**:\n 293→- `packages/god-mode/package.json` — npm-пакет `@isocubic/god-mode`\n 294→- `packages/god-mode/tsconfig.json` — TypeScript конфигурация\n 295→- `packages/god-mode/README.md` — документация библиотеки\n 296→- `packages/god-mode/src/index.ts` — публичный API (все экспорты)\n 297→- `packages/god-mode/src/types/common.ts` — общие типы (QueryLanguage, ComponentMeta, ComponentRegistry)\n 298→- `packages/god-mode/src/types/god-mode.ts` — типы окна, вкладок, сессий, утилиты\n 299→- `packages/god-mode/src/types/issue-generator.ts` — типы черновиков issues, шаблоны, валидация\n 300→- `packages/god-mode/src/components/GodModeProvider.tsx` — React Context Provider\n 301→- `packages/god-mode/examples/basic-usage.tsx` — пример интеграции\n 302→\n 303→**Тесты**:\n 304→- `src/lib/god-mode-library.test.ts` — 65 тестов библиотеки\n 305→- `src/components/GodModeProvider.test.tsx` — 16 тестов провайдера\n 306→\n 307→**Особенности реализации**:\n 308→- Абстрагирован `QueryLanguage` (без зависимости от `ai-query.ts`)\n 309→- Абстрагирован `ComponentMeta` и `ComponentRegistry` для внешних приложений\n 310→- Конфигурируемые localStorage ключи через `storageKeyPrefix`\n 311→- `GodModeProvider` — React Context для управления состоянием\n 312→- `useGodMode()` — хук для доступа к состоянию и действиям\n 313→- `peerDependencies` для React >= 18\n 314→\n 315→**Структура пакета**:\n 316→```\n 317→packages/god-mode/\n 318→├── package.json\n 319→├── tsconfig.json\n 320→├── README.md\n 321→├── src/\n 322→│ ├── index.ts # Публичный API\n 323→│ ├── types/\n 324→│ │ ├── common.ts # QueryLanguage, ComponentMeta, ComponentRegistry\n 325→│ │ ├── god-mode.ts # Window state, tabs, conversation types\n 326→│ │ └── issue-generator.ts # Issue drafts, templates, validation\n 327→│ └── components/\n 328→│ └── GodModeProvider.tsx # React Context Provider\n 329→└── examples/\n 330→ └── basic-usage.tsx # Пример интеграции\n 331→```\n 332→\n 333→**Метки**: `god-mode`, `library`, `npm`, `extraction`\n 334→\n 335→---\n 336→\n 337→## Архитектура\n 338→\n 339→### Схема взаимодействия\n 340→\n 341→```\n 342→┌─────────────────────────────────────────────────────────────────────┐\n 343→│ GOD MODE Window │\n 344→│ ┌───────────────────────────────────────────────────────────────┐ │\n 345→│ │ [Query] [Context] [Search] [Conversation] [Issues] │ │\n 346→│ ├───────────────────────────────────────────────────────────────┤ │\n 347→│ │ │ │\n 348→│ │ ┌─────────────────────────────────────────────────────────┐ │ │\n 349→│ │ │ Active Tab Content │ │ │\n 350→│ │ │ │ │ │\n 351→│ │ │ • DevModeQueryPanel (existing) │ │ │\n 352→│ │ │ • ComponentContextPanel (existing) │ │ │\n 353→│ │ │ • ExtendedSearchPanel (existing) │ │ │\n 354→│ │ │ • ConversationPanel (new) │ │ │\n 355→│ │ │ • IssueDraftPanel (new) │ │ │\n 356→│ │ │ │ │ │\n 357→│ │ └─────────────────────────────────────────────────────────┘ │ │\n 358→│ └───────────────────────────────────────────────────────────────┘ │\n 359→│ [Create Issue] [Capture Screen] [Settings] [Minimize] [Close] │\n 360→└──────────────────────────────────┬──────────────────────────────────┘\n 361→ │\n 362→ ▼\n 363→┌─────────────────────────────────────────────────────────────────────┐\n 364→│ Conversation Agent │\n 365→│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │\n 366→│ │ Context │ │ TinyLLM │ │ Issue Generator │ │\n 367→│ │ Analyzer │→→│ Dialog Engine │→→│ (Draft Creator) │ │\n 368→│ └─────────────────┘ └─────────────────┘ └─────────────────────┘ │\n 369→└──────────────────────────────────┬──────────────────────────────────┘\n 370→ │\n 371→ ▼\n 372→┌─────────────────────────────────────────────────────────────────────┐\n 373→│ GitHub Integration │\n 374→│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │\n 375→│ │ OAuth Auth │ │ Issue API │ │ Screenshot │ │\n 376→│ │ (Token) │ │ (Create/Edit) │ │ Upload (Gist) │ │\n 377→│ └─────────────────┘ └─────────────────┘ └─────────────────────┘ │\n 378→└─────────────────────────────────────────────────────────────────────┘\n 379→```\n 380→\n 381→### Поток создания Issue\n 382→\n 383→```\n 384→┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐\n 385→│ Навигация │ → │ Обсуждение │ → │ Черновик │ → │ Публикация │\n 386→│ по app │ │ с AI │ │ Issue │ │ на GitHub │\n 387→└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘\n 388→ │ │ │ │\n 389→ ▼ ▼ ▼ ▼\n 390→ \"Вижу баг в \"Кнопка не Заголовок: POST /repos/\n 391→ этой кнопке\" меняет цвет \"Fix: Button owner/repo/\n 392→ при наведении\" hover state\" issues\n 393→```\n 394→\n 395→### Типы данных\n 396→\n 397→```typescript\n 398→// Конфигурация GOD MODE\n 399→interface GodModeConfig {\n 400→ github?: {\n 401→ owner: string;\n 402→ repo: string;\n 403→ defaultLabels?: string[];\n 404→ issueTemplates?: IssueTemplate[];\n 405→ };\n 406→ position?: WindowPosition;\n 407→ size?: WindowSize;\n 408→ tabs?: GodModeTab[];\n 409→ shortcuts?: KeyboardShortcuts;\n 410→}\n 411→\n 412→// Позиция окна\n 413→interface WindowPosition {\n 414→ x: number;\n 415→ y: number;\n 416→ anchor?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n 417→}\n 418→\n 419→// Размер окна\n 420→interface WindowSize {\n 421→ width: number;\n 422→ height: number;\n 423→ minWidth?: number;\n 424→ minHeight?: number;\n 425→ maxWidth?: number;\n 426→ maxHeight?: number;\n 427→}\n 428→\n 429→// Вкладки GOD MODE\n 430→type GodModeTab =\n 431→ | 'query' // AI Query Interface\n 432→ | 'context' // Component Context\n 433→ | 'search' // Extended Search\n 434→ | 'conversation' // AI Conversation\n 435→ | 'issues'; // Issue Drafts\n 436→\n 437→// Черновик Issue\n 438→interface IssueDraft {\n 439→ title: string;\n 440→ body: string;\n 441→ labels: string[];\n 442→ priority?: 'low' | 'medium' | 'high' | 'critical';\n 443→ type?: 'bug' | 'feature' | 'improvement' | 'documentation';\n 444→ screenshots?: Screenshot[];\n 445→ relatedComponents?: string[];\n 446→ conversationContext?: ConversationMessage[];\n 447→}\n 448→\n 449→// Сообщение в диалоге\n 450→interface ConversationMessage {\n 451→ id: string;\n 452→ role: 'user' | 'assistant';\n 453→ content: string;\n 454→ timestamp: Date;\n 455→ context?: {\n 456→ componentId?: string;\n 457→ screenshot?: Screenshot;\n 458→ screenPosition?: { x: number; y: number };\n 459→ };\n 460→}\n 461→\n 462→// Скриншот с аннотациями\n 463→interface Screenshot {\n 464→ id: string;\n 465→ imageData: string; // base64\n 466→ annotations?: Annotation[];\n 467→ componentId?: string;\n 468→ timestamp: Date;\n 469→}\n 470→\n 471→// Аннотация\n 472→interface Annotation {\n 473→ type: 'arrow' | 'circle' | 'rectangle' | 'text';\n 474→ coordinates: { x: number; y: number; x2?: number; y2?: number };\n 475→ color?: string;\n 476→ text?: string;\n 477→}\n 478→```\n 479→\n 480→---\n 481→\n 482→## Оценка объёма работ\n 483→\n 484→| TASK | Сложность | Приоритет | Зависимости |\n 485→|------|-----------|-----------|-------------|\n 486→| 54. Unified DevMode Window | Средняя | Критический | — |\n 487→| 55. AI Conversation Agent | Высокая | Критический | TASK 54 |\n 488→| 56. Issue Draft Generator | Средняя | Критический | TASK 55 |\n 489→| 57. GitHub Integration | Высокая | Высокий | TASK 56 |\n 490→| 58. Screen Capture & Annotation | Средняя | Средний | TASK 54 |\n 491→| 59. GOD MODE Library Extraction | Высокая | Низкий | TASK 54-58 |\n 492→\n 493→**Порядок выполнения**:\n 494→1. TASK 54 (базовое окно) — фундамент для всего\n 495→2. TASK 55 + TASK 58 (параллельно) — AI диалог и скриншоты\n 496→3. TASK 56 (генератор issues) — требует AI агента\n 497→4. TASK 57 (GitHub) — финализация функционала\n 498→5. TASK 59 (библиотека) — рефакторинг и выделение\n 499→\n 500→---\n 501→\n 502→## Зависимости\n 503→\n 504→- **Фаза 8** (AI + Metadata) — TinyLLM, DevMode панели, метаданные\n 505→- **GitHub OAuth App** — для TASK 57 требуется создание OAuth приложения\n 506→- **html2canvas** или Canvas API — для TASK 58 (скриншоты)\n 507→\n 508→---\n 509→\n 510→## Риски и митигации\n 511→\n 512→| Риск | Вероятность | Влияние | Митигация |\n 513→|------|-------------|---------|-----------|\n 514→| Сложность OAuth авторизации | Средняя | Высокое | Использовать Personal Access Token как fallback |\n 515→| Ограничения браузера на скриншоты | Низкая | Среднее | Использовать html2canvas с polyfills |\n 516→| Размер библиотеки | Средняя | Среднее | Lazy loading, code splitting |\n 517→| Конфликты Z-index с приложением | Низкая | Низкое | Использовать React Portal |\n 518→\n 519→---\n 520→\n 521→## Следующие шаги\n 522→\n 523→После завершения Фазы 9 планируется:\n 524→\n 525→- **Фаза 10**: Marketplace и монетизация\n 526→ - Платные кубики и пресеты\n 527→ - Премиум-подписка\n 528→ - Выплаты авторам\n 529→\n 530→---\n 531→\n 532→**Назад к [README](../../README.md)**\n 533→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "58155963-7c34-4d47-85fe-ef29edac0888"
}
[2026-02-06T17:21:50.624Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01G6rmwzR78LGB9SKMJA7M4B",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_012NgViqTrRj8bnasHJPUHqs",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/docs/phase-12.md"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 1011,
"cache_read_input_tokens": 55077,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1011
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "0cd23b89-b734-4b4d-885e-9b31d83ad488"
}
[2026-02-06T17:21:50.680Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_012NgViqTrRj8bnasHJPUHqs",
"type": "tool_result",
"content": " 1→# Фаза 12: MetaMode — Унификация систем метаинформации\n 2→\n 3→Данный документ описывает планируемые задачи по унификации систем metanet, DevMode, god-mode и VueDevMode в единую систему MetaMode.\n 4→\n 5→**Статус**: ✅ Завершена (TASK 70-81 завершены)\n 6→\n 7→---\n 8→\n 9→## Обзор\n 10→\n 11→**Цель**: Объединить и упростить все существующие системы метаинформации в единую систему MetaMode, подготовленную к выделению в отдельный пакет.\n 12→\n 13→**Проблема**: В проекте существуют несколько пересекающихся систем:\n 14→\n 15→- **MetaMode** — система структурированных метаданных проекта (`metamode.json`)\n 16→- **DevMode** — режим разработчика с метаинформацией компонентов\n 17→- **VueDevMode** — Vue 3 реализация DevMode (Pinia store)\n 18→- **God-Mode** — окно разработчика с вкладками (query, context, search, conversation, issues, metamode)\n 19→\n 20→**Решение**: Создать единую систему **MetaMode** которая:\n 21→\n 22→1. Объединяет функциональность всех систем\n 23→2. Имеет компактный JSON-формат метаинформации\n 24→3. Не содержит дублирующейся информации\n 25→4. Оптимизирована для работы с AI-агентами (минимизация токенов)\n 26→5. Готова к выделению в отдельный NPM-пакет (но само выделение — позже)\n 27→\n 28→---\n 29→\n 30→## Критические приоритеты MetaMode\n 31→\n 32→1. **Помощь AI-агентам в devtime** — метаинформация должна быть легко доступна и парсима AI-агентами\n 33→2. **Помощь разработчикам с AI-агентами в devtime** — интеграция с инструментами разработки\n 34→3. **Помощь в runtime** — ориентирование в приложении и подготовка issue через окно MetaMode\n 35→4. **Компиляция в артефакт** — все метаданные встраиваются в сборку как единая БД\n 36→5. **Подключение к tinyLLM** — возможность локальных AI-запросов к метаданным\n 37→\n 38→---\n 39→\n 40→## Текущая структура (для анализа)\n 41→\n 42→### Файлы MetaMode (31 файл)\n 43→\n 44→```\n 45→metamode.json (корень)\n 46→metamode.schema.json\n 47→metamode.md\n 48→+ 28 файлов metamode.json в подкаталогах\n 49→```\n 50→\n 51→### Файлы MetaMode (после TASK 72)\n 52→\n 53→```\n 54→src/lib/metamode-store.ts (306 строк) — Pinia store\n 55→src/types/metamode.ts (704 строки) — типы и утилиты\n 56→src/types/ai-query.ts — типы AI-запросов\n 57→src/types/component-meta.ts — типы метаданных компонентов\n 58→src/types/issue-generator.ts — типы для генерации issue\n 59→```\n 60→\n 61→### Компоненты MetaMode (после TASK 72)\n 62→\n 63→```\n 64→src/components/MetaModeWindow.vue — главное окно\n 65→src/components/MetaModeIndicator.vue — индикатор режима\n 66→src/components/MetaModeQueryPanel.vue — панель AI-запросов\n 67→src/components/MetamodeTreePanel.vue — дерево метаданных\n 68→src/components/MetamodeTreeNode.vue — узел дерева\n 69→```\n 70→\n 71→### Пакет metamode (после TASK 72)\n 72→\n 73→```\n 74→packages/metamode/ — выделенный пакет с типами и провайдером\n 75→```\n 76→\n 77→---\n 78→\n 79→## Планируемые TASK\n 80→\n 81→### TASK 70: Проектирование формата metamode.json ✅\n 82→\n 83→**Заголовок**: `Проектирование нового компактного формата metamode.json`\n 84→\n 85→**Приоритет**: Критический\n 86→\n 87→**Статус**: ✅ Завершена\n 88→\n 89→**Описание**:\n 90→Создать новый формат `metamode.json` который заменит `metanet.json` и будет:\n 91→\n 92→- Более компактным\n 93→- Оптимизированным для AI-агентов\n 94→- Содержать только полезную информацию\n 95→\n 96→**Задачи**:\n 97→\n 98→- [x] Проанализировать все поля текущего metanet.json на полезность\n 99→- [x] Определить минимальный набор обязательных полей\n 100→- [x] Добавить поддержку inline-метаданных в атрибутах metamode компонентов\n 101→- [x] Создать новую JSON Schema (metamode.schema.json)\n 102→- [x] Документировать формат в metamode.md\n 103→\n 104→**Результаты**:\n 105→\n 106→- Новый формат на **30-43%** компактнее текущего (подтверждено на примерах)\n 107→- Сокращённые имена полей: `desc`, `ver`, `lang`, `dirs`, `deps`, `exp`, `dep`\n 108→- Добавлено поле `ai` для AI-summary (макс. 200 символов)\n 109→- Поддержка short-формата для директорий: `\"dirname\": \"description\"`\n 110→- Автоматическое инферирование путей к `metamode.json` подкаталогов\n 111→- Inline-метаданные: JSDoc `@metamode` и объект `const metamode = {...}`\n 112→\n 113→**Созданные файлы**:\n 114→\n 115→- `metamode.schema.json` — JSON Schema для валидации\n 116→- `metamode.md` — спецификация нового формата\n 117→\n 118→**Критерии приёмки**:\n 119→\n 120→- ✅ Новый формат на 30-50% компактнее текущего\n 121→- ✅ Все поля имеют чёткое обоснование полезности\n 122→- ✅ Формат легко читается AI-агентами\n 123→- ✅ CI/CD сборка проходит\n 124→\n 125→**Метки**: `metamode`, `schema`, `critical`\n 126→\n 127→---\n 128→\n 129→### TASK 71: Рефакторинг именования: metanet → metamode ✅\n 130→\n 131→**Заголовок**: `Переименование системы metanet в metamode`\n 132→\n 133→**Приоритет**: Критический\n 134→\n 135→**Статус**: ✅ Завершена\n 136→\n 137→**Описание**:\n 138→Переименовать все упоминания metanet в metamode:\n 139→\n 140→- Файлы: metanet.json → metamode.json\n 141→- Переменные и типы: metanet → metamode\n 142→- Команды npm: metanet:validate → metamode:validate\n 143→- Виртуальные модули: virtual:metanet → virtual:metamode\n 144→\n 145→**Задачи**:\n 146→\n 147→- [x] Переименовать все файлы metanet.json → metamode.json (31 файл)\n 148→- [x] Обновить metanet.schema.json → metamode.schema.json\n 149→- [x] Обновить metanet.md → metamode.md (уже существовала в TASK 70)\n 150→- [x] Обновить scripts/metanet-preprocessor.ts → scripts/metamode-preprocessor.ts\n 151→- [x] Обновить scripts/vite-plugin-metanet.ts → scripts/vite-plugin-metamode.ts\n 152→- [x] Обновить package.json (npm scripts)\n 153→- [x] Обновить типы в env.d.ts (Metanet* → Metamode*)\n 154→- [x] Обновить все импорты virtual:metanet → virtual:metamode\n 155→- [x] Обновить компоненты MetanetTreePanel → MetamodeTreePanel\n 156→- [x] Обновить компоненты MetanetTreeNode → MetamodeTreeNode\n 157→- [x] Обновить вкладку god-mode \"metanet\" → \"metamode\"\n 158→\n 159→**Результаты**:\n 160→\n 161→- 31 файл metanet.json переименованы в metamode.json\n 162→- Все типы MetanetJson, MetanetFileDescriptor и др. переименованы в Metamode*\n 163→- Виртуальные модули virtual:metamode и virtual:metamode/tree работают\n 164→- npm scripts обновлены: metamode:validate, metamode:compile\n 165→- Вкладка God Mode переименована: 'metanet' → 'metamode'\n 166→- Все ссылки на файлы в metamode.json обновлены\n 167→\n 168→**Критерии приёмки**:\n 169→\n 170→- ✅ Нет упоминаний \"metanet\" в коде (кроме git history и метаданных TASK 70)\n 171→- ✅ Все тесты проходят\n 172→- ✅ CI/CD сборка проходит\n 173→- ✅ npm run metamode:validate проходит\n 174→\n 175→**Метки**: `metamode`, `refactoring`, `critical`\n 176→\n 177→---\n 178→\n 179→### TASK 72: Унификация DevMode и GodMode в MetaMode ✅\n 180→\n 181→**Заголовок**: `Объединение DevMode и GodMode под именем MetaMode`\n 182→\n 183→**Приоритет**: Критический\n 184→\n 185→**Статус**: ✅ Завершена\n 186→\n 187→**Описание**:\n 188→Объединить devmode.ts и god-mode.ts в единый модуль metamode:\n 189→\n 190→- Переименовать DevMode → MetaMode\n 191→- Переименовать GodModeWindow → MetaModeWindow\n 192→- Переименовать все связанные типы и компоненты\n 193→\n 194→**Задачи**:\n 195→\n 196→- [x] Создать src/lib/metamode-store.ts (переименование devmode.ts)\n 197→- [x] Создать src/types/metamode.ts (переименование god-mode.ts)\n 198→- [x] Переименовать GodModeWindow.vue → MetaModeWindow.vue\n 199→- [x] Переименовать DevModeIndicator.vue → MetaModeIndicator.vue\n 200→- [x] Переименовать DevModeQueryPanel.vue → MetaModeQueryPanel.vue\n 201→- [x] Обновить все импорты и ссылки\n 202→- [x] Переименовать пакет packages/god-mode → packages/metamode\n 203→- [x] Обновить localStorage ключи (миграция данных с обратной совместимостью)\n 204→- [x] Обновить клавиатурную комбинацию Ctrl+Shift+G → Ctrl+Shift+M\n 205→- [x] Предоставить алиасы обратной совместимости с @deprecated аннотациями\n 206→\n 207→**Результаты**:\n 208→\n 209→- Все файлы и типы переименованы с DevMode/GodMode на MetaMode\n 210→- Пакет packages/god-mode переименован в packages/metamode\n 211→- localStorage ключи обновлены с миграцией: isocubic_devmode_settings → isocubic_metamode_settings\n 212→- Клавиатурная комбинация обновлена: Ctrl+Shift+G → Ctrl+Shift+M\n 213→- Предоставлены алиасы обратной совместимости: useDevModeStore, useDevMode, useIsDevModeEnabled, useDevModeSettings\n 214→- Все 3391 тестов проходят\n 215→- CI/CD сборка проходит\n 216→\n 217→**Критерии приёмки**:\n 218→\n 219→- ✅ Нет активных упоминаний \"DevMode\", \"GodMode\", \"god-mode\" в коде (только в алиасах совместимости)\n 220→- ✅ Функциональность полностью сохранена\n 221→- ✅ Все тесты проходят\n 222→- ✅ CI/CD сборка проходит\n 223→\n 224→**Метки**: `metamode`, `refactoring`, `critical`\n 225→\n 226→---\n 227→\n 228→### TASK 73: Удаление VueDevMode terminology ✅\n 229→\n 230→**Заголовок**: `Удаление терминологии VueDevMode`\n 231→\n 232→**Приоритет**: Высокий\n 233→\n 234→**Статус**: ✅ Завершена\n 235→\n 236→**Описание**:\n 237→Удалить все упоминания VueDevMode в пользу единого термина MetaMode.\n 238→\n 239→**Задачи**:\n 240→\n 241→- [x] Заменить VueDevMode → MetaMode в комментариях\n 242→- [x] Обновить useDevModeStore → useMetaModeStore (уже выполнено в TASK 72, оставлены deprecated алиасы)\n 243→- [x] Обновить useDevModeKeyboard → useMetaModeKeyboard (уже выполнено в TASK 72, оставлены deprecated алиасы)\n 244→- [x] Обновить useIsDevModeEnabled → useIsMetaModeEnabled (уже выполнено в TASK 72, оставлены deprecated алиасы)\n 245→- [x] Обновить все остальные хуки и функции\n 246→- [x] Обновить документацию\n 247→\n 248→**Результаты**:\n 249→\n 250→- Заменён заголовок окна \"VueDevMode\" → \"MetaMode\" в MetaModeWindow.vue\n 251→- Обновлены комментарии в issue-generator.ts\n 252→- Обновлена документация metamode.md (удалено упоминание VueDevMode)\n 253→- Обновлены метаданные ComponentContextPanel.vue (devmode → metamode)\n 254→- Deprecated алиасы сохранены для обратной совместимости (как в TASK 72)\n 255→- Обновлены тесты MetaModeWindow.vue.test.ts\n 256→\n 257→**Критерии приёмки**:\n 258→\n 259→- ✅ Нет активных упоминаний \"VueDevMode\" в коде (кроме deprecated алиасов)\n 260→- ✅ Все тесты проходят\n 261→- ✅ CI/CD сборка проходит\n 262→\n 263→**Метки**: `metamode`, `cleanup`, `high`\n 264→\n 265→---\n 266→\n 267→### TASK 74: Оптимизация metamode.json для AI ✅\n 268→\n 269→**Заголовок**: `Оптимизация формата для работы с AI-агентами`\n 270→\n 271→**Приоритет**: Высокий\n 272→\n 273→**Статус**: ✅ Завершена\n 274→\n 275→**Описание**:\n 276→Оптимизировать формат metamode.json для минимизации токенов при передаче AI-агентам:\n 277→\n 278→- Сократить имена полей\n 279→- Удалить избыточную информацию\n 280→- Добавить предкомпилированные summary\n 281→\n 282→**Задачи**:\n 283→\n 284→- [x] Анализ использования токенов текущим форматом\n 285→- [x] Определение оптимального формата для AI\n 286→- [x] Реализация сокращённых имён полей (опционально)\n 287→- [x] Добавление поля `ai_summary` для краткого описания\n 288→- [x] Создание утилиты для генерации AI-оптимизированного представления\n 289→\n 290→**Результаты**:\n 291→\n 292→- Создан новый AI-оптимизированный формат с сокращёнными полями:\n 293→ - `description` → `desc`\n 294→ - `version` → `ver`\n 295→ - `languages` → `lang`\n 296→ - `directories` → `dirs`\n 297→ - `dependencies` → `deps`\n 298→ - `experimental` → `exp`\n 299→ - `deprecated` → `dep`\n 300→- Добавлено поле `ai` для автоматически генерируемого краткого описания\n 301→- Создан скрипт `scripts/metamode-ai-optimizer.ts` для конвертации и анализа\n 302→- Обновлён `scripts/metamode-preprocessor.ts` с опцией `--ai`\n 303→- Обновлён `scripts/vite-plugin-metamode.ts` с виртуальным модулем `virtual:metamode/ai`\n 304→- Добавлены типы в `env.d.ts`: `AIMetamodeFileDescriptor`, `AIMetamodeTreeNode`\n 305→- Добавлены npm скрипты: `metamode:ai`, `metamode:ai:analyze`\n 306→- Написаны тесты: 20 тестов для AI-оптимизатора\n 307→\n 308→**Критерии приёмки**:\n 309→\n 310→- ✅ AI-формат использует сокращённые имена полей (экономия ~20% на именах)\n 311→- ✅ AI-агенты получают обогащённый контекст через поле `ai`\n 312→- ✅ Все тесты проходят\n 313→- ✅ CI/CD сборка проходит\n 314→\n 315→**Метки**: `metamode`, `ai`, `optimization`, `high`\n 316→\n 317→---\n 318→\n 319→### TASK 75: Inline metamode атрибуты ✅\n 320→\n 321→**Заголовок**: `Поддержка inline metamode атрибутов в компонентах`\n 322→\n 323→**Приоритет**: Средний\n 324→\n 325→**Статус**: ✅ Завершена\n 326→\n 327→**Описание**:\n 328→Добавить возможность хранить метаинформацию прямо в компонентах через специальный атрибут `metamode`:\n 329→\n 330→```vue\n 331→<script setup>\n 332→const metamode = {\n 333→ description: 'Компонент редактора параметров',\n 334→ status: 'stable',\n 335→}\n 336→</script>\n 337→```\n 338→\n 339→**Задачи**:\n 340→\n 341→- [x] Определить формат inline metamode атрибутов\n 342→- [x] Обновить Vite плагин для извлечения inline метаданных\n 343→- [x] Объединить inline метаданные с файловыми metamode.json\n 344→- [x] Документировать использование\n 345→\n 346→**Результаты**:\n 347→\n 348→- Создан `scripts/metamode-inline-extractor.ts` для извлечения inline метаданных\n 349→- Поддерживаются два формата: JSDoc `@metamode` и объект `const metamode = {...}`\n 350→- Обновлён `scripts/vite-plugin-metamode.ts` с интеграцией inline извлечения\n 351→- Добавлена нормализация алиасов полей (`description` → `desc`, `dependencies` → `deps`)\n 352→- Обновлена документация `metamode.md` с детальным описанием формата\n 353→- Написано 33 теста в `src/lib/metamode-inline-extractor.test.ts`\n 354→\n 355→**Критерии приёмки**:\n 356→\n 357→- ✅ Inline метаданные корректно извлекаются при сборке\n 358→- ✅ Приоритет: inline > файловые metamode.json\n 359→- ✅ Все тесты проходят\n 360→- ✅ CI/CD сборка проходит\n 361→\n 362→**Метки**: `metamode`, `components`, `medium`\n 363→\n 364→---\n 365→\n 366→### TASK 76: Обновление окна MetaMode ✅\n 367→\n 368→**Заголовок**: `Обновление MetaModeWindow с новым интерфейсом`\n 369→\n 370→**Приоритет**: Средний\n 371→\n 372→**Статус**: ✅ Завершена\n 373→\n 374→**Описание**:\n 375→Обновить интерфейс окна MetaMode с учётом новой архитектуры:\n 376→\n 377→- Переименовать вкладку \"MetaMode\" → \"Tree\" (Дерево)\n 378→- Улучшить вкладку Issues для подготовки GitHub issues\n 379→- Добавить preview режим для AI-оптимизированного формата\n 380→\n 381→**Задачи**:\n 382→\n 383→- [x] Обновить вкладки окна MetaMode (переименована вкладка 'metamode' → 'tree')\n 384→- [x] Улучшить UX создания issues (добавлены кнопки быстрого создания)\n 385→- [x] Добавить preview режим для AI-оптимизированного формата\n 386→- [x] Обновить документацию\n 387→\n 388→**Результаты**:\n 389→\n 390→- Вкладка \"MetaMode\" переименована в \"Tree\" / \"Дерево\" для ясности\n 391→- Тип MetaModeTab обновлён: 'metamode' → 'tree'\n 392→- В MetamodeTreePanel добавлена кнопка \"AI\" для переключения между стандартным и AI-оптимизированным форматом\n 393→- Добавлена кнопка \"Copy\" для копирования AI JSON в буфер обмена\n 394→- В IssueDraftPanel добавлены кнопки быстрого создания: Bug, Feature, Improvement, Question\n 395→- Все 3444 теста проходят\n 396→- CI/CD сборка проходит\n 397→\n 398→**Критерии приёмки**:\n 399→\n 400→- ✅ Окно MetaMode работает с новой архитектурой\n 401→- ✅ UX создания issues улучшен\n 402→- ✅ Preview режим для AI-формата работает\n 403→- ✅ Все тесты проходят\n 404→- ✅ CI/CD сборка проходит\n 405→\n 406→**Метки**: `metamode`, `ui`, `medium`\n 407→\n 408→---\n 409→\n 410→### TASK 77: Миграция тестов на MetaMode ✅\n 411→\n 412→**Заголовок**: `Обновление всех тестов на новую терминологию MetaMode`\n 413→\n 414→**Приоритет**: Высокий\n 415→\n 416→**Статус**: ✅ Завершена\n 417→\n 418→**Описание**:\n 419→Обновить все тесты с терминологии DevMode/GodMode/metanet на MetaMode/metamode.\n 420→\n 421→**Задачи**:\n 422→\n 423→- [x] Обновить тесты devmode.test.ts → metamode.test.ts (уже выполнено в TASK 72)\n 424→- [x] Обновить тесты компонентов\n 425→- [x] Обновить тесты metanet-preprocessor → metamode-preprocessor (уже выполнено в TASK 71)\n 426→- [x] Проверить coverage\n 427→\n 428→**Результаты**:\n 429→\n 430→- Обновлены комментарии в файле `src/types/metamode.test.ts` (добавлен TASK 77)\n 431→- Обновлены комментарии в файле `src/lib/metamode-store.test.ts` (добавлен TASK 77)\n 432→- Обновлены комментарии в файле `src/components/MetaModeProvider.test.ts` (добавлен TASK 77)\n 433→- Обновлены тестовые описания в `src/components/MetaModeWindow.vue.test.ts`:\n 434→ - \"DevMode\" → \"MetaMode\" в описаниях тестов\n 435→ - \"godWindow\" → \"metamodeWindow\" в переменных\n 436→- Обновлены тестовые описания в `src/components/ExtendedSearchPanel.vue.test.ts`:\n 437→ - \"DevMode\" → \"MetaMode\" в describe блоках и тестовых описаниях\n 438→- Обновлены тестовые описания в `src/components/ComponentContextPanel.vue.test.ts`:\n 439→ - \"DevMode\" → \"MetaMode\" в тестовых описаниях\n 440→- Все 3444 теста проходят\n 441→- CI/CD сборка проходит\n 442→\n 443→**Критерии приёмки**:\n 444→\n 445→- ✅ Все тесты обновлены и проходят\n 446→- ✅ Coverage не уменьшился\n 447→- ✅ CI/CD сборка проходит\n 448→\n 449→**Метки**: `metamode`, `testing`, `high`\n 450→\n 451→---\n 452→\n 453→### TASK 78: Документация MetaMode ✅\n 454→\n 455→**Заголовок**: `Создание документации MetaMode`\n 456→\n 457→**Приоритет**: Средний\n 458→\n 459→**Статус**: ✅ Завершена\n 460→\n 461→**Описание**:\n 462→Создать полную документацию системы MetaMode:\n 463→\n 464→- metamode.md — спецификация формата\n 465→- README обновления\n 466→- Примеры использования\n 467→\n 468→**Задачи**:\n 469→\n 470→- [x] Создать metamode.md (новая спецификация) — уже существует с TASK 70\n 471→- [x] Обновить README.md с описанием MetaMode\n 472→- [x] Добавить примеры в examples/\n 473→- [x] Обновить JSDoc комментарии — уже актуальны в metamode-store.ts\n 474→\n 475→**Результаты**:\n 476→\n 477→- Добавлен раздел \"MetaMode\" в README.md с описанием возможностей, примерами и командами\n 478→- Обновлён `examples/metamode.json` с добавлением тегов и нового файла примера\n 479→- Создан `examples/metamode-usage.ts` с 8 примерами использования MetaMode API\n 480→- Уточнена документация в `metamode.md` о двух схемах (стандартной и компактной)\n 481→- Все 3444+ тестов проходят\n 482→- CI/CD сборка проходит\n 483→\n 484→**Критерии приёмки**:\n 485→\n 486→- ✅ Документация полная и актуальная\n 487→- ✅ Примеры работают\n 488→- ✅ CI/CD сборка проходит\n 489→\n 490→**Метки**: `metamode`, `documentation`, `medium`\n 491→\n 492→---\n 493→\n 494→### TASK 79: Подготовка пакета MetaMode к выделению ✅\n 495→\n 496→**Заголовок**: `Подготовка packages/metamode к выделению в отдельный NPM-пакет`\n 497→\n 498→**Приоритет**: Низкий (выделение будет позже)\n 499→\n 500→**Статус**: ✅ Завершена\n 501→\n 502→**Описание**:\n 503→Подготовить структуру пакета metamode для будущего выделения:\n 504→\n 505→- Чистые интерфейсы\n 506→- Минимум зависимостей\n 507→- Полная документация\n 508→\n 509→**Задачи**:\n 510→\n 511→- [x] Ревью зависимостей пакета\n 512→- [x] Выделить public API\n 513→- [x] Добавить README.md в пакет\n 514→- [x] Подготовить package.json для публикации\n 515→- [x] Добавить examples в пакет\n 516→\n 517→**Результаты**:\n 518→\n 519→- Обновлены комментарии в `src/types/common.ts` с GOD MODE на MetaMode\n 520→- Обновлён `examples/basic-usage.vue` с использованием MetaMode API\n 521→- Расширен `package.json` с metadata для NPM публикации:\n 522→ - Добавлены `author`, `homepage`, `bugs`, `publishConfig`, `engines`\n 523→ - Добавлены дополнительные `keywords` для улучшения поиска\n 524→ - Добавлен `sideEffects: false` для tree-shaking\n 525→ - Добавлен `examples` в `files`\n 526→- Расширен `README.md` с полной документацией public API:\n 527→ - Добавлены таблицы всех типов и функций\n 528→ - Документированы все utility functions\n 529→ - Добавлены примеры использования для всех API\n 530→ - Добавлен раздел Browser Support\n 531→- Создан `examples/advanced-usage.ts` с 10 примерами использования:\n 532→ - Custom Component Registry\n 533→ - Custom Configuration\n 534→ - Conversation Management\n 535→ - Issue Draft Creation\n 536→ - Window State Management\n 537→ - Keyboard Shortcut Handling\n 538→ - Language Detection\n 539→ - Tab Management\n 540→ - Templates and Colors\n 541→ - Utility Functions\n 542→- Обновлены все `metamode.json` файлы с терминологией MetaMode\n 543→\n 544→**Критерии приёмки**:\n 545→\n 546→- ✅ Пакет готов к выделению\n 547→- ✅ Чистый public API документирован\n 548→- ✅ CI/CD сборка проходит\n 549→- **Примечание**: Само выделение в отдельный NPM-пакет будет в следующей фазе\n 550→\n 551→**Метки**: `metamode`, `package`, `low`\n 552→\n 553→---\n 554→\n 555→### TASK 80: Компиляция MetaMode в единую БД ✅\n 556→\n 557→**Заголовок**: `Компиляция всей метаинформации в встроенную БД`\n 558→\n 559→**Приоритет**: Средний\n 560→\n 561→**Статус**: ✅ Завершена\n 562→\n 563→**Описание**:\n 564→Реализовать компиляцию всех metamode.json + inline метаданных в единую встроенную базу данных для production сборки.\n 565→\n 566→**Задачи**:\n 567→\n 568→- [x] Определить формат встроенной БД (JSON, SQLite, IndexedDB)\n 569→- [x] Реализовать компиляцию в Vite плагине\n 570→- [x] Добавить API для доступа к БД в runtime\n 571→- [x] Оптимизировать размер БД\n 572→\n 573→**Результаты**:\n 574→\n 575→- Выбран формат JSON для встроенной БД (минимальные зависимости, синхронный доступ)\n 576→- Создан виртуальный модуль `virtual:metamode/db` в Vite плагине\n 577→- Реализован `MetamodeDatabaseClient` с полным API для запросов:\n 578→ - `search(query, options)` — поиск по имени, описанию, тегам с фильтрами\n 579→ - `getByPath(path)` — получение по пути\n 580→ - `getFile(path)` / `getDirectory(path)` — типизированное получение\n 581→ - `getFilesByStatus/Phase/Tags()` — фильтрация файлов\n 582→ - `traverse()` — обход дерева\n 583→ - `getStats()` — статистика БД\n 584→- Создан composable `useMetamodeDatabase()` для Vue-компонентов\n 585→- Добавлены типы в `env.d.ts` для `virtual:metamode/db`\n 586→- Написано 69 тестов в `src/lib/metamode-database.test.ts`\n 587→- Обновлена документация в `metamode.md` и `README.md`\n 588→\n 589→**Созданные файлы**:\n 590→\n 591→- `src/lib/metamode-database.ts` — клиент БД и утилиты\n 592→- `src/lib/metamode-database.test.ts` — 69 тестов\n 593→- `src/composables/useMetamodeDatabase.ts` — Vue composable\n 594→\n 595→**Критерии приёмки**:\n 596→\n 597→- ✅ MetaMode данные доступны в production через `virtual:metamode/db`\n 598→- ✅ Размер БД оптимизирован (JSON без лишних пробелов)\n 599→- ✅ Все 69 тестов проходят\n 600→- ✅ CI/CD сборка проходит\n 601→\n 602→**Метки**: `metamode`, `compilation`, `medium`\n 603→\n 604→---\n 605→\n 606→### TASK 81: Интеграция с tinyLLM (исследование) ✅\n 607→\n 608→**Заголовок**: `Исследование интеграции MetaMode с tinyLLM`\n 609→\n 610→**Приоритет**: Низкий\n 611→\n 612→**Статус**: ✅ Завершена\n 613→\n 614→**Описание**:\n 615→Исследовать возможность подключения скомпилированной MetaMode БД к tinyLLM для локальных AI-запросов.\n 616→\n 617→**Задачи**:\n 618→\n 619→- [x] Исследовать варианты tinyLLM (llama.cpp, ollama, и т.д.)\n 620→- [x] Определить формат промптов для MetaMode данных\n 621→- [x] Создать прототип интеграции\n 622→- [x] Документировать результаты\n 623→\n 624→**Результаты**:\n 625→\n 626→- Исследованы три основных варианта локальных LLM:\n 627→ - **Ollama** — рекомендуется для простоты установки и использования\n 628→ - **llama.cpp** — для продвинутых пользователей с GPU ускорением\n 629→ - **OpenAI-compatible API** — универсальный вариант для любого LLM сервера\n 630→- Создан модуль `src/lib/metamode-llm-integration.ts` с полной реализацией:\n 631→ - `MetaModeLLMIntegration` — основной класс для запросов\n 632→ - `MetaModeContextBuilder` — построитель контекста из MetaMode БД\n 633→ - `OllamaBackend`, `LlamaCppBackend`, `OpenAICompatibleBackend` — бэкенды LLM\n 634→ - `MockLLMBackend` — мок для тестирования и fallback\n 635→- Оптимизированные промпт-шаблоны для русского и английского языков\n 636→- Поддержка фильтрации контекста по статусу, фазе, тегам и путям\n 637→- Кеширование ответов для повторных запросов\n 638→- Автоматический fallback при недоступности LLM\n 639→- Написано 64 теста в `src/lib/metamode-llm-integration.test.ts`\n 640→- Обновлена документация в `metamode.md` (раздел 13)\n 641→\n 642→**Созданные файлы**:\n 643→\n 644→- `src/lib/metamode-llm-integration.ts` — модуль интеграции\n 645→- `src/lib/metamode-llm-integration.test.ts` — 64 теста\n 646→\n 647→**Критерии приёмки**:\n 648→\n 649→- ✅ Документ с результатами исследования (metamode.md раздел 13)\n 650→- ✅ Прототип создан и протестирован\n 651→- ✅ CI/CD сборка проходит\n 652→\n 653→**Метки**: `metamode`, `ai`, `research`, `low`\n 654→\n 655→---\n 656→\n 657→## Порядок выполнения TASK\n 658→\n 659→Рекомендуемый порядок для обеспечения работоспособности после каждой задачи:\n 660→\n 661→1. **TASK 70**: Проектирование формата (не ломает сборку)\n 662→2. **TASK 71**: Рефакторинг metanet → metamode (одно большое изменение)\n 663→3. **TASK 77**: Миграция тестов (сразу после рефакторинга)\n 664→4. **TASK 72**: Унификация DevMode + GodMode → MetaMode\n 665→5. **TASK 73**: Удаление VueDevMode терминологии\n 666→6. **TASK 74**: Оптимизация для AI\n 667→7. **TASK 75**: Inline metamode атрибуты\n 668→8. **TASK 76**: Обновление окна MetaMode\n 669→9. **TASK 78**: Документация\n 670→10. **TASK 79**: Подготовка пакета к выделению\n 671→11. **TASK 80**: Компиляция в БД\n 672→12. **TASK 81**: Исследование tinyLLM\n 673→\n 674→---\n 675→\n 676→## Оценка объёма работ\n 677→\n 678→| TASK | Сложность | Приоритет | Статус |\n 679→| ---------------------------------- | --------- | ----------- | ------------ |\n 680→| 70. Проектирование формата | Средняя | Критический | ✅ Завершена |\n 681→| 71. Рефакторинг metanet → metamode | Высокая | Критический | ✅ Завершена |\n 682→| 72. Унификация DevMode + GodMode | Высокая | Критический | ✅ Завершена |\n 683→| 73. Удаление VueDevMode | Низкая | Высокий | ✅ Завершена |\n 684→| 74. Оптимизация для AI | Средняя | Высокий | ✅ Завершена |\n 685→| 75. Inline metamode атрибуты | Средняя | Средний | ✅ Завершена |\n 686→| 76. Обновление окна MetaMode | Средняя | Средний | ✅ Завершена |\n 687→| 77. Миграция тестов | Средняя | Высокий | ✅ Завершена |\n 688→| 78. Документация | Низкая | Средний | ✅ Завершена |\n 689→| 79. Подготовка пакета | Средняя | Низкий | ✅ Завершена |\n 690→| 80. Компиляция в БД | Высокая | Средний | ✅ Завершена |\n 691→| 81. tinyLLM исследование | Низкая | Низкий | ✅ Завершена |\n 692→\n 693→---\n 694→\n 695→## Важные принципы\n 696→\n 697→1. **Каждая задача должна оставлять проект в рабочем состоянии**\n 698→ - CI/CD проходит после каждого TASK\n 699→ - Все тесты зелёные\n 700→ - Приложение запускается и работает\n 701→\n 702→2. **Минимизация breaking changes**\n 703→ - Обратная совместимость где возможно\n 704→ - Миграция localStorage данных\n 705→ - Deprecation warnings перед удалением\n 706→\n 707→3. **Оптимизация для AI-агентов**\n 708→ - Компактный формат данных\n 709→ - Только полезная информация\n 710→ - Чёткая структура\n 711→\n 712→4. **Подготовка к выделению пакета**\n 713→ - Чистые интерфейсы\n 714→ - Минимум зависимостей\n 715→ - Полная документация\n 716→\n 717→---\n 718→\n 719→**Назад к [README](../README.md)**\n 720→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "58f98116-b50a-40f9-9886-7324bf957985"
}
[2026-02-06T17:21:52.493Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01LPGB659rLFHWD2zSWsJPLi",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01AcuTSiJ4WAqUj4j6i33cp7",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/App.vue",
"limit": 200
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 25928,
"cache_read_input_tokens": 56088,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 25928
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "88bcebe4-468d-4128-828a-84166d4a68a4"
}
[2026-02-06T17:21:52.495Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01AcuTSiJ4WAqUj4j6i33cp7",
"type": "tool_result",
"content": " 1→<!--\n 2→ App.vue — Root component for isocubic\n 3→ Adaptive layout with desktop (windowed), tablet, and mobile support\n 4→\n 5→ Phase 11, TASK 68: Windowed desktop layout with command bar\n 6→-->\n 7→<script setup lang=\"ts\">\n 8→import { ref, computed, onMounted } from 'vue'\n 9→import { useDeviceType } from './composables/useDeviceType'\n 10→import { useCubeEditor } from './composables/useCubeEditor'\n 11→import { useMetaModeKeyboard, useHoveredComponentId } from './lib/metamode-store'\n 12→import { useAuthStore } from './lib/auth'\n 13→import { useWindowManager } from './composables/useWindowManager'\n 14→import type { WindowDefinition } from './composables/useWindowManager'\n 15→import Gallery from './components/Gallery.vue'\n 16→import { GALLERY_META } from './components/Gallery.vue'\n 17→import ExportPanel from './components/ExportPanel.vue'\n 18→import { EXPORT_PANEL_META } from './components/ExportPanel.vue'\n 19→import CubePreview from './components/CubePreview.vue'\n 20→import { CUBE_PREVIEW_META } from './components/CubePreview.vue'\n 21→import UnifiedEditor from './components/UnifiedEditor.vue'\n 22→import { UNIFIED_EDITOR_META } from './components/UnifiedEditor.vue'\n 23→import ActionHistory from './components/ActionHistory.vue'\n 24→import PromptGenerator from './components/PromptGenerator.vue'\n 25→import { PROMPT_GENERATOR_META } from './components/PromptGenerator.vue'\n 26→import CommunityGallery from './components/CommunityGallery.vue'\n 27→import { COMMUNITY_GALLERY_META } from './components/CommunityGallery.vue'\n 28→import SharePanel from './components/SharePanel.vue'\n 29→import { SHARE_PANEL_META } from './components/SharePanel.vue'\n 30→import NotificationPanel from './components/NotificationPanel.vue'\n 31→import { NOTIFICATION_PANEL_META } from './components/NotificationPanel.vue'\n 32→import MetaModeWindow from './components/MetaModeWindow.vue'\n 33→import ComponentInfo from './components/ComponentInfo.vue'\n 34→import MetaModeIndicator from './components/MetaModeIndicator.vue'\n 35→import DraggableWindow from './components/DraggableWindow.vue'\n 36→import CommandBar from './components/CommandBar.vue'\n 37→import type { CommandItem } from './components/CommandBar.vue'\n 38→import WindowTaskbar from './components/WindowTaskbar.vue'\n 39→import { getAllExtendedCommands } from './lib/command-registry'\n 40→import { calculateLayout } from './lib/window-layout-manager'\n 41→import type { LayoutStrategy } from './lib/window-layout-manager'\n 42→import './App.css'\n 43→\n 44→// Device type detection\n 45→const { isTablet, isDesktop } = useDeviceType()\n 46→\n 47→// Cube editor state\n 48→const { currentCube, updateCube, selectCube, loadCube } = useCubeEditor()\n 49→\n 50→// MetaMode keyboard shortcut (Ctrl+Shift+M)\n 51→useMetaModeKeyboard()\n 52→\n 53→// Track which component the mouse is hovering over for MetaModeWindow\n 54→const hoveredComponentId = useHoveredComponentId()\n 55→\n 56→// Auth store initialization\n 57→const authStore = useAuthStore()\n 58→onMounted(() => {\n 59→ authStore.initialize()\n 60→})\n 61→\n 62→// --- Window Manager (All devices) ---\n 63→const windowDefinitions: WindowDefinition[] = [\n 64→ {\n 65→ id: 'gallery',\n 66→ title: 'Gallery',\n 67→ icon: '\\uD83C\\uDFA8',\n 68→ defaultX: 20,\n 69→ defaultY: 100,\n 70→ defaultWidth: 380,\n 71→ defaultHeight: 500,\n 72→ minWidth: 280,\n 73→ minHeight: 300,\n 74→ },\n 75→ {\n 76→ id: 'preview',\n 77→ title: 'Preview',\n 78→ icon: '\\uD83D\\uDC41',\n 79→ defaultX: 420,\n 80→ defaultY: 100,\n 81→ defaultWidth: 500,\n 82→ defaultHeight: 400,\n 83→ minWidth: 300,\n 84→ minHeight: 250,\n 85→ },\n 86→ {\n 87→ id: 'editor',\n 88→ title: 'Unified Editor',\n 89→ icon: '\\u270F\\uFE0F',\n 90→ defaultX: 420,\n 91→ defaultY: 520,\n 92→ defaultWidth: 500,\n 93→ defaultHeight: 350,\n 94→ minWidth: 350,\n 95→ minHeight: 250,\n 96→ },\n 97→ {\n 98→ id: 'prompt',\n 99→ title: 'Generate by Description',\n 100→ icon: '\\uD83E\\uDD16',\n 101→ defaultX: 940,\n 102→ defaultY: 100,\n 103→ defaultWidth: 400,\n 104→ defaultHeight: 300,\n 105→ minWidth: 300,\n 106→ minHeight: 200,\n 107→ },\n 108→ {\n 109→ id: 'export',\n 110→ title: 'Export / Import',\n 111→ icon: '\\uD83D\\uDCE6',\n 112→ defaultX: 940,\n 113→ defaultY: 420,\n 114→ defaultWidth: 400,\n 115→ defaultHeight: 280,\n 116→ minWidth: 280,\n 117→ minHeight: 200,\n 118→ },\n 119→ {\n 120→ id: 'history',\n 121→ title: 'Action History',\n 122→ icon: '\\uD83D\\uDCCB',\n 123→ defaultX: 940,\n 124→ defaultY: 720,\n 125→ defaultWidth: 400,\n 126→ defaultHeight: 250,\n 127→ minWidth: 250,\n 128→ minHeight: 180,\n 129→ },\n 130→ {\n 131→ id: 'community',\n 132→ title: 'Community Gallery',\n 133→ icon: '\\uD83C\\uDF10',\n 134→ defaultX: 1360,\n 135→ defaultY: 100,\n 136→ defaultWidth: 420,\n 137→ defaultHeight: 600,\n 138→ minWidth: 350,\n 139→ minHeight: 400,\n 140→ },\n 141→ {\n 142→ id: 'share',\n 143→ title: 'Share Panel',\n 144→ icon: '\\uD83D\\uDD17',\n 145→ defaultX: 1360,\n 146→ defaultY: 720,\n 147→ defaultWidth: 420,\n 148→ defaultHeight: 250,\n 149→ minWidth: 300,\n 150→ minHeight: 200,\n 151→ },\n 152→ {\n 153→ id: 'notifications',\n 154→ title: 'Notifications',\n 155→ icon: '\\uD83D\\uDD14',\n 156→ defaultX: 20,\n 157→ defaultY: 620,\n 158→ defaultWidth: 380,\n 159→ defaultHeight: 350,\n 160→ minWidth: 280,\n 161→ minHeight: 250,\n 162→ },\n 163→]\n 164→\n 165→const windowManager = useWindowManager(windowDefinitions)\n 166→\n 167→/** Command items for the command bar */\n 168→const commandItems = computed<CommandItem[]>(() => {\n 169→ const items: CommandItem[] = []\n 170→\n 171→ // Window toggle commands\n 172→ for (const def of windowDefinitions) {\n 173→ const win = windowManager.getWindow(def.id)\n 174→ const isOpen = win?.isOpen ?? false\n 175→ items.push({\n 176→ id: `window:${def.id}`,\n 177→ label: `${isOpen ? 'Focus' : 'Open'} ${def.title}`,\n 178→ icon: def.icon,\n 179→ description: isOpen ? `Bring ${def.title} to front` : `Open ${def.title} window`,\n 180→ category: 'window',\n 181→ })\n 182→ }\n 183→\n 184→ // Extended commands (layout, cube, export, settings)\n 185→ const extendedCommands = getAllExtendedCommands()\n 186→ items.push(...extendedCommands)\n 187→\n 188→ return items\n 189→})\n 190→\n 191→/** Apply a window layout strategy */\n 192→function applyLayout(strategy: LayoutStrategy): void {\n 193→ const visible = windowManager.visibleWindows.value\n 194→ if (visible.length === 0) return\n 195→\n 196→ const results = calculateLayout(strategy, visible, {\n 197→ workspaceWidth: window.innerWidth,\n 198→ workspaceHeight: window.innerHeight - 100,\n 199→ topOffset: 60,\n 200→ })\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "98540ebc-5cd0-4b10-b180-0bd86a60a6d5"
}
[2026-02-06T17:21:53.040Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01LPGB659rLFHWD2zSWsJPLi",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_011yBzmGmzBJv9HiHKZgsKUW",
"name": "Bash",
"input": {
"command": "grep -n \"social\\|Community\\|Share\\|tab\\|Tab\" /tmp/gh-issue-solver-1770398441546/src/App.vue | head -30",
"description": "Look for social and tab references in App.vue"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 25928,
"cache_read_input_tokens": 56088,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 25928
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "ad29170b-f8cf-4687-92c2-f2fa17207272"
}
[2026-02-06T17:21:53.135Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_011yBzmGmzBJv9HiHKZgsKUW",
"type": "tool_result",
"content": "3: Adaptive layout with desktop (windowed), tablet, and mobile support\n26:import CommunityGallery from './components/CommunityGallery.vue'\n27:import { COMMUNITY_GALLERY_META } from './components/CommunityGallery.vue'\n28:import SharePanel from './components/SharePanel.vue'\n29:import { SHARE_PANEL_META } from './components/SharePanel.vue'\n45:const { isTablet, isDesktop } = useDeviceType()\n132: title: 'Community Gallery',\n143: title: 'Share Panel',\n273:// Mobile tab navigation\n274:type MobileTab = 'gallery' | 'preview' | 'editor' | 'tools' | 'social'\n276:const activeMobileTab = ref<MobileTab>('gallery')\n278:const mobileTabs: { id: MobileTab; icon: string; label: string }[] = [\n283: { id: 'social', icon: '🌐', label: 'Social' },\n304: const tabIds = mobileTabs.map((t) => t.id)\n305: const currentIndex = tabIds.indexOf(activeMobileTab.value)\n307: if (diff > 0 && currentIndex < tabIds.length - 1) {\n308: // Swipe left → next tab\n309: activeMobileTab.value = tabIds[currentIndex + 1]\n311: // Swipe right → previous tab\n312: activeMobileTab.value = tabIds[currentIndex - 1]\n324: 'resizable, collapsible windows and a TinyLLM command bar, plus adaptive tablet and mobile layouts. ' +\n364: description: 'Desktop, tablet, and mobile layouts with automatic switching',\n371: description: 'Swipe between tabs on mobile devices',\n427: purpose: 'Main tabbed parameter editor',\n493: status: 'stable' as const,\n582: <CommunityGallery @cube-select=\"selectCube\" />\n588: <SharePanel :cube=\"currentCube\" />\n614: <!-- Tablet Layout (Windowed with touch optimization) -->\n615: <div v-else-if=\"isTablet\" class=\"app app--tablet app--windowed\">\n631: <main class=\"app__workspace app__workspace--tablet\">",
"is_error": false
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "e8d8790b-4236-4843-9fbc-136c282ea6e3"
}
[2026-02-06T17:21:55.481Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01G53eZv5PEZNdiikpanu5nG",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01KKUvADYpDoEEGALE6ba3Wf",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/App.vue",
"offset": 273,
"limit": 100
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 3503,
"cache_read_input_tokens": 82016,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 3503
},
"output_tokens": 4,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "2c8456fc-8a99-4641-8d8a-06e370db0658"
}
[2026-02-06T17:21:55.484Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01KKUvADYpDoEEGALE6ba3Wf",
"type": "tool_result",
"content": " 273→// Mobile tab navigation\n 274→type MobileTab = 'gallery' | 'preview' | 'editor' | 'tools' | 'social'\n 275→\n 276→const activeMobileTab = ref<MobileTab>('gallery')\n 277→\n 278→const mobileTabs: { id: MobileTab; icon: string; label: string }[] = [\n 279→ { id: 'gallery', icon: '🎨', label: 'Gallery' },\n 280→ { id: 'preview', icon: '👁', label: 'Preview' },\n 281→ { id: 'editor', icon: '✏️', label: 'Editor' },\n 282→ { id: 'tools', icon: '🔧', label: 'Tools' },\n 283→ { id: 'social', icon: '🌐', label: 'Social' },\n 284→]\n 285→\n 286→// Touch swipe navigation for mobile\n 287→const touchStartX = ref(0)\n 288→const touchEndX = ref(0)\n 289→const SWIPE_THRESHOLD = 50\n 290→\n 291→function handleTouchStart(e: TouchEvent) {\n 292→ touchStartX.value = e.changedTouches[0].screenX\n 293→}\n 294→\n 295→function handleTouchEnd(e: TouchEvent) {\n 296→ touchEndX.value = e.changedTouches[0].screenX\n 297→ handleSwipe()\n 298→}\n 299→\n 300→function handleSwipe() {\n 301→ const diff = touchStartX.value - touchEndX.value\n 302→ if (Math.abs(diff) < SWIPE_THRESHOLD) return\n 303→\n 304→ const tabIds = mobileTabs.map((t) => t.id)\n 305→ const currentIndex = tabIds.indexOf(activeMobileTab.value)\n 306→\n 307→ if (diff > 0 && currentIndex < tabIds.length - 1) {\n 308→ // Swipe left → next tab\n 309→ activeMobileTab.value = tabIds[currentIndex + 1]\n 310→ } else if (diff < 0 && currentIndex > 0) {\n 311→ // Swipe right → previous tab\n 312→ activeMobileTab.value = tabIds[currentIndex - 1]\n 313→ }\n 314→}\n 315→\n 316→// Component metadata for DevMode\n 317→const APP_META = {\n 318→ id: 'app',\n 319→ name: 'App',\n 320→ version: '3.1.0',\n 321→ summary: 'Root application component with windowed desktop layout and extended command bar.',\n 322→ description:\n 323→ 'App is the root component of isocubic. It provides a windowed desktop layout with draggable, ' +\n 324→ 'resizable, collapsible windows and a TinyLLM command bar, plus adaptive tablet and mobile layouts. ' +\n 325→ 'Integrates all subsystems (Gallery, Editor, Preview, Export, MetaMode) and manages the global ' +\n 326→ 'cube editing state through the useCubeEditor composable.',\n 327→ phase: 11,\n 328→ taskId: 'TASK 68',\n 329→ filePath: 'src/App.vue',\n 330→ history: [\n 331→ {\n 332→ version: '1.0.0',\n 333→ date: '2026-01-29T18:00:00Z',\n 334→ description: 'Initial Vue.js 3.0 stub during TASK 60',\n 335→ taskId: 'TASK 60',\n 336→ type: 'created' as const,\n 337→ },\n 338→ {\n 339→ version: '2.0.0',\n 340→ date: '2026-01-31T18:00:00Z',\n 341→ description: 'Full adaptive layout with all component integrations',\n 342→ taskId: 'TASK 67',\n 343→ type: 'updated' as const,\n 344→ },\n 345→ {\n 346→ version: '3.0.0',\n 347→ date: '2026-02-01T12:00:00Z',\n 348→ description: 'Windowed desktop layout with drag/resize/minimize/close and command bar',\n 349→ taskId: 'TASK 68',\n 350→ type: 'updated' as const,\n 351→ },\n 352→ {\n 353→ version: '3.1.0',\n 354→ date: '2026-02-01T20:00:00Z',\n 355→ description: 'Extended command bar with layout, cube, export, and settings commands',\n 356→ taskId: 'TASK 77',\n 357→ type: 'updated' as const,\n 358→ },\n 359→ ],\n 360→ features: [\n 361→ {\n 362→ id: 'adaptive-layout',\n 363→ name: 'Adaptive Layout',\n 364→ description: 'Desktop, tablet, and mobile layouts with automatic switching',\n 365→ enabled: true,\n 366→ taskId: 'TASK 67',\n 367→ },\n 368→ {\n 369→ id: 'mobile-swipe',\n 370→ name: 'Touch Swipe Navigation',\n 371→ description: 'Swipe between tabs on mobile devices',\n 372→ enabled: true,\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "e3c058ed-25c9-4f7f-8be3-8f20f45e7bdd"
}
[2026-02-06T17:21:55.971Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01G53eZv5PEZNdiikpanu5nG",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01TbBRLcyNmJtRk24AQMYn6P",
"name": "Bash",
"input": {
"command": "grep -n \"social\\|Social\" /tmp/gh-issue-solver-1770398441546/src/App.vue",
"description": "Find all social tab references"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 3503,
"cache_read_input_tokens": 82016,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 3503
},
"output_tokens": 4,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "68c59ca9-5375-41d5-9cbe-c41eadca4ec6"
}
[2026-02-06T17:21:56.171Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01TbBRLcyNmJtRk24AQMYn6P",
"type": "tool_result",
"content": "274:type MobileTab = 'gallery' | 'preview' | 'editor' | 'tools' | 'social'\n283: { id: 'social', icon: '🌐', label: 'Social' },\n809: <!-- Social Tab -->\n810: <div v-if=\"activeMobileTab === 'social'\" class=\"app__mobile-panel\">",
"is_error": false
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "492d284c-eb91-4dd3-8712-1ae2042dba23"
}
[2026-02-06T17:21:56.342Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01G53eZv5PEZNdiikpanu5nG",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01YBtJySZnTTTu11at1S7dvi",
"name": "Bash",
"input": {
"command": "head -900 /tmp/gh-issue-solver-1770398441546/src/App.vue | tail -200",
"description": "Read the mobile tab section"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 3503,
"cache_read_input_tokens": 82016,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 3503
},
"output_tokens": 4,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "0c9268f0-8bbb-40cc-8635-12f1239a1cbb"
}
[2026-02-06T17:21:56.429Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01YBtJySZnTTTu11at1S7dvi",
"type": "tool_result",
"content": " :key=\"win.id\"\n :window-id=\"win.id\"\n :title=\"win.title\"\n :icon=\"win.icon\"\n :x=\"win.x\"\n :y=\"win.y\"\n :width=\"win.width\"\n :height=\"win.height\"\n :min-width=\"win.minWidth\"\n :min-height=\"win.minHeight\"\n :z-index=\"win.zIndex\"\n @move=\"windowManager.moveWindow\"\n @resize=\"windowManager.resizeWindow\"\n @minimize=\"windowManager.minimizeWindow\"\n @close=\"windowManager.closeWindow\"\n @focus=\"windowManager.bringToFront\"\n >\n <template v-if=\"win.id === 'gallery'\">\n <ComponentInfo :meta=\"GALLERY_META\">\n <Gallery :current-cube=\"currentCube\" @cube-select=\"selectCube\" />\n </ComponentInfo>\n </template>\n\n <template v-else-if=\"win.id === 'preview'\">\n <ComponentInfo :meta=\"CUBE_PREVIEW_META\">\n <div class=\"app__3d-preview app__3d-preview--windowed\">\n <CubePreview :config=\"currentCube\" data-testid=\"cube-preview\" />\n </div>\n </ComponentInfo>\n </template>\n\n <template v-else-if=\"win.id === 'editor'\">\n <ComponentInfo :meta=\"UNIFIED_EDITOR_META\">\n <UnifiedEditor :current-cube=\"currentCube\" @update:cube=\"updateCube\" />\n </ComponentInfo>\n </template>\n\n <template v-else-if=\"win.id === 'prompt'\">\n <ComponentInfo :meta=\"PROMPT_GENERATOR_META\">\n <PromptGenerator\n @cube-generated=\"selectCube\"\n @cubes-generated=\"(cubes) => cubes.length > 0 && selectCube(cubes[0])\"\n />\n </ComponentInfo>\n </template>\n\n <template v-else-if=\"win.id === 'export'\">\n <ComponentInfo :meta=\"EXPORT_PANEL_META\">\n <ExportPanel\n :current-cube=\"currentCube\"\n @cube-load=\"loadCube\"\n @cube-change=\"updateCube\"\n />\n </ComponentInfo>\n </template>\n\n <template v-else-if=\"win.id === 'history'\">\n <ActionHistory :actions=\"[]\" />\n </template>\n\n <template v-else-if=\"win.id === 'community'\">\n <ComponentInfo :meta=\"COMMUNITY_GALLERY_META\">\n <CommunityGallery @cube-select=\"selectCube\" />\n </ComponentInfo>\n </template>\n\n <template v-else-if=\"win.id === 'share'\">\n <ComponentInfo :meta=\"SHARE_PANEL_META\">\n <SharePanel :cube=\"currentCube\" />\n </ComponentInfo>\n </template>\n\n <template v-else-if=\"win.id === 'notifications'\">\n <ComponentInfo :meta=\"NOTIFICATION_PANEL_META\">\n <NotificationPanel />\n </ComponentInfo>\n </template>\n </DraggableWindow>\n </main>\n\n <!-- Taskbar -->\n <WindowTaskbar\n :minimized-windows=\"windowManager.minimizedWindows.value\"\n :closed-windows=\"windowManager.closedWindows.value\"\n @restore=\"windowManager.restoreWindow\"\n @open=\"windowManager.openWindow\"\n @reset-layout=\"windowManager.resetLayout\"\n />\n </ComponentInfo>\n\n <MetaModeWindow :selected-component-id=\"hoveredComponentId\" />\n <MetaModeIndicator />\n </div>\n\n <!-- Mobile Layout (Windowed with tab navigation) -->\n <div\n v-else\n class=\"app app--mobile app--windowed\"\n @touchstart=\"handleTouchStart\"\n @touchend=\"handleTouchEnd\"\n >\n <ComponentInfo :meta=\"APP_META\">\n <header class=\"app__header app__header--mobile\">\n <h1 class=\"app__title-compact\">isocubic</h1>\n <!-- Command bar for mobile -->\n <div class=\"app__mobile-command-bar\">\n <CommandBar :commands=\"commandItems\" @execute=\"onCommandExecute\" />\n </div>\n </header>\n\n <!-- Tab Navigation -->\n <nav class=\"app__mobile-nav\">\n <button\n v-for=\"tab in mobileTabs\"\n :key=\"tab.id\"\n class=\"app__mobile-tab\"\n :class=\"{ 'app__mobile-tab--active': activeMobileTab === tab.id }\"\n :aria-label=\"tab.label\"\n @click=\"activeMobileTab = tab.id\"\n >\n <span class=\"app__mobile-tab-icon\">{{ tab.icon }}</span>\n <span class=\"app__mobile-tab-label\">{{ tab.label }}</span>\n </button>\n </nav>\n\n <!-- Mobile Content -->\n <div class=\"app__mobile-content\">\n <!-- Gallery Tab -->\n <div v-if=\"activeMobileTab === 'gallery'\" class=\"app__mobile-panel\">\n <Gallery :current-cube=\"currentCube\" @cube-select=\"selectCube\" />\n </div>\n\n <!-- Preview Tab -->\n <div\n v-if=\"activeMobileTab === 'preview'\"\n class=\"app__mobile-panel app__mobile-panel--preview\"\n >\n <div class=\"app__current-cube app__current-cube--mobile\">\n <div class=\"app__3d-preview app__3d-preview--mobile\">\n <CubePreview :config=\"currentCube\" data-testid=\"cube-preview\" />\n </div>\n <div class=\"app__cube-info\">\n <p>\n <strong>{{\n currentCube?.meta?.name || currentCube?.id || 'No cube selected'\n }}</strong>\n </p>\n <p v-if=\"currentCube?.prompt\">{{ currentCube.prompt }}</p>\n </div>\n </div>\n </div>\n\n <!-- Editor Tab -->\n <div v-if=\"activeMobileTab === 'editor'\" class=\"app__mobile-panel\">\n <UnifiedEditor :current-cube=\"currentCube\" @update:cube=\"updateCube\" />\n\n <PromptGenerator\n @cube-generated=\"selectCube\"\n @cubes-generated=\"(cubes) => cubes.length > 0 && selectCube(cubes[0])\"\n />\n </div>\n\n <!-- Tools Tab -->\n <div v-if=\"activeMobileTab === 'tools'\" class=\"app__mobile-panel\">\n <ComponentInfo :meta=\"EXPORT_PANEL_META\">\n <ExportPanel\n :current-cube=\"currentCube\"\n @cube-load=\"loadCube\"\n @cube-change=\"updateCube\"\n />\n </ComponentInfo>\n\n <ActionHistory :actions=\"[]\" />\n </div>\n\n <!-- Social Tab -->\n <div v-if=\"activeMobileTab === 'social'\" class=\"app__mobile-panel\">\n <ComponentInfo :meta=\"COMMUNITY_GALLERY_META\">\n <CommunityGallery @cube-select=\"selectCube\" />\n </ComponentInfo>\n\n <ComponentInfo :meta=\"SHARE_PANEL_META\">\n <SharePanel :cube=\"currentCube\" />\n </ComponentInfo>\n\n <ComponentInfo :meta=\"NOTIFICATION_PANEL_META\">\n <NotificationPanel />\n </ComponentInfo>\n </div>\n </div>\n\n <!-- Swipe Indicator -->\n <div class=\"app__swipe-indicator\">\n <span>Swipe to navigate</span>\n </div>\n </ComponentInfo>\n\n <MetaModeIndicator />\n </div>\n</template>",
"is_error": false
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "d727d6f1-758a-4f0c-8a13-f9aa742506ae"
}
[2026-02-06T17:21:59.054Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_015ynBNhEcbZoQhjFRY3KUw3",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01NLgQFVrFTHN3fK4swFDxNL",
"name": "Bash",
"input": {
"command": "cat /tmp/gh-issue-solver-1770398441546/CLAUDE.md",
"description": "Read the task details"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 4101,
"cache_read_input_tokens": 85519,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 4101
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "656c12a4-4145-4bfe-85aa-2aa3cfe21a7a"
}
[2026-02-06T17:21:59.138Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01NLgQFVrFTHN3fK4swFDxNL",
"type": "tool_result",
"content": "Issue to solve: https://github.com/netkeep80/isocubic/issues/269\nYour prepared branch: issue-269-5d06a50ee25a\nYour prepared working directory: /tmp/gh-issue-solver-1770398441546\nYour forked repository: konard/netkeep80-isocubic\nOriginal repository (upstream): netkeep80/isocubic\n\nProceed.",
"is_error": false
}
]
},
"parent_tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "eb63bc5b-7590-40db-a44e-0afb4594ed2e"
}
[2026-02-06T17:22:25.994Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01CNFWdF83ZLop6gXUcw3htM",
"type": "tool_result",
"content": [
{
"type": "text",
"text": "Now let me provide the comprehensive report:\n\n## Codebase Exploration Report: Isocubic Project\n\n### 1. Project Type and Structure\n\n**isocubic** is a **Vue.js 3.0 Web Application** - a sophisticated parametric 3D cube editor using Three.js, with Vite build system and TypeScript.\n\n**Framework & Key Dependencies:**\n- **Frontend:** Vue 3.5.13, Three.js 0.182.0, TresJS (Three.js wrapper)\n- **State Management:** Pinia 3.0.2\n- **Build Tool:** Vite 7.2.4\n- **Language:** TypeScript ~5.9.3\n- **Testing:** Vitest 3.1.4\n- **Other:** Tailwind CSS, ESLint, Prettier\n\n**Key Technology Stack:**\n- **3D Graphics:** Three.js, WebGL, WASM-FFT (Fast Fourier Transform for voxel generation)\n- **Architecture:** Custom \"MetaMode\" system for metadata, DevMode, and AI integration\n- **Special Feature:** Energy-based cube physics with spectral/FFT representations\n\n---\n\n### 2. Project Architecture Overview\n\n```\nsrc/\n├── components/ # 50+ Vue SFC components\n│ ├── CommunityGallery.vue # Browse community cubes (TASK 45)\n│ ├── SharePanel.vue # Share/publish cubes (TASK 46)\n│ ├── UnifiedEditor.vue # Main editor with tabs (TASK 63)\n│ ├── MetaModeWindow.vue # Dev mode window (TASK 72)\n│ └── windows/ # Window wrapper components\n├── composables/ # Vue 3 composition API hooks\n├── lib/ # Core business logic\n│ ├── community-gallery.ts # Gallery service with mock API\n│ ├── share-links.ts # Share link management\n│ ├── metamode-store.ts # MetaMode system (Pinia store)\n│ └── social.ts # Social features (comments, likes, subscriptions)\n├── types/ # TypeScript definitions\n│ ├── community.ts # Gallery, published cube types\n│ ├── social.ts # Comments, subscriptions, favorites\n│ ├── share.ts # Share links, QR codes\n│ └── metamode.ts # MetaMode system types\n├── shaders/ # GLSL shaders for cube rendering\n├── store/ # Pinia stores\n└── App.vue # Root component with windowed layout\n```\n\n---\n\n### 3. Social Media / Community Gallery Features\n\nThe project includes a comprehensive **Social Community System** (Phase 7, completed):\n\n#### **TASK 45: Community Gallery**\n- **File:** `/tmp/gh-issue-solver-1770398441546/src/components/CommunityGallery.vue`\n- **Service:** `/tmp/gh-issue-solver-1770398441546/src/lib/community-gallery.ts`\n- **Features:**\n - Browse published community cubes\n - Search by name, tags, author\n - Filter by category (Nature, Building, Fantasy, etc.) and material type\n - Sort: recent, popular, trending, downloads, views, alphabetical\n - Like/unlike cubes with persistent storage\n - Pagination support\n - View/Download/Like statistics\n\n#### **TASK 46: SharePanel (Share Links)**\n- **File:** `/tmp/gh-issue-solver-1770398441546/src/components/SharePanel.vue`\n- **Features:**\n - Generate unique short URLs for sharing\n - QR code generation (SVG format)\n - Password protection for private links\n - Link expiration settings (never, 1h, 24h, 7d, 30d)\n - OG meta tags for social networks\n - Analytics (views, unique visitors)\n - Copy to clipboard functionality\n - Link management (deactivate, delete)\n\n#### **TASK 47: Social Features**\n- **File:** `/tmp/gh-issue-solver-1770398441546/src/lib/social.ts`\n- **Components:**\n - `CommentsSection.vue` - Full comment system with replies\n - `SubscriptionButton.vue` - Follow/unfollow authors\n - `NotificationPanel.vue` - Notifications with filtering\n- **Features:**\n - Likes and favorites (with collections and notes)\n - Comments with replies and likes\n - Author subscriptions\n - Notifications (new subscribers, likes, comments)\n\n---\n\n### 4. Tab-Based UI Components\n\n#### **UnifiedEditor with Tabs (TASK 63)**\n- **File:** `/tmp/gh-issue-solver-1770398441546/src/components/UnifiedEditor.vue`\n- **Tab Navigation System:**\n ```typescript\n type EditorTab = 'general' | 'appearance' | 'physics' | 'energy' | 'stack' | 'lod' | 'collaboration'\n ```\n- **Features:**\n - Lazy-loaded editor modules\n - Sub-editors: ParamEditor, FFTParamEditor, StackEditor, LODConfigEditor, EnergyVisualizationEditor\n - Quick actions (Reset, Duplicate, Randomize, Save, Export)\n - Keyboard shortcuts support\n - Developer Mode metadata support\n\n#### **Mobile Tab Layout (App.vue)**\n- **Location:** Lines 273-814 in `/tmp/gh-issue-solver-1770398441546/src/App.vue`\n- **Mobile Tabs:**\n ```typescript\n type MobileTab = 'gallery' | 'preview' | 'editor' | 'tools' | 'social'\n ```\n- **Tab Definitions:**\n ```typescript\n const mobileTabs = [\n { id: 'gallery', icon: '🎨', label: 'Gallery' },\n { id: 'preview', icon: '👁', label: 'Preview' },\n { id: 'editor', icon: '✏️', label: 'Editor' },\n { id: 'tools', icon: '🔧', label: 'Tools' },\n { id: 'social', icon: '🌐', label: 'Social' }, // <-- SOCIAL TAB\n ]\n ```\n- **Social Tab Contents:** (Lines 809-830)\n - CommunityGallery\n - SharePanel\n - NotificationPanel\n- **Touch Swipe Navigation:**\n - `handleTouchStart()` and `handleTouchEnd()` for swipe detection\n - Threshold: 50px minimum swipe distance\n - Swipe left/right to navigate between tabs\n\n#### **MetaModeWindow with Tabs (TASK 72)**\n- **File:** `/tmp/gh-issue-solver-1770398441546/src/components/MetaModeWindow.vue`\n- **Developer Mode Tabs:**\n - Query (AI queries)\n - Context (Component context)\n - Search (Extended search)\n - Conversation (AI dialog)\n - Issues (GitHub issue drafts)\n - Tree (MetaMode metadata tree)\n\n---\n\n### 5. Key Files Related to Social/Community/Gallery/Tabs\n\n| File | Purpose | Lines |\n|------|---------|-------|\n| `/src/App.vue` | Root component with mobile tab system | 809-830 (social tab), 273-314 (tab logic) |\n| `/src/components/CommunityGallery.vue` | Community gallery browse/search | 387-617 (template with grid) |\n| `/src/components/SharePanel.vue` | Share link management | 50+ feature components |\n| `/src/components/UnifiedEditor.vue` | Tab-based editor | 52-93 (features), 127-135 (EditorTab type) |\n| `/src/lib/community-gallery.ts` | Gallery API service | 459-667 (API methods) |\n| `/src/lib/social.ts` | Social features API | Comments, subscriptions, notifications |\n| `/src/types/community.ts` | Community types | PublishedCube, CubeStats, CommunitySortOption |\n| `/src/types/social.ts` | Social feature types | Comment, Subscription, Notification |\n| `/src/types/share.ts` | Share link types | ShareLink, QRCode, ShareLinkAnalytics |\n| `/src/composables/useMetamodeDatabase.ts` | MetaMode database access | Metadata queries |\n\n---\n\n### 6. Window Management System\n\nThe application uses a sophisticated **Window Manager** (Pinia store):\n- **File:** `/src/composables/useWindowManager.ts`\n- **Window Definitions:** 9 draggable windows defined in App.vue (lines 63-163)\n- **Window Types:** Gallery, Preview, Editor, Prompt Generator, Export, Action History, Community, Share, Notifications\n- **Features:**\n - Drag and drop positioning\n - Resize from 8 directions\n - Minimize/restore/close\n - Window taskbar\n - Layout strategies\n\n---\n\n### 7. Russian Language Support\n\nThe project includes extensive Russian language support:\n- Documentation in Russian (ANALYSIS.md, phase docs)\n- Comments mention Russian keywords: `вкладк` (tabs), `соцсет` (social), `галере` (gallery), `табл` (tab)\n- Bilingual UI support in components\n\n---\n\n### 8. Project Structure Summary\n\n```\nRoot Files:\n- package.json (2127 lines)\n- vite.config.ts\n- tsconfig.json, tsconfig.app.json, tsconfig.node.json\n- eslint.config.js\n- metamode.json (project metadata)\n- metamode.schema.json\n\nKey Directories:\n- src/ (main app)\n- packages/metamode/ (extracted MetaMode package)\n- server/ (backend services)\n- wasm-fft/ (WebAssembly FFT module)\n- docs/ (phase documentation)\n- public/ (static assets)\n- examples/ (usage examples)\n```\n\n---\n\n### 9. Relevant Documentation\n\n**Phase Documentation:**\n- **Phase 7** (`/docs/phase-7.md`): Community Gallery, Share Links, Social Features (TASK 45-48)\n- **Phase 9** (`/docs/phase-9.md`): GOD MODE - MetaMode window system (TASK 54-59)\n- **Phase 12** (`/docs/phase-12.md`): MetaMode unification (TASK 70-81) - AI optimization, inline metadata, database compilation\n\n**Key Files:**\n- `README.md` (30,933 lines) - Comprehensive project documentation\n- `ANALYSIS.md` (28,064 lines) - Technical analysis of FFT-based voxel generation\n- `description.md` (117,385 lines) - AI prompts for generation\n\n---\n\n### 10. Issue Context (Issue #269)\n\nThe project is on branch `issue-269-5d06a50ee25a` focused on the \"Social Media Tab in Community Gallery\" feature. The repository shows:\n- **Active social/community features** (TASK 45-47 completed)\n- **Mobile tab navigation** with dedicated \"Social\" tab (🌐)\n- **Tab-based editor system** (UnifiedEditor with 7 tabs)\n- **Window management system** for desktop layout\n- **MetaMode system** for metadata and AI integration\n\nThe social tab in the mobile layout (line 809-830 in App.vue) combines:\n1. CommunityGallery component\n2. SharePanel component\n3. NotificationPanel component\n\n---\n\n### Summary\n\nThis is a sophisticated **Vue.js 3 + Three.js web application** for creating and sharing 3D parametric cubes. It features:\n\n✅ **Complete social/community system** with galleries, sharing, comments, likes, subscriptions\n✅ **Multiple tab-based interfaces** (UnifiedEditor, MetaModeWindow, Mobile tabs)\n✅ **AI integration** (MetaMode system, TinyLLM, GitHub integration)\n✅ **Advanced 3D graphics** using Three.js and custom FFT-based voxel generation\n✅ **Comprehensive DevMode/MetaMode** for developer assistance and AI queries\n✅ **Bilingual support** (English/Russian)\n✅ **Responsive design** (Desktop windows, Tablet, Mobile with swipe navigation)"
},
{
"type": "text",
"text": "agentId: a91abf2 (for resuming to continue this agent's work if needed)\n<usage>total_tokens: 92885\ntool_uses: 34\nduration_ms: 59771</usage>"
}
]
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "cae433f5-67ca-4113-873e-be2a6e045e95",
"tool_use_result": {
"status": "completed",
"prompt": "Explore the codebase at /tmp/gh-issue-solver-1770398441546 thoroughly. I need to understand:\n1. What kind of project this is (framework, language, structure)\n2. Find all files related to \"social media\", \"gallery\", \"community\", \"socials\", \"tabs\" - anything that might relate to a social media tab/window in a community gallery\n3. Find any Vue/React/UI component files that handle tab-based layouts\n4. Look at the project's package.json or similar config files\n5. List the directory structure\n\nBe very thorough - search for keywords in Russian too (соцсет, галере, сообществ, табл, вкладк)",
"agentId": "a91abf2",
"content": [
{
"type": "text",
"text": "Now let me provide the comprehensive report:\n\n## Codebase Exploration Report: Isocubic Project\n\n### 1. Project Type and Structure\n\n**isocubic** is a **Vue.js 3.0 Web Application** - a sophisticated parametric 3D cube editor using Three.js, with Vite build system and TypeScript.\n\n**Framework & Key Dependencies:**\n- **Frontend:** Vue 3.5.13, Three.js 0.182.0, TresJS (Three.js wrapper)\n- **State Management:** Pinia 3.0.2\n- **Build Tool:** Vite 7.2.4\n- **Language:** TypeScript ~5.9.3\n- **Testing:** Vitest 3.1.4\n- **Other:** Tailwind CSS, ESLint, Prettier\n\n**Key Technology Stack:**\n- **3D Graphics:** Three.js, WebGL, WASM-FFT (Fast Fourier Transform for voxel generation)\n- **Architecture:** Custom \"MetaMode\" system for metadata, DevMode, and AI integration\n- **Special Feature:** Energy-based cube physics with spectral/FFT representations\n\n---\n\n### 2. Project Architecture Overview\n\n```\nsrc/\n├── components/ # 50+ Vue SFC components\n│ ├── CommunityGallery.vue # Browse community cubes (TASK 45)\n│ ├── SharePanel.vue # Share/publish cubes (TASK 46)\n│ ├── UnifiedEditor.vue # Main editor with tabs (TASK 63)\n│ ├── MetaModeWindow.vue # Dev mode window (TASK 72)\n│ └── windows/ # Window wrapper components\n├── composables/ # Vue 3 composition API hooks\n├── lib/ # Core business logic\n│ ├── community-gallery.ts # Gallery service with mock API\n│ ├── share-links.ts # Share link management\n│ ├── metamode-store.ts # MetaMode system (Pinia store)\n│ └── social.ts # Social features (comments, likes, subscriptions)\n├── types/ # TypeScript definitions\n│ ├── community.ts # Gallery, published cube types\n│ ├── social.ts # Comments, subscriptions, favorites\n│ ├── share.ts # Share links, QR codes\n│ └── metamode.ts # MetaMode system types\n├── shaders/ # GLSL shaders for cube rendering\n├── store/ # Pinia stores\n└── App.vue # Root component with windowed layout\n```\n\n---\n\n### 3. Social Media / Community Gallery Features\n\nThe project includes a comprehensive **Social Community System** (Phase 7, completed):\n\n#### **TASK 45: Community Gallery**\n- **File:** `/tmp/gh-issue-solver-1770398441546/src/components/CommunityGallery.vue`\n- **Service:** `/tmp/gh-issue-solver-1770398441546/src/lib/community-gallery.ts`\n- **Features:**\n - Browse published community cubes\n - Search by name, tags, author\n - Filter by category (Nature, Building, Fantasy, etc.) and material type\n - Sort: recent, popular, trending, downloads, views, alphabetical\n - Like/unlike cubes with persistent storage\n - Pagination support\n - View/Download/Like statistics\n\n#### **TASK 46: SharePanel (Share Links)**\n- **File:** `/tmp/gh-issue-solver-1770398441546/src/components/SharePanel.vue`\n- **Features:**\n - Generate unique short URLs for sharing\n - QR code generation (SVG format)\n - Password protection for private links\n - Link expiration settings (never, 1h, 24h, 7d, 30d)\n - OG meta tags for social networks\n - Analytics (views, unique visitors)\n - Copy to clipboard functionality\n - Link management (deactivate, delete)\n\n#### **TASK 47: Social Features**\n- **File:** `/tmp/gh-issue-solver-1770398441546/src/lib/social.ts`\n- **Components:**\n - `CommentsSection.vue` - Full comment system with replies\n - `SubscriptionButton.vue` - Follow/unfollow authors\n - `NotificationPanel.vue` - Notifications with filtering\n- **Features:**\n - Likes and favorites (with collections and notes)\n - Comments with replies and likes\n - Author subscriptions\n - Notifications (new subscribers, likes, comments)\n\n---\n\n### 4. Tab-Based UI Components\n\n#### **UnifiedEditor with Tabs (TASK 63)**\n- **File:** `/tmp/gh-issue-solver-1770398441546/src/components/UnifiedEditor.vue`\n- **Tab Navigation System:**\n ```typescript\n type EditorTab = 'general' | 'appearance' | 'physics' | 'energy' | 'stack' | 'lod' | 'collaboration'\n ```\n- **Features:**\n - Lazy-loaded editor modules\n - Sub-editors: ParamEditor, FFTParamEditor, StackEditor, LODConfigEditor, EnergyVisualizationEditor\n - Quick actions (Reset, Duplicate, Randomize, Save, Export)\n - Keyboard shortcuts support\n - Developer Mode metadata support\n\n#### **Mobile Tab Layout (App.vue)**\n- **Location:** Lines 273-814 in `/tmp/gh-issue-solver-1770398441546/src/App.vue`\n- **Mobile Tabs:**\n ```typescript\n type MobileTab = 'gallery' | 'preview' | 'editor' | 'tools' | 'social'\n ```\n- **Tab Definitions:**\n ```typescript\n const mobileTabs = [\n { id: 'gallery', icon: '🎨', label: 'Gallery' },\n { id: 'preview', icon: '👁', label: 'Preview' },\n { id: 'editor', icon: '✏️', label: 'Editor' },\n { id: 'tools', icon: '🔧', label: 'Tools' },\n { id: 'social', icon: '🌐', label: 'Social' }, // <-- SOCIAL TAB\n ]\n ```\n- **Social Tab Contents:** (Lines 809-830)\n - CommunityGallery\n - SharePanel\n - NotificationPanel\n- **Touch Swipe Navigation:**\n - `handleTouchStart()` and `handleTouchEnd()` for swipe detection\n - Threshold: 50px minimum swipe distance\n - Swipe left/right to navigate between tabs\n\n#### **MetaModeWindow with Tabs (TASK 72)**\n- **File:** `/tmp/gh-issue-solver-1770398441546/src/components/MetaModeWindow.vue`\n- **Developer Mode Tabs:**\n - Query (AI queries)\n - Context (Component context)\n - Search (Extended search)\n - Conversation (AI dialog)\n - Issues (GitHub issue drafts)\n - Tree (MetaMode metadata tree)\n\n---\n\n### 5. Key Files Related to Social/Community/Gallery/Tabs\n\n| File | Purpose | Lines |\n|------|---------|-------|\n| `/src/App.vue` | Root component with mobile tab system | 809-830 (social tab), 273-314 (tab logic) |\n| `/src/components/CommunityGallery.vue` | Community gallery browse/search | 387-617 (template with grid) |\n| `/src/components/SharePanel.vue` | Share link management | 50+ feature components |\n| `/src/components/UnifiedEditor.vue` | Tab-based editor | 52-93 (features), 127-135 (EditorTab type) |\n| `/src/lib/community-gallery.ts` | Gallery API service | 459-667 (API methods) |\n| `/src/lib/social.ts` | Social features API | Comments, subscriptions, notifications |\n| `/src/types/community.ts` | Community types | PublishedCube, CubeStats, CommunitySortOption |\n| `/src/types/social.ts` | Social feature types | Comment, Subscription, Notification |\n| `/src/types/share.ts` | Share link types | ShareLink, QRCode, ShareLinkAnalytics |\n| `/src/composables/useMetamodeDatabase.ts` | MetaMode database access | Metadata queries |\n\n---\n\n### 6. Window Management System\n\nThe application uses a sophisticated **Window Manager** (Pinia store):\n- **File:** `/src/composables/useWindowManager.ts`\n- **Window Definitions:** 9 draggable windows defined in App.vue (lines 63-163)\n- **Window Types:** Gallery, Preview, Editor, Prompt Generator, Export, Action History, Community, Share, Notifications\n- **Features:**\n - Drag and drop positioning\n - Resize from 8 directions\n - Minimize/restore/close\n - Window taskbar\n - Layout strategies\n\n---\n\n### 7. Russian Language Support\n\nThe project includes extensive Russian language support:\n- Documentation in Russian (ANALYSIS.md, phase docs)\n- Comments mention Russian keywords: `вкладк` (tabs), `соцсет` (social), `галере` (gallery), `табл` (tab)\n- Bilingual UI support in components\n\n---\n\n### 8. Project Structure Summary\n\n```\nRoot Files:\n- package.json (2127 lines)\n- vite.config.ts\n- tsconfig.json, tsconfig.app.json, tsconfig.node.json\n- eslint.config.js\n- metamode.json (project metadata)\n- metamode.schema.json\n\nKey Directories:\n- src/ (main app)\n- packages/metamode/ (extracted MetaMode package)\n- server/ (backend services)\n- wasm-fft/ (WebAssembly FFT module)\n- docs/ (phase documentation)\n- public/ (static assets)\n- examples/ (usage examples)\n```\n\n---\n\n### 9. Relevant Documentation\n\n**Phase Documentation:**\n- **Phase 7** (`/docs/phase-7.md`): Community Gallery, Share Links, Social Features (TASK 45-48)\n- **Phase 9** (`/docs/phase-9.md`): GOD MODE - MetaMode window system (TASK 54-59)\n- **Phase 12** (`/docs/phase-12.md`): MetaMode unification (TASK 70-81) - AI optimization, inline metadata, database compilation\n\n**Key Files:**\n- `README.md` (30,933 lines) - Comprehensive project documentation\n- `ANALYSIS.md` (28,064 lines) - Technical analysis of FFT-based voxel generation\n- `description.md` (117,385 lines) - AI prompts for generation\n\n---\n\n### 10. Issue Context (Issue #269)\n\nThe project is on branch `issue-269-5d06a50ee25a` focused on the \"Social Media Tab in Community Gallery\" feature. The repository shows:\n- **Active social/community features** (TASK 45-47 completed)\n- **Mobile tab navigation** with dedicated \"Social\" tab (🌐)\n- **Tab-based editor system** (UnifiedEditor with 7 tabs)\n- **Window management system** for desktop layout\n- **MetaMode system** for metadata and AI integration\n\nThe social tab in the mobile layout (line 809-830 in App.vue) combines:\n1. CommunityGallery component\n2. SharePanel component\n3. NotificationPanel component\n\n---\n\n### Summary\n\nThis is a sophisticated **Vue.js 3 + Three.js web application** for creating and sharing 3D parametric cubes. It features:\n\n✅ **Complete social/community system** with galleries, sharing, comments, likes, subscriptions\n✅ **Multiple tab-based interfaces** (UnifiedEditor, MetaModeWindow, Mobile tabs)\n✅ **AI integration** (MetaMode system, TinyLLM, GitHub integration)\n✅ **Advanced 3D graphics** using Three.js and custom FFT-based voxel generation\n✅ **Comprehensive DevMode/MetaMode** for developer assistance and AI queries\n✅ **Bilingual support** (English/Russian)\n✅ **Responsive design** (Desktop windows, Tablet, Mobile with swipe navigation)"
}
],
"totalDurationMs": 59771,
"totalTokens": 92885,
"totalToolUseCount": 34,
"usage": {
"input_tokens": 5,
"cache_creation_input_tokens": 259,
"cache_read_input_tokens": 89620,
"output_tokens": 3001,
"server_tool_use": {
"web_search_requests": 0,
"web_fetch_requests": 0
},
"service_tier": "standard",
"cache_creation": {
"ephemeral_1h_input_tokens": 259,
"ephemeral_5m_input_tokens": 0
}
}
}
}
[2026-02-06T17:22:28.599Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01X6kRDzNsZsd2N3SYZMZUkQ",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Now let me view the screenshot from the issue to understand what's displaying incorrectly."
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 3731,
"cache_read_input_tokens": 27004,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 3731
},
"output_tokens": 2,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "81b31a8b-cee4-4918-867c-d2b4b6ec5962"
}
[2026-02-06T17:22:29.340Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01X6kRDzNsZsd2N3SYZMZUkQ",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01SW6SPvhT6NeXhcvSfs7Zw4",
"name": "Read",
"input": {
"file_path": "/tmp/claude-1000/-tmp-gh-issue-solver-1770398441546/cc8a3d02-3872-415e-b0af-91bf8cc77c67/scratchpad/issue-screenshot.jpg"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 3731,
"cache_read_input_tokens": 27004,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 3731
},
"output_tokens": 2,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "ddfdcbb2-5d8a-4bdf-9a94-bff1af74a2ad"
}
[2026-02-06T17:22:29.497Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01SW6SPvhT6NeXhcvSfs7Zw4",
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"data": "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ksFX7rsh6PoQPrZdjGcqBVU76mplnlxvyvL3Y7ycrX4fOvLZ1N61PPz76/Yz17MSIi+o5iIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIGB3BAAOQwiKaBERUEIB5gFEQEREBERAXzA7h7F9RTWx83R9qPYvqImtAiIqCIiAiIgIiICIiAiIgIiICKoffhffj390z6E9+F9+Pf3TPoXw/z/wBP8X7fy7fQyW8iqH34X349/dM+hPfhffj390z6E/P/AE/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/wDT/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/0/wAX7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/T/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/wBP8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P8A0/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/9P8AF+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/0/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/8AT/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/ANP8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/T/ABft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/9P8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/AE/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/wDT/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/0/wAX7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/T/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/wBP8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P8A0/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/9P8AF+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/0/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/8AT/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/ANP8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/T/ABft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/9P8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/AE/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/wDT/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/0/wAX7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/T/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/wBP8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P8A0/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/9P8AF+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/0/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/8AT/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/ANP8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/T/ABft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/9P8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/AE/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/wDT/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/0/wAX7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/T/F+38n0MlvIqhGsL6eVdn0RM+hfffffvjh+RZ/pT8/9P8AF+38n0Mluoqi999++OH5Fn+lPfffvjh+RZ/pT8/9P8X7fyfQyW6iqL333744fkWf6U999++OH5Fn+lPz/wBP8X7fyfQyW6iqL333744fkWf6U999++OH5Fn+lPz/ANP8X7fyfQyW6iqL333744fkWf6U999++OH5Fn+lPz/0/wAX7fyfQyW6iqL333744fkWf6U999++OH5Fn+lPz/0/xft/J9DJbqKovfffvjh+RZ/pT333744fkWf6U/P/AE/xft/J9DJbqKovfffvjh+RZ/pT333744fkWf6U/P8A0/xft/J9DJbqKovfffvjh+RZ/pXw6wvoGTWkDxhZ9Cfn/p/i/b+T6GS3kVQ+/C+/Hv7pn0J78L78e/umfQn5/wCn+L9v5PoZNX09D8Wl+UTp6H4tL8ouii/E/VyevTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTviahJAFLMSe6RXZYtm+ltI6Yg1RtVMtMybjTWhryZJTzAcBxJI5tGAPsio55OenaK5auq77e90WnT1Oa6XfGWl4zuZ9G653paFC9omsK/aFq6qu1e97abJZSwE8IIc+a0eJ5k9pT6mV4NJ/cdvdTRE0ugdL2exUTeDHOpxJMR3nGGj8/pWoO3naTn90qYf8A+vi+hV6xrWNw0ADwXJX6fybWB9XnaT986b/l8X0J9XnaT986b/l8X0Kv0T6cNrA+rztJ++dN/wAvi+hPq87SfvnTf8vi+hV+ifThtYH1edpP3zpv+XxfQn1edpP3zpv+XxfQq/RPpw2sD6vO0n7503/L4voT6vO0n7503/L4voVfon04bWB9XnaT986b/l8X0J9XnaT986b/AJfF9Cr9E+nDawPq87SfvnTf8vi+hPq87SfvnTf8vi+hV+ifThtYH1edpP3zpv8Al8X0J9XnaT986b/l8X0Kv0T6cNrA+rztJ++dN/y+L6F3qDygtWxkR6ht9nvVIeD4qmkDMjwLeA9YKrFDxGDxCfTNr6tlk2dbYKeY6Yp/e3qxjDIbe527FNjmQBwI8W4I7Qqzqtn+o6aqmgk0henPieWOMbC5pIOOBHAjxULhnqbTX09xtc8lNVU7xJHLGcOjcORC9H2/yo4WUFM2vsE0tY2JomfHKGtc/A3iB2AnPBTvyx4NbeakRFzUREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERBa2i6t1B5Pu0WWHhJUVdJSucOe47dBH/mKq2hA6DPaSVZGnf4u+u/wrQ/OxVxRf7s30n51vp+UrOiIuyCIiAiIgIiICIiAiIgIiICIiAiIg4yDeY4HtC1C3B5H0LTLl1FjvIiLmoiIgIiICIuUbHyyNjjY573HDWtGST3AIOKKwrDsn1Bco2y1nQ22JwyBOS6TH8wcvWQt5NsTqRETDfIHSdzqdwB9e8V5MvXdDG6uT1Y+i6+U3MVQopdqXZ7qCwMdNPSiqpW8TPSkyNb6RjI9iiK9HT6uHUm8Ltwz6eXTus5oREW2BERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARF37Haay93OGgt0XSVEp4Z4Bo7XOPYApbrmtY43KzHHzXQRXJVbNLNRW6OmknqJriRl84dgNOOxvdnv4qsb9p+42ST/AGynkFO55ZHUBp6OQjjwPfjsXPp9bHqWzF7fVfh3X9Lhj1OpOK1KIi6vAIiICIiA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MYaxo7AtciZ+r6uePblf/f3+SYyN5X31lbqCC5y0nmxBv1npPhFucccf5LoXW4zXC4T1T3OYZXZ3Q44aOwLpIpn6nq5yy3zd/wCSYyNxcr118W50lPiekaGuk389IAQeWOHL862FdqO2V9S6oq7CyWZ3AuNQ7s5cgoui6T1vWm+fP7T2OyM1bLFNVyyU8Ap4XOy2IO3gwd2e1YUReW3d3VERFFfDyPoWmW5PI+haZcuosd5ERc1EREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQWZp3+Lvrv8ACtD87FXFF/uzfSfnVmaWhfN5PGv+jGejuNFK7waCzJVZ0R/2cDuJW+n5Ss6Ii7IIiICIiAiIgIiICIiAiIgIiICIiD4eR9C0y3LjhpJ7AtOuXUWO6i3XvWvf3srfyaX/AEp71r397K38ml/0rmrSot171r397K38ml/0p71r397K38ml/wBKDSotxLpq8RRuklt9WyNoy5z6eRoA7yS3AXGn09damISU1FUzRngHxQve0+sNwg1KLbT6dutPE6WooamKJvN8kD2NHpJbhfYtN3eaNskNvqpI3DLXsgkc0jwIbgoNQi701qq4ZXRzR9FI04cx4LXA+IIyF2YdOXaeJssFBVSxu+C+OCRzT6CG4KDUItm6xXFkzoX0srZmt33RmNwcG95GMgePJYorXVSyNjiYJJHHDWsy4uPcABkoOii2NTZq6lkDKqB8DyMhsrHMJHfggLLT6dutTEJKehqZozwD4oXvafWG4QalFsnWS4MlkidTStljbvyMMbg5je9wxkDiOJ71jhtVXNK2OGPpZHHDWRgucfQAMlB0UWwqLPW00nR1ML4JMZ3ZWuYcd+CAVmg07dqiJssFDUyxO5Pjgkc0+ghuEGpRbSOwXOWeSCOknfPH8ONsTy9npaBketfanT9zpY+kqqOeCPON+WF7G59JACDVItrPYLnTwiaoo54ojj65JE9rePLiRhYp7RWQODZ4jE4gODZGlpIPI4I5eKDXotvBpy7TxNlgoKqWJ3J8cEjmn0ENwVwZYbk+eSFlJM6aMZfG2J5cz0txketBq0Xb9z5u+P8AGWV1orGxRyOicI5Dhjy1wa8/yTjB9SG2vRbr3rXv72V35LL/AKVhprDcqrf6rSTT7hw7oonv3T3HAOEGrRbr3r3r72Vv5NL/AKVhprDcqrf6rSzT7hw7oonv3T3HAOEGrRbo6XvQBJtlaAO3q0n+lYoNPXSoaXU9FUTNBwXRwveAe7Iag1SLZVNkr6RzW1dPJTucMgTMcwkd4yBlfaWxXGrDjSUs1QG/C6GN78enAOEGsRbSosFyp3MbUUk8LpDhgkiewuPcMjj6kqbBc6VgfVUc8DCcB00T2AnuyQOKDVot0NL3ogYtlac//wCNL/pXTltdVFI6OVgjkacOa/LSD3EEZCDootxHpq8SxtfFbqt7HDLXNp5CCO8EN4rrG01YY55jIY1245xBwHdxOOB8OaDoItiLNXF0LRA8umGYgGOzIM480Y87j3LsP0zeWMc59trGtaMkmmkAA7yd1BpkW1ptP3Sqj6Slo6iePON+KF7259IBCy+9a9/eyt/Jpf8ASg0qLde9a9/eyt/Jpf8ASnvWvf3srfyaX/Sg0qLde9a9/eyt/Jpf9Ke9a9/eyt/Jpf8ASg0qLde9a9/eyt/Jpf8ASnvWvf3srfyaX/Sg0qLde9a9/eyt/Jpf9Ke9a9/eyt/Jpf8ASg0qLde9a9/eyt/Jpf8ASnvWvf3srfyaX/Sg0qLde9a9/eyt/Jpf9Ke9a9/eyt/Jpf8ASg0qLde9a9/eyt/Jpf8ASnvWvf3srfyaX/Sg0qLde9a9/eyt/Jpf9Ke9a9/eyt/Jpf8ASg0qLde9a9/eyt/Jpf8ASnvWvf3srfyaX/Sg0qLde9a9/eyt/Jpf9Ke9a9/eyt/Jpf8ASg0qLde9a9/eyt/Jpf8ASnvWvf3srfyaX/Sg0qLde9a9/eyt/Jpf9Ke9a9/eyt/Jpf8ASg0qLde9a9/eyt/Jpf8ASnvWvf3srfyaX/Sg0qLde9a9/eyt/Jpf9Ke9a9/eyt/Jpf8ASg0qLde9a9/eyt/Jpf8ASnvWvf3srfyaX/Sg0qLde9a9/eyt/Jpf9Ke9a9/eyt/Jpf8ASg0qLde9a9/eyt/Jpf8ASnvWvf3srfyaX/Sg0qLde9a9/eyt/Jpf9Ke9a9/eyt/Jpf8ASgszycamiuk2ptE3WQMp9Q0RZET2SsB5eODkfzFVNxtFbp7UVbY7swQ1lNKYXh5wN4ciD3OGCD4hbO3WTUdtuFNXUFFcIKunkbLFKymlyxwOQR5qvuusts242Sn91qafT+uqWLc6d1K8RVAHfkDLfDO83Jxkc7jdXY841EEtNIWVET4n9zxhYsjvHtU/u+iNpOiHOpqizz19vZ8F8MXW4CPDHnN9BAWl919Rduk4c/gqX6F7sf8AT5Tdzs/wxe74RrI7x7UyO8e1SX3X1F/3Th/5VL9Ce6+ov+6cP/KpfoWu303/ADPtU/q+EayO8e1MjvHtUl919Rf904f+VS/QnuvqL/unD/yqX6E7fTf8z7U/q+EayO8e1MjvHtUl919Rf904f+VS/QnuvqL/ALpw/wDKpfoTt9N/zPtT+r4RrI7x7UyO8e1SX3X1F/3Th/5VL9Ce6+ov+6cP/KpfoTt9N/zPtT+r4RrI7x7UyO8e1SX3X1F/3Th/5VL9Ce6+ov8AunD/AMql+hO303/M+1P6vhGsjvHtTI7x7VJfdfUX/dOH/lUv0J7r6i/7pw/8ql+hO303/M+1P6vhGsjvHtTI7x7VJfdfUX/dOH/lUv0J7r6i/wC6cP8AyqX6E7fTf8z7U/q+EayO8e1cmAvcGsBc48g0ZJUj919Rf904f+VS/Qu9baDaFqJ4p7Hpyqpw/wA0vp6EwAel78Y9qlnppz32/wCD+r4Qm7MkpAIZm7kzhksPwmjxHZnu5qyLd5Puua6301W2mpYmzxNlDJZt17Q4A4cOwjPEKwNF7Jrfs4ij1TtCc653Zh6SktdHE6cCUcQXEDz3eJw0c8lder207Sn1Uz6awU8UDnkxxvoZnFrc8ATjiQO1eLPKZXcbj1Tj0+1Men2oiwpj0+1Men2oiCBbdZHw7J9ROic5rjC1mQewyNB/MSFm2JwxxbK9NtjAAdSh5x3ucSfzkrc68sfvl0dd7QCA+rp3MjJ5B/Nuf7QCrXYHrOjpdN+9XUFRFbrzapHw9DUuEZczeJGCeBIJIx3AFbnOLF4yW/cKCkuVFLR3CniqaWUYkhmbvscOfEHgVAtr17boDZlUvsMLKR/m0lK2EBrYS8nLmjwG8R44XQ2ubTaWzWPqWlLjBVakrJGRUzKUtnMeXDJI4jPYAe0rrbWdN329bE4oa6Q1l+o2RVlQWMGXuaD0gaGgDgHHGBx3UxnjZb50yaC2Q6bbpakm1DQNut1rIWzVNRUvc5288B263jwxnnz58VodIMm2c7ajpGmqJ5dPXeHp6aGWQu6B2HEY9bHN8RjPJT/ZxruyX7R9BVC40sM8UDWVMU0zWuie1oBznHDtB5Kv7VVM2geUHDd7QTNZbDTdE6pA8x78PwB6XPPqblWW87TjjTXaqsFPqbylZLXXTVEdHJb2OmbDIWGVjWZ6Mkcd0nGfQtltr2aabsehqi9aeoRbK+3vje2SCRw3m7wBByefHIPPIWdv8a134L/9MKXbf/4Jb9/Mj/xGq7ssTU1Uf2d7NrHqDSlFfNXQSXu83OIVE1RVTPcWh3JrcEYAGFq9jcB03tf1lpWimmNohYJ4YXvLgw5YRj1PxntwMqzNlP8ABvpz+oxfMq60P/GX1r/VR+jCpu3a61qtJX6bpdU+Urf7dcZahtD1WOWaKKQs6drYocMcRx3ckEjwXc25bO7BpvR4v2mqP3LuFDPEQ+nkcN4FwHaeYOCCu/Yf41Govwe3/ChUi8o/+Ca5/wBLB/iNV3dyJqarpaG2YaevGlaC76opn3q8XOnZV1FVVTPLsvaHBrcEboAIHBaXYXHLYtoet9KwzzPtdG/pKeN7y7c84j2kEZ9CtXZ5+8DTf4Mpv8JqrDZh/D3tC/m/9bVN27XUmnHZh/GA2h/zR+kxbDypuGzEc/8Afou3wctJpW40umfKK1fFep46RtxiDoJJnBjHZ3HAZPDiAfYuPlO6tslZpGCy0Nwgq699Q2csgeHiNjQ7JcQcDicAc1df1RN/01ttvfDYdSn+VSfMFs9JbKNMVumaGqv1K+73Kspo5ZquqleX5cwEBuD5oAwBjuWr2+fwG0v86k+YK0tIfvTsv9Sg/wANqzuzHhqSXLlUfk9Ca0ao1xpkVEstBb6r6wHuzu4e9pI7sgNz4hZNnjQ7yh9eB3EGnwR/ajTY1/C9tK/rR/xXr7s6/jEa7/oP+qNavm/2ZniNRtB0xY6Pbdom30tooYaCpYTPTsgaGSHed8JuMFSvbro+ll2WSts1JFS+47xWQRwMDQxozv4A5cCXepafazUQ0O3TQNXWSshpgwh0r3Ya3zyOJ7B5w9qucmkutvkY2SKppZ2OjcWODmuBGCMjh3qW2aqyS7iAx65a7YgdVdJ/tIt5BO9x6wPrft31j8nnT5smzejmnaRV3JxrZSeeHcGD8UA+sqjWx3CN0uyfEnn6gaRJ/wCBj/8AD/V4r11SQRUtLDT07AyGJgjY0cg0DAHsCZTtmjG7u3XvT3Q2avljJ32U8jm8e0NKqTyVYWDZ5WT85Zbg/fd2nDGYyfWVcs8TZoZIpBlj2lrh4EYKoHZLdmbM9VXjReqZBRU00/T2+qlO7FIOXwjwwWhvHvBBUx5li3iyptq3a9Z9M3+qtNZbLxNNT7u9JBAHMOWg8DnxW+2daztmt7VU1top6mnhgn6BzZmhpLt0OzwJ7CF2dQau0/brPVVNXeaFkTY3fBna4k44AAHJPgFXHkuQ1EehbrP0L2tnr3vhc8YEgEbRkd4yMepNTt2bu9ONbpPSdi1HcbxtR1FRXWvq371PFVksbCzuEYcc8MAcMcOWVD6e66Ytm2fTE+zWvZ1C4SCmr6enLxEC52OTh2g58C3sWx2HjTlfdNRVmtjRS6pFY7f90i3LWdu6H8OByD2gAdiwa2vGnrjtu0RBpkUhjoqxjKiSkY1sZe6QEAFvBxAHPxW/fTHttJPKJ/fBs95/uie3+VEs3lV/vBtv4TZ/hyLF5RX74Nnv4RP6USy+VZ+8G2/hNn+HIpj/ALVy92524apq9L7NBJbZXRV9aY6WKVrsOjy3LnA9hwMA9mcqJ6dsmyOl09DTXe5WmvuMsYNTVTVJMjpCMkg54YPLHryt15RNjq7rs1pKuhiMz7dKyokYG5+t7ha447cZBPhlZdF0my3UmnqavjtOm4peiBqIZYomvheAN4EHsz28ipOMVv6mt8ni69Dd9TaWp7gbha7fKJrfP0m9mJziCB4fBPpJUR2OaDtmsr5qie/OqJ6OjuDgyjbK5kb3uc/z3YPEgDA9KuDZxNoepul395Fvo4ZqQtgqKilpdxkgPHDXgYcMj83oKhvk0/71rf8ACf8Am9XfmxJPErDt50tDp7SenbzpyA0505UtEYaSS2NzgRxPHg8Dn3lSPa9q6KLYzPdKGQh13gjhpy13H66MnHobvexT3VVnh1Bpu5WmoA6OrgfFk/YkjgfUcH1Ly/oiWt1ZdNG6GuET+isVbUTVeeRYx2Q0+jBb/aCY8zn2XLi8e70Rsp0972dAWe2ubuzthEsw5fXH+c7PoJx6lLcen2oi5W7bnBj0+1Men2oiKY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHp9qIgY9PtTHpREDC+Y9PtX1EDHp9qY9PtREDHp9qY9PtREDHp9qY9PtREDHp9qY9PtREDHp9qY9PtREDHp9qY9PtREDHp9qY9PtREDHp9qYREAhMen2oiAiIgIiICiurNn+mNVzCe+WmCepA3enaTHJjxc0gn1qVIkuizaI6W2caU0xUNqbPZqeKqb8Gd5Mkg9DnE49SlyIluyTSCXvZLoq83B9bWWSIVD3bzzDI6IPPeQ0gFSqw2S22C3MobNRQ0dIziI4m4Ge8958Stiiu7U1Ij3vPs/vyOqerye7Jh6Dpemdu7mMY3M7vLtwu9qWx0OpLLU2q7RuloqgASMa8sJwQRxHEcQtmibNOnZrZTWe1UtuoGOZS00Yiia5xcQ0cuJ4lau36Ps9v1ZcNSUtPI27VzNyeQzOLXDDRwaTgfBHIKQIptdI/TaQs9PrGq1PFBILxUxCGSUzOLS0BoxuZ3Rwa3sXa1Vp63aoss1qvMT5aKUtc9jJHMJLTkcWkHmFtkV2mnWtlDBbLbSUFI0spqWJsETS4uIa0AAZPE8AtRaNIWe0akud9oYJGXK4jFRIZnODuOeDScDl2KQIptdI3q/RGntXti937bFVSRDDJclj2juDmkHHgtK7ZFor3EltbLMyOmme2SR0cr2yPLeWX53sceWcKfIrupqNDqTSdo1Hp5lkusEktvZuEMbK5h8z4PnA5W4oaWKiooKWnaWwwRtiYCScNaMDiefALMiio/YtIWexXu63a3QSR1t0f0lS90znBxyTwBOBxJ5Ja9IWe2aouOoKOCRl0uDdyokMznBwyDwaTgfBHJSBFd1NRotW6RseraSOnv9BHVsjJMbiS17Cee64YIS20di0TYIKKB9PbbZDkME02Bk5cfOceJ5lb1aTVulrRq23x0V+pBVU0comawvLcOAIzkHuJTftTXvFW7P2Uus9tmodX0UbXWugibR007RgTS7oaX+Pm59RartXQsVmt1htkVvs9JFSUcXwYoxgeJPaT4niu+mV3STQtTqTTdn1LRdVvtvp62EcQJW5LfEHmPUtsiiq5otiuhKWp6dtkEpHJk08kjB/ZLsKwqaCKmgjgp4mRQxtDWRsaGtaByAA5BZEVtt8pJJ4QzU+zHSOprg6uu1oikrHY35Y3ujc/+dukZ9azjZ1pNsdsZHZKaIW15kpTHlhjcSCTkHictHPPJSxE3TUR/VGkLPqeptlReIJJZbdL01OWTOZuuyDk4Iz8Ec1y1lpK0awtsVBfoJJqaKYTtayV0ZDwCM5aQeTit8ibpqOLI2tibGB5gG6AePBQK7bH9D3OudVT2OKOVx3nCCR8TXHxa0gKfoktngsl8tfYrNbrDbY6Cz0cNHSR/BjibgZ7z3nxK1+k9IWfSr7g6ywSQmvm6effmdJvP48RvE45nkpAim10196vVsslOZ7vX0tFFulwM8gZkDngHnzHLvVU7C6Jl51Pq7W7afoYLlVugo+GMxh2XO9ZDc+IKsPV+irBq91E7UNA2sNGXGHL3N3d7G9yI57o9i3duoaW20MNHQQR09LC0MjijbutaB2ALW5Izq2uwiIstCIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiw1lTBRUk1VVyshp4WOkkkecNY0DJJPYAFGW7SNGOIDdUWck8v8Aa2fSmk2liLq225UVzpxPbqunqoeW/BIHt9oXOtq6egpJaqtnip6aJpfJLK4Na0d5J5IrOiwUNZTV9HFV0M8VRTTN3o5YnBzXjvBHNZ0BERAREQEREBERAREQEREBERAREQEREBFF9G62tmra680ttjqmSWqYQTmZgaC7Lh5uCcjzSpQlmiXYiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIovqjW1s05frLaa+OqdU3aTo4DEwFoOQPOJIxzUoV0bEUa17rK3aJtUNwu0dTJBLMIGinYHO3iCeRI4cFIoJWzQxyszuvaHDPcRlTSbc0REUREQERdC/wB1gsdlrbnWNkdT0kTppBGMuLQOOB3oO+i0+kNQ0mqtPUl4tzJmUtSCWCZoa8YJHEAnuW4QEREBEWOpnipaeSeokZFDG0ve97sNaBzJJ5BBkRda23CkulFFWW6phqqWUZZLC8Pa4eBC7KAiIgIiICIiAiIgIo5r3WFv0TZBdLtHUyU5lbDinYHO3iDjgSOHBb6knbVUsNRGCGSsa9ueeCMj500bZURdGC726ouk9tgrqaS4QND5adsgMkYPIlvMIO8iIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgjm0j+DzU/4Mqf8JyqvYZoPTGoNnFHW3izUtXVySzNdK/O8QHkDke5WptI/g81P+DKn/Ccol5Nv8FNv/p5/0yty6xYs3kh20PSr9k1RT6v0I+WmoWzNir7cXl0T2k8OfYeXHiCQQrN1vdLLcNllbdLrSzVtkqaJlQ+GJ269zHbpGDkYIJB59i1/lAujbsjv3S44iEN/ndMzCjlybI3yXWiXO97kRnj3Fzcfmwr5ktTxbE+2ZSWo7P7NLYqaWitToN+KKdwL2DJJLjk8c5JOe1Ra4bbNPxV09PaqG73iOB27LUUNNvxN7+JIyF2NnVtfeNg9utsUvQyVdsfA2T7Uu3gCfDioToLVlXsqsbdP6v0tcqeKCV7vdGjjEsUgcc7xI7uWc5wBwTtnJu8Lc0PrSza1tz6ux1Dn9EQ2aGRu5JETyDh49/JdHXW0aw6MmgprlJPPcJxvRUdLH0krhyBxyAJ7+a1mzWj0XX3i6ao0bUmSorhuVUbXlrWEkO4xEDdJIz6yonsghZqLavrjUNxaJqqkqBS03SD9pblw4d3mtA9vepqcru8JZpfa5p+93iK01MVfaLlLwiguMPR9ITyAOSMlTa+3igsNrnuN2qWU1HAMvkf2dwA7Se4KPbStCUOubXBTVU8lHU08olhq4WtMkfeAT2Hh6wFXW2+OS7az0DpKqne+hqJmyVJJx0xDg3J8cB3rckkt4LbI3H1edO7/AEnuZfPc7e3evdU+t59uVYMOpqCt0rLfrO/3So2wvmaKcjefugktGcYdwxg4Wy6hSe5/UerQ9S6Poug3BubmMbu7yxjsVK7Cg6y7QtdaVgcXWulm6aFjjkN87dwP7JaPUmpZwbsvK0dA6toda6civFtjmihe90bo5sb7HNPEHBI7j611LrrqioNe2zSbKSqqbhWx9MXxbu5CzzuL8kHk0ngCoHsfHvT2k6x0bId2ndILjRBx+wPPH9kt/FK5bI2HVG0vWOs5QXQNl9zqJxH2LcAkeprfxj3pcZNkyvCe6517YtFxwe7FQ81M/wC00sDDJLIOWQ0dme0rQac2w2C73qC1VdNcrRW1B3YW3CDo2yE8gDk4J7MqrKLVjafbZqi+V9jul8kpXmkpGUcBl6sGu3cnu4A4PiV2NrmrZNcacjpaTRmpaa500zZqapkoX/WyOYyBniPzgLXZPCd/uunaPrii0JZ6a4XClqamOeoFOG0+7vAlpdk7xAx5q01j2uWC+6zg09aIq2qfK6RgrGxgQZY0uPEnJHmkZAUH8oiomrNkel6irbIyomqIHytkaWuDjA/OQeRzlXXYLTQWi1UtHbaWKnp4Y2hjGNAxw5+J8VnUk2u7a2Simu9e2PRUUHuxPIamoz0NLAzpJZOzIHYM8MlSs8lRuioo9TeUJqyvubemNmYKekY8ZEZB3Q4D1OPpdlTGb8rldeEnsO2TT1xusFuuFPcrLVTnEQuMHRteScDzskDPit9tG1zRaFt9DV3ClqqllXUima2n3ctcWk5O8Rw4LLtE0ZQa408+2V7nQuD2yRVLGgvicDxLc94yD6VV3lIUb7foPSNHJUSVL6euiiM8mN6QticN447TjKsktiW2RfDTvNB7xlRHQOuqLWkt4joaSqpzbKjq8hn3fPOXcW7pPDze1S2L9qZ6AqQ8mn/fdc/hMfPIpJxatvMRvZfraz6LvevJru+Z01Tcw2Cmp4zJLKQ+XOGjsGRk+KszSG2HTuoryy0vjrrXcJXbsUVdEGdIewAgkZPccZUQ8nugpZdba9rpYGPq4K3o4pSMuY1z5S4DuzgexbHyn7ZENH0V9hAiuVvrI+jnbwfuuzwz4ODSPQt2S5aYlsx2t65V1LbKCetuE8dPSQML5JZHYa1o7SVV0+3bTjHvkp7de6m3sO6+tipPrQ9pBUa8oa+1NVoXSNMelMd3fHPUxxNw6QBjXboHfl3LvAW4pNqVLR2tlsp9n2p2UEcfQiDqB3dzGMEY7uakx421cudLV09e7fqK0U9ztFQ2oo5xlr28PSCOYIPAgqF6l2u2Gz3ma1UdNcbxXwHE0dug6QRkcwTkDI8FGPJvFZSnVFDJbrnb7aaltTRx1kL49xr94FoyACQGtzjwWm0bU3XY3V3eivum6+4W6qqOmZdaBnSlzeQDvnwSMEnnlO2bp3XUWroTaJYtZyVFPbZJ4a+nGZaOqj6OVozjOO0Z4cOXapiqu0bLoPWWtBqmwVUgv0MRbLDvGJxaRukvjI87gcZHcFaKxlNVrHw0mr9UWnSVpdcb5VCCn3txoALnSO+1a0cSVA6Xblp108QuFBerbSTECKrqqXETge3IJOFptexN1L5QWl7DcR0tro6Y1RgcPNe/D3ZI7fgMHoBVu6jslHf7FWWq4RNfTVMZjIx8HhwcO4g8R6FrUnlndvh1tS6lo7FpOr1A4Oq6KCETjq5aTI04wWknHb3qAHbvpp5tkdNS3GoqqwRl8MTGnq5e7dAe7exkcyBlfdZaaGktgN7sra6euip6Z25LMAHBpeDu8OGBngtpsGtVDSbMbLUU9LCyerh6aeQNG9I8uPEn1BNTWzd3pINb64sejKSKa91JZJMSIaeJu/LLjnutHZ48lFrJto09X3ent9fSXSzy1Lt2B9wg6Nj88uOeGeHPvVbXXU7Ydv8AerlcbNcb221M6tSQUcJlMJAaN8js4l3HvK7m1XWXv40nNbGaJ1NFWte2SmnloXYieDx4gZwRkFWYJc3oK63GktNuqK+5VEdNR07C+WWQ4DQqvk262Dz5qe036otzCQ6tjpPrQx28Tld+uNlu+x22VO0NtRDRspoZalszpIpDK0YAIGHFxPZ3rUW3aRNLaYafSezu+VtkYzoYXbrYo3RjhwBzkEKSLancWs7dXaMn1JY2VF2pY4y4Q0jMzOcDgsDTjzvAqh7Vr2eDbbd75739QStmo+j9zGRZqI+EfnFmcAebz8QpT5LLj1bV7OidAxte0iAn9qyHeb6sAepZ9PfxpNQ/g3/phWpJLYltslW7PeqOjsAvFzk6hSCFs8hqPNMQIBw7x44x3qtpdu+nGuMsdtvkttB3TXNpPrWfWcrSeVDcZA3S9mLZ5KSrqnTVEMAy+UMLQGtHafPOB34XfG1OlFs9zRs91MKDo+h6v1A7m5jG7jHLCkx42ty50tmx3ahvlqp7laqhlTR1Dd6ORnI/QQeBCgWrNsunLBeZLVFHXXSuiduSsoYg8Ru7QSSMkdoGVDNi9ZdLHs+1u19DcaGGiMtVQtq4XMcA5jiAN4DON0E47St35Mdmp6fQrrw+Nj7jcJ5DJOeLy1pwG57OOTjvKnbJvZ3W60iOttY2jWW0LZ5VWeWTMNbuTwTMLJYXdI3Ac0969Iqh9stBSwbX9AVcMEcdTUVTRNI1uDJuyN3c95GTxV8Jl4mjHzdqZ8qf94lv/CMf6Ll2arbhpu2NZBT0t0uMMDWxy1VLBmFpAGcOJGfUur5VAzoOgB7bjGP/ACPVp6ft1HQaeoqGjpooqRkDWNia0buN0ZyO3Pb3px2zZz3XTpaf1fa9R6blvNhkfWwRtcTE0bsge0Z3C08nenvC6uznW9Bruyy3C3Q1FOIZjBJDUbu+0gA8d0kcQVWuySH3v7a9bafo/Mtrm9Zjhb8Fhy0j0YDyPRhctnbfeZty1Lpo/W6G7M67SN7M8XAD1OeP7IS4zkmV4WHqHXtFZta2fTBo6uquFyG80w7u7E3JGX5IOOBPAdimCpLZwz32bbtV6of59JbP+z6R3Zn4JI9TXH+2rtUymuFxu3mjbRraa46o0yG2S+UItlwefr0e4KvD2cIsHzvg9v2wVnai1E7U2yLU9c+1XG1FtNPF0FfF0chw0Hexnkc/mKjXlD/vo2d/hF36cKsPar/BvqT+oy/MtcajPPKrNm+0+xaT2aWK3ysrLhcxE976Whi6R0bTI7BeeTc9xOVZmz/aLYtcdPHanzRVlON6WlqGbkjW5xvdxGeHDktH5OlupKTZfbamngYyoqy+SeQDzpHB5AyfAAABRilhjovKqmZSsETKm3GSVrBgOcYxknxy0FLJbSWyRamtNY2XRtubWX2q6Fsh3Yo2t3pJT3NaOJ+ZQ227btO1FxgpbjR3a0sqHBsNRXU+5G7PI5zwHiq/1tqFrfKDmnuFpr7zTWaBrKejpIelLXFjXb5b3Bzzx7w1d/aVrpus9IV1ofobU7aiRodTyyULiIpAeDuWe8HwJSYeNlzehAQQCDkFaLXTqBmjry+8Uz6q3tpZDPCw4c9gHEA5HH1rX7J6itqdnVhfdIp4q1tMI5GTsLXgsJaN4EZyQAeKy7UP4O9R/wBQm/RKxJzpvfG3T2PSWaXZ/bZdNUVRRWx5kLIqh4dJnfO8XEE5JOTzWlvG2awUl0qKG2Ud1vUlO7dmkt9P0kbD2+cSM48Fj2H0prtiNBSNkMZnhqIg8fY7z3jP51DNAXy4bILbPY9VaYuDqYTulF0oI+lZIDji49wA4ZOQOGFvtltY3qRbmhNd2TW1NNJZp39NAQJqaZm5LHnlkd3A8QvmuteWLRNPC+9VD+nnz0NNCzflkx2hvd4ngtBs+h0RftT1+rNJ1TnXOdm5VRNeWbu9ji6IjgSWg57TlRPQsDNT7f8AVtyurWzmzgQUbHgERYduggHtGHHPe4lTU2u7pJLPts05WXGGjudNc7K+YgRPuEG4x2eXnAnHpPBWe57GxmQuaGAbxcTwx35UL2y2Kkvmzm9sq4mOkpaaSqge4DMb2NLsg9mcYPgVWE+qbh+xZbVmZ5qy33OMuTvGPpdzn/M4ZTtl8G7PKY1+27TkdbNDbKO73eKB2Jqiipt+NnjkkZCmei9Y2bWVtdW2Kq6VsZ3ZYnt3ZIj3OaeXzLpbKLLSWTZ/ZKeiiawSUsc8jgMF73tDnOJ7Tx/MsFo0BR2fX9w1NbauWnFdD0c9CxjRE53Dz+/ORn1nvUvas2z6X11Rai1Zf7BTUlVFUWd+5LLJu7knnFvm4JPZ2gLntH1tR6EssNyuFLU1MUkwgDKfd3gSCc+cQMcFXWx7+GraV/T/APquWfyq/wB4FF+EGfoPV7Z3aTuvbtl8p+QTbL6eRoID62FwB8WuWR22zTlppKelp6a53JlPFHHNUUcG9EwhoyN4kZweHBdbyluGyajx8ag/QcrQ0lbqS36VttHRU8UNM2mYBG1uG8WjOe/Pb3q8ds2nPddMejtV2jV9oFxsdT08Gdx7XDdfG77VzTyKhelZ9Ly7atTQ2+1VcOoYoAamqe8GJ4O5ncbvZBOW54Dko3s1hGndver7DQ/W7dUQdabCz4DDljh6MdI4ehZdB/xk9cf1UfNCnbrZveli6617Y9FRQe7E8hqajPQ0sDOklk7MgdgzwyVH7Dtk09cbrBbrhT3Ky1U5xELjB0bXknA87JAz4qMaKij1L5QmrK+5t6Y2Zgp6RjxkRkO3Q4D1OOe92VZW0TRlBrjTz7ZXudC4PbJFUsaC+JwPEtz3jIPpU1JxV3bzEoRdOz0b7faaKjkqJKp9PCyIzyY3pC1oG8cdpxldxYbEREBERAREQEREBERAREQEREBERAREQEREBERBHNpJxs81Pnh/2ZU/4TlSWxra1pfSuhaO03WaqFZHLI5wih3xhziRgg9y9HuaHtLXAFpGCCMgrAKGlByKaAH+jH0LUs1qs2Xe4oXUNwvG2u40Vns9trbbpOGYTVddVM3DLjsaO/BOAM8Tk4wrC2xU0NDscvlLTtEdPBRNijb2Na1zQB7Ap+AGgADAC+SMbIwtkaHNPMEZBTu8HarTZ7HdJ9g9qZp2ojguxoCaWR4Dmh4cSM54ceXrWh0ztoprZa227aBS3Kiv9PmOfNJ5sxzwIA4AkdnLuKupjGxsDGNDWjkAMALhJDFIQZI2OI5FzQcJ3T3hq+yj9i9vnuW0rUmq7faqi06dq4ujp45WdH0riWnIb3eaTw4Aux3rFXVNXsl2nXm61FvrKvS19ImfNTs3zBLkk5HLgS7gcZBHcr5AwMBfHNDgQ4Ag8wVe7lO3hSV92n3LWlRSWbZdDWiqkla6ouU1OBFBH2/Cz7fDAzlbfbVpK7V9NYtQ6eaaq+WGUSiPHnTtBBOB2kFucdoJ8FakUUcTcRsawdzRhc1O7Xhe3flTx29WL3M/c26+7e7j3N6ud7pO7e7s9uM+C7ew3Sd0t3uzqbUsRhvN7m6UwkYdFHkuAPcSTy7AB2q0uhi6TpOjZ0n226M+1ZE7uNQk53VE+UXHV6butl1naMMnZHLbZ3Y4Yex24T7XesNVibIdO+9jZ5Z7e9obUmITz9/SP8459GQPUphLEyVu7Kxr25zhwyFyS5bmiY6u1B3mG6bK9qFz1LHbqm4aXvPGpNM3edA4nPEdmHZIzwIdjOQt9UbaaW7up6HQlorrxd53NAjkiMUUQzxL3dmB6vFW8QCMHkscUMUWejjYzPPdaBlO6XzDts8VSvlUud7wbOZg1jzcWbw3sgHon5Ge1XVT/wC7x/zR8y+zQxzNDZo2PaDkBzQVzUt40snOxUbqvr2zTatVasit1VXadvEIZW9XZvugkGOOPVkZ4HLhlXkhAIIIyCkuizakdRbW6jVMEVn2YUlfPeKl7QauSn3Y6ZuRknOR4HPADPMrY7d9L3e77NLeKbfuN0tcsVRLuN86Yhha9waPE5wOxW1FDHED0bGMz9q0Bc1e7XhO3flTNBt1tlVbIKehs13q9QOY1goY6fgZcAY3s8G57cLXeS6+V7tZGqa1lT19nTMaeDX+fvD1HIV6Nhja8vbGwPPNwaASkUMcRcY42MLjk7rQMnxTumtSExu915j2a6ydovVGtK2stlXV2Oa4ujqKqlZ0jqaRr5C3ebn4JBPHwWy1vq76slbatLaPpKw2/rLZ66rlj3Qxo4d5wACTx4k4AC9EtgiaHhsbAH/CAaBvenvSGCKEEQxsYDzDWgZ9ivfN70nZda2rHbfoas1DpK3nTwJuNmkE1NFni9oABaP5XBpHfjHatbatu1mht7YdS0F0oL1E3dmpRTE77xwO5y5nsOMK5FjfBE94e+NjnDkS0Eqd3GqvbzuInoa+3vVNgra6vtTrIJnuFB0jt6Qxkea97COBz7fngGnNq9dpWSrtG1OCsiuUMrjFWxU2YpY+zG7gegjnnjghXeuEkUcoxIxrx3OAKbnwaqgtMAa2240mqNNWqrobLRwuFTVyxdEKl+64cu0neHqbkr0AvjWhoAaAAOwL6pldrJpT22S03Sz6tsGvrDRy10ltBgrKaMZc6E73EAceT3gnsyD2LDdtuVurbU+l0pbrrV6gnaY4aY0xBikPAF3POOeBzx2K51jZDEx5cyNjXHmQ0AlXunvE7b7Ko1jBfKbyfLuNWVQqLw6jL6h2GgMJeCG8MDgMA+OVItiBB2UaaIII6oOI/nFTeRjZGFj2hzTzBGQV9jY2NgYxoa0cgBgBO7jRrnaidYUV32c7VKjWlvt9RcbDc2blcynG8+I4GTj0tDgeXMHHBber23W+4wspdF2q43e9zkNipnwFjGH/AMR2eAHh7QrgPFY44IoiTHGxhPMtaBlO6XzDts8Ks2/WC8aj2bQGjpS+tpZY6qejiJk3sNIcG/bYLvWMrX27bfa6i1U1FarHdqm/dG2Nlujp+AkwABvdjc9uOSudcGwxteXtYwPPNwAyUmU1qmrvcUb5Moqqes1nTXKB1PXGsZLLGWkAEl+9jvAOQujqO8R6C8oGvv18pawWmuoRFHPFEXguLWcu/BYRjnxC9BAAHIAyvkkbJBiRjXDnhwyr3c7Tt40qbbRpuv1hpqxai0syR1ztxbW08RG698bg12APtgWtOPSFgoNvNiZQBl7t91orwxuJKIUxcXP7Q0nHDPfhXEBgY7FjdBE6QPdGwvHJxaCfap3TWqurvcRTR9wuer9KVcuorObTHWmSOGAvJkMDhgOcCPNdgn5+CqXQWsTsiNdpPWVDWtpoah0lFWQxb7ZGOP5wcZ4ceJBHBeiVwkijlAErGvA4jeAKTIuLzZrbU8uqtpug6+K2VVFZxWtjpJqtnRvqXb7S9waeIaOAHevSy4Phje5hfGxxZxaS0HHoXNLdkmlMeVR+8O3gEBxuUYGT27rsJFtvtdjtzKHVNpulBfKeMRyUvQgte4DGWOJGWnv8e1XJLFHM0CVjXgHIDgCuMtPDK4GWKN5HIuaDhJlNasO273FQbCLRc668ai1ve6Z9JPeZMU8LxgiLOc4PHHBoB7cE9q6nlH0lVZ59Pa0tOGVttmMEj/5Lgd3PhneH9pXcfNaT3KgtWamO1+6W3Sum6GvZam1TZ7nVzxbgbGw/B+fnzOPFaxtuW2cprHSd7BrA6w7N7d07SKyvzWzl3Ml/EZ/s7vryrDXCGNkMTIomhkbAGtaOQA4ALmsW7u25NTSlvKSpqqH3p3yGlnqKa11xkqBE3eLWksIJ7vgEZ5cVvtQattustkGprnZ+n6q2lmiJnj6M5DQTw7uPNWWQHAgjIPYuAhjEZjEbBGeG7ujHsV7uInbzVf8Ak/EHZLYSCCNyTl/SOUQcR+yvYMjPuXyzx/ayrwjjZGwMja1rRyDRgL50MfTdL0bOlxjf3Rn2p3c2nbxIpHaLbLzoradHr+zUE1xttREIbjTwAl7RuhpOB2ENaQewt481savbnaKykEGlrZdLne5fMhozTlu6/s3zk4Ho/MrgWNkEUbi5kbGuPMtaASndL5h22eGC0S1c1rpJLlTspq18TXTQxv32sfjiA7twVotqJxs71Hk4/wBgm/RKlC+Pa17S1wDmngQRkFSXldcKq2Kx1s+wuijs9QyC4OhqBTzOAc1km+7dJB4EZWo0xtjNko3WvaVS19Hfad7mvlFL5kwz5pG7wz2cOBxnKuuONkTAyNrWNHINGAvkkMcuOkjY/HLeaCr3T3TV9lE7L6STUO2G66us1qqbXp11O6JrpY+i6xIQ0EhviQXHHLA7Ss2o6e4bMtqVbq6nt9RX6bvDA2u6u3ffTvyDvY7sjI7OJGeSvMAAYAwEIBGDyV7+U7eFE632ns1xZJtNaAt9fX19yb0EsroSxkEZ+FkntxkceAGVLptm7DsZOjWStdUNpsiXkDUb3SZ9G/w9CsWKGOLPRRsZnnutAyuand8L2/KitF7XabS1gprDrm3XOgu1ujFOMU5cJmt4Nx44wO44zlSXZrfNUav1Ncb5VxT27SZj6OhpJ4w18ruH1zlnHM88ZOBnCs2SGOQgyRseRy3mg4XMDA4JbPgkvy89zXSTZVtj1FdL3Q1clivY6SOqgj3w1xId6OBLgRz5FR/bptAbrTTFO2z2utislPUtdJX1cfRh8pa4NYwZ48Mkn5l6ikjZI3dka1ze5wyFxfTwvjEb4mOYOTS0ED1KzOedJcb42prylcHZRQgkDNXTjJPe0pQ7a7Zp+009v1Xarpb7zTQtjfAIQWSENADmOJAIPA+vtVzSxRysDZGMe0ccOaCFxlp4ZSDLFG8jlvNBwp3TWqvbd7indh9suV31HqHXd6pZKN11PR0kLxgiLOc8eOODQD24JXV0EQfKU1yMjPVRwz4Qq8QMDA5Lg2GNsrpGxsEjubg0ZPrTu8napDVfXtmm1aq1ZFb6qu07eIQyt6uzedBIMccerIzwOXDKyai2t1GqYIrPswpK+e8VL2g1clPux0zcjJOcjwOeAGeZV3EAggjIXCKGOIHo2MZn7VoCvdPeHbfasNrhqKe2UkNbP1iqjia2WbGOkeAN52OzJyV2URYaEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQFxYxsYIY1rQTngMLkiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIutc66ntluqa6tkEVLTRullefsWtGSVT9q11tD1lFLctH2C2U9ma8thfcJDv1AHPGCAPmB4ZOFZNpbpdKKvtm20GXUdxr7Hf7cbTqSgGZqYuy2Rv2zD3cR7QQSuhrjaNcafVTdKaItTLtfQzfndK/dhpxjPnHvwQTkgDIHMq9t3pO6a2tBFS1VtD1roqppZNoVionWeeQRmutrieiJ7wSfYcZwcKZ7U9VVOndndXf7E+mllaIXQvkaXxua97RnAIzwPenbTuibIqVt+tNpep7JSXDTGm7fFSmFmZ62TddUPAG+Y2bwwwnOMnl2rBY9s94ukMllh0w+bWjZnQ9Ua4shaG/Ce9x4tAPAj86dlO+LxRUdW7R9c6Lr6KTaBYre2z1UvRmooX5MX/mIOBk4OM4OFMts+rrhpHQwu9j6s6odURRtM7C9ha7PHAI8E7ad0T9FTI1ftOvtuiuemdMUENudG18fXZPr04wMuDN4boJzjwwurYtst51FQttlk0y6fVwe9s0Dn7lPC1vAyOceI48N09vanZTvi8EVJN2kax0nf7bSbRbLQw2+4SdFHV0T+DDkDJ4kHGRkcDjiFKNuWsbnorSlJcbKKY1Etaynd1iMvbuljyeAI45aE7bvR3TW1iosVLIZaWGR2N5zGuOO8hV1sm1pddVX3V1JdBSiG11Yhp+hjLTul0g84knJ8wd3appdrKRUdbdqWqq7VOpLBa7LBdLjTVToqNrAYY4omuIc+Z5cf5IGMZJWRu0nWOlNS2yg2h2ahiobjII4qqicSGEkDvIOMjI4HHFXsqd8WNtC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WGzUtkour0bTxO897jlzz3lbJLeSThFKfSUk9bDU3y5zXAwneZGW7rAfQutrCWSp1PYaCkkeJWydLIGOIw3IPHHZ5pU0WLq0HWus9EzrG7udJu+du92e5NmmVanUlip77Rthnc6OSM70crObD9C2yKKiEekKmoxHeL1VVlK3lD8EHuyc8Vt9L2X3Ct76QVBnaZDICW7uMgcPzLcIrtNIhU6Plir5qmy3Sa3ic5kjaMj1cfH1LjFooxXShrvdCSaeGTpJnzAudKewDjw/OpiibpqNZqKzw3y2Oo53uYN4Pa9vNrh247ea61ms9ZRW+qpqy5SVnSM3Iy9uOjGCO/jz/Mt4ibNNNpOzOsVq6m+dsx33P3g3d547MnuWK42J9XqeguoqGtbTM3TGWZLufbnhzW+RNmmr1BZKW90ghqg4OYcxyM4OYfBaJ+krhUsFPX3+qnohjMYbguHcTlTFE2adajooKKhZSUjBHCxu60BazSVjfYaKeB87ZzJKZMtZu44AY5nuW8RTa6aQWWYaodduvzdEY9zq32PLHfy7eXNL7ZZrnX0FRFXzUzaZ285jOT+IPfz4Y7ea3aK7TTUamtMt5twpoaySkcHh++ztx2HBC2dNGYaeKNz3SFjQ0vdzdgcysiKKIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICLhNLHBC+WZ7Y4o2lz3vOA0DiST2BYbfcKO40oqbfV09VTEkCWGQPaSOfEcEHZRdO23Sgukb5LbW01ZHG7ce6CVsga7ngkHgV3EBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBF06y6UFFVU9NWVtLBUVBxDFLK1rpTnGGgnJ5jklyulBa2xuuVdS0jZHbjDPK2MOd3DJ4lB3EREBERAREQEREBERAREQEREBERARF07fdKC4vnbQVtNVOgduSiGVrzGe52DwPA80HcREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREFfbc9Syaa2fVjqOR7LjWkUdKY3YeHP5lvbkNzjxwo95P94ucMl+0lqWeaW72uYSgzSukcY3gZ84kkgHHqcF1dVn37bebNY2gyWzT0fXaoc2mXgQD6+jH4y+b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BxcXHx7ean90ttHdrfNQ3KmiqqSZu7JFK3ea4ehRCy7JtF2e5tr6Kxw9ZY7ejMr3SBh72tcSAUmU1qll3uIV5KJB0feByPuhnHd9bavvk4/uxr78JD9KRWnprS1m011z3DoWUgq5OlmDHOIc7jxwTw5nksWltI2fS89yms0EkT7hL01QXzOfvO48RvE4+EeSXKXf7kxs0hVBq/Tetb3d9N6ys1FR1tvmMccNwe1/TDJG8wkDB5HA7CCoJqKgtWitqml2bOK3o56+oEdbb4JzLFuFwHnDJxkF3A8sZGFc+rdAaZ1ZM2a+2qGoqGjdEzSWSY7t5pBPrTSez/TGlJzPY7TDBUkbpncTJJjuDnEkepJlIXG1KQiIsNozWaHsVZqmK/z0m9XMwS3eIike34Ej2cnPaMgOPLPoxJkRNmhERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBdC9We3XyhfR3eigrKV/OOZgcM947j4hd9EEGtOyfRFqr2VtHp+lbUMdvMLy6QNPg1xI/MpyBgcERW23ykkngREUUREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEJwMlF8f8AAd6EGmsWqrDf55YbJd6GvliaHSMp5mvLQTjJA8Vul412Q3CfSmo7LqOR+LVWVstqqT2Ny1hBP4wd/ZK9lZ4LeePbWcMu6Nbfb7arBTMqL3cKWgge/o2yVEgYHOwTgE9uAV2rdXUtzoYay31EVTSTND45YnbzXt7wRzC82eURcJ9S6rqrXRPzRacoHVdS4cR0ji3h6fOYPWe5XPsZ/gu0z/Umf5pcdTaTLd0miKs9Q7ZtO2u7TW2hguN5q4CWyi3w9I1hHPziQDjjyW80JtEsGtDLFap5I62Eb0lJUM6OVo78doz2hZ7b5a7p4TBFH9a6vs+jbWK6+VJiY925FGxu9JK7ua3t+ZQqk236fNZDDdbfebTDO7EdRW0u7GfHIJwEmNvguUi1UVe7WtXGy6fqKWC0XW4suFDOBVUMYfHACwgOe7PAcc5HYFC/Jx1bL7gWzT8lovEu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2iJbsk0Kpo9M3keUTNqA0EnuM639EKrebu7+40Yxne5juVsokuizartpuib1U6mt2r9Ey08d+o2dFLDMd1lTH3E8s4JHHmO0YC0V7i2o66ofcKus9Bp23T4ZWVXTiRz29oaAScHu/OruRWZJ2qo2saLq5Nj8OmtMUktbLTOgZGzeaHPDTxcS4gZ7T6VJ6vSNNqLZvR6fvkRYepxMJ4F0ErWABw8QfbxHapgindV7YrTYvBquyUNTpzVVBIaegJbQ3APa5ksYOA3gd7hzGRy4distES3d2SamhERRRERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREGo1hcJ7RpO9XGk3OsUlFNPHvjLd5rC4ZHaMhVnsJ2o3DWtdcrdfhSMrIo2zwdXjLA5mcOGC45IJHtVg7SP4PdT/gyp/wAJy82acDtKWHZ9rqmaRBHPNb7hujmwyvwT/ZLvxQumMllc8rZXrVUdtx2t3TSGoYLTp1tE+WOn6aqdURGTBd8Bow4Y4An1hXPV19PSW2avmlaKSKIzOkB4bgGc+xeRdS00152e6l1zcWYqLzdo4qYH7CFpcTjw4Nb/AGE6clvJnbJw9dWqd9VbKSeXG/LCx7sDAyWgn512lDNRaoh0ds1beZ2CR0FJEIoycdJI5oDW+jJ4+GVANOaJ1hrSzwX7UetLpbqisZ01PS0PmMhYeLSQCOzjj0cVmY+7W/ZeSKndneqb/ZNe1OhNaVYr5zH0tBXkYdK3GcO78gHxBaRx4LFtDvt9vu1Gh0JZ7o+x0joBUT1cX7bLwLt1h7OAxgcznuTt50d3C50VH3rS+udCVNDc9J3q76lp+lDaq3VjukLm88gk8uBGRggkc1LNtGsrhpLQja+1w9HX1UrIGPkAIpy4ElxHIkYx3ZTt+Du+ViIqU+prqmSwtulHr+8zX10InYOl/wBne4je3QM8jyz+bsW2YNVap2NXKG+0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+kNNW7Sdhp7RaI3MpYcnLzlz3E5LnHtJKZWaMZdqp8mT4Wtfwof+pXgqop9k9XadYVF201qistlDV1Lamqomx7wkw/eLQcjgfOHEZAKtdTOy3cXGWTVERFloREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBEXxzg30oPqLH0h7gnSHuCDIix9Ie4J0h7ggyIsfSHuCdIe4IMiLH0h7gnSHuCDItdqOhqblY62joK6S31c8RZFVRjLonHk4Lu9Ie4L50h7gggez3ZtFpe7Vd6ul1qb3falvRuq6kfAZ2hoyeeOeeQwMKwVi6Q9wX3pD3BW3flJNeGRFj6Q9wTpD3BRWRFj6Q9wTpD3BBkRY+kPcE6Q9wQZEWPpD3BOkPcEGRFj6Q9wTpD3BBkRY+kPcE6Q9wQZEWPpD3BOkPcEGq1fa6682CpobVdJbVWSbu5VxDLo8OBOB4gY9aj+zfZ5TaOkrq2evqLrea4jrFdUfCLRxDQMnhnx48PQpr0h7gnSHuCu7rSam9siLH0h7gnSHuCisiLH0h7gnSHuCDIix9Ie4J0h7ggyIsfSHuCdIe4IMiLH0h7guTXg8+BQckREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREHx53W5WFZJexYkBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERBljdkYK5rFH8NZUBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREGOXsWNZJexY0BERAREQEX3BPIFfEBF9we4r4gIvuDjkcL4gInoRARF9wcZwcIPiIiAiL76EHxF9we4+xMHuPsQfEROXNARF9AJ5AoPiIvuD3H2IPiL6QRzBC+ICIvvZnsQfEREBF9wRzBXxAREQEREHOP4YWVYo/hhZUBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREGOXsWNZJe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fIiLLQiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAql8om1zjTlv1PbQRcbBVMqWuHPoyQHerO6fRlW0utcqGnuVvqaKtiEtNURuikYeTmkYIVl1dpZuaV5tMtL9peyVkljDZJ52xV1NGXAbxA4szyzguHpUbsG1TUFPZ6Szu0Le579TwtgI6Msic5o3Q4kjgOHFW7pux0OnLPBa7TE6Kigz0cbnl+6CckZPHGStnhXunhO2+VE+T1SXan1nrl9+pnw10ksZmIjLY3Sb8hduHGCAT2ZUY2i6rl1Pr80eo7VfPenap3tbR0dK9xq5GnG884AwePLkOXEkr07hMen2q9/O9J2caVBT7arRTQRwU+ltSxQxtDGMZbyGtaOAAHYF2drdwdqXYdWV9DR1jDVshkZTyQnpWjpW8C0cc8FauPT7V9xwU3PMi6viqC0XtcisOlbTaZtLailnpKdkLnMpTuuIGOGQvrKLUW1TaDY7vXWSosmnLNIJWCr4SSuBDiAO3Ja0cOAA55V949PtX1XunmRO2+LVXbbNHXW9ts9+0wGvvllm6aOInBlbkHAJ7QRy7QStDdNrGobjaJrZatEXqLUMrDE4SRHooXEYLgcDPbjOPFXemFJl8xbj8INsb0fNovRUFBXOa64TSOqandOQHux5ue3AAGfSoftoZW6w1jp3Q9HFUigfKKu4TtjduBozgb2MZDQ44zzLVdKY4pMudnbxpjpoY6aniggY2OGNoYxjRgNaBgAepZERZacZHtjjc95w1oJJ7gqW2U0dXq3aVqDXN0pp4YIXGitsc8bmFrMY3gCB9jj1vKutMKy6SzYqX17Yr9pLaM3XelaB9zp6mIQ3KhiPnkYA3gO3Ia08M4LePAq6ESXRZtQer9Sah2p21mmdO6audupamRnXqy4R9GyNrXA4HfxGe84wBxV3WK2w2ay0NspSTBRwMgYXcyGtAyfHgu9hFbd8JJrkREWWhERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREEa2lXarsWhb1c7a9jKylpzJE57d4A5HMdqx7L7zWag0DZrrc3skramEvlcxgYCd4jgBy5Lp7aP4LdSf1Q/OFV+zU7SLzoK1Q6VltlltVLEYo6irbvyVTg4kuA3XANyccuztW5N4sW6yehUVTbONeX46xqtG67hpo7zHH0tPUQea2cYzjHI8OIIxyOQMLU7Std6ssm1ajsmnGitjqaMdFQOjZh8zt4BxdjewMZPEDgp2Xel7pra5btVmgtdXWNglqDTwvlEMQy+TdBO63xOMLSbPNUP1fpmK7S2yotjnvezoJzk+acbwOBkH0d6jdhdry16V1PXaxr6OSqZSPnourNZiFzY3E5G6M8cc8rPsP1JcdRbOae7agqxPVGWYPmcxsY3WuOMhoAGAmuDfKwkVJ27Vmudot0uL9Dz0Fm0/SSmFlbUw9I+dw7gQR44xwBHHK2WmNcajsmuKbSW0OOjdUVzS6guFIN1kx+1LfURyGDjhxynbTujuS6vvDdvEGlxNF7jvojOY+iG9vbhOd7nzCs5UjUfxqaX8GH/Dcu5ftcXzVutmaZ2cVTIIKN29cbv0TZWMHItaHAg9vpPLgCVbjvWkmWtriRVRt11TetF6csc9nr3id9W2KeR0UbnTNDCSCC3AJx2ALpXAbYq+jfdqKezW1mDLHagwSS7uMhrnOaQXesce5SY8bW5c6XIiofS20nW20C3st2l7dQ0N0pm/8AaFxqcmGPiQ0MZxO8cHgc4wfSu1Q6x1tozXFosmvpqC40F1eIoaymYGFjicDkB2loII7eBV7Kd8Xcihe1TXEOhtPNqhD1q41MnQUdNkjpJO8444Hh4DtUNZT7Z5KD3V90bIyUt6QWkwDOOe6XY+F2Y3vWpMd8ly0uZFBtlGvWa3s9Q6pphR3ehk6GspsnzXdjhnjg4PPkQQolLrDWGuNXXe0aDmobXbrS8wz11VF0jnvyW4DSCBxa7HDkMk9idt3o7ouZFUFh1drDTmvaLTOumU1wp7gB1W5UcRaA7kA4AYxngeAIyOYW12r66uViudn05pilim1Bd3YhfUftcTc4ye85z4AA8+Sdt3o7praykVJajuW1PQ9Cy9XKutd/tzHtFTTQU+45gJxwIaDjJxnj4jCsa5auhptB++amoquqY+mbPFSxxkyuc7GGEAcOJ4nswUuJMknRUzajtc1HbWXiK52eyxzDpILfLTZdu9gcS0kZ9veByUh2Qa6rdVR3W23+ljpb7aZehqRF8B/EjeHPBy05HLkRzS4kyWKip3W+vdSXHXT9G7PIabr1O3eq62cbzYjgEjjwAGRkkHicALRa81HtS0LpieS71VtrWTbjIrnRxDepn5zh7HNDSHDIBxzx6FZhS5yL/RRN2qorNs0pdSXuQybtvhqJS0AGWRzG8ABwy5xx3cVArRWbV9X21l8ttbZrFQzjpaWkli6R8jDyLnFpwD38PQFJiXJdKKutkmua3Uwulp1FTR0uorTJ0dTHHwa8cQHgdnEEHjjke1RrUOu9Wan1vW6Z2btpII7fltVcagBzQ4HBxkEAZ4ciSQeQCdt3o7praRbdtV3bSGlKSusc0UVTJWMhcZIhIN0tcTwPoCsKhkdLRwSPOXPja4+kgLzLtum1xR6ao7ZrRlBXUz6tksFyogWjeDTmN7cDiQcg4HI816Xtn7nUv9Ez9EK5TUiY3drsoShIHM4VL+UBVzwak2ftpqmaJslwIeIpXNDhvxcDg8fWsybumrdTa6FotU6usOlYBLfrpTUeRvNY92XvHg0cT7FvA4csjK0N00fYLtfYrzdLXT1lwiiEMck7d8MaCSMNPDOXHjjKTXuX9kb0DtTtut9T1lrtFFVMgpqbrHWZ8M3/ADg3AZzA45yT6lYao3ZuxsflFa7Yxoa1tOAABgAZiV5K5SS8JjbZyIiLLQiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIghW2j+C3Un9UPzhYth38E+m/6uf03La7SbRV37Q15tduax1XVU5jjD3brScjmexVdp/R207RmnqOl01cbZUxSM3pqKs49WlPwujf2tzxx3nktznHTF4u2bXrWSeUjoptLjrLabMuPtQZT829+Zcr3/GhsP4OP6Ei3ezHQF3t+pK3Vuta2Ks1BVM6NjIuLIGnGcHhxwAABwA78rNdNH3eo242rU8UcBtNPRmGR5lw/e3Xjg3HHmFdzx+yavn90y1x+8q//g+o/wAJyqjY+2Z/k6XBtMfrxhrQ30+crf1PRzXDTV2oqYNM9RSTQxhxwC5zCBk9nEqLbFdMXDSugKe0XuOFtWyWVzmxydI3DnZHHHcsy6jVnLVeTY6A7KLd1fGRLMJMfbb55+rCnlzNl90qEXP3P6/vf7J1gM6Xe/8ADzxz6FVjdBaz0TeK+fZ3cLfLaK2UzOt1dkCNx+1P5sjHDAOcZWy0js/vlZq+DVe0K409ZcqRpbRUlK3EVP8AyvTxPDv4klWyW72k3JrSvtqlBertt69ztNzCCvq7e2AzE7ojicw9I7PMebnlx7lJvJ9ucenqy56DvFHDQ3ulmdK17RjrTe/PaQMEd7T4FSSXR93dt2g1QI4PchlF0Bf0vn724R8HHLJ7192v6Aq9ROoL7piRlLqe3Pa6GUu3BKwH4Lj4cx6x2rXdLJinbZdo75U/73NP/hIfoFXaPghVJtW0pqbW+jtPRNo6OG7U9S2ari6yOjaQ0glrscQTxx4q3McAsXxI1PNUh5MIAp9X4AH/AGnj8xXzyif3z7Oz2+6Y/wASJSPYjo+76Ri1C29RwMNbW9PD0Uu/luDz4cCvm2DR131Re9H1NpjgfFba3p6gyy7hDd+M8BjicNK1ud+2dXt0je3DDNqWziSs4UAqiHF3wc9LHz/Mrx7FFdpGiaLXOnzb6yR0E8b+lpqlgy6GQdviO8KCttW2KKiFnZdLG6Hd6IXN290wbjGcY+FjtxlTiyL4tdHZFuSbcdoclHxo94hxHIv6T6Q9bW4bP6h+oa/UWzPVUVuq6t+auDzZ6d7+ZzjOOJzgg8+zkpdsy0NSaFsb6SCZ9VW1D+mq6p4wZX+jsA7B4k9qhL9n+rdGaguNfs4rre63XCQzTW6uBAY/ifNI9J48Djhx5q73eE1qcs9n1/qXT2sLbpraHb6PeuJDKS40JO5I4nADmnxIBxjGRwxxW/2k6NtesK+39Hd/cvUtDmSjnhkb0rRz4szkjIzkcsHxWitGg9UX/WVs1HtAuFCRbDv0lBQtO412c5JPjg9pOByW02m7Pqy+3q3al0vXx27UtvG5HJI3LJWZPmu7uZ7CCCQe9ON8LzpHbvetpezyhdcL462alskJAmkjaYZ42k4yeH58H1c1MNUbRaK07Mm6uo4nTxTxMNNE/wA3L38A12OWDnPoUQvGmtqOsLe6y3+usVutcpDaiWka58krQc8B6uWQpvfNn9tuezlukQ98dNFAyOCYjLmPZxa8jtOeJHbkpdcbJv2RG0ad2iantlPdLprY2c1bGzR0tBSNIja4ZAJPbg+PpWl2CU1RRbTNeUtZWPrqmF7WSVMgAdM4PdlxA5Erv2nTu1ygoYbDDerLHb4WdDHXlpfMyMcBgEcwOWfb2rZ7J9nF00Rq6+1VTWxVtvrY2tjlc89M5wdvFzxjGTl3arbxUk5jT7FI2xbWtpDKnHXetEtzz3DK8n1cWfmW+8pf+Ca4f08H+IFg2gaBvzdYN1foCup6W8OjEVTTz8I5xjGeWDwAyD9qCDlV/tmtWt5tCS3PXF2oWRQSxsp7dQM818jjgue7tIbnHP1JNXKXaXclje7azIPJ+030e8WEUW/ju6E/54Wzsemdpc1loJbdru2iifTxugDaDIEZaN0D1YU6oNP0eo9ltss12jc6mqLbTseBwcwiNpDgewggH1KB2nS+1DRdP7lacuVoutoZkU/XQWPhB7P/AGyR6FJeNLrnbc7Otn+obBrm46jv98pLjLXU3QyiGAxlzgWbru7gG49a0HkzNZHU61jl/wB+bccS57gX/wCe8p3s60zfbRLX3PVV8kuV2r93fijJFPAG8gxvf44H+ai2rNn+pbZrSq1Ts6r6Snqa5uKyjqh9bkd3jsOefHGDkg8U3vctNa1YxeVN+8Kg/CMf6Llbls/c6l/omfohUXrzZ5tB1lZYKi93K3y10Eregt1MeigY0533uefhP5AetXvQxuho4I343mRtacd4ACmXiRZ5tR7X+i7fri0Q266z1cMMUwnDqZ7Wu3gCMcQeHFee9quy2y6SvGlaW3VdyljutWYJjPIxxa3eYMtw0YPnHnnsXqtRLXGhqLV9wsdXW1dVA+0zmeJsO7h5y04dkHh5g5Y5pjloyx2jGmtiGnNPX+hu9FXXiSoo5eljbNNGWE4I4gMBxx71anIIizbb5akk8KP2dfxjdef1cfPErwVY6P0dd7Xti1VqKrjgFsuEQZA5su88nMfNuOHwSrOVyu6mPEERFloREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQVvrHSGqffU/Umir+ynq5YWwzUNcC+ne1vLGM45k8uZPEZUen2d6x1rdqKXaNdqAWmkeJG0FuaQJHfysjhkcM5JwSBhXSi13WM9sr4xrWNDWANaBgADgAvqIstCIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAi0utq2otujb7XUUnRVVNQzzRPwDuvbGSDg8DxHaqZ0JLtX1lpyG8UGr7fBBK97Ayajj3gWnB5R4WpjubZuWrp6ARVdYrBtTgvVDLd9XWyptzJmuqYY6VrXSR585oPRjBI8QrRUs0suxEyEUURMoTgZQEUAsWuqq47Vb3pSSjp46WggErKhshL3nzeBHIfCPsU/JA5kK2aSXYiICDyOVFETI7wmeCAiZRARMqlto1RMzb/AKEiZNK2J8XnMa8hrvOfzGcFWTaW6XSiDkiiiIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgjm0j+DzU/4Mqf8ACcqQ2PbWdP6S0NSWm5wXR9THJI9xgpt9mHOJGDvBXftI/g81P+DKn/Ccod5OEUb9lVvL2Mcemn4loP2ZW5rt5Yu+7hudDbUbHrO7SW60w3Fk8cJmJqafo27oIHPJ48QoXq243HX21Cp0dQ3ae1WG1xdJXy079ySZ/DzQ7uy4DHLmTlXYyKNhyxjWnvAAXmSPS1luu3rU1m1eamLrkjqiidHUGHfLiHAZHPLSceLSFcdc1Mt+G413pAbMbfBqrQ95r96kmZ1ukqKnpWTMccEkenn6cjGFaerarUN80FBUaF6CK4XCKORkk8m6YY3t3iQcHzuQ5d57FD7vsZ2fWm3y1l1nr6WjjxvyzXF4aM8O1fNtN1n0VsytFv0vVS01NPJHRtrWybzo4d0nIf3kDmOzOE/Vo8bdR+x+xRW4OvGqbiNROZl1Y6vDd2U8eDTxxnxz4rPscrp9oGz6+ae1ZNJWspZzRvnEhD5Y/hDLhxJBHPtGFsaTZBoCisjay8U4uDWxCaavral53hjJfkEABR/yV+i9z9V9Wx0HX29Hj7TcO7+bCtu5aSasRfTuzfTtw20ai03Uw1JtdHTCSJjahwcCdzm7OT8IqWeUdAykpdDU8ORHFcGxtycnADQFl0d5vlL6tDuBdRAgHt4Rr55UDhDR6Sqn56GG5Ze7u4A/MCrveUTWsau4/BPrVJeSvx0vfck/uif0Gq46qvpKW2y11RURR0bIzK6ZzsMDMZznuwqa8lQh2lb44cjccj8RqxP01q/qiB7JNE12txf6Wa9VVvsUFc50sFMcPnlOcZPcGgc88+SsTaPc6zRGm9L6F0lVvbcq8tpI6qQjfiiBALuWMku59gB7cLr+S7/uOrPwn/kVqvKPoKb386Prr2yX3CeHU1TJE8tLRvgnBHEcDn1Fb3vLVZk1juNvctjNvjtEtTbtTXd2pGML2Vr63hJIOOCOYBPjkZ7VvNmu0GWv2S1d9vR6SttDZY6ojGZXRjIPDtIIHpXXi2HaIlgbNE65Phc3ebI24vLS3vB5YX2LR2n4Nk+qaDQlQ6sgrY5TltT029MxuN0HsPmgYWbZfKyWIfoHQtdtTo36r1reriI6mV/VKall3Gsa0kZGQQACCAAM8Mk8V06zTtdpjbroy3Vd3qLpRt86jkqTmWOMl+WOPbg8j3HsVk+TvdqW4bLrZTwPb1ihL4J4xzY7fcQSPEEH2qLbQqunqPKL0TDDMySWnjDZWtOSwkvIB7jjiru7sTU1KvUckQckXJ1EREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERB0NQ21l5sNxtckjomVtNJTukaAS0PaW5Ge3itVs90pDozTEFmp6qWqjie94llaGuO87PIcFJEV3xpNe4olr3Z/YtbRQ+60MjKuD9pq6d25LH24z2jPHB9WFLUSXRZvyqi3bFLWKynlv8AerzfKenO9FS1s2Yh3ZHarA1Jpy16jsMtnutM2ShkAAY3zSwj4JaRyI7Ft0S5WkxkVFbthdmgniZX3i9XC2RODmW+aoxDw7HAcx4cFLtBaCtuiJbobRNUmGvlEroZSC2MjOA3AGBg49QUvRW5W+UmMiutb7KbXqfUAvcNwuNquhaI5J6KXdMjQMcc8jjhkKS6g0lbNQ6XbYrxG+ppGsY0Pc7Egc0YDw77bxUgRTdXUVFb9hdnhmibcbzerjbonBzKGeoxFw7CBzHsUs2a6FptCW+upKOsmqo6qoNR9dY1u5wA3Rjs4KYorcrSYyIbs20JT6GgukdNXT1YrqjrDjKxrdw4xgY7Fv8AUlhtupLTNbb1SsqaOXiWO4EEcnAjiCO8LZopu72anhTzdhdBG11JDqbUMdoceNC2oG4R3Zxy9Ss7Tlit2nLRBbLPTMpqOEYaxvMntJPMk9pK2aJcrfJMZPCqr3sVs9XfJrnZ7ndLJLO/fmjoZd1jieeB2ZJJxy7l2KDY7ZLZqSyXi3VNXFPbnOkkMhErqt5+yke7jn0KzUV7qnbBERZaEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREBB5HKAiISBzICAiIgIiICImUBERAREQEREBEyM47UQEREBERAREQETPFEBERARai0als94uVwt9sr4amst7tyqiZnMRyRg8O8H2LboCLT++aze+X3v9fh92ej6bqvHf3MZzyxyW4QEREBEQ8OaAiA55IgIgIPIhEBERAREQERcJ5WQQySyuDY42l7nHsAGSUHNFqtOahtWpbea6xVsVbSB5jMsecbwxkcfSFtUBEyO9EBERAREQEREBEyiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgju0j+D3U/4Mqf8JyoHyaLzPZNSttVcS2jv1MailJPAyRuc32kNcPUFfu0j+D3U/4Mqf8ACcvPEVtqGbDdK6stYxcdPVssmRz6IzEnPgHY9RK64fp055fq29VLyV5Rd5qNRauuMdIS622CNtM9wPDpZD53ryAP7J7l6JvGs6Ok2cS6rhcDTmjFRECebnDzWeneIC886isUtq8nsXOvyblfrnHWzPd8ItIeWfmy7+0nTmrunUu5p6EqdXWTStjsXu/W9UFZFHHC4xPeHODG8CWggcxzwpcqr2t6e98OxnETN6poaaKt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vKZPeUGdFgye8pk95QZ1rr7Y7XfqaOnvNBT1sEb+kaydgcA7BGfYSu1k95TJ7yg+0VJT0NLHTUUEVPTxDdZFEwNa0dwA4BZlgye8pk95QZ0WDJ7ymT3lBnRYMnvKZPeUGdFgye8pk95QZ0WDJ7ymT3lBnRYMnvKZPeUGC9Wi33uhNHd6OGspS4OMUzd5uRyOFkttvo7XRx0ltpYKSlj+BFCwMa30ALnk95TJ7ygzosGT3lMnvKDOiwZPeUye8oM6LBk95TJ7ygzosGT3lA4jtKDOi4sfvcDzXJAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREHGQ4b6VhWSXsWNAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREH1Z2nIBXXWaP4AQckREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERBjl7FjWSXsWNAREQEREBFHNVa20/pSopYb/cOqS1QJhb0Mj94AgH4LTjiRzUjBDgCORGQmjYijdfrnTtBqiDTtXcOjvEzmMjp+hkOS/4PnBu7x9K3lwrqW3UUtXX1EVNSxN3nyyuDWtHiSrpNuwihVLtU0RVVgpotRUnSk7oLw9jCfBxAH51NGuD2hzSHNIyCDkEJZZ5JZfD6ijuptb6b0xK2K+3empZ3N3hCcvkx37rQThZtNatsOp2yGw3SmrXRjL2Mdh7R3lpwQPUmr5Nzw3iLhPNFTwyTTyMihjaXPe9wa1oHMknkFC/qr6H631f3x0m/nG9uv3Px93d/OklvgtkTdFjp54qmCOemljmhkaHMkjcHNcD2gjmF9nmip4XS1EjIomjLnvcGtHpJ4KK5otTYtSWe/zVkdluEFc6kc1sxhO81pOcDe5HkeS5alv9s0zan3K91PVqJj2sdJuOfguOAMNBKuvY22iKvfqzaC+/v/8AKT/6FstO7StJ6ju0Vss116zWyhzmR9XlZkAZPFzQOSdt+E7p8pgi02pNU2PTMLJb9c6aia/4DZHec/8AmtGSfUF1dMa303qiV0Viu9PVTtG8YuLJMd+64A4TV8m5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BdtEUUREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEyo/r/UTNKaPud5czpHU0WY2fbPJw0HwyRnwyqo0TswfrSwQai1zebvUXG4N6xCyGoMbadh4twMEA444HAcsLUnG6zbzqL3TIzjPFVTs1ptV6W1jcNMXU19106IumobnO0no+R6Mv8AWRjvbw5quqfTlx1Xts1taqK7TWuifJv1skP7ZJGC3DG92Tz8O/krMf3S5fs9Nbw7wvq8+7WNnMWldl9LPZKmqnnstca1s0xG+GyEB3IDk4MPqKtCr1lCNlcmrIyA02/rLQOyQtwG/j8FO34Xu+UyBB5FMhUpsbo6vSuxe6agZB090rIpriGOz52607gI544E+taPZnoq27SrCb9qjUNyrrxPK/eihq9zq2CQAG9nDBHZghXtTueh1X8+u6qLbBTaPFHTmklpOsGpMjt8HdJxjljgtZs60vqi0uv2m9TTvuOmJI3R0VXJODLungW895oLT28iOHNVjUbONPRbdaPSzIakWiSh6ZzOsO397dcfhZz2DgkxnOy5Xh6hB4ZTKhmpbNebToCOy7Puiiq4mMpoZKmU5hiHNwcQcu7Bnvz2KB/UfsUdua6/apuPviezL6x1eG7sp48GnjgHxyfBSSfK21d6pTYrUTS7U9pDJZpZGMqmhjXyFwb9cl5Anh6ls/J41LdL5p650N6qTWVFqqurtqHHedIwjhk9uCDg92Fptif8Ku0z+tN/xZVdalib3ZV45GcZ4pkLzTa7BXam25a5tlLd6m10T371Y+mOJZIxuYY132OSeJXPaZo2bZPBQ6p0febk3dqWx1ENTL0gfkEjOAN4HGCD38CE7J42d/vp6TyEVL0myM6stkN41fqK7zXqrjbOOryhkNNvDIYxmDwGcdizeT3errIdR6bvVXJWPstV0MM0hJduZc0jJ44y3Iz34UuPHFXu55XEmVUmpNE3/V+saybVl2fb9I0/CkpaGq3DL2b0hxwJ4k8+wDHNQrUdNFsr1Rp6t0bfaipttZUimq6CaqEzMZHHA8CccMgjn2KzHfuXLXs9IJkKr9vusK/TOmqSjsj3R3W6z9Whlb8KMcMkdxOQAezOVprVsNZBQsrJ9T3tmpC0PdWQz+a2TnyPFwz3u4qTHjdLlzqLpyDyKh+mG6xGsb8b/LRO0+SPc5sQG+OPbjjy557eXBV15N5rPfDrr3UmbNXCrYJ5G8A94Lw4j0kZWTZMT9XPaPz+GP8AEKvbrad29LxTIVFXZ1x2p7ULpp+O51dv0vY/rdU2lfuOqJc4IJ9IcOPABp4ZK5ak0FeNnhpL3s3qrvWiOVram0ySGdszCeJA+ftGcg8MJ2/uvd+y8yQOZTIVD+UzUTzWPR9RCx1PUPrxIxkowY3lgIDh4HGfQtncNiDLpRurLjqe8zaieDIasyjomyH7VmMhue4hO2a3ad13qRcqAg8iqj2BapulxgvGm9RyyT3WyTdGZZDlzmZLcE9pBaeJ44IWs8ngn317Rck/umf8SVS462TLel3kgczhCQOZwqP8qH/ctJ4J/dL/ACC++VS57dLWIxHEguILfTuOwkx3ouWtrvyEyDyKq/Q+y6W0aipdTXy/V1yvoa8yhxHQ5e0ghoPHAzw5cuSrXQGmKzV2uteW915rbdZ2XF8lVHRv3JJ3dJIGDe7Gjzs9/BWYy+6d1+HprIVQeVHPNT7NY3080sL+vxDejeWHG6/tCh+ttM1+xqqt+pNLXWvntLqhsVZR1Mm8HZ44OMAggEZxkHHFSTymquKv2R0VXTkmGerglYT2tdG8j8xVmOrKW7li3rGSbLQEkkmnjyT/ADQu7lQDXurXaL2WtusLWuq+rxQ0wcMjpHNABI7hxPqUNsWymm1BZae6az1Jdqm+VcYnLo6sNbTlwyGtHhn0dwCz2+9XftF4oqh2I3u6U951Dou+1j6+ezPDqeqecl8JOMEniewjOcZx2K3lLNXSy7g4hoJJwBxK1OnNRWnUtJJVWKvgrqeOQxPkhOQHYBx6cEKKXPa/oejqKqjqb2GVMLnxSM6rMcOGQRkMxzVV+T9tB0zpPStwo9QXPqtTLWumYzoZH5YWMGctaRzBWphdbZuc3p6IvVyp7NaK25Vm/wBWpIXTSbjd5260ZOB2lUbrbbDqoWGW6af0zPbLSHCNtwuTPOcXct2PgPnCurTl9tmp7RHcbNUCqoZS5rXmNzckHB4OAPPwVdeU9/BbL/XIfnKY63qwy8biytPVEtXYLbU1Dt+aamike7AGXFgJOB4lbBarSf71rP8A1OH/AA2rarFbgiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgr7b1bJ7rssvcVK175YmNn3W8y1jgXewZPqWz2T3elvOzyxVFHI1wZSshka05LHsaGuae45Clr2texzXtDmuGCCMghVPXbEbQK6eewXi82OKcky09HPiMg9gB4ge3C1LLNVmyy7iY0et7TW64qtLUgnmuFLD000jGAxRjh5pdnn5wGFXGzH+MBtB/mj9JisbQehbLomhlhtET3TTkGepmdvyynsye7jyC62nNCU9k1zfdSx1s8s11GHwPY0Nj4g8COJ5dqu5N6TVutpLe7bBeLPW26rGYKqF8L+HY4YyvJ8N0r5tFRbL3F4unu91Vw7od7Ps38n0YXr08lRekLXQ6g8ojUV8t8bXUNrYGmRvFr6pzAwkH0B6uF1szm9LYudbQaN0i+pmjl9zbZTtaWQs3nCNuG8B4BV5T7N9Ea3oINSabNbaX1QMjZrfKYS12eOWcQHA9nBW3UQxVEEkE8bJIZGlj2PGQ5pGCCO0KqpdiVtp6qZ+n79fbLTTO3n01LUfW/QM8fnWcb+62fs6myS/X6k19f9FXq5G9QW6PpIa1/GRoy0brj25Du3JBB4rqV/meVRbS7gHWwhue3zHqxNB6Dsuiaedtpjlkqaggz1VQ/fllx3nsHgFr9oOzS16yuFJcpKutt11pW7kdVSP3XbucgEHuyePPitd02nbdNR5ROpbnpzQkbrPNJTTVlS2mdUsOHRsLXOO6ewndxn0rDb9kGgqayMrbvALmOiE8tfWVLyHgjJfkEADtUzl0dbazRUWmbsZ7jRNibGZah+ZXEcQ/e572eOVB7fsLs0M0cdbeb3XWuNwc23y1GIjg8iBzHhwUlmtbLLvemn8lroOr6tFHjq3XmdEB9ph27+bCybE/4Vdpn9ab/iyqwtCaBtmiqu7S2eWo6K4yCR0EhBZFguwGYHAYdj1BY9HaDp9M6m1FeYa6eokvMgkfFIxobFhznYaRxPwu3uVuUuyY2aQHZl/GE2g/zP+pi2PlTfwX//ALdF8zlLdOaDp7Jru+6njrp5ZrqMPgexoZHxB4EcTy7V2NpejINdab9yKqsmo4+mbN0kTWudlueGDw7VO6d0p23tsbrT37gW3+rRfoBVDsL/AIR9o/8AXf8A1JFdFBTCjoaema4uEMbYw48zugDP5lFNF6Ep9Lag1BdYK6eoku83TPjkY0CM7zjgEcT8LtUl4q2eFX2Cgj2pbTNVQ6uq6p1FZ5+ipLUyYxs3Q9zC4gcTjdGT3uHZhaTbbpTSOkrhpmn05RU9HcZaxr52Mkc55jBbguBJwMq1tabJbPqO+OvVLWV9nurxiSehk3ekOMZI78Ds59q102wvTU1uZFLU3N9eJhO+4Pn3p3kDAbkggN7cDuW5lN72xcb8NX5SkT6R2kL6Yy+lt9xHTnGQ0EtcMj+wVccFdSz0DK2KoidRvYJWzBw3CzGd7PLGFptdCwHS89Pq+aBtqqCyB7p3boLnEBuCORzxyOWM9iriDYjYqCGSSu1JeZLCz666lfUhkO4OPnEc249CzxZy1zLw6vk6VEVZqbX1TTPEkE1a2SN45OaXSEELlsm/h02j/wA8f4hXDyY6dj5dX3Cih6K2T1wjpgAd3dbvEAegOb7VYOl9B09g1pqDUUVdPNNdzl8L2NDY/OzwI4n1q5WS1MZuRA9kj2WDbDr6y3B3RVddOKumD+BlZvPdw7ziQH1HuVl661latFWhlwvL5Nx8gijiiaHSPJ7m5Gcdq1uvtm1k1pPBV1vWKS5QDdirKSTckA5gHvAPLtHetPp7Y7aKC8wXW83G5X6sgIMJuEu8xhHI7vbjx4eClsvNWSziIt5TdQ2Sy6QqXtdEw3ASkSDBYNwE59CvCOqp30YqmzRmmLOkEwcNzdxnezyxjjlUp5UjGvt+lGPAc11zw4HkQW8QttddiNtqWvp7df75brVI7edb459+EA82tDuQ8OKvHbNpz3XTU7Bz7r7QdfaipQTbqmqEcL+Qfl7nfNun1r5sBkZTa72iUMxDKo15lEZ5lolk4/8AmHtVtaS03bdKWSG1WaHoqWPLjvHLnuPNzj2kqIa02SWfUd8deaWsr7PdX/ts9DJu9IeWSO/Axkc+1O6XZ22aQ/yoa2mJ0pRCZhqxXdMYgfODOA3iOwZ4LteVP+9mw/hIfoOXeq9g1imp6bcuVy6/HUNnlrZniWWUDkw73ANzx4cVL9pehafXduoaSqrZ6NtLUCoDoWNcXHBGDn0pMpNGrdpgPghUXsGqYWbSNo1O+VjZ5K0vZGT5zmtllyQO3GR7VevILzVs60bbtX622gtrn1VPVUly36arpZTHLCTJNnBHYcDIPcpj4q5eYmflPXKnZoOG0hwfcLhVxCGEcXENOSQPTgekrWeUJRyW7YfZqKb9sppaWF3pbE4H5lJdM7HLXbNRx3u7XO5XythcHQGueHCMjkfEjszwHcpJtM0XBrvTjbRVVk1HG2ds/SQta52Whwxh3D7JWZSahq3dV/5QdDUVWx22z07HPZSSU80oHY0sLcnwy4LhpHZJoPUmnKC60TrlJHURNc7duD/NdjzmkdhByMK5GW+A2ptvqGNqKboRA9sjQQ9uMEEcuKq+o2IWuGrlk09fL3ZIJiTJT0tR5hz2DPH50mXGtpcedtts+0Vo7TOpbidN1ckl1hiENVC+sMro2uIcMtPLlzViqMaF0RZ9F0ElPaInmWY709TM7flmPe53+XJSdYt3W5NRHa3RmmJunnm05Z5Jn7z3PdRRlznHiSTjiVUPk0acst40dcprtZ7dXTMuDmNkqaZkjg3o2HALgeHE8F6AIBBBGQVrbFYrVYKaSnstvpaCCR/SOjp4wxrnYAyQO3ACsy40lx527Ftt9Fa6RtLbaSno6ZpJbFBGI2AnicAcFV/lP/wWS/1yH5yraUX2j6Qh1xpp1nqauakjdKyXpYmtc7LezB4dqmN1d1cpuabPSf71rP8A1OH/AA2rarrWukbQW2ko2PL208LIg4jBIa0DP5l2VFEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQRjaBpCLWVphoJ7jXUDI5elL6R+6543SC0944rPojSVq0ZZW2yyxObFvF8kkh3nyvP2Tj38PQFIEV3daTU3sREUUREQEREBERAREQEREBERBrNR2K26jtM1tvNLHVUcuMsf2EciCOII7wq1k2E2WRop3X3URtYIIoTWZjAzywRy9WfFW6isys8JcZfLX2Cy2/T9qgttnpWUtHCMMjZ48SSeZJ7ytgiKKIiIIrr3Q1t1tFbo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IiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIhOBxWFzi70IMpcB2hN9veFgRBn3294Tfb3hYEQZ99veE3294WBEGffb3hN9veFgRBn3294Tfb3hYEQZ99veE3294WBEGffb3hN9veFgRBn3294Tfb3hYEQZ99veE3294WBEGffb3hN9veFgRBn3294Tfb3hYEQZ99veE3294WBEGffb3hN9veFgRBn3294Tfb3hYEQZt9veF93m94WBEGffb3hN9veFgRBn3294Tfb3hYEQZ99veE3294WBEGffb3hN9veFgRBn3294QOB5ELAiDsIsbH9hWRAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREHCU8AFiWSXsWNAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBZ2HLQsCzR/ACDkiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIMcvYsayS9ixoCIiAiIgIq52q7TPeFX2um9yev9ea5291jotzDgOW6c81YrHbzGu7wCrZZNpuXh9RVtfdqHuVtQotH+5HS9Zkgj631nd3ekGc7m7xx6eKk2utY2vRdl90bu9+Hu3IYYxmSZ+M4aPnJ4BO2ndEjRUdD5QEAdHPXaVuVPbJHbraoSB2fQC0A+gFXFYrvRX20UtztU7Z6OpZvxvHb3gjsIPAhW42eSZS+HfRVTrLbTbLHfZbNaLZVXu4QuLJBA7dY145tBwS4jtwMBdrQW161apvIs9XRVNouzsiOGoILZCBktB4EO8CBlOy62ndN6WYi1GqtRW7S1knut4mMVLFgeaMue48mtHaSqkHlAxEGpGk7kbWHbpqelHD/wAu7/5kmNvguUnleSLTaR1LbdWWSG62aYyU0hLSHDdfG4c2uHYQtZqvaHpfSznx3W6wiqZzpofrsue4tby9eFNXwu55SxFCdmu0Gk1666vt9FPTU9E9jGuncC6TeBOcDly7yu9tJ1Z7ytKzXnqXXejlji6HpejzvOxnODy9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",
"media_type": "image/jpeg"
}
}
]
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "446ad2eb-6097-4cd8-9753-75312a0cfa38",
"tool_use_result": {
"type": "image",
"file": {
"base64": "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ksFX7rsh6PoQPrZdjGcqBVU76mplnlxvyvL3Y7ycrX4fOvLZ1N61PPz76/Yz17MSIi+o5iIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIGB3BAAOQwiKaBERUEIB5gFEQEREBERAXzA7h7F9RTWx83R9qPYvqImtAiIqCIiAiIgIiICIiAiIgIiICKoffhffj390z6E9+F9+Pf3TPoXw/z/wBP8X7fy7fQyW8iqH34X349/dM+hPfhffj390z6E/P/AE/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/wDT/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/0/wAX7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/T/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/wBP8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P8A0/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/9P8AF+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/0/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/8AT/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/ANP8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/T/ABft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/9P8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/AE/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/wDT/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/0/wAX7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/T/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/wBP8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P8A0/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/9P8AF+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/0/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/8AT/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/ANP8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/T/ABft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/9P8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/AE/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/wDT/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/0/wAX7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/T/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/wBP8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P8A0/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/9P8AF+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/0/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/8AT/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/ANP8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/T/ABft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/9P8X7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/AE/xft/J9DJbyKoffhffj390z6E9+F9+Pf3TPoT8/wDT/F+38n0MlvIqh9+F9+Pf3TPoT34X349/dM+hPz/0/wAX7fyfQyW8iqH34X349/dM+hPfhffj390z6E/P/T/F+38n0MlvIqhGsL6eVdn0RM+hfffffvjh+RZ/pT8/9P8AF+38n0Mluoqi999++OH5Fn+lPfffvjh+RZ/pT8/9P8X7fyfQyW6iqL333744fkWf6U999++OH5Fn+lPz/wBP8X7fyfQyW6iqL333744fkWf6U999++OH5Fn+lPz/ANP8X7fyfQyW6iqL333744fkWf6U999++OH5Fn+lPz/0/wAX7fyfQyW6iqL333744fkWf6U999++OH5Fn+lPz/0/xft/J9DJbqKovfffvjh+RZ/pT333744fkWf6U/P/AE/xft/J9DJbqKovfffvjh+RZ/pT333744fkWf6U/P8A0/xft/J9DJbqKovfffvjh+RZ/pXw6wvoGTWkDxhZ9Cfn/p/i/b+T6GS3kVQ+/C+/Hv7pn0J78L78e/umfQn5/wCn+L9v5PoZNX09D8Wl+UTp6H4tL8ouii/E/VyevTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTvdPQ/FpflE6eh+LS/KLoon1cjTviahJAFLMSe6RXZYtm+ltI6Yg1RtVMtMybjTWhryZJTzAcBxJI5tGAPsio55OenaK5auq77e90WnT1Oa6XfGWl4zuZ9G653paFC9omsK/aFq6qu1e97abJZSwE8IIc+a0eJ5k9pT6mV4NJ/cdvdTRE0ugdL2exUTeDHOpxJMR3nGGj8/pWoO3naTn90qYf8A+vi+hV6xrWNw0ADwXJX6fybWB9XnaT986b/l8X0J9XnaT986b/l8X0Kv0T6cNrA+rztJ++dN/wAvi+hPq87SfvnTf8vi+hV+ifThtYH1edpP3zpv+XxfQn1edpP3zpv+XxfQq/RPpw2sD6vO0n7503/L4voT6vO0n7503/L4voVfon04bWB9XnaT986b/l8X0J9XnaT986b/AJfF9Cr9E+nDawPq87SfvnTf8vi+hPq87SfvnTf8vi+hV+ifThtYH1edpP3zpv8Al8X0J9XnaT986b/l8X0Kv0T6cNrA+rztJ++dN/y+L6F3qDygtWxkR6ht9nvVIeD4qmkDMjwLeA9YKrFDxGDxCfTNr6tlk2dbYKeY6Yp/e3qxjDIbe527FNjmQBwI8W4I7Qqzqtn+o6aqmgk0henPieWOMbC5pIOOBHAjxULhnqbTX09xtc8lNVU7xJHLGcOjcORC9H2/yo4WUFM2vsE0tY2JomfHKGtc/A3iB2AnPBTvyx4NbeakRFzUREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERBa2i6t1B5Pu0WWHhJUVdJSucOe47dBH/mKq2hA6DPaSVZGnf4u+u/wrQ/OxVxRf7s30n51vp+UrOiIuyCIiAiIgIiICIiAiIgIiICIiAiIg4yDeY4HtC1C3B5H0LTLl1FjvIiLmoiIgIiICIuUbHyyNjjY573HDWtGST3AIOKKwrDsn1Bco2y1nQ22JwyBOS6TH8wcvWQt5NsTqRETDfIHSdzqdwB9e8V5MvXdDG6uT1Y+i6+U3MVQopdqXZ7qCwMdNPSiqpW8TPSkyNb6RjI9iiK9HT6uHUm8Ltwz6eXTus5oREW2BERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARF37Haay93OGgt0XSVEp4Z4Bo7XOPYApbrmtY43KzHHzXQRXJVbNLNRW6OmknqJriRl84dgNOOxvdnv4qsb9p+42ST/AGynkFO55ZHUBp6OQjjwPfjsXPp9bHqWzF7fVfh3X9Lhj1OpOK1KIi6vAIiICIiA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MYaxo7AtciZ+r6uePblf/f3+SYyN5X31lbqCC5y0nmxBv1npPhFucccf5LoXW4zXC4T1T3OYZXZ3Q44aOwLpIpn6nq5yy3zd/wCSYyNxcr118W50lPiekaGuk389IAQeWOHL862FdqO2V9S6oq7CyWZ3AuNQ7s5cgoui6T1vWm+fP7T2OyM1bLFNVyyU8Ap4XOy2IO3gwd2e1YUReW3d3VERFFfDyPoWmW5PI+haZcuosd5ERc1EREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQWZp3+Lvrv8ACtD87FXFF/uzfSfnVmaWhfN5PGv+jGejuNFK7waCzJVZ0R/2cDuJW+n5Ss6Ii7IIiICIiAiIgIiICIiAiIgIiICIiD4eR9C0y3LjhpJ7AtOuXUWO6i3XvWvf3srfyaX/AEp71r397K38ml/0rmrSot171r397K38ml/0p71r397K38ml/wBKDSotxLpq8RRuklt9WyNoy5z6eRoA7yS3AXGn09damISU1FUzRngHxQve0+sNwg1KLbT6dutPE6WooamKJvN8kD2NHpJbhfYtN3eaNskNvqpI3DLXsgkc0jwIbgoNQi701qq4ZXRzR9FI04cx4LXA+IIyF2YdOXaeJssFBVSxu+C+OCRzT6CG4KDUItm6xXFkzoX0srZmt33RmNwcG95GMgePJYorXVSyNjiYJJHHDWsy4uPcABkoOii2NTZq6lkDKqB8DyMhsrHMJHfggLLT6dutTEJKehqZozwD4oXvafWG4QalFsnWS4MlkidTStljbvyMMbg5je9wxkDiOJ71jhtVXNK2OGPpZHHDWRgucfQAMlB0UWwqLPW00nR1ML4JMZ3ZWuYcd+CAVmg07dqiJssFDUyxO5Pjgkc0+ghuEGpRbSOwXOWeSCOknfPH8ONsTy9npaBketfanT9zpY+kqqOeCPON+WF7G59JACDVItrPYLnTwiaoo54ojj65JE9rePLiRhYp7RWQODZ4jE4gODZGlpIPI4I5eKDXotvBpy7TxNlgoKqWJ3J8cEjmn0ENwVwZYbk+eSFlJM6aMZfG2J5cz0txketBq0Xb9z5u+P8AGWV1orGxRyOicI5D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ZPrTu8napDVfXtmm1aq1ZFb6qu07eIQyt6uzedBIMccerIzwOXDKyai2t1GqYIrPswpK+e8VL2g1clPux0zcjJOcjwOeAGeZV3EAggjIXCKGOIHo2MZn7VoCvdPeHbfasNrhqKe2UkNbP1iqjia2WbGOkeAN52OzJyV2URYaEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQFxYxsYIY1rQTngMLkiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIutc66ntluqa6tkEVLTRullefsWtGSVT9q11tD1lFLctH2C2U9ma8thfcJDv1AHPGCAPmB4ZOFZNpbpdKKvtm20GXUdxr7Hf7cbTqSgGZqYuy2Rv2zD3cR7QQSuhrjaNcafVTdKaItTLtfQzfndK/dhpxjPnHvwQTkgDIHMq9t3pO6a2tBFS1VtD1roqppZNoVionWeeQRmutrieiJ7wSfYcZwcKZ7U9VVOndndXf7E+mllaIXQvkaXxua97RnAIzwPenbTuibIqVt+tNpep7JSXDTGm7fFSmFmZ62TddUPAG+Y2bwwwnOMnl2rBY9s94ukMllh0w+bWjZnQ9Ua4shaG/Ce9x4tAPAj86dlO+LxRUdW7R9c6Lr6KTaBYre2z1UvRmooX5MX/mIOBk4OM4OFMts+rrhpHQwu9j6s6odURRtM7C9ha7PHAI8E7ad0T9FTI1ftOvtuiuemdMUENudG18fXZPr04wMuDN4boJzjwwurYtst51FQttlk0y6fVwe9s0Dn7lPC1vAyOceI48N09vanZTvi8EVJN2kax0nf7bSbRbLQw2+4SdFHV0T+DDkDJ4kHGRkcDjiFKNuWsbnorSlJcbKKY1Etaynd1iMvbuljyeAI45aE7bvR3TW1iosVLIZaWGR2N5zGuOO8hV1sm1pddVX3V1JdBSiG11Yhp+hjLTul0g84knJ8wd3appdrKRUdbdqWqq7VOpLBa7LBdLjTVToqNrAYY4omuIc+Z5cf5IGMZJWRu0nWOlNS2yg2h2ahiobjII4qqicSGEkDvIOMjI4HHFXsqd8WNtC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WGzUtkour0bTxO897jlzz3lbJLeSThFKfSUk9bDU3y5zXAwneZGW7rAfQutrCWSp1PYaCkkeJWydLIGOIw3IPHHZ5pU0WLq0HWus9EzrG7udJu+du92e5NmmVanUlip77Rthnc6OSM70crObD9C2yKKiEekKmoxHeL1VVlK3lD8EHuyc8Vt9L2X3Ct76QVBnaZDICW7uMgcPzLcIrtNIhU6Plir5qmy3Sa3ic5kjaMj1cfH1LjFooxXShrvdCSaeGTpJnzAudKewDjw/OpiibpqNZqKzw3y2Oo53uYN4Pa9vNrh247ea61ms9ZRW+qpqy5SVnSM3Iy9uOjGCO/jz/Mt4ibNNNpOzOsVq6m+dsx33P3g3d547MnuWK42J9XqeguoqGtbTM3TGWZLufbnhzW+RNmmr1BZKW90ghqg4OYcxyM4OYfBaJ+krhUsFPX3+qnohjMYbguHcTlTFE2adajooKKhZSUjBHCxu60BazSVjfYaKeB87ZzJKZMtZu44AY5nuW8RTa6aQWWYaodduvzdEY9zq32PLHfy7eXNL7ZZrnX0FRFXzUzaZ285jOT+IPfz4Y7ea3aK7TTUamtMt5twpoaySkcHh++ztx2HBC2dNGYaeKNz3SFjQ0vdzdgcysiKKIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICLhNLHBC+WZ7Y4o2lz3vOA0DiST2BYbfcKO40oqbfV09VTEkCWGQPaSOfEcEHZRdO23Sgukb5LbW01ZHG7ce6CVsga7ngkHgV3EBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBF06y6UFFVU9NWVtLBUVBxDFLK1rpTnGGgnJ5jklyulBa2xuuVdS0jZHbjDPK2MOd3DJ4lB3EREBERAREQEREBERAREQEREBERARF07fdKC4vnbQVtNVOgduSiGVrzGe52DwPA80HcREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREFfbc9Syaa2fVjqOR7LjWkUdKY3YeHP5lvbkNzjxwo95P94ucMl+0lqWeaW72uYSgzSukcY3gZ84kkgHHqcF1dVn37bebNY2gyWzT0fXaoc2mXgQD6+jH4y+b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BxcXHx7ean90ttHdrfNQ3KmiqqSZu7JFK3ea4ehRCy7JtF2e5tr6Kxw9ZY7ejMr3SBh72tcSAUmU1qll3uIV5KJB0feByPuhnHd9bavvk4/uxr78JD9KRWnprS1m011z3DoWUgq5OlmDHOIc7jxwTw5nksWltI2fS89yms0EkT7hL01QXzOfvO48RvE4+EeSXKXf7kxs0hVBq/Tetb3d9N6ys1FR1tvmMccNwe1/TDJG8wkDB5HA7CCoJqKgtWitqml2bOK3o56+oEdbb4JzLFuFwHnDJxkF3A8sZGFc+rdAaZ1ZM2a+2qGoqGjdEzSWSY7t5pBPrTSez/TGlJzPY7TDBUkbpncTJJjuDnEkepJlIXG1KQiIsNozWaHsVZqmK/z0m9XMwS3eIike34Ej2cnPaMgOPLPoxJkRNmhERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBdC9We3XyhfR3eigrKV/OOZgcM947j4hd9EEGtOyfRFqr2VtHp+lbUMdvMLy6QNPg1xI/MpyBgcERW23ykkngREUUREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEJwMlF8f8AAd6EGmsWqrDf55YbJd6GvliaHSMp5mvLQTjJA8Vul412Q3CfSmo7LqOR+LVWVstqqT2Ny1hBP4wd/ZK9lZ4LeePbWcMu6Nbfb7arBTMqL3cKWgge/o2yVEgYHOwTgE9uAV2rdXUtzoYay31EVTSTND45YnbzXt7wRzC82eURcJ9S6rqrXRPzRacoHVdS4cR0ji3h6fOYPWe5XPsZ/gu0z/Umf5pcdTaTLd0miKs9Q7ZtO2u7TW2hguN5q4CWyi3w9I1hHPziQDjjyW80JtEsGtDLFap5I62Eb0lJUM6OVo78doz2hZ7b5a7p4TBFH9a6vs+jbWK6+VJiY925FGxu9JK7ua3t+ZQqk236fNZDDdbfebTDO7EdRW0u7GfHIJwEmNvguUi1UVe7WtXGy6fqKWC0XW4suFDOBVUMYfHACwgOe7PAcc5HYFC/Jx1bL7gWzT8lovEu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2iJbsk0Kpo9M3keUTNqA0EnuM639EKrebu7+40Yxne5juVsokuizartpuib1U6mt2r9Ey08d+o2dFLDMd1lTH3E8s4JHHmO0YC0V7i2o66ofcKus9Bp23T4ZWVXTiRz29oaAScHu/OruRWZJ2qo2saLq5Nj8OmtMUktbLTOgZGzeaHPDTxcS4gZ7T6VJ6vSNNqLZvR6fvkRYepxMJ4F0ErWABw8QfbxHapgindV7YrTYvBquyUNTpzVVBIaegJbQ3APa5ksYOA3gd7hzGRy4distES3d2SamhERRRERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREGo1hcJ7RpO9XGk3OsUlFNPHvjLd5rC4ZHaMhVnsJ2o3DWtdcrdfhSMrIo2zwdXjLA5mcOGC45IJHtVg7SP4PdT/gyp/wAJy82acDtKWHZ9rqmaRBHPNb7hujmwyvwT/ZLvxQumMllc8rZXrVUdtx2t3TSGoYLTp1tE+WOn6aqdURGTBd8Bow4Y4An1hXPV19PSW2avmlaKSKIzOkB4bgGc+xeRdS00152e6l1zcWYqLzdo4qYH7CFpcTjw4Nb/AGE6clvJnbJw9dWqd9VbKSeXG/LCx7sDAyWgn512lDNRaoh0ds1beZ2CR0FJEIoycdJI5oDW+jJ4+GVANOaJ1hrSzwX7UetLpbqisZ01PS0PmMhYeLSQCOzjj0cVmY+7W/ZeSKndneqb/ZNe1OhNaVYr5zH0tBXkYdK3GcO78gHxBaRx4LFtDvt9vu1Gh0JZ7o+x0joBUT1cX7bLwLt1h7OAxgcznuTt50d3C50VH3rS+udCVNDc9J3q76lp+lDaq3VjukLm88gk8uBGRggkc1LNtGsrhpLQja+1w9HX1UrIGPkAIpy4ElxHIkYx3ZTt+Du+ViIqU+prqmSwtulHr+8zX10InYOl/wBne4je3QM8jyz+bsW2YNVap2NXKG+0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+kNNW7Sdhp7RaI3MpYcnLzlz3E5LnHtJKZWaMZdqp8mT4Wtfwof+pXgqop9k9XadYVF201qistlDV1Lamqomx7wkw/eLQcjgfOHEZAKtdTOy3cXGWTVERFloREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBEXxzg30oPqLH0h7gnSHuCDIix9Ie4J0h7ggyIsfSHuCdIe4IMiLH0h7gnSHuCDItdqOhqblY62joK6S31c8RZFVRjLonHk4Lu9Ie4L50h7gggez3ZtFpe7Vd6ul1qb3falvRuq6kfAZ2hoyeeOeeQwMKwVi6Q9wX3pD3BW3flJNeGRFj6Q9wTpD3BRWRFj6Q9wTpD3BBkRY+kPcE6Q9wQZEWPpD3BOkPcEGRFj6Q9wTpD3BBkRY+kPcE6Q9wQZEWPpD3BOkPcEGq1fa6682CpobVdJbVWSbu5VxDLo8OBOB4gY9aj+zfZ5TaOkrq2evqLrea4jrFdUfCLRxDQMnhnx48PQpr0h7gnSHuCu7rSam9siLH0h7gnSHuCisiLH0h7gnSHuCDIix9Ie4J0h7ggyIsfSHuCdIe4IMiLH0h7guTXg8+BQckREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREHx53W5WFZJexYkBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERBljdkYK5rFH8NZUBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREGOXsWNZJexY0BERAREQEX3BPIFfEBF9we4r4gIvuDjkcL4gInoRARF9wcZwcIPiIiAiL76EHxF9we4+xMHuPsQfEROXNARF9AJ5AoPiIvuD3H2IPiL6QRzBC+ICIvvZnsQfEREBF9wRzBXxAREQEREHOP4YWVYo/hhZUBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREGOXsWNZJe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fIiLLQiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAql8om1zjTlv1PbQRcbBVMqWuHPoyQHerO6fRlW0utcqGnuVvqaKtiEtNURuikYeTmkYIVl1dpZuaV5tMtL9peyVkljDZJ52xV1NGXAbxA4szyzguHpUbsG1TUFPZ6Szu0Le579TwtgI6Msic5o3Q4kjgOHFW7pux0OnLPBa7TE6Kigz0cbnl+6CckZPHGStnhXunhO2+VE+T1SXan1nrl9+pnw10ksZmIjLY3Sb8hduHGCAT2ZUY2i6rl1Pr80eo7VfPenap3tbR0dK9xq5GnG884AwePLkOXEkr07hMen2q9/O9J2caVBT7arRTQRwU+ltSxQxtDGMZbyGtaOAAHYF2drdwdqXYdWV9DR1jDVshkZTyQnpWjpW8C0cc8FauPT7V9xwU3PMi6viqC0XtcisOlbTaZtLailnpKdkLnMpTuuIGOGQvrKLUW1TaDY7vXWSosmnLNIJWCr4SSuBDiAO3Ja0cOAA55V949PtX1XunmRO2+LVXbbNHXW9ts9+0wGvvllm6aOInBlbkHAJ7QRy7QStDdNrGobjaJrZatEXqLUMrDE4SRHooXEYLgcDPbjOPFXemFJl8xbj8INsb0fNovRUFBXOa64TSOqandOQHux5ue3AAGfSoftoZW6w1jp3Q9HFUigfKKu4TtjduBozgb2MZDQ44zzLVdKY4pMudnbxpjpoY6aniggY2OGNoYxjRgNaBgAepZERZacZHtjjc95w1oJJ7gqW2U0dXq3aVqDXN0pp4YIXGitsc8bmFrMY3gCB9jj1vKutMKy6SzYqX17Yr9pLaM3XelaB9zp6mIQ3KhiPnkYA3gO3Ia08M4LePAq6ESXRZtQer9Sah2p21mmdO6audupamRnXqy4R9GyNrXA4HfxGe84wBxV3WK2w2ay0NspSTBRwMgYXcyGtAyfHgu9hFbd8JJrkREWWhERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREEa2lXarsWhb1c7a9jKylpzJE57d4A5HMdqx7L7zWag0DZrrc3skramEvlcxgYCd4jgBy5Lp7aP4LdSf1Q/OFV+zU7SLzoK1Q6VltlltVLEYo6irbvyVTg4kuA3XANyccuztW5N4sW6yehUVTbONeX46xqtG67hpo7zHH0tPUQea2cYzjHI8OIIxyOQMLU7Std6ssm1ajsmnGitjqaMdFQOjZh8zt4BxdjewMZPEDgp2Xel7pra5btVmgtdXWNglqDTwvlEMQy+TdBO63xOMLSbPNUP1fpmK7S2yotjnvezoJzk+acbwOBkH0d6jdhdry16V1PXaxr6OSqZSPnourNZiFzY3E5G6M8cc8rPsP1JcdRbOae7agqxPVGWYPmcxsY3WuOMhoAGAmuDfKwkVJ27Vmudot0uL9Dz0Fm0/SSmFlbUw9I+dw7gQR44xwBHHK2WmNcajsmuKbSW0OOjdUVzS6guFIN1kx+1LfURyGDjhxynbTujuS6vvDdvEGlxNF7jvojOY+iG9vbhOd7nzCs5UjUfxqaX8GH/Dcu5ftcXzVutmaZ2cVTIIKN29cbv0TZWMHItaHAg9vpPLgCVbjvWkmWtriRVRt11TetF6csc9nr3id9W2KeR0UbnTNDCSCC3AJx2ALpXAbYq+jfdqKezW1mDLHagwSS7uMhrnOaQXesce5SY8bW5c6XIiofS20nW20C3st2l7dQ0N0pm/8AaFxqcmGPiQ0MZxO8cHgc4wfSu1Q6x1tozXFosmvpqC40F1eIoaymYGFjicDkB2loII7eBV7Kd8Xcihe1TXEOhtPNqhD1q41MnQUdNkjpJO8444Hh4DtUNZT7Z5KD3V90bIyUt6QWkwDOOe6XY+F2Y3vWpMd8ly0uZFBtlGvWa3s9Q6pphR3ehk6GspsnzXdjhnjg4PPkQQolLrDWGuNXXe0aDmobXbrS8wz11VF0jnvyW4DSCBxa7HDkMk9idt3o7ouZFUFh1drDTmvaLTOumU1wp7gB1W5UcRaA7kA4AYxn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AGBg49QUvRW5W+UmMiutb7KbXqfUAvcNwuNquhaI5J6KXdMjQMcc8jjhkKS6g0lbNQ6XbYrxG+ppGsY0Pc7Egc0YDw77bxUgRTdXUVFb9hdnhmibcbzerjbonBzKGeoxFw7CBzHsUs2a6FptCW+upKOsmqo6qoNR9dY1u5wA3Rjs4KYorcrSYyIbs20JT6GgukdNXT1YrqjrDjKxrdw4xgY7Fv8AUlhtupLTNbb1SsqaOXiWO4EEcnAjiCO8LZopu72anhTzdhdBG11JDqbUMdoceNC2oG4R3Zxy9Ss7Tlit2nLRBbLPTMpqOEYaxvMntJPMk9pK2aJcrfJMZPCqr3sVs9XfJrnZ7ndLJLO/fmjoZd1jieeB2ZJJxy7l2KDY7ZLZqSyXi3VNXFPbnOkkMhErqt5+yke7jn0KzUV7qnbBERZaEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREBB5HKAiISBzICAiIgIiICImUBERAREQEREBEyM47UQEREBERAREQETPFEBERARai0als94uVwt9sr4amst7tyqiZnMRyRg8O8H2LboCLT++aze+X3v9fh92ej6bqvHf3MZzyxyW4QEREBEQ8OaAiA55IgIgIPIhEBERAREQERcJ5WQQySyuDY42l7nHsAGSUHNFqtOahtWpbea6xVsVbSB5jMsecbwxkcfSFtUBEyO9EBERAREQEREBEyiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgju0j+D3U/4Mqf8JyoHyaLzPZNSttVcS2jv1MailJPAyRuc32kNcPUFfu0j+D3U/4Mqf8ACcvPEVtqGbDdK6stYxcdPVssmRz6IzEnPgHY9RK64fp055fq29VLyV5Rd5qNRauuMdIS622CNtM9wPDpZD53ryAP7J7l6JvGs6Ok2cS6rhcDTmjFRECebnDzWeneIC886isUtq8nsXOvyblfrnHWzPd8ItIeWfmy7+0nTmrunUu5p6EqdXWTStjsXu/W9UFZFHHC4xPeHODG8CWggcxzwpcqr2t6e98OxnETN6poaaKt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vKZPeUGdFgye8pk95QZ1rr7Y7XfqaOnvNBT1sEb+kaydgcA7BGfYSu1k95TJ7yg+0VJT0NLHTUUEVPTxDdZFEwNa0dwA4BZlgye8pk95QZ0WDJ7ymT3lBnRYMnvKZPeUGdFgye8pk95QZ0WDJ7ymT3lBnRYMnvKZPeUGC9Wi33uhNHd6OGspS4OMUzd5uRyOFkttvo7XRx0ltpYKSlj+BFCwMa30ALnk95TJ7ygzosGT3lMnvKDOiwZPeUye8oM6LBk95TJ7ygzosGT3lA4jtKDOi4sfvcDzXJAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREHGQ4b6VhWSXsWNAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREH1Z2nIBXXWaP4AQckREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERBjl7FjWSXsWNAREQEREBFHNVa20/pSopYb/cOqS1QJhb0Mj94AgH4LTjiRzUjBDgCORGQmjYijdfrnTtBqiDTtXcOjvEzmMjp+hkOS/4PnBu7x9K3lwrqW3UUtXX1EVNSxN3nyyuDWtHiSrpNuwihVLtU0RVVgpotRUnSk7oLw9jCfBxAH51NGuD2hzSHNIyCDkEJZZ5JZfD6ijuptb6b0xK2K+3empZ3N3hCcvkx37rQThZtNatsOp2yGw3SmrXRjL2Mdh7R3lpwQPUmr5Nzw3iLhPNFTwyTTyMihjaXPe9wa1oHMknkFC/qr6H631f3x0m/nG9uv3Px93d/OklvgtkTdFjp54qmCOemljmhkaHMkjcHNcD2gjmF9nmip4XS1EjIomjLnvcGtHpJ4KK5otTYtSWe/zVkdluEFc6kc1sxhO81pOcDe5HkeS5alv9s0zan3K91PVqJj2sdJuOfguOAMNBKuvY22iKvfqzaC+/v/8AKT/6FstO7StJ6ju0Vss116zWyhzmR9XlZkAZPFzQOSdt+E7p8pgi02pNU2PTMLJb9c6aia/4DZHec/8AmtGSfUF1dMa303qiV0Viu9PVTtG8YuLJMd+64A4TV8m5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BdtEUUREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEyo/r/UTNKaPud5czpHU0WY2fbPJw0HwyRnwyqo0TswfrSwQai1zebvUXG4N6xCyGoMbadh4twMEA444HAcsLUnG6zbzqL3TIzjPFVTs1ptV6W1jcNMXU19106IumobnO0no+R6Mv8AWRjvbw5quqfTlx1Xts1taqK7TWuifJv1skP7ZJGC3DG92Tz8O/krMf3S5fs9Nbw7wvq8+7WNnMWldl9LPZKmqnnstca1s0xG+GyEB3IDk4MPqKtCr1lCNlcmrIyA02/rLQOyQtwG/j8FO34Xu+UyBB5FMhUpsbo6vSuxe6agZB090rIpriGOz52607gI544E+taPZnoq27SrCb9qjUNyrrxPK/eihq9zq2CQAG9nDBHZghXtTueh1X8+u6qLbBTaPFHTmklpOsGpMjt8HdJxjljgtZs60vqi0uv2m9TTvuOmJI3R0VXJODLungW895oLT28iOHNVjUbONPRbdaPSzIakWiSh6ZzOsO397dcfhZz2DgkxnOy5Xh6hB4ZTKhmpbNebToCOy7Puiiq4mMpoZKmU5hiHNwcQcu7Bnvz2KB/UfsUdua6/apuPviezL6x1eG7sp48GnjgHxyfBSSfK21d6pTYrUTS7U9pDJZpZGMqmhjXyFwb9cl5Anh6ls/J41LdL5p650N6qTWVFqqurtqHHedIwjhk9uCDg92Fptif8Ku0z+tN/xZVdalib3ZV45GcZ4pkLzTa7BXam25a5tlLd6m10T371Y+mOJZIxuYY132OSeJXPaZo2bZPBQ6p0febk3dqWx1ENTL0gfkEjOAN4HGCD38CE7J42d/vp6TyEVL0myM6stkN41fqK7zXqrjbOOryhkNNvDIYxmDwGcdizeT3errIdR6bvVXJWPstV0MM0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LteVP+9mw/hIfoOXeq9g1imp6bcuVy6/HUNnlrZniWWUDkw73ANzx4cVL9pehafXduoaSqrZ6NtLUCoDoWNcXHBGDn0pMpNGrdpgPghUXsGqYWbSNo1O+VjZ5K0vZGT5zmtllyQO3GR7VevILzVs60bbtX622gtrn1VPVUly36arpZTHLCTJNnBHYcDIPcpj4q5eYmflPXKnZoOG0hwfcLhVxCGEcXENOSQPTgekrWeUJRyW7YfZqKb9sppaWF3pbE4H5lJdM7HLXbNRx3u7XO5XythcHQGueHCMjkfEjszwHcpJtM0XBrvTjbRVVk1HG2ds/SQta52Whwxh3D7JWZSahq3dV/5QdDUVWx22z07HPZSSU80oHY0sLcnwy4LhpHZJoPUmnKC60TrlJHURNc7duD/NdjzmkdhByMK5GW+A2ptvqGNqKboRA9sjQQ9uMEEcuKq+o2IWuGrlk09fL3ZIJiTJT0tR5hz2DPH50mXGtpcedtts+0Vo7TOpbidN1ckl1hiENVC+sMro2uIcMtPLlzViqMaF0RZ9F0ElPaInmWY709TM7flmPe53+XJSdYt3W5NRHa3RmmJunnm05Z5Jn7z3PdRRlznHiSTjiVUPk0acst40dcprtZ7dXTMuDmNkqaZkjg3o2HALgeHE8F6AIBBBGQVrbFYrVYKaSnstvpaCCR/SOjp4wxrnYAyQO3ACsy40lx527Ftt9Fa6RtLbaSno6ZpJbFBGI2AnicAcFV/lP/wWS/1yH5yraUX2j6Qh1xpp1nqauakjdKyXpYmtc7LezB4dqmN1d1cpuabPSf71rP8A1OH/AA2rarrWukbQW2ko2PL208LIg4jBIa0DP5l2VFEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQRjaBpCLWVphoJ7jXUDI5elL6R+6543SC0944rPojSVq0ZZW2yyxObFvF8kkh3nyvP2Tj38PQFIEV3daTU3sREUUREQEREBERAREQEREBERBrNR2K26jtM1tvNLHVUcuMsf2EciCOII7wq1k2E2WRop3X3URtYIIoTWZjAzywRy9WfFW6isys8JcZfLX2Cy2/T9qgttnpWUtHCMMjZ48SSeZJ7ytgiKKIiIIrr3Q1t1tFbo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IiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIhOBxWFzi70IMpcB2hN9veFgRBn3294Tfb3hYEQZ99veE3294WBEGffb3hN9veFgRBn3294Tfb3hYEQZ99veE3294WBEGffb3hN9veFgRBn3294Tfb3hYEQZ99veE3294WBEGffb3hN9veFgRBn3294Tfb3hYEQZ99veE3294WBEGffb3hN9veFgRBn3294Tfb3hYEQZt9veF93m94WBEGffb3hN9veFgRBn3294Tfb3hYEQZ99veE3294WBEGffb3hN9veFgRBn3294QOB5ELAiDsIsbH9hWRAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREHCU8AFiWSXsWNAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBZ2HLQsCzR/ACDkiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIMcvYsayS9ixoCIiAiIgIq52q7TPeFX2um9yev9ea5291jotzDgOW6c81YrHbzGu7wCrZZNpuXh9RVtfdqHuVtQotH+5HS9Zkgj631nd3ekGc7m7xx6eKk2utY2vRdl90bu9+Hu3IYYxmSZ+M4aPnJ4BO2ndEjRUdD5QEAdHPXaVuVPbJHbraoSB2fQC0A+gFXFYrvRX20UtztU7Z6OpZvxvHb3gjsIPAhW42eSZS+HfRVTrLbTbLHfZbNaLZVXu4QuLJBA7dY145tBwS4jtwMBdrQW161apvIs9XRVNouzsiOGoILZCBktB4EO8CBlOy62ndN6WYi1GqtRW7S1knut4mMVLFgeaMue48mtHaSqkHlAxEGpGk7kbWHbpqelHD/wAu7/5kmNvguUnleSLTaR1LbdWWSG62aYyU0hLSHDdfG4c2uHYQtZqvaHpfSznx3W6wiqZzpofrsue4tby9eFNXwu55SxFCdmu0Gk1666vt9FPTU9E9jGuncC6TeBOcDly7yu9tJ1Z7ytKzXnqXXejlji6HpejzvOxnODy9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",
"type": "image/jpeg",
"originalSize": 553747
}
}
}
[2026-02-06T17:22:35.697Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01H45K78hfzasUC3qaagf68p",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Now I can clearly see the issue. The \"Social\" tab in the mobile view is displaying incorrectly:\n\n1. **Emoji/Unicode characters are rendering as raw escape codes** - Instead of displaying actual emoji icons, it shows raw Unicode codes like `U0001F90D64`, `\\uD83D\\uDC41`, `\\u2B07` \n2. **The gallery items are not rendering as a proper grid/card layout** - They appear as plain text instead of visual cards with thumbnails\n3. **Stats numbers appear as raw text** next to broken Unicode escapes\n\nLet me now examine the key files to understand the root cause."
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 1609,
"cache_read_input_tokens": 30735,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1609
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "bb55d20b-8672-40e8-a69a-de3ffb840b4e"
}
[2026-02-06T17:22:40.430Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01H45K78hfzasUC3qaagf68p",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_012E9aHDCj5s6AoHAHtvuPYH",
"name": "TodoWrite",
"input": {
"todos": [
{
"content": "Read and analyze the issue screenshot and understand the problems",
"status": "completed",
"activeForm": "Analyzing the issue screenshot"
},
{
"content": "Read App.vue social tab section to understand the mobile tab rendering",
"status": "in_progress",
"activeForm": "Reading App.vue social tab section"
},
{
"content": "Read CommunityGallery.vue component for rendering issues",
"status": "pending",
"activeForm": "Reading CommunityGallery.vue component"
},
{
"content": "Read community-gallery.ts for mock data and emoji handling",
"status": "pending",
"activeForm": "Reading community-gallery.ts"
},
{
"content": "Identify root cause of emoji/Unicode rendering issues",
"status": "pending",
"activeForm": "Identifying root cause of rendering issues"
},
{
"content": "Fix the rendering issues in the Social tab",
"status": "pending",
"activeForm": "Fixing rendering issues"
},
{
"content": "Run local CI checks and tests",
"status": "pending",
"activeForm": "Running local CI checks"
},
{
"content": "Commit and push fixes",
"status": "pending",
"activeForm": "Committing and pushing fixes"
},
{
"content": "Update PR description and finalize",
"status": "pending",
"activeForm": "Updating PR description"
}
]
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 1609,
"cache_read_input_tokens": 30735,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1609
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "f026fc23-f36e-49f7-8627-8dfb6b6b3c97"
}
[2026-02-06T17:22:40.441Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_012E9aHDCj5s6AoHAHtvuPYH",
"type": "tool_result",
"content": "Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable"
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "29bd73fb-a7d9-420b-922a-4f76baaf3a03",
"tool_use_result": {
"oldTodos": [],
"newTodos": [
{
"content": "Read and analyze the issue screenshot and understand the problems",
"status": "completed",
"activeForm": "Analyzing the issue screenshot"
},
{
"content": "Read App.vue social tab section to understand the mobile tab rendering",
"status": "in_progress",
"activeForm": "Reading App.vue social tab section"
},
{
"content": "Read CommunityGallery.vue component for rendering issues",
"status": "pending",
"activeForm": "Reading CommunityGallery.vue component"
},
{
"content": "Read community-gallery.ts for mock data and emoji handling",
"status": "pending",
"activeForm": "Reading community-gallery.ts"
},
{
"content": "Identify root cause of emoji/Unicode rendering issues",
"status": "pending",
"activeForm": "Identifying root cause of rendering issues"
},
{
"content": "Fix the rendering issues in the Social tab",
"status": "pending",
"activeForm": "Fixing rendering issues"
},
{
"content": "Run local CI checks and tests",
"status": "pending",
"activeForm": "Running local CI checks"
},
{
"content": "Commit and push fixes",
"status": "pending",
"activeForm": "Committing and pushing fixes"
},
{
"content": "Update PR description and finalize",
"status": "pending",
"activeForm": "Updating PR description"
}
]
}
}
[2026-02-06T17:22:43.930Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01NFXfxc41wYPqNQRXtB6Qgk",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01NpM38jXQoGUHUwM7vus3sC",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/App.vue",
"limit": 100,
"offset": 1
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 539,
"cache_read_input_tokens": 32344,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 539
},
"output_tokens": 25,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "65827095-3205-4f65-8565-870d104241a5"
}
[2026-02-06T17:22:43.973Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01NpM38jXQoGUHUwM7vus3sC",
"type": "tool_result",
"content": " 1→<!--\n 2→ App.vue — Root component for isocubic\n 3→ Adaptive layout with desktop (windowed), tablet, and mobile support\n 4→\n 5→ Phase 11, TASK 68: Windowed desktop layout with command bar\n 6→-->\n 7→<script setup lang=\"ts\">\n 8→import { ref, computed, onMounted } from 'vue'\n 9→import { useDeviceType } from './composables/useDeviceType'\n 10→import { useCubeEditor } from './composables/useCubeEditor'\n 11→import { useMetaModeKeyboard, useHoveredComponentId } from './lib/metamode-store'\n 12→import { useAuthStore } from './lib/auth'\n 13→import { useWindowManager } from './composables/useWindowManager'\n 14→import type { WindowDefinition } from './composables/useWindowManager'\n 15→import Gallery from './components/Gallery.vue'\n 16→import { GALLERY_META } from './components/Gallery.vue'\n 17→import ExportPanel from './components/ExportPanel.vue'\n 18→import { EXPORT_PANEL_META } from './components/ExportPanel.vue'\n 19→import CubePreview from './components/CubePreview.vue'\n 20→import { CUBE_PREVIEW_META } from './components/CubePreview.vue'\n 21→import UnifiedEditor from './components/UnifiedEditor.vue'\n 22→import { UNIFIED_EDITOR_META } from './components/UnifiedEditor.vue'\n 23→import ActionHistory from './components/ActionHistory.vue'\n 24→import PromptGenerator from './components/PromptGenerator.vue'\n 25→import { PROMPT_GENERATOR_META } from './components/PromptGenerator.vue'\n 26→import CommunityGallery from './components/CommunityGallery.vue'\n 27→import { COMMUNITY_GALLERY_META } from './components/CommunityGallery.vue'\n 28→import SharePanel from './components/SharePanel.vue'\n 29→import { SHARE_PANEL_META } from './components/SharePanel.vue'\n 30→import NotificationPanel from './components/NotificationPanel.vue'\n 31→import { NOTIFICATION_PANEL_META } from './components/NotificationPanel.vue'\n 32→import MetaModeWindow from './components/MetaModeWindow.vue'\n 33→import ComponentInfo from './components/ComponentInfo.vue'\n 34→import MetaModeIndicator from './components/MetaModeIndicator.vue'\n 35→import DraggableWindow from './components/DraggableWindow.vue'\n 36→import CommandBar from './components/CommandBar.vue'\n 37→import type { CommandItem } from './components/CommandBar.vue'\n 38→import WindowTaskbar from './components/WindowTaskbar.vue'\n 39→import { getAllExtendedCommands } from './lib/command-registry'\n 40→import { calculateLayout } from './lib/window-layout-manager'\n 41→import type { LayoutStrategy } from './lib/window-layout-manager'\n 42→import './App.css'\n 43→\n 44→// Device type detection\n 45→const { isTablet, isDesktop } = useDeviceType()\n 46→\n 47→// Cube editor state\n 48→const { currentCube, updateCube, selectCube, loadCube } = useCubeEditor()\n 49→\n 50→// MetaMode keyboard shortcut (Ctrl+Shift+M)\n 51→useMetaModeKeyboard()\n 52→\n 53→// Track which component the mouse is hovering over for MetaModeWindow\n 54→const hoveredComponentId = useHoveredComponentId()\n 55→\n 56→// Auth store initialization\n 57→const authStore = useAuthStore()\n 58→onMounted(() => {\n 59→ authStore.initialize()\n 60→})\n 61→\n 62→// --- Window Manager (All devices) ---\n 63→const windowDefinitions: WindowDefinition[] = [\n 64→ {\n 65→ id: 'gallery',\n 66→ title: 'Gallery',\n 67→ icon: '\\uD83C\\uDFA8',\n 68→ defaultX: 20,\n 69→ defaultY: 100,\n 70→ defaultWidth: 380,\n 71→ defaultHeight: 500,\n 72→ minWidth: 280,\n 73→ minHeight: 300,\n 74→ },\n 75→ {\n 76→ id: 'preview',\n 77→ title: 'Preview',\n 78→ icon: '\\uD83D\\uDC41',\n 79→ defaultX: 420,\n 80→ defaultY: 100,\n 81→ defaultWidth: 500,\n 82→ defaultHeight: 400,\n 83→ minWidth: 300,\n 84→ minHeight: 250,\n 85→ },\n 86→ {\n 87→ id: 'editor',\n 88→ title: 'Unified Editor',\n 89→ icon: '\\u270F\\uFE0F',\n 90→ defaultX: 420,\n 91→ defaultY: 520,\n 92→ defaultWidth: 500,\n 93→ defaultHeight: 350,\n 94→ minWidth: 350,\n 95→ minHeight: 250,\n 96→ },\n 97→ {\n 98→ id: 'prompt',\n 99→ title: 'Generate by Description',\n 100→ icon: '\\uD83E\\uDD16',\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "19c12537-8af1-4b1b-aa2a-c2cd70971544",
"tool_use_result": {
"type": "text",
"file": {
"filePath": "/tmp/gh-issue-solver-1770398441546/src/App.vue",
"content": "<!--\n App.vue — Root component for isocubic\n Adaptive layout with desktop (windowed), tablet, and mobile support\n\n Phase 11, TASK 68: Windowed desktop layout with command bar\n-->\n<script setup lang=\"ts\">\nimport { ref, computed, onMounted } from 'vue'\nimport { useDeviceType } from './composables/useDeviceType'\nimport { useCubeEditor } from './composables/useCubeEditor'\nimport { useMetaModeKeyboard, useHoveredComponentId } from './lib/metamode-store'\nimport { useAuthStore } from './lib/auth'\nimport { useWindowManager } from './composables/useWindowManager'\nimport type { WindowDefinition } from './composables/useWindowManager'\nimport Gallery from './components/Gallery.vue'\nimport { GALLERY_META } from './components/Gallery.vue'\nimport ExportPanel from './components/ExportPanel.vue'\nimport { EXPORT_PANEL_META } from './components/ExportPanel.vue'\nimport CubePreview from './components/CubePreview.vue'\nimport { CUBE_PREVIEW_META } from './components/CubePreview.vue'\nimport UnifiedEditor from './components/UnifiedEditor.vue'\nimport { UNIFIED_EDITOR_META } from './components/UnifiedEditor.vue'\nimport ActionHistory from './components/ActionHistory.vue'\nimport PromptGenerator from './components/PromptGenerator.vue'\nimport { PROMPT_GENERATOR_META } from './components/PromptGenerator.vue'\nimport CommunityGallery from './components/CommunityGallery.vue'\nimport { COMMUNITY_GALLERY_META } from './components/CommunityGallery.vue'\nimport SharePanel from './components/SharePanel.vue'\nimport { SHARE_PANEL_META } from './components/SharePanel.vue'\nimport NotificationPanel from './components/NotificationPanel.vue'\nimport { NOTIFICATION_PANEL_META } from './components/NotificationPanel.vue'\nimport MetaModeWindow from './components/MetaModeWindow.vue'\nimport ComponentInfo from './components/ComponentInfo.vue'\nimport MetaModeIndicator from './components/MetaModeIndicator.vue'\nimport DraggableWindow from './components/DraggableWindow.vue'\nimport CommandBar from './components/CommandBar.vue'\nimport type { CommandItem } from './components/CommandBar.vue'\nimport WindowTaskbar from './components/WindowTaskbar.vue'\nimport { getAllExtendedCommands } from './lib/command-registry'\nimport { calculateLayout } from './lib/window-layout-manager'\nimport type { LayoutStrategy } from './lib/window-layout-manager'\nimport './App.css'\n\n// Device type detection\nconst { isTablet, isDesktop } = useDeviceType()\n\n// Cube editor state\nconst { currentCube, updateCube, selectCube, loadCube } = useCubeEditor()\n\n// MetaMode keyboard shortcut (Ctrl+Shift+M)\nuseMetaModeKeyboard()\n\n// Track which component the mouse is hovering over for MetaModeWindow\nconst hoveredComponentId = useHoveredComponentId()\n\n// Auth store initialization\nconst authStore = useAuthStore()\nonMounted(() => {\n authStore.initialize()\n})\n\n// --- Window Manager (All devices) ---\nconst windowDefinitions: WindowDefinition[] = [\n {\n id: 'gallery',\n title: 'Gallery',\n icon: '\\uD83C\\uDFA8',\n defaultX: 20,\n defaultY: 100,\n defaultWidth: 380,\n defaultHeight: 500,\n minWidth: 280,\n minHeight: 300,\n },\n {\n id: 'preview',\n title: 'Preview',\n icon: '\\uD83D\\uDC41',\n defaultX: 420,\n defaultY: 100,\n defaultWidth: 500,\n defaultHeight: 400,\n minWidth: 300,\n minHeight: 250,\n },\n {\n id: 'editor',\n title: 'Unified Editor',\n icon: '\\u270F\\uFE0F',\n defaultX: 420,\n defaultY: 520,\n defaultWidth: 500,\n defaultHeight: 350,\n minWidth: 350,\n minHeight: 250,\n },\n {\n id: 'prompt',\n title: 'Generate by Description',\n icon: '\\uD83E\\uDD16',",
"numLines": 100,
"startLine": 1,
"totalLines": 834
}
}
}
[2026-02-06T17:22:47.581Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01DvKwh7MXKSN1oFczGR59r6",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01CzniKyz7hyMm7uE7FjtW2U",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/App.vue",
"limit": 100,
"offset": 260
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 1621,
"cache_read_input_tokens": 32883,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1621
},
"output_tokens": 25,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "99ac2739-f5c7-4fa7-999d-2e6dbd65d530"
}
[2026-02-06T17:22:47.596Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01CzniKyz7hyMm7uE7FjtW2U",
"type": "tool_result",
"content": " 260→ else if (commandId.startsWith('export:')) {\n 261→ const exportWin = windowManager.getWindow('export')\n 262→ if (commandId === 'export:share') {\n 263→ const shareWin = windowManager.getWindow('share')\n 264→ if (!shareWin?.isOpen) windowManager.openWindow('share')\n 265→ else windowManager.bringToFront('share')\n 266→ } else {\n 267→ if (!exportWin?.isOpen) windowManager.openWindow('export')\n 268→ else windowManager.bringToFront('export')\n 269→ }\n 270→ }\n 271→}\n 272→\n 273→// Mobile tab navigation\n 274→type MobileTab = 'gallery' | 'preview' | 'editor' | 'tools' | 'social'\n 275→\n 276→const activeMobileTab = ref<MobileTab>('gallery')\n 277→\n 278→const mobileTabs: { id: MobileTab; icon: string; label: string }[] = [\n 279→ { id: 'gallery', icon: '🎨', label: 'Gallery' },\n 280→ { id: 'preview', icon: '👁', label: 'Preview' },\n 281→ { id: 'editor', icon: '✏️', label: 'Editor' },\n 282→ { id: 'tools', icon: '🔧', label: 'Tools' },\n 283→ { id: 'social', icon: '🌐', label: 'Social' },\n 284→]\n 285→\n 286→// Touch swipe navigation for mobile\n 287→const touchStartX = ref(0)\n 288→const touchEndX = ref(0)\n 289→const SWIPE_THRESHOLD = 50\n 290→\n 291→function handleTouchStart(e: TouchEvent) {\n 292→ touchStartX.value = e.changedTouches[0].screenX\n 293→}\n 294→\n 295→function handleTouchEnd(e: TouchEvent) {\n 296→ touchEndX.value = e.changedTouches[0].screenX\n 297→ handleSwipe()\n 298→}\n 299→\n 300→function handleSwipe() {\n 301→ const diff = touchStartX.value - touchEndX.value\n 302→ if (Math.abs(diff) < SWIPE_THRESHOLD) return\n 303→\n 304→ const tabIds = mobileTabs.map((t) => t.id)\n 305→ const currentIndex = tabIds.indexOf(activeMobileTab.value)\n 306→\n 307→ if (diff > 0 && currentIndex < tabIds.length - 1) {\n 308→ // Swipe left → next tab\n 309→ activeMobileTab.value = tabIds[currentIndex + 1]\n 310→ } else if (diff < 0 && currentIndex > 0) {\n 311→ // Swipe right → previous tab\n 312→ activeMobileTab.value = tabIds[currentIndex - 1]\n 313→ }\n 314→}\n 315→\n 316→// Component metadata for DevMode\n 317→const APP_META = {\n 318→ id: 'app',\n 319→ name: 'App',\n 320→ version: '3.1.0',\n 321→ summary: 'Root application component with windowed desktop layout and extended command bar.',\n 322→ description:\n 323→ 'App is the root component of isocubic. It provides a windowed desktop layout with draggable, ' +\n 324→ 'resizable, collapsible windows and a TinyLLM command bar, plus adaptive tablet and mobile layouts. ' +\n 325→ 'Integrates all subsystems (Gallery, Editor, Preview, Export, MetaMode) and manages the global ' +\n 326→ 'cube editing state through the useCubeEditor composable.',\n 327→ phase: 11,\n 328→ taskId: 'TASK 68',\n 329→ filePath: 'src/App.vue',\n 330→ history: [\n 331→ {\n 332→ version: '1.0.0',\n 333→ date: '2026-01-29T18:00:00Z',\n 334→ description: 'Initial Vue.js 3.0 stub during TASK 60',\n 335→ taskId: 'TASK 60',\n 336→ type: 'created' as const,\n 337→ },\n 338→ {\n 339→ version: '2.0.0',\n 340→ date: '2026-01-31T18:00:00Z',\n 341→ description: 'Full adaptive layout with all component integrations',\n 342→ taskId: 'TASK 67',\n 343→ type: 'updated' as const,\n 344→ },\n 345→ {\n 346→ version: '3.0.0',\n 347→ date: '2026-02-01T12:00:00Z',\n 348→ description: 'Windowed desktop layout with drag/resize/minimize/close and command bar',\n 349→ taskId: 'TASK 68',\n 350→ type: 'updated' as const,\n 351→ },\n 352→ {\n 353→ version: '3.1.0',\n 354→ date: '2026-02-01T20:00:00Z',\n 355→ description: 'Extended command bar with layout, cube, export, and settings commands',\n 356→ taskId: 'TASK 77',\n 357→ type: 'updated' as const,\n 358→ },\n 359→ ],\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "b5bb4214-4790-4629-a5ad-7dc53661c768",
"tool_use_result": {
"type": "text",
"file": {
"filePath": "/tmp/gh-issue-solver-1770398441546/src/App.vue",
"content": " else if (commandId.startsWith('export:')) {\n const exportWin = windowManager.getWindow('export')\n if (commandId === 'export:share') {\n const shareWin = windowManager.getWindow('share')\n if (!shareWin?.isOpen) windowManager.openWindow('share')\n else windowManager.bringToFront('share')\n } else {\n if (!exportWin?.isOpen) windowManager.openWindow('export')\n else windowManager.bringToFront('export')\n }\n }\n}\n\n// Mobile tab navigation\ntype MobileTab = 'gallery' | 'preview' | 'editor' | 'tools' | 'social'\n\nconst activeMobileTab = ref<MobileTab>('gallery')\n\nconst mobileTabs: { id: MobileTab; icon: string; label: string }[] = [\n { id: 'gallery', icon: '🎨', label: 'Gallery' },\n { id: 'preview', icon: '👁', label: 'Preview' },\n { id: 'editor', icon: '✏️', label: 'Editor' },\n { id: 'tools', icon: '🔧', label: 'Tools' },\n { id: 'social', icon: '🌐', label: 'Social' },\n]\n\n// Touch swipe navigation for mobile\nconst touchStartX = ref(0)\nconst touchEndX = ref(0)\nconst SWIPE_THRESHOLD = 50\n\nfunction handleTouchStart(e: TouchEvent) {\n touchStartX.value = e.changedTouches[0].screenX\n}\n\nfunction handleTouchEnd(e: TouchEvent) {\n touchEndX.value = e.changedTouches[0].screenX\n handleSwipe()\n}\n\nfunction handleSwipe() {\n const diff = touchStartX.value - touchEndX.value\n if (Math.abs(diff) < SWIPE_THRESHOLD) return\n\n const tabIds = mobileTabs.map((t) => t.id)\n const currentIndex = tabIds.indexOf(activeMobileTab.value)\n\n if (diff > 0 && currentIndex < tabIds.length - 1) {\n // Swipe left → next tab\n activeMobileTab.value = tabIds[currentIndex + 1]\n } else if (diff < 0 && currentIndex > 0) {\n // Swipe right → previous tab\n activeMobileTab.value = tabIds[currentIndex - 1]\n }\n}\n\n// Component metadata for DevMode\nconst APP_META = {\n id: 'app',\n name: 'App',\n version: '3.1.0',\n summary: 'Root application component with windowed desktop layout and extended command bar.',\n description:\n 'App is the root component of isocubic. It provides a windowed desktop layout with draggable, ' +\n 'resizable, collapsible windows and a TinyLLM command bar, plus adaptive tablet and mobile layouts. ' +\n 'Integrates all subsystems (Gallery, Editor, Preview, Export, MetaMode) and manages the global ' +\n 'cube editing state through the useCubeEditor composable.',\n phase: 11,\n taskId: 'TASK 68',\n filePath: 'src/App.vue',\n history: [\n {\n version: '1.0.0',\n date: '2026-01-29T18:00:00Z',\n description: 'Initial Vue.js 3.0 stub during TASK 60',\n taskId: 'TASK 60',\n type: 'created' as const,\n },\n {\n version: '2.0.0',\n date: '2026-01-31T18:00:00Z',\n description: 'Full adaptive layout with all component integrations',\n taskId: 'TASK 67',\n type: 'updated' as const,\n },\n {\n version: '3.0.0',\n date: '2026-02-01T12:00:00Z',\n description: 'Windowed desktop layout with drag/resize/minimize/close and command bar',\n taskId: 'TASK 68',\n type: 'updated' as const,\n },\n {\n version: '3.1.0',\n date: '2026-02-01T20:00:00Z',\n description: 'Extended command bar with layout, cube, export, and settings commands',\n taskId: 'TASK 77',\n type: 'updated' as const,\n },\n ],",
"numLines": 100,
"startLine": 260,
"totalLines": 834
}
}
}
[2026-02-06T17:22:47.831Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01DvKwh7MXKSN1oFczGR59r6",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01XdRhFnrB7p3JDUginVeFvQ",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/App.vue",
"limit": 100,
"offset": 780
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 1621,
"cache_read_input_tokens": 32883,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 1621
},
"output_tokens": 25,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "3d91009c-5ce0-4f07-a54e-56e860ab71e6"
}
[2026-02-06T17:22:47.870Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01XdRhFnrB7p3JDUginVeFvQ",
"type": "tool_result",
"content": " 780→ </p>\n 781→ <p v-if=\"currentCube?.prompt\">{{ currentCube.prompt }}</p>\n 782→ </div>\n 783→ </div>\n 784→ </div>\n 785→\n 786→ <!-- Editor Tab -->\n 787→ <div v-if=\"activeMobileTab === 'editor'\" class=\"app__mobile-panel\">\n 788→ <UnifiedEditor :current-cube=\"currentCube\" @update:cube=\"updateCube\" />\n 789→\n 790→ <PromptGenerator\n 791→ @cube-generated=\"selectCube\"\n 792→ @cubes-generated=\"(cubes) => cubes.length > 0 && selectCube(cubes[0])\"\n 793→ />\n 794→ </div>\n 795→\n 796→ <!-- Tools Tab -->\n 797→ <div v-if=\"activeMobileTab === 'tools'\" class=\"app__mobile-panel\">\n 798→ <ComponentInfo :meta=\"EXPORT_PANEL_META\">\n 799→ <ExportPanel\n 800→ :current-cube=\"currentCube\"\n 801→ @cube-load=\"loadCube\"\n 802→ @cube-change=\"updateCube\"\n 803→ />\n 804→ </ComponentInfo>\n 805→\n 806→ <ActionHistory :actions=\"[]\" />\n 807→ </div>\n 808→\n 809→ <!-- Social Tab -->\n 810→ <div v-if=\"activeMobileTab === 'social'\" class=\"app__mobile-panel\">\n 811→ <ComponentInfo :meta=\"COMMUNITY_GALLERY_META\">\n 812→ <CommunityGallery @cube-select=\"selectCube\" />\n 813→ </ComponentInfo>\n 814→\n 815→ <ComponentInfo :meta=\"SHARE_PANEL_META\">\n 816→ <SharePanel :cube=\"currentCube\" />\n 817→ </ComponentInfo>\n 818→\n 819→ <ComponentInfo :meta=\"NOTIFICATION_PANEL_META\">\n 820→ <NotificationPanel />\n 821→ </ComponentInfo>\n 822→ </div>\n 823→ </div>\n 824→\n 825→ <!-- Swipe Indicator -->\n 826→ <div class=\"app__swipe-indicator\">\n 827→ <span>Swipe to navigate</span>\n 828→ </div>\n 829→ </ComponentInfo>\n 830→\n 831→ <MetaModeIndicator />\n 832→ </div>\n 833→</template>\n 834→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "02e0f60d-6351-45e6-95b0-0de3e0ec4ebb",
"tool_use_result": {
"type": "text",
"file": {
"filePath": "/tmp/gh-issue-solver-1770398441546/src/App.vue",
"content": " </p>\n <p v-if=\"currentCube?.prompt\">{{ currentCube.prompt }}</p>\n </div>\n </div>\n </div>\n\n <!-- Editor Tab -->\n <div v-if=\"activeMobileTab === 'editor'\" class=\"app__mobile-panel\">\n <UnifiedEditor :current-cube=\"currentCube\" @update:cube=\"updateCube\" />\n\n <PromptGenerator\n @cube-generated=\"selectCube\"\n @cubes-generated=\"(cubes) => cubes.length > 0 && selectCube(cubes[0])\"\n />\n </div>\n\n <!-- Tools Tab -->\n <div v-if=\"activeMobileTab === 'tools'\" class=\"app__mobile-panel\">\n <ComponentInfo :meta=\"EXPORT_PANEL_META\">\n <ExportPanel\n :current-cube=\"currentCube\"\n @cube-load=\"loadCube\"\n @cube-change=\"updateCube\"\n />\n </ComponentInfo>\n\n <ActionHistory :actions=\"[]\" />\n </div>\n\n <!-- Social Tab -->\n <div v-if=\"activeMobileTab === 'social'\" class=\"app__mobile-panel\">\n <ComponentInfo :meta=\"COMMUNITY_GALLERY_META\">\n <CommunityGallery @cube-select=\"selectCube\" />\n </ComponentInfo>\n\n <ComponentInfo :meta=\"SHARE_PANEL_META\">\n <SharePanel :cube=\"currentCube\" />\n </ComponentInfo>\n\n <ComponentInfo :meta=\"NOTIFICATION_PANEL_META\">\n <NotificationPanel />\n </ComponentInfo>\n </div>\n </div>\n\n <!-- Swipe Indicator -->\n <div class=\"app__swipe-indicator\">\n <span>Swipe to navigate</span>\n </div>\n </ComponentInfo>\n\n <MetaModeIndicator />\n </div>\n</template>\n",
"numLines": 55,
"startLine": 780,
"totalLines": 834
}
}
}
[2026-02-06T17:22:50.756Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_015voPBLm3DEGUJMkmhcsJMz",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Now let me read the CommunityGallery.vue component to understand the rendering issue."
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 2521,
"cache_read_input_tokens": 34504,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 2521
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "87783d13-d37c-49c1-a11c-33c014efc966"
}
[2026-02-06T17:22:55.976Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_015voPBLm3DEGUJMkmhcsJMz",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01Vb2NA7qbQjK1GJ56w3tDHw",
"name": "TodoWrite",
"input": {
"todos": [
{
"content": "Read and analyze the issue screenshot and understand the problems",
"status": "completed",
"activeForm": "Analyzing the issue screenshot"
},
{
"content": "Read App.vue social tab section to understand the mobile tab rendering",
"status": "completed",
"activeForm": "Reading App.vue social tab section"
},
{
"content": "Read CommunityGallery.vue component for rendering issues",
"status": "in_progress",
"activeForm": "Reading CommunityGallery.vue component"
},
{
"content": "Read community-gallery.ts for mock data and emoji handling",
"status": "pending",
"activeForm": "Reading community-gallery.ts"
},
{
"content": "Identify root cause of emoji/Unicode rendering issues",
"status": "pending",
"activeForm": "Identifying root cause of rendering issues"
},
{
"content": "Fix the rendering issues in the Social tab",
"status": "pending",
"activeForm": "Fixing rendering issues"
},
{
"content": "Run local CI checks and tests",
"status": "pending",
"activeForm": "Running local CI checks"
},
{
"content": "Commit and push fixes",
"status": "pending",
"activeForm": "Committing and pushing fixes"
},
{
"content": "Update PR description and finalize",
"status": "pending",
"activeForm": "Updating PR description"
}
]
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 2521,
"cache_read_input_tokens": 34504,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 2521
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "1873e235-2fae-4dbc-98b0-f239e78eecca"
}
[2026-02-06T17:22:55.985Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01Vb2NA7qbQjK1GJ56w3tDHw",
"type": "tool_result",
"content": "Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable"
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "3f7de9e9-d3b1-4eb1-b281-be651d400bbd",
"tool_use_result": {
"oldTodos": [
{
"content": "Read and analyze the issue screenshot and understand the problems",
"status": "completed",
"activeForm": "Analyzing the issue screenshot"
},
{
"content": "Read App.vue social tab section to understand the mobile tab rendering",
"status": "in_progress",
"activeForm": "Reading App.vue social tab section"
},
{
"content": "Read CommunityGallery.vue component for rendering issues",
"status": "pending",
"activeForm": "Reading CommunityGallery.vue component"
},
{
"content": "Read community-gallery.ts for mock data and emoji handling",
"status": "pending",
"activeForm": "Reading community-gallery.ts"
},
{
"content": "Identify root cause of emoji/Unicode rendering issues",
"status": "pending",
"activeForm": "Identifying root cause of rendering issues"
},
{
"content": "Fix the rendering issues in the Social tab",
"status": "pending",
"activeForm": "Fixing rendering issues"
},
{
"content": "Run local CI checks and tests",
"status": "pending",
"activeForm": "Running local CI checks"
},
{
"content": "Commit and push fixes",
"status": "pending",
"activeForm": "Committing and pushing fixes"
},
{
"content": "Update PR description and finalize",
"status": "pending",
"activeForm": "Updating PR description"
}
],
"newTodos": [
{
"content": "Read and analyze the issue screenshot and understand the problems",
"status": "completed",
"activeForm": "Analyzing the issue screenshot"
},
{
"content": "Read App.vue social tab section to understand the mobile tab rendering",
"status": "completed",
"activeForm": "Reading App.vue social tab section"
},
{
"content": "Read CommunityGallery.vue component for rendering issues",
"status": "in_progress",
"activeForm": "Reading CommunityGallery.vue component"
},
{
"content": "Read community-gallery.ts for mock data and emoji handling",
"status": "pending",
"activeForm": "Reading community-gallery.ts"
},
{
"content": "Identify root cause of emoji/Unicode rendering issues",
"status": "pending",
"activeForm": "Identifying root cause of rendering issues"
},
{
"content": "Fix the rendering issues in the Social tab",
"status": "pending",
"activeForm": "Fixing rendering issues"
},
{
"content": "Run local CI checks and tests",
"status": "pending",
"activeForm": "Running local CI checks"
},
{
"content": "Commit and push fixes",
"status": "pending",
"activeForm": "Committing and pushing fixes"
},
{
"content": "Update PR description and finalize",
"status": "pending",
"activeForm": "Updating PR description"
}
]
}
}
[2026-02-06T17:22:58.524Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01LSwbrSTjFrmGihTbibgfmR",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_017Zb9AQDvXxLp6Jumzx9nD6",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/components/CommunityGallery.vue"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 415,
"cache_read_input_tokens": 37025,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 415
},
"output_tokens": 25,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "cee9ada2-fc53-439e-852b-ad9ac764f4a8"
}
[2026-02-06T17:22:58.538Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_017Zb9AQDvXxLp6Jumzx9nD6",
"type": "tool_result",
"content": " 1→<!--\n 2→ Community Gallery Component (Vue 3.0 SFC)\n 3→ Displays published cubes from the community with search, filtering, and sorting\n 4→\n 5→ TASK 45: Initial implementation\n 6→ TASK 64: Migration from React to Vue 3.0 SFC (Phase 10)\n 7→\n 8→ Features:\n 9→ - Browse community-published cubes\n 10→ - Search by name, tags, author\n 11→ - Filter by category and material type\n 12→ - Sort by recent, popular, trending, etc.\n 13→ - Like/unlike cubes\n 14→ - Pagination support\n 15→-->\n 16→<script lang=\"ts\">\n 17→import type { ComponentMeta } from '../types/component-meta'\n 18→import { registerComponentMeta } from '../types/component-meta'\n 19→\n 20→/**\n 21→ * Component metadata for Developer Mode\n 22→ */\n 23→export const COMMUNITY_GALLERY_META: ComponentMeta = {\n 24→ id: 'community-gallery',\n 25→ name: 'CommunityGallery',\n 26→ version: '1.1.0',\n 27→ summary: 'Browse and interact with community-published cubes.',\n 28→ description:\n 29→ 'CommunityGallery is the public gallery for viewing cubes published by other users. ' +\n 30→ 'It provides search, filtering by category and material type, sorting options, and ' +\n 31→ 'social features like liking cubes. The component supports pagination for browsing ' +\n 32→ 'large collections efficiently.',\n 33→ phase: 7,\n 34→ taskId: 'TASK 45',\n 35→ filePath: 'components/CommunityGallery.vue',\n 36→ history: [\n 37→ {\n 38→ version: '1.0.0',\n 39→ date: '2026-01-29T22:00:00Z',\n 40→ description: 'Initial implementation with search, filter, sort, and like features',\n 41→ taskId: 'TASK 45',\n 42→ type: 'created',\n 43→ },\n 44→ {\n 45→ version: '1.1.0',\n 46→ date: '2026-01-31T00:00:00Z',\n 47→ description: 'Migrated from React to Vue 3.0 SFC',\n 48→ taskId: 'TASK 64',\n 49→ type: 'updated',\n 50→ },\n 51→ ],\n 52→ features: [\n 53→ {\n 54→ id: 'search',\n 55→ name: 'Search',\n 56→ description: 'Search cubes by name, tags, prompt, or author',\n 57→ enabled: true,\n 58→ taskId: 'TASK 45',\n 59→ },\n 60→ {\n 61→ id: 'filter-category',\n 62→ name: 'Category Filter',\n 63→ description: 'Filter by category (Nature, Building, Fantasy, etc.)',\n 64→ enabled: true,\n 65→ taskId: 'TASK 45',\n 66→ },\n 67→ {\n 68→ id: 'filter-material',\n 69→ name: 'Material Filter',\n 70→ description: 'Filter by material type (Stone, Wood, Metal, etc.)',\n 71→ enabled: true,\n 72→ taskId: 'TASK 45',\n 73→ },\n 74→ {\n 75→ id: 'sorting',\n 76→ name: 'Sorting',\n 77→ description: 'Sort by recent, popular, trending, downloads, views',\n 78→ enabled: true,\n 79→ taskId: 'TASK 45',\n 80→ },\n 81→ {\n 82→ id: 'likes',\n 83→ name: 'Like System',\n 84→ description: 'Like and unlike cubes with persisted state',\n 85→ enabled: true,\n 86→ taskId: 'TASK 45',\n 87→ },\n 88→ {\n 89→ id: 'pagination',\n 90→ name: 'Pagination',\n 91→ description: 'Navigate through pages of results',\n 92→ enabled: true,\n 93→ taskId: 'TASK 45',\n 94→ },\n 95→ ],\n 96→ dependencies: [\n 97→ {\n 98→ name: 'community-gallery',\n 99→ type: 'lib',\n 100→ path: 'lib/community-gallery.ts',\n 101→ purpose: 'API service for community cubes',\n 102→ },\n 103→ { name: 'community', type: 'lib', path: 'types/community.ts', purpose: 'Type definitions' },\n 104→ ],\n 105→ relatedFiles: [\n 106→ {\n 107→ path: 'components/CommunityGallery.vue.test.ts',\n 108→ type: 'test',\n 109→ description: 'Unit tests for CommunityGallery',\n 110→ },\n 111→ {\n 112→ path: 'lib/community-gallery.ts',\n 113→ type: 'util',\n 114→ description: 'Community gallery service',\n 115→ },\n 116→ { path: 'types/community.ts', type: 'type', description: 'Community types' },\n 117→ ],\n 118→ props: [\n 119→ {\n 120→ name: 'onCubeSelect',\n 121→ type: '(cube: SpectralCube) => void',\n 122→ required: false,\n 123→ description: 'Callback when a cube is selected for use',\n 124→ },\n 125→ {\n 126→ name: 'onCubePreview',\n 127→ type: '(cube: PublishedCube) => void',\n 128→ required: false,\n 129→ description: 'Callback to preview a cube details',\n 130→ },\n 131→ { name: 'className', type: 'string', required: false, description: 'Additional CSS class' },\n 132→ ],\n 133→ tips: [\n 134→ 'Use the search bar to find specific cubes by name or tags',\n 135→ 'Click the heart icon to like a cube and save it for later',\n 136→ 'Switch between sorting options to discover new and popular cubes',\n 137→ 'Filter by category to focus on specific types of materials',\n 138→ ],\n 139→ tags: ['community', 'gallery', 'social', 'search', 'filter', 'phase-7'],\n 140→ status: 'stable',\n 141→ lastUpdated: '2026-01-31T00:00:00Z',\n 142→}\n 143→\n 144→// Register metadata in the global registry\n 145→registerComponentMeta(COMMUNITY_GALLERY_META)\n 146→</script>\n 147→\n 148→<script setup lang=\"ts\">\n 149→import { ref, computed, watch } from 'vue'\n 150→import type { SpectralCube, MaterialType } from '../types/cube'\n 151→import type {\n 152→ PublishedCube,\n 153→ CommunityGallerySearchParams,\n 154→ CubeCategory,\n 155→ CommunitySortOption,\n 156→ PaginationMeta,\n 157→} from '../types/community'\n 158→import { CATEGORY_INFO, SORT_OPTION_INFO, formatCount } from '../types/community'\n 159→import { communityGalleryService } from '../lib/community-gallery'\n 160→\n 161→// ============================================================================\n 162→// Constants\n 163→// ============================================================================\n 164→\n 165→/** Material types with labels */\n 166→const MATERIAL_TYPES: { id: MaterialType | 'all'; label: string }[] = [\n 167→ { id: 'all', label: 'All Materials' },\n 168→ { id: 'stone', label: 'Stone' },\n 169→ { id: 'wood', label: 'Wood' },\n 170→ { id: 'metal', label: 'Metal' },\n 171→ { id: 'glass', label: 'Glass' },\n 172→ { id: 'crystal', label: 'Crystal' },\n 173→ { id: 'organic', label: 'Organic' },\n 174→ { id: 'liquid', label: 'Liquid' },\n 175→]\n 176→\n 177→/** Categories with labels */\n 178→const CATEGORIES: { id: CubeCategory | 'all'; label: string }[] = [\n 179→ { id: 'all', label: 'All Categories' },\n 180→ ...Object.entries(CATEGORY_INFO).map(([id, info]) => ({\n 181→ id: id as CubeCategory,\n 182→ label: info.label,\n 183→ })),\n 184→]\n 185→\n 186→/** Sort options with labels */\n 187→const SORT_OPTIONS: { id: CommunitySortOption; label: string }[] = Object.entries(\n 188→ SORT_OPTION_INFO\n 189→).map(([id, info]) => ({\n 190→ id: id as CommunitySortOption,\n 191→ label: info.label,\n 192→}))\n 193→\n 194→// ============================================================================\n 195→// Props\n 196→// ============================================================================\n 197→\n 198→interface CommunityGalleryProps {\n 199→ /** Custom class name */\n 200→ className?: string\n 201→}\n 202→\n 203→withDefaults(defineProps<CommunityGalleryProps>(), {\n 204→ className: '',\n 205→})\n 206→\n 207→const emit = defineEmits<{\n 208→ cubeSelect: [cube: SpectralCube]\n 209→ cubePreview: [cube: PublishedCube]\n 210→}>()\n 211→\n 212→// ============================================================================\n 213→// Helper Functions\n 214→// ============================================================================\n 215→\n 216→function colorToCSS(color: [number, number, number]): string {\n 217→ const r = Math.round(color[0] * 255)\n 218→ const g = Math.round(color[1] * 255)\n 219→ const b = Math.round(color[2] * 255)\n 220→ return `rgb(${r}, ${g}, ${b})`\n 221→}\n 222→\n 223→function generateCubeGradient(cube: SpectralCube): string {\n 224→ const baseColor = colorToCSS(cube.base.color)\n 225→\n 226→ if (!cube.gradients || cube.gradients.length === 0) {\n 227→ return baseColor\n 228→ }\n 229→\n 230→ const gradient = cube.gradients[0]\n 231→ const shift = gradient.color_shift\n 232→ const endColor = colorToCSS([\n 233→ Math.max(0, Math.min(1, cube.base.color[0] + shift[0] * gradient.factor)),\n 234→ Math.max(0, Math.min(1, cube.base.color[1] + shift[1] * gradient.factor)),\n 235→ Math.max(0, Math.min(1, cube.base.color[2] + shift[2] * gradient.factor)),\n 236→ ])\n 237→\n 238→ switch (gradient.axis) {\n 239→ case 'y':\n 240→ return `linear-gradient(to top, ${baseColor}, ${endColor})`\n 241→ case 'x':\n 242→ return `linear-gradient(to right, ${baseColor}, ${endColor})`\n 243→ case 'z':\n 244→ return `linear-gradient(135deg, ${baseColor}, ${endColor})`\n 245→ case 'radial':\n 246→ return `radial-gradient(circle, ${endColor}, ${baseColor})`\n 247→ default:\n 248→ return baseColor\n 249→ }\n 250→}\n 251→\n 252→// ============================================================================\n 253→// State\n 254→// ============================================================================\n 255→\n 256→const cubes = ref<PublishedCube[]>([])\n 257→const pagination = ref<PaginationMeta | null>(null)\n 258→const isLoading = ref(true)\n 259→const error = ref<string | null>(null)\n 260→\n 261→const searchQuery = ref('')\n 262→const selectedCategory = ref<CubeCategory | 'all'>('all')\n 263→const selectedMaterial = ref<MaterialType | 'all'>('all')\n 264→const sortBy = ref<CommunitySortOption>('recent')\n 265→const currentPage = ref(1)\n 266→\n 267→// Build search params from state\n 268→const searchParams = computed<CommunityGallerySearchParams>(() => ({\n 269→ filters: {\n 270→ query: searchQuery.value || undefined,\n 271→ category: selectedCategory.value !== 'all' ? selectedCategory.value : undefined,\n 272→ materialType: selectedMaterial.value !== 'all' ? selectedMaterial.value : undefined,\n 273→ },\n 274→ sortBy: sortBy.value,\n 275→ sortDirection: 'desc',\n 276→ page: currentPage.value,\n 277→ pageSize: 12,\n 278→}))\n 279→\n 280→// Fetch cubes when params change\n 281→watch(\n 282→ searchParams,\n 283→ async (params) => {\n 284→ const localCancelled = { value: false }\n 285→\n 286→ isLoading.value = true\n 287→ error.value = null\n 288→\n 289→ try {\n 290→ const response = await communityGalleryService.search(params)\n 291→ if (!localCancelled.value) {\n 292→ cubes.value = response.cubes\n 293→ pagination.value = response.pagination\n 294→ }\n 295→ } catch (err) {\n 296→ if (!localCancelled.value) {\n 297→ error.value = 'Failed to load community cubes'\n 298→ console.error('CommunityGallery fetch error:', err)\n 299→ }\n 300→ } finally {\n 301→ if (!localCancelled.value) {\n 302→ isLoading.value = false\n 303→ }\n 304→ }\n 305→ },\n 306→ { immediate: true }\n 307→)\n 308→\n 309→// Reset page when filters change\n 310→watch([searchQuery, selectedCategory, selectedMaterial, sortBy], () => {\n 311→ currentPage.value = 1\n 312→})\n 313→\n 314→// Handle cube selection\n 315→function handleCubeSelect(pub: PublishedCube) {\n 316→ emit('cubeSelect', pub.cube)\n 317→ communityGalleryService.recordDownload(pub.id)\n 318→}\n 319→\n 320→// Handle like toggle\n 321→async function handleLikeToggle(e: Event, cubeId: string) {\n 322→ e.stopPropagation()\n 323→\n 324→ try {\n 325→ const result = await communityGalleryService.toggleLike(cubeId)\n 326→ if (result.success) {\n 327→ cubes.value = cubes.value.map((cube) =>\n 328→ cube.id === cubeId\n 329→ ? {\n 330→ ...cube,\n 331→ isLiked: result.isLiked,\n 332→ stats: { ...cube.stats, likes: result.likeCount },\n 333→ }\n 334→ : cube\n 335→ )\n 336→ }\n 337→ } catch (err) {\n 338→ console.error('Failed to toggle like:', err)\n 339→ }\n 340→}\n 341→\n 342→// Handle pagination\n 343→function handlePageChange(page: number) {\n 344→ currentPage.value = page\n 345→ window.scrollTo({ top: 0, behavior: 'smooth' })\n 346→}\n 347→\n 348→// Handle keyboard interaction on cube items\n 349→function handleCubeKeyDown(e: KeyboardEvent, pub: PublishedCube) {\n 350→ if (e.key === 'Enter' || e.key === ' ') {\n 351→ e.preventDefault()\n 352→ handleCubeSelect(pub)\n 353→ }\n 354→}\n 355→\n 356→// Pagination pages computation\n 357→const paginationPages = computed(() => {\n 358→ if (!pagination.value || pagination.value.totalPages <= 1) return null\n 359→\n 360→ const pages: (number | string)[] = []\n 361→ const { currentPage: cp, totalPages } = pagination.value\n 362→\n 363→ pages.push(1)\n 364→\n 365→ if (cp > 3) {\n 366→ pages.push('...')\n 367→ }\n 368→\n 369→ for (let i = Math.max(2, cp - 1); i <= Math.min(totalPages - 1, cp + 1); i++) {\n 370→ if (!pages.includes(i)) {\n 371→ pages.push(i)\n 372→ }\n 373→ }\n 374→\n 375→ if (cp < totalPages - 2) {\n 376→ pages.push('...')\n 377→ }\n 378→\n 379→ if (totalPages > 1 && !pages.includes(totalPages)) {\n 380→ pages.push(totalPages)\n 381→ }\n 382→\n 383→ return pages\n 384→})\n 385→</script>\n 386→\n 387→<template>\n 388→ <div :class=\"['community-gallery', className]\">\n 389→ <!-- Header -->\n 390→ <div class=\"community-gallery__header\">\n 391→ <h2 class=\"community-gallery__title\">Community Gallery</h2>\n 392→ <p class=\"community-gallery__subtitle\">Discover cubes created by the isocubic community</p>\n 393→ </div>\n 394→\n 395→ <!-- Search and Filters -->\n 396→ <div class=\"community-gallery__controls\">\n 397→ <!-- Search Input -->\n 398→ <div class=\"community-gallery__search\">\n 399→ <input\n 400→ v-model=\"searchQuery\"\n 401→ type=\"text\"\n 402→ class=\"community-gallery__search-input\"\n 403→ placeholder=\"Search by name, tags, author...\"\n 404→ aria-label=\"Search community cubes\"\n 405→ />\n 406→ <button\n 407→ v-if=\"searchQuery\"\n 408→ type=\"button\"\n 409→ class=\"community-gallery__search-clear\"\n 410→ aria-label=\"Clear search\"\n 411→ @click=\"searchQuery = ''\"\n 412→ >\n 413→ ×\n 414→ </button>\n 415→ </div>\n 416→\n 417→ <!-- Filter Controls -->\n 418→ <div class=\"community-gallery__filters\">\n 419→ <select\n 420→ v-model=\"selectedCategory\"\n 421→ class=\"community-gallery__select\"\n 422→ aria-label=\"Filter by category\"\n 423→ >\n 424→ <option v-for=\"cat in CATEGORIES\" :key=\"cat.id\" :value=\"cat.id\">\n 425→ {{ cat.label }}\n 426→ </option>\n 427→ </select>\n 428→\n 429→ <select\n 430→ v-model=\"selectedMaterial\"\n 431→ class=\"community-gallery__select\"\n 432→ aria-label=\"Filter by material\"\n 433→ >\n 434→ <option v-for=\"mat in MATERIAL_TYPES\" :key=\"mat.id\" :value=\"mat.id\">\n 435→ {{ mat.label }}\n 436→ </option>\n 437→ </select>\n 438→\n 439→ <select v-model=\"sortBy\" class=\"community-gallery__select\" aria-label=\"Sort by\">\n 440→ <option v-for=\"opt in SORT_OPTIONS\" :key=\"opt.id\" :value=\"opt.id\">\n 441→ {{ opt.label }}\n 442→ </option>\n 443→ </select>\n 444→ </div>\n 445→ </div>\n 446→\n 447→ <!-- Loading State -->\n 448→ <div v-if=\"isLoading\" class=\"community-gallery__loading\">\n 449→ <div class=\"community-gallery__spinner\" />\n 450→ <span>Loading cubes...</span>\n 451→ </div>\n 452→\n 453→ <!-- Error State -->\n 454→ <div v-if=\"error\" class=\"community-gallery__error\" role=\"alert\">\n 455→ {{ error }}\n 456→ </div>\n 457→\n 458→ <!-- Cube Grid -->\n 459→ <template v-if=\"!isLoading && !error\">\n 460→ <div class=\"community-gallery__grid\">\n 461→ <div v-if=\"cubes.length === 0\" class=\"community-gallery__empty\">\n 462→ {{\n 463→ searchQuery || selectedCategory !== 'all' || selectedMaterial !== 'all'\n 464→ ? 'No cubes match your search criteria'\n 465→ : 'No community cubes available yet'\n 466→ }}\n 467→ </div>\n 468→ <div\n 469→ v-for=\"pub in cubes\"\n 470→ v-else\n 471→ :key=\"pub.id\"\n 472→ class=\"community-gallery__item\"\n 473→ role=\"button\"\n 474→ :tabindex=\"0\"\n 475→ :aria-label=\"`Select ${pub.cube.meta?.name || pub.cube.id}`\"\n 476→ @click=\"handleCubeSelect(pub)\"\n 477→ @keydown=\"handleCubeKeyDown($event, pub)\"\n 478→ >\n 479→ <!-- Badges -->\n 480→ <div class=\"community-gallery__badges\">\n 481→ <span\n 482→ v-if=\"pub.isFeatured\"\n 483→ class=\"community-gallery__badge community-gallery__badge--featured\"\n 484→ >\n 485→ Featured\n 486→ </span>\n 487→ <span\n 488→ v-if=\"pub.isStaffPick\"\n 489→ class=\"community-gallery__badge community-gallery__badge--staff\"\n 490→ >\n 491→ Staff Pick\n 492→ </span>\n 493→ </div>\n 494→\n 495→ <!-- Thumbnail -->\n 496→ <div\n 497→ class=\"community-gallery__thumbnail\"\n 498→ :style=\"{\n 499→ background: generateCubeGradient(pub.cube),\n 500→ opacity: pub.cube.base.transparency ?? 1,\n 501→ }\"\n 502→ >\n 503→ <div\n 504→ v-if=\"pub.cube.noise?.type\"\n 505→ :class=\"[\n 506→ 'community-gallery__noise-indicator',\n 507→ `community-gallery__noise-indicator--${pub.cube.noise.type}`,\n 508→ ]\"\n 509→ />\n 510→ </div>\n 511→\n 512→ <!-- Info -->\n 513→ <div class=\"community-gallery__item-info\">\n 514→ <span class=\"community-gallery__item-name\">\n 515→ {{ pub.cube.meta?.name || pub.cube.id }}\n 516→ </span>\n 517→ <span class=\"community-gallery__item-author\"> by {{ pub.author.displayName }} </span>\n 518→ </div>\n 519→\n 520→ <!-- Stats -->\n 521→ <div class=\"community-gallery__item-stats\">\n 522→ <button\n 523→ type=\"button\"\n 524→ :class=\"[\n 525→ 'community-gallery__like-btn',\n 526→ { 'community-gallery__like-btn--liked': pub.isLiked },\n 527→ ]\"\n 528→ :aria-label=\"pub.isLiked ? 'Unlike' : 'Like'\"\n 529→ @click=\"handleLikeToggle($event, pub.id)\"\n 530→ >\n 531→ <span class=\"community-gallery__like-icon\">{{\n 532→ pub.isLiked ? '\\u2764\\uFE0F' : '\\U0001F90D'\n 533→ }}</span>\n 534→ <span class=\"community-gallery__like-count\">{{ formatCount(pub.stats.likes) }}</span>\n 535→ </button>\n 536→ <span class=\"community-gallery__views\">\n 537→ \\uD83D\\uDC41 {{ formatCount(pub.stats.views) }}\n 538→ </span>\n 539→ <span class=\"community-gallery__downloads\">\n 540→ \\u2B07 {{ formatCount(pub.stats.downloads) }}\n 541→ </span>\n 542→ </div>\n 543→\n 544→ <!-- Tags -->\n 545→ <div\n 546→ v-if=\"pub.cube.meta?.tags && pub.cube.meta.tags.length > 0\"\n 547→ class=\"community-gallery__item-tags\"\n 548→ >\n 549→ <span\n 550→ v-for=\"tag in pub.cube.meta.tags.slice(0, 3)\"\n 551→ :key=\"tag\"\n 552→ class=\"community-gallery__item-tag\"\n 553→ >\n 554→ {{ tag }}\n 555→ </span>\n 556→ <span\n 557→ v-if=\"pub.cube.meta.tags.length > 3\"\n 558→ class=\"community-gallery__item-tag community-gallery__item-tag--more\"\n 559→ >\n 560→ +{{ pub.cube.meta.tags.length - 3 }}\n 561→ </span>\n 562→ </div>\n 563→ </div>\n 564→ </div>\n 565→\n 566→ <!-- Pagination -->\n 567→ <div v-if=\"paginationPages\" class=\"community-gallery__pagination\">\n 568→ <button\n 569→ type=\"button\"\n 570→ class=\"community-gallery__page-btn\"\n 571→ :disabled=\"!pagination?.hasPrevPage\"\n 572→ aria-label=\"Previous page\"\n 573→ @click=\"handlePageChange(currentPage - 1)\"\n 574→ >\n 575→ &lt;\n 576→ </button>\n 577→\n 578→ <template\n 579→ v-for=\"(page, index) in paginationPages\"\n 580→ :key=\"typeof page === 'number' ? page : `ellipsis-${index}`\"\n 581→ >\n 582→ <button\n 583→ v-if=\"typeof page === 'number'\"\n 584→ type=\"button\"\n 585→ :class=\"[\n 586→ 'community-gallery__page-btn',\n 587→ { 'community-gallery__page-btn--active': page === currentPage },\n 588→ ]\"\n 589→ @click=\"handlePageChange(page)\"\n 590→ >\n 591→ {{ page }}\n 592→ </button>\n 593→ <span v-else class=\"community-gallery__ellipsis\">{{ page }}</span>\n 594→ </template>\n 595→\n 596→ <button\n 597→ type=\"button\"\n 598→ class=\"community-gallery__page-btn\"\n 599→ :disabled=\"!pagination?.hasNextPage\"\n 600→ aria-label=\"Next page\"\n 601→ @click=\"handlePageChange(currentPage + 1)\"\n 602→ >\n 603→ &gt;\n 604→ </button>\n 605→ </div>\n 606→\n 607→ <!-- Results Count -->\n 608→ <div v-if=\"pagination\" class=\"community-gallery__footer\">\n 609→ <span class=\"community-gallery__count\">\n 610→ Showing {{ cubes.length }} of {{ pagination.totalItems }} cubes\n 611→ <template v-if=\"pagination.totalPages > 1\">\n 612→ (Page {{ pagination.currentPage }} of {{ pagination.totalPages }})\n 613→ </template>\n 614→ </span>\n 615→ </div>\n 616→ </template>\n 617→ </div>\n 618→</template>\n 619→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "402302ae-7f69-4d1d-a086-2a2327f9dcf5",
"tool_use_result": {
"type": "text",
"file": {
"filePath": "/tmp/gh-issue-solver-1770398441546/src/components/CommunityGallery.vue",
"content": "<!--\n Community Gallery Component (Vue 3.0 SFC)\n Displays published cubes from the community with search, filtering, and sorting\n\n TASK 45: Initial implementation\n TASK 64: Migration from React to Vue 3.0 SFC (Phase 10)\n\n Features:\n - Browse community-published cubes\n - Search by name, tags, author\n - Filter by category and material type\n - Sort by recent, popular, trending, etc.\n - Like/unlike cubes\n - Pagination support\n-->\n<script lang=\"ts\">\nimport type { ComponentMeta } from '../types/component-meta'\nimport { registerComponentMeta } from '../types/component-meta'\n\n/**\n * Component metadata for Developer Mode\n */\nexport const COMMUNITY_GALLERY_META: ComponentMeta = {\n id: 'community-gallery',\n name: 'CommunityGallery',\n version: '1.1.0',\n summary: 'Browse and interact with community-published cubes.',\n description:\n 'CommunityGallery is the public gallery for viewing cubes published by other users. ' +\n 'It provides search, filtering by category and material type, sorting options, and ' +\n 'social features like liking cubes. The component supports pagination for browsing ' +\n 'large collections efficiently.',\n phase: 7,\n taskId: 'TASK 45',\n filePath: 'components/CommunityGallery.vue',\n history: [\n {\n version: '1.0.0',\n date: '2026-01-29T22:00:00Z',\n description: 'Initial implementation with search, filter, sort, and like features',\n taskId: 'TASK 45',\n type: 'created',\n },\n {\n version: '1.1.0',\n date: '2026-01-31T00:00:00Z',\n description: 'Migrated from React to Vue 3.0 SFC',\n taskId: 'TASK 64',\n type: 'updated',\n },\n ],\n features: [\n {\n id: 'search',\n name: 'Search',\n description: 'Search cubes by name, tags, prompt, or author',\n enabled: true,\n taskId: 'TASK 45',\n },\n {\n id: 'filter-category',\n name: 'Category Filter',\n description: 'Filter by category (Nature, Building, Fantasy, etc.)',\n enabled: true,\n taskId: 'TASK 45',\n },\n {\n id: 'filter-material',\n name: 'Material Filter',\n description: 'Filter by material type (Stone, Wood, Metal, etc.)',\n enabled: true,\n taskId: 'TASK 45',\n },\n {\n id: 'sorting',\n name: 'Sorting',\n description: 'Sort by recent, popular, trending, downloads, views',\n enabled: true,\n taskId: 'TASK 45',\n },\n {\n id: 'likes',\n name: 'Like System',\n description: 'Like and unlike cubes with persisted state',\n enabled: true,\n taskId: 'TASK 45',\n },\n {\n id: 'pagination',\n name: 'Pagination',\n description: 'Navigate through pages of results',\n enabled: true,\n taskId: 'TASK 45',\n },\n ],\n dependencies: [\n {\n name: 'community-gallery',\n type: 'lib',\n path: 'lib/community-gallery.ts',\n purpose: 'API service for community cubes',\n },\n { name: 'community', type: 'lib', path: 'types/community.ts', purpose: 'Type definitions' },\n ],\n relatedFiles: [\n {\n path: 'components/CommunityGallery.vue.test.ts',\n type: 'test',\n description: 'Unit tests for CommunityGallery',\n },\n {\n path: 'lib/community-gallery.ts',\n type: 'util',\n description: 'Community gallery service',\n },\n { path: 'types/community.ts', type: 'type', description: 'Community types' },\n ],\n props: [\n {\n name: 'onCubeSelect',\n type: '(cube: SpectralCube) => void',\n required: false,\n description: 'Callback when a cube is selected for use',\n },\n {\n name: 'onCubePreview',\n type: '(cube: PublishedCube) => void',\n required: false,\n description: 'Callback to preview a cube details',\n },\n { name: 'className', type: 'string', required: false, description: 'Additional CSS class' },\n ],\n tips: [\n 'Use the search bar to find specific cubes by name or tags',\n 'Click the heart icon to like a cube and save it for later',\n 'Switch between sorting options to discover new and popular cubes',\n 'Filter by category to focus on specific types of materials',\n ],\n tags: ['community', 'gallery', 'social', 'search', 'filter', 'phase-7'],\n status: 'stable',\n lastUpdated: '2026-01-31T00:00:00Z',\n}\n\n// Register metadata in the global registry\nregisterComponentMeta(COMMUNITY_GALLERY_META)\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch } from 'vue'\nimport type { SpectralCube, MaterialType } from '../types/cube'\nimport type {\n PublishedCube,\n CommunityGallerySearchParams,\n CubeCategory,\n CommunitySortOption,\n PaginationMeta,\n} from '../types/community'\nimport { CATEGORY_INFO, SORT_OPTION_INFO, formatCount } from '../types/community'\nimport { communityGalleryService } from '../lib/community-gallery'\n\n// ============================================================================\n// Constants\n// ============================================================================\n\n/** Material types with labels */\nconst MATERIAL_TYPES: { id: MaterialType | 'all'; label: string }[] = [\n { id: 'all', label: 'All Materials' },\n { id: 'stone', label: 'Stone' },\n { id: 'wood', label: 'Wood' },\n { id: 'metal', label: 'Metal' },\n { id: 'glass', label: 'Glass' },\n { id: 'crystal', label: 'Crystal' },\n { id: 'organic', label: 'Organic' },\n { id: 'liquid', label: 'Liquid' },\n]\n\n/** Categories with labels */\nconst CATEGORIES: { id: CubeCategory | 'all'; label: string }[] = [\n { id: 'all', label: 'All Categories' },\n ...Object.entries(CATEGORY_INFO).map(([id, info]) => ({\n id: id as CubeCategory,\n label: info.label,\n })),\n]\n\n/** Sort options with labels */\nconst SORT_OPTIONS: { id: CommunitySortOption; label: string }[] = Object.entries(\n SORT_OPTION_INFO\n).map(([id, info]) => ({\n id: id as CommunitySortOption,\n label: info.label,\n}))\n\n// ============================================================================\n// Props\n// ============================================================================\n\ninterface CommunityGalleryProps {\n /** Custom class name */\n className?: string\n}\n\nwithDefaults(defineProps<CommunityGalleryProps>(), {\n className: '',\n})\n\nconst emit = defineEmits<{\n cubeSelect: [cube: SpectralCube]\n cubePreview: [cube: PublishedCube]\n}>()\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nfunction colorToCSS(color: [number, number, number]): string {\n const r = Math.round(color[0] * 255)\n const g = Math.round(color[1] * 255)\n const b = Math.round(color[2] * 255)\n return `rgb(${r}, ${g}, ${b})`\n}\n\nfunction generateCubeGradient(cube: SpectralCube): string {\n const baseColor = colorToCSS(cube.base.color)\n\n if (!cube.gradients || cube.gradients.length === 0) {\n return baseColor\n }\n\n const gradient = cube.gradients[0]\n const shift = gradient.color_shift\n const endColor = colorToCSS([\n Math.max(0, Math.min(1, cube.base.color[0] + shift[0] * gradient.factor)),\n Math.max(0, Math.min(1, cube.base.color[1] + shift[1] * gradient.factor)),\n Math.max(0, Math.min(1, cube.base.color[2] + shift[2] * gradient.factor)),\n ])\n\n switch (gradient.axis) {\n case 'y':\n return `linear-gradient(to top, ${baseColor}, ${endColor})`\n case 'x':\n return `linear-gradient(to right, ${baseColor}, ${endColor})`\n case 'z':\n return `linear-gradient(135deg, ${baseColor}, ${endColor})`\n case 'radial':\n return `radial-gradient(circle, ${endColor}, ${baseColor})`\n default:\n return baseColor\n }\n}\n\n// ============================================================================\n// State\n// ============================================================================\n\nconst cubes = ref<PublishedCube[]>([])\nconst pagination = ref<PaginationMeta | null>(null)\nconst isLoading = ref(true)\nconst error = ref<string | null>(null)\n\nconst searchQuery = ref('')\nconst selectedCategory = ref<CubeCategory | 'all'>('all')\nconst selectedMaterial = ref<MaterialType | 'all'>('all')\nconst sortBy = ref<CommunitySortOption>('recent')\nconst currentPage = ref(1)\n\n// Build search params from state\nconst searchParams = computed<CommunityGallerySearchParams>(() => ({\n filters: {\n query: searchQuery.value || undefined,\n category: selectedCategory.value !== 'all' ? selectedCategory.value : undefined,\n materialType: selectedMaterial.value !== 'all' ? selectedMaterial.value : undefined,\n },\n sortBy: sortBy.value,\n sortDirection: 'desc',\n page: currentPage.value,\n pageSize: 12,\n}))\n\n// Fetch cubes when params change\nwatch(\n searchParams,\n async (params) => {\n const localCancelled = { value: false }\n\n isLoading.value = true\n error.value = null\n\n try {\n const response = await communityGalleryService.search(params)\n if (!localCancelled.value) {\n cubes.value = response.cubes\n pagination.value = response.pagination\n }\n } catch (err) {\n if (!localCancelled.value) {\n error.value = 'Failed to load community cubes'\n console.error('CommunityGallery fetch error:', err)\n }\n } finally {\n if (!localCancelled.value) {\n isLoading.value = false\n }\n }\n },\n { immediate: true }\n)\n\n// Reset page when filters change\nwatch([searchQuery, selectedCategory, selectedMaterial, sortBy], () => {\n currentPage.value = 1\n})\n\n// Handle cube selection\nfunction handleCubeSelect(pub: PublishedCube) {\n emit('cubeSelect', pub.cube)\n communityGalleryService.recordDownload(pub.id)\n}\n\n// Handle like toggle\nasync function handleLikeToggle(e: Event, cubeId: string) {\n e.stopPropagation()\n\n try {\n const result = await communityGalleryService.toggleLike(cubeId)\n if (result.success) {\n cubes.value = cubes.value.map((cube) =>\n cube.id === cubeId\n ? {\n ...cube,\n isLiked: result.isLiked,\n stats: { ...cube.stats, likes: result.likeCount },\n }\n : cube\n )\n }\n } catch (err) {\n console.error('Failed to toggle like:', err)\n }\n}\n\n// Handle pagination\nfunction handlePageChange(page: number) {\n currentPage.value = page\n window.scrollTo({ top: 0, behavior: 'smooth' })\n}\n\n// Handle keyboard interaction on cube items\nfunction handleCubeKeyDown(e: KeyboardEvent, pub: PublishedCube) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleCubeSelect(pub)\n }\n}\n\n// Pagination pages computation\nconst paginationPages = computed(() => {\n if (!pagination.value || pagination.value.totalPages <= 1) return null\n\n const pages: (number | string)[] = []\n const { currentPage: cp, totalPages } = pagination.value\n\n pages.push(1)\n\n if (cp > 3) {\n pages.push('...')\n }\n\n for (let i = Math.max(2, cp - 1); i <= Math.min(totalPages - 1, cp + 1); i++) {\n if (!pages.includes(i)) {\n pages.push(i)\n }\n }\n\n if (cp < totalPages - 2) {\n pages.push('...')\n }\n\n if (totalPages > 1 && !pages.includes(totalPages)) {\n pages.push(totalPages)\n }\n\n return pages\n})\n</script>\n\n<template>\n <div :class=\"['community-gallery', className]\">\n <!-- Header -->\n <div class=\"community-gallery__header\">\n <h2 class=\"community-gallery__title\">Community Gallery</h2>\n <p class=\"community-gallery__subtitle\">Discover cubes created by the isocubic community</p>\n </div>\n\n <!-- Search and Filters -->\n <div class=\"community-gallery__controls\">\n <!-- Search Input -->\n <div class=\"community-gallery__search\">\n <input\n v-model=\"searchQuery\"\n type=\"text\"\n class=\"community-gallery__search-input\"\n placeholder=\"Search by name, tags, author...\"\n aria-label=\"Search community cubes\"\n />\n <button\n v-if=\"searchQuery\"\n type=\"button\"\n class=\"community-gallery__search-clear\"\n aria-label=\"Clear search\"\n @click=\"searchQuery = ''\"\n >\n ×\n </button>\n </div>\n\n <!-- Filter Controls -->\n <div class=\"community-gallery__filters\">\n <select\n v-model=\"selectedCategory\"\n class=\"community-gallery__select\"\n aria-label=\"Filter by category\"\n >\n <option v-for=\"cat in CATEGORIES\" :key=\"cat.id\" :value=\"cat.id\">\n {{ cat.label }}\n </option>\n </select>\n\n <select\n v-model=\"selectedMaterial\"\n class=\"community-gallery__select\"\n aria-label=\"Filter by material\"\n >\n <option v-for=\"mat in MATERIAL_TYPES\" :key=\"mat.id\" :value=\"mat.id\">\n {{ mat.label }}\n </option>\n </select>\n\n <select v-model=\"sortBy\" class=\"community-gallery__select\" aria-label=\"Sort by\">\n <option v-for=\"opt in SORT_OPTIONS\" :key=\"opt.id\" :value=\"opt.id\">\n {{ opt.label }}\n </option>\n </select>\n </div>\n </div>\n\n <!-- Loading State -->\n <div v-if=\"isLoading\" class=\"community-gallery__loading\">\n <div class=\"community-gallery__spinner\" />\n <span>Loading cubes...</span>\n </div>\n\n <!-- Error State -->\n <div v-if=\"error\" class=\"community-gallery__error\" role=\"alert\">\n {{ error }}\n </div>\n\n <!-- Cube Grid -->\n <template v-if=\"!isLoading && !error\">\n <div class=\"community-gallery__grid\">\n <div v-if=\"cubes.length === 0\" class=\"community-gallery__empty\">\n {{\n searchQuery || selectedCategory !== 'all' || selectedMaterial !== 'all'\n ? 'No cubes match your search criteria'\n : 'No community cubes available yet'\n }}\n </div>\n <div\n v-for=\"pub in cubes\"\n v-else\n :key=\"pub.id\"\n class=\"community-gallery__item\"\n role=\"button\"\n :tabindex=\"0\"\n :aria-label=\"`Select ${pub.cube.meta?.name || pub.cube.id}`\"\n @click=\"handleCubeSelect(pub)\"\n @keydown=\"handleCubeKeyDown($event, pub)\"\n >\n <!-- Badges -->\n <div class=\"community-gallery__badges\">\n <span\n v-if=\"pub.isFeatured\"\n class=\"community-gallery__badge community-gallery__badge--featured\"\n >\n Featured\n </span>\n <span\n v-if=\"pub.isStaffPick\"\n class=\"community-gallery__badge community-gallery__badge--staff\"\n >\n Staff Pick\n </span>\n </div>\n\n <!-- Thumbnail -->\n <div\n class=\"community-gallery__thumbnail\"\n :style=\"{\n background: generateCubeGradient(pub.cube),\n opacity: pub.cube.base.transparency ?? 1,\n }\"\n >\n <div\n v-if=\"pub.cube.noise?.type\"\n :class=\"[\n 'community-gallery__noise-indicator',\n `community-gallery__noise-indicator--${pub.cube.noise.type}`,\n ]\"\n />\n </div>\n\n <!-- Info -->\n <div class=\"community-gallery__item-info\">\n <span class=\"community-gallery__item-name\">\n {{ pub.cube.meta?.name || pub.cube.id }}\n </span>\n <span class=\"community-gallery__item-author\"> by {{ pub.author.displayName }} </span>\n </div>\n\n <!-- Stats -->\n <div class=\"community-gallery__item-stats\">\n <button\n type=\"button\"\n :class=\"[\n 'community-gallery__like-btn',\n { 'community-gallery__like-btn--liked': pub.isLiked },\n ]\"\n :aria-label=\"pub.isLiked ? 'Unlike' : 'Like'\"\n @click=\"handleLikeToggle($event, pub.id)\"\n >\n <span class=\"community-gallery__like-icon\">{{\n pub.isLiked ? '\\u2764\\uFE0F' : '\\U0001F90D'\n }}</span>\n <span class=\"community-gallery__like-count\">{{ formatCount(pub.stats.likes) }}</span>\n </button>\n <span class=\"community-gallery__views\">\n \\uD83D\\uDC41 {{ formatCount(pub.stats.views) }}\n </span>\n <span class=\"community-gallery__downloads\">\n \\u2B07 {{ formatCount(pub.stats.downloads) }}\n </span>\n </div>\n\n <!-- Tags -->\n <div\n v-if=\"pub.cube.meta?.tags && pub.cube.meta.tags.length > 0\"\n class=\"community-gallery__item-tags\"\n >\n <span\n v-for=\"tag in pub.cube.meta.tags.slice(0, 3)\"\n :key=\"tag\"\n class=\"community-gallery__item-tag\"\n >\n {{ tag }}\n </span>\n <span\n v-if=\"pub.cube.meta.tags.length > 3\"\n class=\"community-gallery__item-tag community-gallery__item-tag--more\"\n >\n +{{ pub.cube.meta.tags.length - 3 }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Pagination -->\n <div v-if=\"paginationPages\" class=\"community-gallery__pagination\">\n <button\n type=\"button\"\n class=\"community-gallery__page-btn\"\n :disabled=\"!pagination?.hasPrevPage\"\n aria-label=\"Previous page\"\n @click=\"handlePageChange(currentPage - 1)\"\n >\n &lt;\n </button>\n\n <template\n v-for=\"(page, index) in paginationPages\"\n :key=\"typeof page === 'number' ? page : `ellipsis-${index}`\"\n >\n <button\n v-if=\"typeof page === 'number'\"\n type=\"button\"\n :class=\"[\n 'community-gallery__page-btn',\n { 'community-gallery__page-btn--active': page === currentPage },\n ]\"\n @click=\"handlePageChange(page)\"\n >\n {{ page }}\n </button>\n <span v-else class=\"community-gallery__ellipsis\">{{ page }}</span>\n </template>\n\n <button\n type=\"button\"\n class=\"community-gallery__page-btn\"\n :disabled=\"!pagination?.hasNextPage\"\n aria-label=\"Next page\"\n @click=\"handlePageChange(currentPage + 1)\"\n >\n &gt;\n </button>\n </div>\n\n <!-- Results Count -->\n <div v-if=\"pagination\" class=\"community-gallery__footer\">\n <span class=\"community-gallery__count\">\n Showing {{ cubes.length }} of {{ pagination.totalItems }} cubes\n <template v-if=\"pagination.totalPages > 1\">\n (Page {{ pagination.currentPage }} of {{ pagination.totalPages }})\n </template>\n </span>\n </div>\n </template>\n </div>\n</template>\n",
"numLines": 619,
"startLine": 1,
"totalLines": 619
}
}
}
[2026-02-06T17:23:01.998Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_017uKj55dYSs6MVdYr6CwhBx",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "I found the root cause. Let me now read the CSS styles part of this file and also the community types."
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 7687,
"cache_read_input_tokens": 37440,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 7687
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "c9c96d2c-fd67-444a-a420-abe7c2468b54"
}
[2026-02-06T17:23:03.313Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_017uKj55dYSs6MVdYr6CwhBx",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_0171kSUno5RYXzbfTKWcZ6nV",
"name": "Bash",
"input": {
"command": "wc -l /tmp/gh-issue-solver-1770398441546/src/components/CommunityGallery.vue",
"description": "Count lines in CommunityGallery.vue"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 7687,
"cache_read_input_tokens": 37440,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 7687
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "114a988f-c424-48a1-9d7b-386584cdf19e"
}
[2026-02-06T17:23:03.399Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_0171kSUno5RYXzbfTKWcZ6nV",
"type": "tool_result",
"content": "618 /tmp/gh-issue-solver-1770398441546/src/components/CommunityGallery.vue",
"is_error": false
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "d832b2eb-cae2-4f24-b15e-b7d2d6cbef62",
"tool_use_result": {
"stdout": "618 /tmp/gh-issue-solver-1770398441546/src/components/CommunityGallery.vue",
"stderr": "",
"interrupted": false,
"isImage": false
}
}
[2026-02-06T17:23:06.595Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_019rLrBvmJvm7q7u5esJvi9X",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "The file is 618 lines and the template ends at line 618 with no `<style>` section. Let me check if there are separate CSS files."
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 174,
"cache_read_input_tokens": 45127,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 174
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "5fb33872-e5f3-434c-ab79-71761be222b1"
}
[2026-02-06T17:23:07.322Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_019rLrBvmJvm7q7u5esJvi9X",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01YAbyp4eFwV735nEkZ69EDW",
"name": "Glob",
"input": {
"pattern": "src/**/*community*",
"path": "/tmp/gh-issue-solver-1770398441546"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 174,
"cache_read_input_tokens": 45127,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 174
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "b89271e4-b1d8-47aa-966b-9e041919a89a"
}
[2026-02-06T17:23:07.618Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01YAbyp4eFwV735nEkZ69EDW",
"type": "tool_result",
"content": "/tmp/gh-issue-solver-1770398441546/src/lib/community-gallery.ts\n/tmp/gh-issue-solver-1770398441546/src/lib/community-gallery.test.ts\n/tmp/gh-issue-solver-1770398441546/src/types/community.test.ts\n/tmp/gh-issue-solver-1770398441546/src/types/community.ts"
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "ba3490f4-d18b-47c9-80ff-325ffa74f5bc",
"tool_use_result": {
"filenames": [
"/tmp/gh-issue-solver-1770398441546/src/lib/community-gallery.ts",
"/tmp/gh-issue-solver-1770398441546/src/lib/community-gallery.test.ts",
"/tmp/gh-issue-solver-1770398441546/src/types/community.test.ts",
"/tmp/gh-issue-solver-1770398441546/src/types/community.ts"
],
"durationMs": 20,
"numFiles": 4,
"truncated": false
}
}
[2026-02-06T17:23:07.847Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_019rLrBvmJvm7q7u5esJvi9X",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01MxDJP4ui2vaYhWvFb5qYMA",
"name": "Glob",
"input": {
"pattern": "src/**/*.css",
"path": "/tmp/gh-issue-solver-1770398441546"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 174,
"cache_read_input_tokens": 45127,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 174
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "1e59ac7b-993d-496a-a32f-7cde7f88da9c"
}
[2026-02-06T17:23:07.868Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01MxDJP4ui2vaYhWvFb5qYMA",
"type": "tool_result",
"content": "/tmp/gh-issue-solver-1770398441546/src/App.css\n/tmp/gh-issue-solver-1770398441546/src/index.css"
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "ee854749-b1b4-4889-8ce9-a1fbd5078108",
"tool_use_result": {
"filenames": [
"/tmp/gh-issue-solver-1770398441546/src/App.css",
"/tmp/gh-issue-solver-1770398441546/src/index.css"
],
"durationMs": 18,
"numFiles": 2,
"truncated": false
}
}
[2026-02-06T17:23:11.140Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_014rupcw2Q9rP48wAjzePMM3",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01Xf3FnkX6w6Q5uZH9pf9oKU",
"name": "Grep",
"input": {
"pattern": "community-gallery",
"path": "/tmp/gh-issue-solver-1770398441546/src/App.css",
"output_mode": "count"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 389,
"cache_read_input_tokens": 45301,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 389
},
"output_tokens": 26,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "453fe0b0-0b39-4a61-99ca-d0e218db8cb4"
}
[2026-02-06T17:23:11.182Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01Xf3FnkX6w6Q5uZH9pf9oKU",
"type": "tool_result",
"content": "No matches found\n\nFound 0 total occurrences across 0 files."
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "6ce66595-a1a8-4c6a-a919-5bf07183c538",
"tool_use_result": {
"mode": "count",
"numFiles": 0,
"filenames": [],
"content": "",
"numMatches": 0
}
}
[2026-02-06T17:23:11.685Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_014rupcw2Q9rP48wAjzePMM3",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01J3gSkjM1zSgA58BawwKPDo",
"name": "Grep",
"input": {
"pattern": "community-gallery",
"path": "/tmp/gh-issue-solver-1770398441546/src/index.css",
"output_mode": "count"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 389,
"cache_read_input_tokens": 45301,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 389
},
"output_tokens": 26,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "8ccaa4fb-16f0-4421-882e-dcb3df1b0c3e"
}
[2026-02-06T17:23:11.720Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01J3gSkjM1zSgA58BawwKPDo",
"type": "tool_result",
"content": "No matches found\n\nFound 0 total occurrences across 0 files."
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "a8a79390-ee54-45c7-84ac-0e38ab01bf5a",
"tool_use_result": {
"mode": "count",
"numFiles": 0,
"filenames": [],
"content": "",
"numMatches": 0
}
}
[2026-02-06T17:23:15.134Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_012Gorvb35ftYmRHZkG1iWy1",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "So there are NO CSS styles for the `community-gallery` component at all! That explains why the gallery is rendering as plain unstyled text. Let me also look at the specific problems I identified in the template:"
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 296,
"cache_read_input_tokens": 45690,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 296
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "e3019106-330b-43ed-aa8b-9ba282a16df1"
}
[2026-02-06T17:23:20.242Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_012Gorvb35ftYmRHZkG1iWy1",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_016LJRWM8JvdvEp9FN6UJqiP",
"name": "TodoWrite",
"input": {
"todos": [
{
"content": "Read and analyze the issue screenshot and understand the problems",
"status": "completed",
"activeForm": "Analyzing the issue screenshot"
},
{
"content": "Read App.vue social tab section to understand the mobile tab rendering",
"status": "completed",
"activeForm": "Reading App.vue social tab section"
},
{
"content": "Read CommunityGallery.vue component for rendering issues",
"status": "completed",
"activeForm": "Reading CommunityGallery.vue component"
},
{
"content": "Read community-gallery.ts for mock data and emoji handling",
"status": "pending",
"activeForm": "Reading community-gallery.ts"
},
{
"content": "Identify root cause of emoji/Unicode rendering issues",
"status": "in_progress",
"activeForm": "Identifying root cause of rendering issues"
},
{
"content": "Fix the rendering issues in the Social tab",
"status": "pending",
"activeForm": "Fixing rendering issues"
},
{
"content": "Run local CI checks and tests",
"status": "pending",
"activeForm": "Running local CI checks"
},
{
"content": "Commit and push fixes",
"status": "pending",
"activeForm": "Committing and pushing fixes"
},
{
"content": "Update PR description and finalize",
"status": "pending",
"activeForm": "Updating PR description"
}
]
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 296,
"cache_read_input_tokens": 45690,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 296
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "f34f3424-6a26-47b2-bb9c-f43a2199306e"
}
[2026-02-06T17:23:20.244Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_016LJRWM8JvdvEp9FN6UJqiP",
"type": "tool_result",
"content": "Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable"
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "362920b0-7ba0-4aa0-8034-a4f6066a9177",
"tool_use_result": {
"oldTodos": [
{
"content": "Read and analyze the issue screenshot and understand the problems",
"status": "completed",
"activeForm": "Analyzing the issue screenshot"
},
{
"content": "Read App.vue social tab section to understand the mobile tab rendering",
"status": "completed",
"activeForm": "Reading App.vue social tab section"
},
{
"content": "Read CommunityGallery.vue component for rendering issues",
"status": "in_progress",
"activeForm": "Reading CommunityGallery.vue component"
},
{
"content": "Read community-gallery.ts for mock data and emoji handling",
"status": "pending",
"activeForm": "Reading community-gallery.ts"
},
{
"content": "Identify root cause of emoji/Unicode rendering issues",
"status": "pending",
"activeForm": "Identifying root cause of rendering issues"
},
{
"content": "Fix the rendering issues in the Social tab",
"status": "pending",
"activeForm": "Fixing rendering issues"
},
{
"content": "Run local CI checks and tests",
"status": "pending",
"activeForm": "Running local CI checks"
},
{
"content": "Commit and push fixes",
"status": "pending",
"activeForm": "Committing and pushing fixes"
},
{
"content": "Update PR description and finalize",
"status": "pending",
"activeForm": "Updating PR description"
}
],
"newTodos": [
{
"content": "Read and analyze the issue screenshot and understand the problems",
"status": "completed",
"activeForm": "Analyzing the issue screenshot"
},
{
"content": "Read App.vue social tab section to understand the mobile tab rendering",
"status": "completed",
"activeForm": "Reading App.vue social tab section"
},
{
"content": "Read CommunityGallery.vue component for rendering issues",
"status": "completed",
"activeForm": "Reading CommunityGallery.vue component"
},
{
"content": "Read community-gallery.ts for mock data and emoji handling",
"status": "pending",
"activeForm": "Reading community-gallery.ts"
},
{
"content": "Identify root cause of emoji/Unicode rendering issues",
"status": "in_progress",
"activeForm": "Identifying root cause of rendering issues"
},
{
"content": "Fix the rendering issues in the Social tab",
"status": "pending",
"activeForm": "Fixing rendering issues"
},
{
"content": "Run local CI checks and tests",
"status": "pending",
"activeForm": "Running local CI checks"
},
{
"content": "Commit and push fixes",
"status": "pending",
"activeForm": "Committing and pushing fixes"
},
{
"content": "Update PR description and finalize",
"status": "pending",
"activeForm": "Updating PR description"
}
]
}
}
[2026-02-06T17:23:31.497Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01NZdNSvDtnLpvFXvY5HXhLv",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Now I've identified the root causes. Let me examine them closely:\n\n**Problem 1: Broken Unicode escape sequences in template**\n\nLooking at lines 531-541 of `CommunityGallery.vue`:\n\n```vue\n<!-- Line 532: Invalid \\U escape (should be lowercase \\u for Vue templates or actual emoji) -->\npub.isLiked ? '\\u2764\\uFE0F' : '\\U0001F90D'\n\n<!-- Line 537: Unicode escapes used as raw text in template (NOT inside JS expressions) -->\n\\uD83D\\uDC41 {{ formatCount(pub.stats.views) }}\n\n<!-- Line 540: Same issue -->\n\\u2B07 {{ formatCount(pub.stats.downloads) }}\n```\n\nThe problems are:\n1. **`\\U0001F90D`** on line 532 — uses uppercase `\\U` which is NOT a valid JavaScript Unicode escape. Should be `\\u{1F90D}` (ES6 Unicode code point escape) or the actual emoji character 🤍\n2. **`\\uD83D\\uDC41`** on line 537 — This is a surrogate pair used as **raw text content** in the template HTML (not inside `{{ }}`), so it will literally display as the text `\\uD83D\\uDC41` instead of being interpreted as emoji 👁\n3. **`\\u2B07`** on line 540 — Same issue, literal text in HTML template instead of the actual character ⬇\n\n**Problem 2: No CSS styles** — The CommunityGallery component has no `<style>` section, so the gallery grid, thumbnails, badges, stats etc. all render as plain unstyled text.\n\nLet me also check other gallery components for styling reference."
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 440,
"cache_read_input_tokens": 45986,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 440
},
"output_tokens": 2,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "03786b69-e7f9-4f74-9abd-28fe1b4a624b"
}
[2026-02-06T17:23:36.387Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01NZdNSvDtnLpvFXvY5HXhLv",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"name": "Task",
"input": {
"description": "Find gallery CSS patterns",
"prompt": "In the codebase at /tmp/gh-issue-solver-1770398441546, I need to understand how other similar components are styled. Please:\n\n1. Read src/components/Gallery.vue - look at its complete style section to understand the styling patterns used\n2. Check if Gallery.vue uses scoped styles or a <style> block\n3. Search for any CSS files that might contain gallery-related styles (App.css, index.css)\n4. Read the App.css file to see general styling patterns (like mobile-panel, grid layouts)\n5. Check src/components/SharePanel.vue and NotificationPanel.vue for their style sections too\n\nI want to understand the CSS conventions and patterns used in this project so I can add proper styles to CommunityGallery.vue.",
"subagent_type": "Explore"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 440,
"cache_read_input_tokens": 45986,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 440
},
"output_tokens": 2,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "9ecb80ea-7b25-40f2-8979-b70ca8f93adb"
}
[2026-02-06T17:23:36.395Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"type": "text",
"text": "In the codebase at /tmp/gh-issue-solver-1770398441546, I need to understand how other similar components are styled. Please:\n\n1. Read src/components/Gallery.vue - look at its complete style section to understand the styling patterns used\n2. Check if Gallery.vue uses scoped styles or a <style> block\n3. Search for any CSS files that might contain gallery-related styles (App.css, index.css)\n4. Read the App.css file to see general styling patterns (like mobile-panel, grid layouts)\n5. Check src/components/SharePanel.vue and NotificationPanel.vue for their style sections too\n\nI want to understand the CSS conventions and patterns used in this project so I can add proper styles to CommunityGallery.vue."
}
]
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "caa589fb-c386-454c-8126-88715e7050ef"
}
[2026-02-06T17:23:36.859Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-opus-4-6",
"id": "msg_01NZdNSvDtnLpvFXvY5HXhLv",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_015G44NqK24yaeoe7sdGt78J",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/types/community.ts"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 1,
"cache_creation_input_tokens": 440,
"cache_read_input_tokens": 45986,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 440
},
"output_tokens": 2,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "c4c5c766-e58a-407a-a2a8-18f1e5d4b34b"
}
[2026-02-06T17:23:36.873Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_015G44NqK24yaeoe7sdGt78J",
"type": "tool_result",
"content": " 1→/**\n 2→ * TypeScript types for Community Gallery feature (TASK 45)\n 3→ * Defines types for published cubes, user interactions, and gallery operations\n 4→ *\n 5→ * This module provides types for:\n 6→ * - Published cubes with author information and metadata\n 7→ * - Social features (likes, views, comments)\n 8→ * - Search and filtering parameters\n 9→ * - Sorting options\n 10→ * - API response types\n 11→ */\n 12→\n 13→import type { SpectralCube, MaterialType } from './cube'\n 14→// Note: UserProfile is intentionally not imported here as it's used by the service, not the types\n 15→\n 16→// ============================================================================\n 17→// Published Cube Types\n 18→// ============================================================================\n 19→\n 20→/**\n 21→ * Status of a published cube\n 22→ */\n 23→export type PublishedCubeStatus = 'published' | 'draft' | 'under_review' | 'rejected'\n 24→\n 25→/**\n 26→ * Visibility level for published cubes\n 27→ */\n 28→export type CubeVisibility = 'public' | 'unlisted' | 'private'\n 29→\n 30→/**\n 31→ * Cube category for community organization\n 32→ */\n 33→export type CubeCategory =\n 34→ | 'nature' // grass, stone, wood, etc.\n 35→ | 'building' // brick, concrete, tiles, etc.\n 36→ | 'fantasy' // magical, crystal, energy, etc.\n 37→ | 'industrial' // metal, rust, pipes, etc.\n 38→ | 'organic' // flesh, plants, creatures, etc.\n 39→ | 'abstract' // patterns, gradients, artistic\n 40→ | 'other' // uncategorized\n 41→\n 42→/**\n 43→ * Compact author information for published cubes\n 44→ */\n 45→export interface CubeAuthor {\n 46→ /** User ID */\n 47→ id: string\n 48→ /** Display name */\n 49→ displayName: string\n 50→ /** Avatar URL */\n 51→ avatarUrl?: string\n 52→}\n 53→\n 54→/**\n 55→ * Statistics for a published cube\n 56→ */\n 57→export interface CubeStats {\n 58→ /** Number of views */\n 59→ views: number\n 60→ /** Number of likes */\n 61→ likes: number\n 62→ /** Number of downloads/uses */\n 63→ downloads: number\n 64→ /** Number of comments */\n 65→ comments: number\n 66→}\n 67→\n 68→/**\n 69→ * A cube published to the community gallery\n 70→ */\n 71→export interface PublishedCube {\n 72→ /** Unique identifier for the published cube */\n 73→ id: string\n 74→ /** The actual cube configuration */\n 75→ cube: SpectralCube\n 76→ /** Author information */\n 77→ author: CubeAuthor\n 78→ /** Publication status */\n 79→ status: PublishedCubeStatus\n 80→ /** Visibility level */\n 81→ visibility: CubeVisibility\n 82→ /** Category for organization */\n 83→ category: CubeCategory\n 84→ /** Community statistics */\n 85→ stats: CubeStats\n 86→ /** Whether the current user has liked this cube */\n 87→ isLiked?: boolean\n 88→ /** Publication timestamp (ISO 8601) */\n 89→ publishedAt: string\n 90→ /** Last update timestamp (ISO 8601) */\n 91→ updatedAt: string\n 92→ /** Featured on home page */\n 93→ isFeatured?: boolean\n 94→ /** Staff pick badge */\n 95→ isStaffPick?: boolean\n 96→}\n 97→\n 98→// ============================================================================\n 99→// Search and Filter Types\n 100→// ============================================================================\n 101→\n 102→/**\n 103→ * Sorting options for community gallery\n 104→ */\n 105→export type CommunitySortOption =\n 106→ | 'recent' // Most recently published\n 107→ | 'popular' // Most liked\n 108→ | 'trending' // Popular in last 7 days\n 109→ | 'downloads' // Most downloaded\n 110→ | 'views' // Most viewed\n 111→ | 'alphabetical' // A-Z by name\n 112→\n 113→/**\n 114→ * Time range filter\n 115→ */\n 116→export type TimeRangeFilter = 'all' | 'today' | 'week' | 'month' | 'year'\n 117→\n 118→/**\n 119→ * Search and filter parameters for community gallery\n 120→ */\n 121→export interface CommunityGalleryFilters {\n 122→ /** Text search query */\n 123→ query?: string\n 124→ /** Filter by material type */\n 125→ materialType?: MaterialType | 'all'\n 126→ /** Filter by category */\n 127→ category?: CubeCategory | 'all'\n 128→ /** Filter by author ID */\n 129→ authorId?: string\n 130→ /** Time range filter */\n 131→ timeRange?: TimeRangeFilter\n 132→ /** Show only featured cubes */\n 133→ featuredOnly?: boolean\n 134→ /** Show only staff picks */\n 135→ staffPicksOnly?: boolean\n 136→ /** Filter by tags */\n 137→ tags?: string[]\n 138→}\n 139→\n 140→/**\n 141→ * Complete search parameters including pagination and sorting\n 142→ */\n 143→export interface CommunityGallerySearchParams {\n 144→ /** Filter parameters */\n 145→ filters: CommunityGalleryFilters\n 146→ /** Sort option */\n 147→ sortBy: CommunitySortOption\n 148→ /** Sort direction */\n 149→ sortDirection?: 'asc' | 'desc'\n 150→ /** Page number (1-indexed) */\n 151→ page: number\n 152→ /** Items per page */\n 153→ pageSize: number\n 154→}\n 155→\n 156→// ============================================================================\n 157→// API Response Types\n 158→// ============================================================================\n 159→\n 160→/**\n 161→ * Pagination metadata\n 162→ */\n 163→export interface PaginationMeta {\n 164→ /** Current page number (1-indexed) */\n 165→ currentPage: number\n 166→ /** Total number of pages */\n 167→ totalPages: number\n 168→ /** Total number of items */\n 169→ totalItems: number\n 170→ /** Items per page */\n 171→ pageSize: number\n 172→ /** Whether there's a next page */\n 173→ hasNextPage: boolean\n 174→ /** Whether there's a previous page */\n 175→ hasPrevPage: boolean\n 176→}\n 177→\n 178→/**\n 179→ * Paginated response for community gallery\n 180→ */\n 181→export interface CommunityGalleryResponse {\n 182→ /** Array of published cubes */\n 183→ cubes: PublishedCube[]\n 184→ /** Pagination information */\n 185→ pagination: PaginationMeta\n 186→ /** Search/filter parameters used */\n 187→ params: CommunityGallerySearchParams\n 188→}\n 189→\n 190→/**\n 191→ * Result of a single cube operation\n 192→ */\n 193→export interface CubeOperationResult {\n 194→ /** Whether the operation succeeded */\n 195→ success: boolean\n 196→ /** Error message if failed */\n 197→ error?: string\n 198→ /** The affected cube (if applicable) */\n 199→ cube?: PublishedCube\n 200→}\n 201→\n 202→// ============================================================================\n 203→// User Interaction Types\n 204→// ============================================================================\n 205→\n 206→/**\n 207→ * Like/unlike action result\n 208→ */\n 209→export interface LikeResult {\n 210→ /** Whether the operation succeeded */\n 211→ success: boolean\n 212→ /** New like state */\n 213→ isLiked: boolean\n 214→ /** Updated like count */\n 215→ likeCount: number\n 216→}\n 217→\n 218→/**\n 219→ * Comment on a published cube\n 220→ */\n 221→export interface CubeComment {\n 222→ /** Comment ID */\n 223→ id: string\n 224→ /** Cube ID this comment belongs to */\n 225→ cubeId: string\n 226→ /** Author information */\n 227→ author: CubeAuthor\n 228→ /** Comment text content */\n 229→ content: string\n 230→ /** Comment creation timestamp */\n 231→ createdAt: string\n 232→ /** Whether this is edited */\n 233→ isEdited?: boolean\n 234→ /** Edit timestamp (if edited) */\n 235→ editedAt?: string\n 236→ /** Number of likes on the comment */\n 237→ likes: number\n 238→ /** Whether current user liked this comment */\n 239→ isLiked?: boolean\n 240→}\n 241→\n 242→/**\n 243→ * Request to publish a cube\n 244→ */\n 245→export interface PublishCubeRequest {\n 246→ /** The cube to publish */\n 247→ cube: SpectralCube\n 248→ /** Visibility level */\n 249→ visibility: CubeVisibility\n 250→ /** Category for organization */\n 251→ category: CubeCategory\n 252→ /** Additional tags */\n 253→ tags?: string[]\n 254→}\n 255→\n 256→// ============================================================================\n 257→// Default Values and Constants\n 258→// ============================================================================\n 259→\n 260→/**\n 261→ * Default search parameters\n 262→ */\n 263→export const DEFAULT_SEARCH_PARAMS: CommunityGallerySearchParams = {\n 264→ filters: {\n 265→ materialType: 'all',\n 266→ category: 'all',\n 267→ timeRange: 'all',\n 268→ featuredOnly: false,\n 269→ staffPicksOnly: false,\n 270→ },\n 271→ sortBy: 'recent',\n 272→ sortDirection: 'desc',\n 273→ page: 1,\n 274→ pageSize: 20,\n 275→}\n 276→\n 277→/**\n 278→ * Default cube stats for new publications\n 279→ */\n 280→export const DEFAULT_CUBE_STATS: CubeStats = {\n 281→ views: 0,\n 282→ likes: 0,\n 283→ downloads: 0,\n 284→ comments: 0,\n 285→}\n 286→\n 287→/**\n 288→ * Category display information\n 289→ */\n 290→export const CATEGORY_INFO: Record<CubeCategory, { label: string; description: string }> = {\n 291→ nature: { label: 'Nature', description: 'Natural materials like stone, wood, grass' },\n 292→ building: { label: 'Building', description: 'Construction materials like brick, concrete' },\n 293→ fantasy: { label: 'Fantasy', description: 'Magical and energy-based materials' },\n 294→ industrial: { label: 'Industrial', description: 'Metal, rust, and mechanical textures' },\n 295→ organic: { label: 'Organic', description: 'Living materials and creatures' },\n 296→ abstract: { label: 'Abstract', description: 'Artistic patterns and gradients' },\n 297→ other: { label: 'Other', description: 'Uncategorized cubes' },\n 298→}\n 299→\n 300→/**\n 301→ * Sort option display information\n 302→ */\n 303→export const SORT_OPTION_INFO: Record<CommunitySortOption, { label: string; description: string }> =\n 304→ {\n 305→ recent: { label: 'Most Recent', description: 'Newest first' },\n 306→ popular: { label: 'Most Popular', description: 'Most liked' },\n 307→ trending: { label: 'Trending', description: 'Popular this week' },\n 308→ downloads: { label: 'Most Downloaded', description: 'Most used' },\n 309→ views: { label: 'Most Viewed', description: 'Most seen' },\n 310→ alphabetical: { label: 'A-Z', description: 'Alphabetical order' },\n 311→ }\n 312→\n 313→/**\n 314→ * Storage keys for community gallery\n 315→ */\n 316→export const COMMUNITY_STORAGE_KEYS = {\n 317→ LIKED_CUBES: 'isocubic_community_liked',\n 318→ RECENT_SEARCHES: 'isocubic_community_recent_searches',\n 319→ VIEW_PREFERENCES: 'isocubic_community_view_prefs',\n 320→} as const\n 321→\n 322→// ============================================================================\n 323→// Validation Helpers\n 324→// ============================================================================\n 325→\n 326→/**\n 327→ * Validates a cube category\n 328→ */\n 329→export function isValidCategory(category: string): category is CubeCategory {\n 330→ return Object.keys(CATEGORY_INFO).includes(category)\n 331→}\n 332→\n 333→/**\n 334→ * Validates a sort option\n 335→ */\n 336→export function isValidSortOption(option: string): option is CommunitySortOption {\n 337→ return Object.keys(SORT_OPTION_INFO).includes(option)\n 338→}\n 339→\n 340→/**\n 341→ * Maps material type to suggested category\n 342→ */\n 343→export function suggestCategory(materialType: MaterialType | undefined): CubeCategory {\n 344→ if (!materialType) return 'other'\n 345→\n 346→ const mapping: Record<MaterialType, CubeCategory> = {\n 347→ stone: 'nature',\n 348→ wood: 'nature',\n 349→ metal: 'industrial',\n 350→ glass: 'building',\n 351→ organic: 'organic',\n 352→ crystal: 'fantasy',\n 353→ liquid: 'nature',\n 354→ }\n 355→\n 356→ return mapping[materialType] || 'other'\n 357→}\n 358→\n 359→/**\n 360→ * Formats a number for display (e.g., 1500 -> \"1.5K\")\n 361→ */\n 362→export function formatCount(count: number): string {\n 363→ if (count < 1000) return count.toString()\n 364→ if (count < 1000000) return `${(count / 1000).toFixed(1)}K`\n 365→ return `${(count / 1000000).toFixed(1)}M`\n 366→}\n 367→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": null,
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "03ee5977-1d54-44ff-ad53-3a169d522d61",
"tool_use_result": {
"type": "text",
"file": {
"filePath": "/tmp/gh-issue-solver-1770398441546/src/types/community.ts",
"content": "/**\n * TypeScript types for Community Gallery feature (TASK 45)\n * Defines types for published cubes, user interactions, and gallery operations\n *\n * This module provides types for:\n * - Published cubes with author information and metadata\n * - Social features (likes, views, comments)\n * - Search and filtering parameters\n * - Sorting options\n * - API response types\n */\n\nimport type { SpectralCube, MaterialType } from './cube'\n// Note: UserProfile is intentionally not imported here as it's used by the service, not the types\n\n// ============================================================================\n// Published Cube Types\n// ============================================================================\n\n/**\n * Status of a published cube\n */\nexport type PublishedCubeStatus = 'published' | 'draft' | 'under_review' | 'rejected'\n\n/**\n * Visibility level for published cubes\n */\nexport type CubeVisibility = 'public' | 'unlisted' | 'private'\n\n/**\n * Cube category for community organization\n */\nexport type CubeCategory =\n | 'nature' // grass, stone, wood, etc.\n | 'building' // brick, concrete, tiles, etc.\n | 'fantasy' // magical, crystal, energy, etc.\n | 'industrial' // metal, rust, pipes, etc.\n | 'organic' // flesh, plants, creatures, etc.\n | 'abstract' // patterns, gradients, artistic\n | 'other' // uncategorized\n\n/**\n * Compact author information for published cubes\n */\nexport interface CubeAuthor {\n /** User ID */\n id: string\n /** Display name */\n displayName: string\n /** Avatar URL */\n avatarUrl?: string\n}\n\n/**\n * Statistics for a published cube\n */\nexport interface CubeStats {\n /** Number of views */\n views: number\n /** Number of likes */\n likes: number\n /** Number of downloads/uses */\n downloads: number\n /** Number of comments */\n comments: number\n}\n\n/**\n * A cube published to the community gallery\n */\nexport interface PublishedCube {\n /** Unique identifier for the published cube */\n id: string\n /** The actual cube configuration */\n cube: SpectralCube\n /** Author information */\n author: CubeAuthor\n /** Publication status */\n status: PublishedCubeStatus\n /** Visibility level */\n visibility: CubeVisibility\n /** Category for organization */\n category: CubeCategory\n /** Community statistics */\n stats: CubeStats\n /** Whether the current user has liked this cube */\n isLiked?: boolean\n /** Publication timestamp (ISO 8601) */\n publishedAt: string\n /** Last update timestamp (ISO 8601) */\n updatedAt: string\n /** Featured on home page */\n isFeatured?: boolean\n /** Staff pick badge */\n isStaffPick?: boolean\n}\n\n// ============================================================================\n// Search and Filter Types\n// ============================================================================\n\n/**\n * Sorting options for community gallery\n */\nexport type CommunitySortOption =\n | 'recent' // Most recently published\n | 'popular' // Most liked\n | 'trending' // Popular in last 7 days\n | 'downloads' // Most downloaded\n | 'views' // Most viewed\n | 'alphabetical' // A-Z by name\n\n/**\n * Time range filter\n */\nexport type TimeRangeFilter = 'all' | 'today' | 'week' | 'month' | 'year'\n\n/**\n * Search and filter parameters for community gallery\n */\nexport interface CommunityGalleryFilters {\n /** Text search query */\n query?: string\n /** Filter by material type */\n materialType?: MaterialType | 'all'\n /** Filter by category */\n category?: CubeCategory | 'all'\n /** Filter by author ID */\n authorId?: string\n /** Time range filter */\n timeRange?: TimeRangeFilter\n /** Show only featured cubes */\n featuredOnly?: boolean\n /** Show only staff picks */\n staffPicksOnly?: boolean\n /** Filter by tags */\n tags?: string[]\n}\n\n/**\n * Complete search parameters including pagination and sorting\n */\nexport interface CommunityGallerySearchParams {\n /** Filter parameters */\n filters: CommunityGalleryFilters\n /** Sort option */\n sortBy: CommunitySortOption\n /** Sort direction */\n sortDirection?: 'asc' | 'desc'\n /** Page number (1-indexed) */\n page: number\n /** Items per page */\n pageSize: number\n}\n\n// ============================================================================\n// API Response Types\n// ============================================================================\n\n/**\n * Pagination metadata\n */\nexport interface PaginationMeta {\n /** Current page number (1-indexed) */\n currentPage: number\n /** Total number of pages */\n totalPages: number\n /** Total number of items */\n totalItems: number\n /** Items per page */\n pageSize: number\n /** Whether there's a next page */\n hasNextPage: boolean\n /** Whether there's a previous page */\n hasPrevPage: boolean\n}\n\n/**\n * Paginated response for community gallery\n */\nexport interface CommunityGalleryResponse {\n /** Array of published cubes */\n cubes: PublishedCube[]\n /** Pagination information */\n pagination: PaginationMeta\n /** Search/filter parameters used */\n params: CommunityGallerySearchParams\n}\n\n/**\n * Result of a single cube operation\n */\nexport interface CubeOperationResult {\n /** Whether the operation succeeded */\n success: boolean\n /** Error message if failed */\n error?: string\n /** The affected cube (if applicable) */\n cube?: PublishedCube\n}\n\n// ============================================================================\n// User Interaction Types\n// ============================================================================\n\n/**\n * Like/unlike action result\n */\nexport interface LikeResult {\n /** Whether the operation succeeded */\n success: boolean\n /** New like state */\n isLiked: boolean\n /** Updated like count */\n likeCount: number\n}\n\n/**\n * Comment on a published cube\n */\nexport interface CubeComment {\n /** Comment ID */\n id: string\n /** Cube ID this comment belongs to */\n cubeId: string\n /** Author information */\n author: CubeAuthor\n /** Comment text content */\n content: string\n /** Comment creation timestamp */\n createdAt: string\n /** Whether this is edited */\n isEdited?: boolean\n /** Edit timestamp (if edited) */\n editedAt?: string\n /** Number of likes on the comment */\n likes: number\n /** Whether current user liked this comment */\n isLiked?: boolean\n}\n\n/**\n * Request to publish a cube\n */\nexport interface PublishCubeRequest {\n /** The cube to publish */\n cube: SpectralCube\n /** Visibility level */\n visibility: CubeVisibility\n /** Category for organization */\n category: CubeCategory\n /** Additional tags */\n tags?: string[]\n}\n\n// ============================================================================\n// Default Values and Constants\n// ============================================================================\n\n/**\n * Default search parameters\n */\nexport const DEFAULT_SEARCH_PARAMS: CommunityGallerySearchParams = {\n filters: {\n materialType: 'all',\n category: 'all',\n timeRange: 'all',\n featuredOnly: false,\n staffPicksOnly: false,\n },\n sortBy: 'recent',\n sortDirection: 'desc',\n page: 1,\n pageSize: 20,\n}\n\n/**\n * Default cube stats for new publications\n */\nexport const DEFAULT_CUBE_STATS: CubeStats = {\n views: 0,\n likes: 0,\n downloads: 0,\n comments: 0,\n}\n\n/**\n * Category display information\n */\nexport const CATEGORY_INFO: Record<CubeCategory, { label: string; description: string }> = {\n nature: { label: 'Nature', description: 'Natural materials like stone, wood, grass' },\n building: { label: 'Building', description: 'Construction materials like brick, concrete' },\n fantasy: { label: 'Fantasy', description: 'Magical and energy-based materials' },\n industrial: { label: 'Industrial', description: 'Metal, rust, and mechanical textures' },\n organic: { label: 'Organic', description: 'Living materials and creatures' },\n abstract: { label: 'Abstract', description: 'Artistic patterns and gradients' },\n other: { label: 'Other', description: 'Uncategorized cubes' },\n}\n\n/**\n * Sort option display information\n */\nexport const SORT_OPTION_INFO: Record<CommunitySortOption, { label: string; description: string }> =\n {\n recent: { label: 'Most Recent', description: 'Newest first' },\n popular: { label: 'Most Popular', description: 'Most liked' },\n trending: { label: 'Trending', description: 'Popular this week' },\n downloads: { label: 'Most Downloaded', description: 'Most used' },\n views: { label: 'Most Viewed', description: 'Most seen' },\n alphabetical: { label: 'A-Z', description: 'Alphabetical order' },\n }\n\n/**\n * Storage keys for community gallery\n */\nexport const COMMUNITY_STORAGE_KEYS = {\n LIKED_CUBES: 'isocubic_community_liked',\n RECENT_SEARCHES: 'isocubic_community_recent_searches',\n VIEW_PREFERENCES: 'isocubic_community_view_prefs',\n} as const\n\n// ============================================================================\n// Validation Helpers\n// ============================================================================\n\n/**\n * Validates a cube category\n */\nexport function isValidCategory(category: string): category is CubeCategory {\n return Object.keys(CATEGORY_INFO).includes(category)\n}\n\n/**\n * Validates a sort option\n */\nexport function isValidSortOption(option: string): option is CommunitySortOption {\n return Object.keys(SORT_OPTION_INFO).includes(option)\n}\n\n/**\n * Maps material type to suggested category\n */\nexport function suggestCategory(materialType: MaterialType | undefined): CubeCategory {\n if (!materialType) return 'other'\n\n const mapping: Record<MaterialType, CubeCategory> = {\n stone: 'nature',\n wood: 'nature',\n metal: 'industrial',\n glass: 'building',\n organic: 'organic',\n crystal: 'fantasy',\n liquid: 'nature',\n }\n\n return mapping[materialType] || 'other'\n}\n\n/**\n * Formats a number for display (e.g., 1500 -> \"1.5K\")\n */\nexport function formatCount(count: number): string {\n if (count < 1000) return count.toString()\n if (count < 1000000) return `${(count / 1000).toFixed(1)}K`\n return `${(count / 1000000).toFixed(1)}M`\n}\n",
"numLines": 367,
"startLine": 1,
"totalLines": 367
}
}
}
[2026-02-06T17:23:37.480Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01Xa7VPRjKWF4Yitqi1yXXhU",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_016vmTCHmc681EBt8RgMpA4Z",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/components/Gallery.vue"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 3,
"cache_creation_input_tokens": 734,
"cache_read_input_tokens": 13719,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 734
},
"output_tokens": 7,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "36844eaf-3af1-4544-8fcb-c019057f35ff"
}
[2026-02-06T17:23:37.482Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_016vmTCHmc681EBt8RgMpA4Z",
"type": "tool_result",
"content": " 1→<!--\n 2→ Gallery component for displaying and selecting cube presets (Vue 3 SFC)\n 3→ Provides thumbnail previews, category filtering, tag-based search, and user cube management\n 4→\n 5→ TASK 40: Added component metadata for Developer Mode support (Phase 6)\n 6→ TASK 64: Migration from React to Vue 3.0 SFC (Phase 10)\n 7→-->\n 8→<script lang=\"ts\">\n 9→import type { ComponentMeta } from '../types/component-meta'\n 10→import { registerComponentMeta } from '../types/component-meta'\n 11→\n 12→/**\n 13→ * Component metadata for Developer Mode\n 14→ */\n 15→export const GALLERY_META: ComponentMeta = {\n 16→ id: 'gallery',\n 17→ name: 'Gallery',\n 18→ version: '1.2.0',\n 19→ summary: 'Displays and manages cube presets with filtering, search, and user cube storage.',\n 20→ description:\n 21→ 'Gallery is the cube browsing and management interface for isocubic. It displays preset cubes ' +\n 22→ 'loaded from JSON files and user-saved cubes from localStorage. Features include category filtering ' +\n 23→ 'by material type, tag-based search, thumbnail preview generation from cube gradients, and the ability ' +\n 24→ 'to save the current cube to the personal gallery. The component supports both preset cubes (read-only) ' +\n 25→ 'and user cubes (editable).',\n 26→ phase: 1,\n 27→ taskId: 'TASK 1',\n 28→ filePath: 'components/Gallery.vue',\n 29→ history: [\n 30→ {\n 31→ version: '1.0.0',\n 32→ date: '2026-01-28T12:00:00Z',\n 33→ description: 'Initial implementation with preset display and category filtering',\n 34→ taskId: 'TASK 1',\n 35→ type: 'created',\n 36→ },\n 37→ {\n 38→ version: '1.0.1',\n 39→ date: '2026-01-28T14:00:00Z',\n 40→ description: 'Added magical energy cubes (FFT system presets)',\n 41→ taskId: 'TASK 5',\n 42→ type: 'updated',\n 43→ },\n 44→ {\n 45→ version: '1.1.0',\n 46→ date: '2026-01-29T21:00:00Z',\n 47→ description: 'Added Developer Mode metadata support for self-documentation',\n 48→ taskId: 'TASK 40',\n 49→ type: 'updated',\n 50→ },\n 51→ {\n 52→ version: '1.2.0',\n 53→ date: '2026-01-31T00:00:00Z',\n 54→ description: 'Migrated from React to Vue 3.0 SFC',\n 55→ taskId: 'TASK 64',\n 56→ type: 'updated',\n 57→ },\n 58→ ],\n 59→ features: [\n 60→ {\n 61→ id: 'preset-display',\n 62→ name: 'Preset Display',\n 63→ description: 'Displays built-in preset cubes from JSON files',\n 64→ enabled: true,\n 65→ taskId: 'TASK 1',\n 66→ },\n 67→ {\n 68→ id: 'user-cubes',\n 69→ name: 'User Cubes',\n 70→ description: 'Manage user-saved cubes in localStorage',\n 71→ enabled: true,\n 72→ taskId: 'TASK 1',\n 73→ },\n 74→ {\n 75→ id: 'category-filter',\n 76→ name: 'Category Filtering',\n 77→ description: 'Filter cubes by material type (Stone, Wood, Metal, etc.)',\n 78→ enabled: true,\n 79→ taskId: 'TASK 1',\n 80→ },\n 81→ {\n 82→ id: 'tag-search',\n 83→ name: 'Tag Search',\n 84→ description: 'Search cubes by name, tags, or prompt',\n 85→ enabled: true,\n 86→ taskId: 'TASK 1',\n 87→ },\n 88→ {\n 89→ id: 'thumbnail-preview',\n 90→ name: 'Thumbnail Preview',\n 91→ description: 'CSS-based thumbnail generation from cube gradients',\n 92→ enabled: true,\n 93→ taskId: 'TASK 1',\n 94→ },\n 95→ {\n 96→ id: 'save-current',\n 97→ name: 'Save Current Cube',\n 98→ description: 'Save the current editing cube to personal gallery',\n 99→ enabled: true,\n 100→ taskId: 'TASK 1',\n 101→ },\n 102→ ],\n 103→ dependencies: [\n 104→ { name: 'storage', type: 'lib', path: 'lib/storage.ts', purpose: 'Cube storage operations' },\n 105→ ],\n 106→ relatedFiles: [\n 107→ { path: 'components/Gallery.vue.test.ts', type: 'test', description: 'Unit tests for Gallery' },\n 108→ { path: 'lib/storage.ts', type: 'util', description: 'LocalStorage operations' },\n 109→ { path: 'examples/*.json', type: 'config', description: 'Preset cube JSON files' },\n 110→ ],\n 111→ props: [\n 112→ {\n 113→ name: 'onCubeSelect',\n 114→ type: '(cube: SpectralCube) => void',\n 115→ required: false,\n 116→ description: 'Callback when a cube is selected',\n 117→ },\n 118→ {\n 119→ name: 'currentCube',\n 120→ type: 'SpectralCube | null',\n 121→ required: false,\n 122→ description: 'Current cube for save functionality',\n 123→ },\n 124→ { name: 'className', type: 'string', required: false, description: 'Additional CSS class' },\n 125→ ],\n 126→ tips: [\n 127→ 'Click on a cube thumbnail to load it into the editor',\n 128→ 'Use the search bar to find cubes by name or tags',\n 129→ 'Switch between Presets and My Cubes tabs to view different collections',\n 130→ 'Save your current work using the \"Save Current to Gallery\" button',\n 131→ ],\n 132→ tags: ['gallery', 'ui', 'presets', 'storage', 'search', 'phase-1'],\n 133→ status: 'stable',\n 134→ lastUpdated: '2026-01-31T00:00:00Z',\n 135→}\n 136→\n 137→// Register metadata in the global registry\n 138→registerComponentMeta(GALLERY_META)\n 139→</script>\n 140→\n 141→<script setup lang=\"ts\">\n 142→import { ref, computed, watch } from 'vue'\n 143→import type { SpectralCube, MaterialType } from '../types/cube'\n 144→import { getSavedCubesList, saveCubeToStorage, type StoredConfig } from '../lib/storage'\n 145→\n 146→// Preset cubes data\n 147→import stoneMoss from '../../examples/stone-moss.json'\n 148→import woodOak from '../../examples/wood-oak.json'\n 149→import metalRust from '../../examples/metal-rust.json'\n 150→import brickRed from '../../examples/brick-red.json'\n 151→import marbleWhite from '../../examples/marble-white.json'\n 152→import grassGreen from '../../examples/grass-green.json'\n 153→import iceFrozen from '../../examples/ice-frozen.json'\n 154→import crystalMagic from '../../examples/crystal-magic.json'\n 155→import lavaMolten from '../../examples/lava-molten.json'\n 156→import sandDesert from '../../examples/sand-desert.json'\n 157→import magicCrystalEnergy from '../../examples/magic-crystal-energy.json'\n 158→import unstableCore from '../../examples/unstable-core.json'\n 159→import energyShield from '../../examples/energy-shield.json'\n 160→\n 161→/** Preset cube configurations */\n 162→const PRESET_CUBES: SpectralCube[] = [\n 163→ stoneMoss as SpectralCube,\n 164→ woodOak as SpectralCube,\n 165→ metalRust as SpectralCube,\n 166→ brickRed as SpectralCube,\n 167→ marbleWhite as SpectralCube,\n 168→ grassGreen as SpectralCube,\n 169→ iceFrozen as SpectralCube,\n 170→ crystalMagic as SpectralCube,\n 171→ lavaMolten as SpectralCube,\n 172→ sandDesert as SpectralCube,\n 173→ magicCrystalEnergy as SpectralCube,\n 174→ unstableCore as SpectralCube,\n 175→ energyShield as SpectralCube,\n 176→]\n 177→\n 178→/** Category definition for grouping cubes */\n 179→interface Category {\n 180→ id: string\n 181→ name: string\n 182→ materialTypes: MaterialType[]\n 183→}\n 184→\n 185→/** Available categories for filtering */\n 186→const CATEGORIES: Category[] = [\n 187→ { id: 'all', name: 'All', materialTypes: [] },\n 188→ { id: 'stone', name: 'Stone', materialTypes: ['stone'] },\n 189→ { id: 'wood', name: 'Wood', materialTypes: ['wood'] },\n 190→ { id: 'metal', name: 'Metal', materialTypes: ['metal'] },\n 191→ { id: 'organic', name: 'Organic', materialTypes: ['organic'] },\n 192→ { id: 'crystal', name: 'Crystal', materialTypes: ['crystal', 'glass'] },\n 193→ { id: 'liquid', name: 'Liquid', materialTypes: ['liquid'] },\n 194→]\n 195→\n 196→/**\n 197→ * Props for Gallery component\n 198→ */\n 199→interface GalleryProps {\n 200→ /** Current cube for saving to gallery */\n 201→ currentCube?: SpectralCube | null\n 202→ /** Custom class name */\n 203→ className?: string\n 204→}\n 205→\n 206→const props = withDefaults(defineProps<GalleryProps>(), {\n 207→ currentCube: null,\n 208→ className: '',\n 209→})\n 210→\n 211→const emit = defineEmits<{\n 212→ cubeSelect: [cube: SpectralCube]\n 213→}>()\n 214→\n 215→// Reactive state\n 216→const searchQuery = ref('')\n 217→const selectedCategory = ref<string>('all')\n 218→const showUserCubes = ref(false)\n 219→const userCubes = ref<StoredConfig[]>(getSavedCubesList())\n 220→const statusMessage = ref<string | null>(null)\n 221→\n 222→// Clear status message after timeout\n 223→let statusTimer: ReturnType<typeof setTimeout> | null = null\n 224→watch(statusMessage, (msg) => {\n 225→ if (statusTimer) clearTimeout(statusTimer)\n 226→ if (msg) {\n 227→ statusTimer = setTimeout(() => {\n 228→ statusMessage.value = null\n 229→ }, 3000)\n 230→ }\n 231→})\n 232→\n 233→/**\n 234→ * Converts RGB color array to CSS color string\n 235→ */\n 236→function colorToCSS(color: [number, number, number]): string {\n 237→ const r = Math.round(color[0] * 255)\n 238→ const g = Math.round(color[1] * 255)\n 239→ const b = Math.round(color[2] * 255)\n 240→ return `rgb(${r}, ${g}, ${b})`\n 241→}\n 242→\n 243→/**\n 244→ * Generates a gradient CSS based on cube configuration\n 245→ */\n 246→function generateCubeGradient(cube: SpectralCube): string {\n 247→ const baseColor = colorToCSS(cube.base.color)\n 248→\n 249→ if (!cube.gradients || cube.gradients.length === 0) {\n 250→ return baseColor\n 251→ }\n 252→\n 253→ const gradient = cube.gradients[0]\n 254→ const shift = gradient.color_shift\n 255→ const endColor = colorToCSS([\n 256→ Math.max(0, Math.min(1, cube.base.color[0] + shift[0] * gradient.factor)),\n 257→ Math.max(0, Math.min(1, cube.base.color[1] + shift[1] * gradient.factor)),\n 258→ Math.max(0, Math.min(1, cube.base.color[2] + shift[2] * gradient.factor)),\n 259→ ])\n 260→\n 261→ switch (gradient.axis) {\n 262→ case 'y':\n 263→ return `linear-gradient(to top, ${baseColor}, ${endColor})`\n 264→ case 'x':\n 265→ return `linear-gradient(to right, ${baseColor}, ${endColor})`\n 266→ case 'z':\n 267→ return `linear-gradient(135deg, ${baseColor}, ${endColor})`\n 268→ case 'radial':\n 269→ return `radial-gradient(circle, ${endColor}, ${baseColor})`\n 270→ default:\n 271→ return baseColor\n 272→ }\n 273→}\n 274→\n 275→// Refresh user cubes list\n 276→function refreshUserCubes() {\n 277→ userCubes.value = getSavedCubesList()\n 278→}\n 279→\n 280→// Get cubes to display based on current view mode\n 281→const displayCubes = computed(() => {\n 282→ return showUserCubes.value ? userCubes.value.map((sc) => sc.cube) : PRESET_CUBES\n 283→})\n 284→\n 285→// Filter cubes by category\n 286→const categoryFilteredCubes = computed(() => {\n 287→ if (selectedCategory.value === 'all') return displayCubes.value\n 288→\n 289→ const category = CATEGORIES.find((c) => c.id === selectedCategory.value)\n 290→ if (!category || category.materialTypes.length === 0) return displayCubes.value\n 291→\n 292→ return displayCubes.value.filter((cube) => {\n 293→ const material = cube.physics?.material\n 294→ return material && category.materialTypes.includes(material)\n 295→ })\n 296→})\n 297→\n 298→// Filter cubes by search query\n 299→const filteredCubes = computed(() => {\n 300→ if (!searchQuery.value.trim()) return categoryFilteredCubes.value\n 301→\n 302→ const query = searchQuery.value.toLowerCase().trim()\n 303→ return categoryFilteredCubes.value.filter((cube) => {\n 304→ const name = cube.meta?.name?.toLowerCase() || ''\n 305→ if (name.includes(query)) return true\n 306→\n 307→ const tags = cube.meta?.tags || []\n 308→ if (tags.some((tag) => tag.toLowerCase().includes(query))) return true\n 309→\n 310→ const prompt = cube.prompt?.toLowerCase() || ''\n 311→ if (prompt.includes(query)) return true\n 312→\n 313→ if (cube.id.toLowerCase().includes(query)) return true\n 314→\n 315→ return false\n 316→ })\n 317→})\n 318→\n 319→// Get all unique tags from cubes\n 320→const allTags = computed(() => {\n 321→ const tagSet = new Set<string>()\n 322→ displayCubes.value.forEach((cube) => {\n 323→ cube.meta?.tags?.forEach((tag) => tagSet.add(tag))\n 324→ })\n 325→ return Array.from(tagSet).sort()\n 326→})\n 327→\n 328→// Matching tags for search suggestions\n 329→const matchingTags = computed(() => {\n 330→ if (!searchQuery.value) return []\n 331→ return allTags.value\n 332→ .filter((tag) => tag.toLowerCase().includes(searchQuery.value.toLowerCase()))\n 333→ .slice(0, 8)\n 334→})\n 335→\n 336→// Handle cube selection\n 337→function handleCubeSelect(cube: SpectralCube) {\n 338→ emit('cubeSelect', cube)\n 339→ statusMessage.value = `Loaded: ${cube.meta?.name || cube.id}`\n 340→}\n 341→\n 342→// Handle saving current cube to gallery\n 343→function handleSaveToGallery() {\n 344→ if (!props.currentCube) return\n 345→ saveCubeToStorage(props.currentCube)\n 346→ refreshUserCubes()\n 347→ statusMessage.value = `Saved: ${props.currentCube.meta?.name || props.currentCube.id}`\n 348→}\n 349→\n 350→// Handle view mode toggle\n 351→function handleViewModeToggle(showUser: boolean) {\n 352→ showUserCubes.value = showUser\n 353→ if (showUser) {\n 354→ refreshUserCubes()\n 355→ }\n 356→}\n 357→\n 358→// Handle keyboard interaction on cube items\n 359→function handleCubeKeyDown(e: KeyboardEvent, cube: SpectralCube) {\n 360→ if (e.key === 'Enter' || e.key === ' ') {\n 361→ e.preventDefault()\n 362→ handleCubeSelect(cube)\n 363→ }\n 364→}\n 365→</script>\n 366→\n 367→<template>\n 368→ <div :class=\"['gallery', className]\">\n 369→ <!-- Header -->\n 370→ <div class=\"gallery__header\">\n 371→ <h2 class=\"gallery__title\">Gallery</h2>\n 372→\n 373→ <!-- View mode toggle -->\n 374→ <div class=\"gallery__view-toggle\">\n 375→ <button\n 376→ type=\"button\"\n 377→ :class=\"['gallery__toggle-btn', { 'gallery__toggle-btn--active': !showUserCubes }]\"\n 378→ @click=\"handleViewModeToggle(false)\"\n 379→ >\n 380→ Presets\n 381→ </button>\n 382→ <button\n 383→ type=\"button\"\n 384→ :class=\"['gallery__toggle-btn', { 'gallery__toggle-btn--active': showUserCubes }]\"\n 385→ @click=\"handleViewModeToggle(true)\"\n 386→ >\n 387→ My Cubes\n 388→ </button>\n 389→ </div>\n 390→ </div>\n 391→\n 392→ <!-- Search bar -->\n 393→ <div class=\"gallery__search\">\n 394→ <input\n 395→ v-model=\"searchQuery\"\n 396→ type=\"text\"\n 397→ class=\"gallery__search-input\"\n 398→ placeholder=\"Search by name, tags...\"\n 399→ aria-label=\"Search cubes\"\n 400→ />\n 401→ <button\n 402→ v-if=\"searchQuery\"\n 403→ type=\"button\"\n 404→ class=\"gallery__search-clear\"\n 405→ aria-label=\"Clear search\"\n 406→ @click=\"searchQuery = ''\"\n 407→ >\n 408→ ×\n 409→ </button>\n 410→ </div>\n 411→\n 412→ <!-- Category filters -->\n 413→ <div class=\"gallery__categories\">\n 414→ <button\n 415→ v-for=\"category in CATEGORIES\"\n 416→ :key=\"category.id\"\n 417→ type=\"button\"\n 418→ :class=\"[\n 419→ 'gallery__category-btn',\n 420→ { 'gallery__category-btn--active': selectedCategory === category.id },\n 421→ ]\"\n 422→ @click=\"selectedCategory = category.id\"\n 423→ >\n 424→ {{ category.name }}\n 425→ </button>\n 426→ </div>\n 427→\n 428→ <!-- Tag suggestions -->\n 429→ <div v-if=\"searchQuery && matchingTags.length > 0\" class=\"gallery__tags\">\n 430→ <span class=\"gallery__tags-label\">Tags:</span>\n 431→ <button\n 432→ v-for=\"tag in matchingTags\"\n 433→ :key=\"tag\"\n 434→ type=\"button\"\n 435→ class=\"gallery__tag\"\n 436→ @click=\"searchQuery = tag\"\n 437→ >\n 438→ {{ tag }}\n 439→ </button>\n 440→ </div>\n 441→\n 442→ <!-- Status message -->\n 443→ <div v-if=\"statusMessage\" class=\"gallery__message gallery__message--success\" role=\"status\">\n 444→ {{ statusMessage }}\n 445→ </div>\n 446→\n 447→ <!-- Save to gallery button -->\n 448→ <button v-if=\"currentCube\" type=\"button\" class=\"gallery__save-btn\" @click=\"handleSaveToGallery\">\n 449→ Save Current to Gallery\n 450→ </button>\n 451→\n 452→ <!-- Cube grid -->\n 453→ <div class=\"gallery__grid\">\n 454→ <div v-if=\"filteredCubes.length === 0\" class=\"gallery__empty\">\n 455→ {{\n 456→ searchQuery\n 457→ ? 'No cubes match your search'\n 458→ : showUserCubes\n 459→ ? 'No saved cubes yet'\n 460→ : 'No cubes available'\n 461→ }}\n 462→ </div>\n 463→ <div\n 464→ v-for=\"cube in filteredCubes\"\n 465→ v-else\n 466→ :key=\"cube.id\"\n 467→ class=\"gallery__item\"\n 468→ role=\"button\"\n 469→ :tabindex=\"0\"\n 470→ :aria-label=\"`Select ${cube.meta?.name || cube.id}`\"\n 471→ @click=\"handleCubeSelect(cube)\"\n 472→ @keydown=\"handleCubeKeyDown($event, cube)\"\n 473→ >\n 474→ <!-- Cube preview thumbnail -->\n 475→ <div\n 476→ class=\"gallery__thumbnail\"\n 477→ :style=\"{\n 478→ background: generateCubeGradient(cube),\n 479→ opacity: cube.base.transparency ?? 1,\n 480→ }\"\n 481→ >\n 482→ <div\n 483→ v-if=\"cube.noise?.type\"\n 484→ :class=\"['gallery__noise-indicator', `gallery__noise-indicator--${cube.noise.type}`]\"\n 485→ />\n 486→ </div>\n 487→\n 488→ <!-- Cube info -->\n 489→ <div class=\"gallery__item-info\">\n 490→ <span class=\"gallery__item-name\">{{ cube.meta?.name || cube.id }}</span>\n 491→ <span class=\"gallery__item-material\">{{ cube.physics?.material || 'Unknown' }}</span>\n 492→ </div>\n 493→\n 494→ <!-- Tags -->\n 495→ <div v-if=\"cube.meta?.tags && cube.meta.tags.length > 0\" class=\"gallery__item-tags\">\n 496→ <span v-for=\"tag in cube.meta.tags.slice(0, 3)\" :key=\"tag\" class=\"gallery__item-tag\">\n 497→ {{ tag }}\n 498→ </span>\n 499→ <span v-if=\"cube.meta.tags.length > 3\" class=\"gallery__item-tag gallery__item-tag--more\">\n 500→ +{{ cube.meta.tags.length - 3 }}\n 501→ </span>\n 502→ </div>\n 503→ </div>\n 504→ </div>\n 505→\n 506→ <!-- Results count -->\n 507→ <div class=\"gallery__footer\">\n 508→ <span class=\"gallery__count\">\n 509→ {{ filteredCubes.length }} of {{ displayCubes.length }} cubes\n 510→ </span>\n 511→ </div>\n 512→ </div>\n 513→</template>\n 514→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "da4c50ca-1117-4932-907f-24d3fd2632f2"
}
[2026-02-06T17:23:37.710Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01Xa7VPRjKWF4Yitqi1yXXhU",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_013qNvwGggHguFujVd9u6LKf",
"name": "Glob",
"input": {
"pattern": "src/**/*.css"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 3,
"cache_creation_input_tokens": 734,
"cache_read_input_tokens": 13719,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 734
},
"output_tokens": 7,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "349ee68a-138a-4139-a14e-240d8e25f783"
}
[2026-02-06T17:23:37.797Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_013qNvwGggHguFujVd9u6LKf",
"type": "tool_result",
"content": "/tmp/gh-issue-solver-1770398441546/src/App.css\n/tmp/gh-issue-solver-1770398441546/src/index.css"
}
]
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "d47aad83-4c31-4438-a435-8aae219f69cd"
}
[2026-02-06T17:23:37.825Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01Xa7VPRjKWF4Yitqi1yXXhU",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01GXQA7dtSgFJXukmqYRgko2",
"name": "Glob",
"input": {
"pattern": "src/components/*.vue"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 3,
"cache_creation_input_tokens": 734,
"cache_read_input_tokens": 13719,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 734
},
"output_tokens": 7,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "1db09efc-4e98-4022-8f87-dd6278f75d84"
}
[2026-02-06T17:23:37.845Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01GXQA7dtSgFJXukmqYRgko2",
"type": "tool_result",
"content": "/tmp/gh-issue-solver-1770398441546/src/components/CollaborativeParamEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ActionHistory.vue\n/tmp/gh-issue-solver-1770398441546/src/components/AnnotationCanvas.vue\n/tmp/gh-issue-solver-1770398441546/src/components/AuthForms.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ComponentContextPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CommentsSection.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CommandBar.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CommunityGallery.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ComponentInfo.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ConversationPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CubeGrid.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CubePreview.vue\n/tmp/gh-issue-solver-1770398441546/src/components/EnergyCube.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CubeStack.vue\n/tmp/gh-issue-solver-1770398441546/src/components/DraggableWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ExportPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/EnergyVisualizationEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/CubeStackGrid.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ExtendedSearchPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/FFTChannelEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/FFTParamEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/LODStatisticsDisplay.vue\n/tmp/gh-issue-solver-1770398441546/src/components/LODCubeGrid.vue\n/tmp/gh-issue-solver-1770398441546/src/components/IssueDraftPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/GitHubAuthButton.vue\n/tmp/gh-issue-solver-1770398441546/src/components/Gallery.vue\n/tmp/gh-issue-solver-1770398441546/src/components/LODConfigEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetamodeTreePanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ParamEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeQueryPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeWindow.vue\n/tmp/gh-issue-solver-1770398441546/src/components/NotificationPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetaModeIndicator.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MetamodeTreeNode.vue\n/tmp/gh-issue-solver-1770398441546/src/components/MagicCubeDemo.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ParticipantCursor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/SharePanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/PromptGenerator.vue\n/tmp/gh-issue-solver-1770398441546/src/components/SessionPanel.vue\n/tmp/gh-issue-solver-1770398441546/src/components/ParametricCube.vue\n/tmp/gh-issue-solver-1770398441546/src/components/StackPresetPicker.vue\n/tmp/gh-issue-solver-1770398441546/src/components/StackEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/SubscriptionButton.vue\n/tmp/gh-issue-solver-1770398441546/src/components/UnifiedEditor.vue\n/tmp/gh-issue-solver-1770398441546/src/components/UserProfile.vue\n/tmp/gh-issue-solver-1770398441546/src/components/WindowTaskbar.vue"
}
]
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "c0d78086-a1f6-43d5-9d34-ddc2e1a94210"
}
[2026-02-06T17:23:39.607Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_014wndjiF97EbomRhJHJkTjA",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_017YuQrYfwTxcspBGTnFhb2p",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/components/Gallery.vue",
"offset": 514
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 8220,
"cache_read_input_tokens": 14453,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 8220
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "03c2d2d6-340c-4064-a2db-e9c641e73ef5"
}
[2026-02-06T17:23:39.609Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_017YuQrYfwTxcspBGTnFhb2p",
"type": "tool_result",
"content": "<system-reminder>Warning: the file exists but is shorter than the provided offset (514). The file has 514 lines.</system-reminder>"
}
]
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "68c9c833-3c72-4975-9cf4-a05f74c4c452"
}
[2026-02-06T17:23:39.820Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_014wndjiF97EbomRhJHJkTjA",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01QLeVVZx4AxCqq8ZiTHbuEa",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/App.css"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 8220,
"cache_read_input_tokens": 14453,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 8220
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "0f4559c3-5049-42ae-b374-ca28f3c63b2b"
}
[2026-02-06T17:23:40.061Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"type": "tool_result",
"content": "File content (36284 tokens) exceeds maximum allowed tokens (25000). Please use offset and limit parameters to read specific portions of the file, or use the GrepTool to search for specific content.",
"is_error": true,
"tool_use_id": "toolu_01QLeVVZx4AxCqq8ZiTHbuEa"
}
]
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "f7775844-5f40-419d-8090-df15a68c81ad",
"tool_use_result": "Error: File content (36284 tokens) exceeds maximum allowed tokens (25000). Please use offset and limit parameters to read specific portions of the file, or use the GrepTool to search for specific content."
}
[2026-02-06T17:23:40.062Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_014wndjiF97EbomRhJHJkTjA",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01SstGjUvwGYq1RNGC1Sg9ut",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/components/SharePanel.vue"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 8220,
"cache_read_input_tokens": 14453,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 8220
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "4fa94755-0188-4ecb-b3ef-ffd4f574eb69"
}
[2026-02-06T17:23:40.063Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"type": "tool_result",
"content": "<tool_use_error>Sibling tool call errored</tool_use_error>",
"is_error": true,
"tool_use_id": "toolu_01SstGjUvwGYq1RNGC1Sg9ut"
}
]
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "0653246c-2e36-490b-ab31-8dce120effbd",
"tool_use_result": "Sibling tool call errored"
}
[2026-02-06T17:23:40.273Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_014wndjiF97EbomRhJHJkTjA",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_015NwPtuFzLSRVU9Wx7xhTek",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/components/NotificationPanel.vue"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 8220,
"cache_read_input_tokens": 14453,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 8220
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "cb46f3c7-4cf6-45f0-a7b4-a92e7579ea9c"
}
[2026-02-06T17:23:40.274Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"type": "tool_result",
"content": "<tool_use_error>Sibling tool call errored</tool_use_error>",
"is_error": true,
"tool_use_id": "toolu_015NwPtuFzLSRVU9Wx7xhTek"
}
]
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "f970b97c-fb1d-4f43-b649-b16f78d23850",
"tool_use_result": "Sibling tool call errored"
}
[2026-02-06T17:23:44.398Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_0127mQgSzJjjwTtTnfBZvjMn",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01NUuaFieaXm2BSrS1xCD7NN",
"name": "Grep",
"input": {
"pattern": "\\.gallery",
"path": "/tmp/gh-issue-solver-1770398441546/src",
"output_mode": "files_with_matches"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 569,
"cache_read_input_tokens": 22673,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 569
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "18ddf508-946c-4a82-9a9d-ec0fae142574"
}
[2026-02-06T17:23:44.426Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01NUuaFieaXm2BSrS1xCD7NN",
"type": "tool_result",
"content": "Found 3 files\nsrc/composables/useWindowManager.test.ts\nsrc/components/Gallery.vue.test.ts\nsrc/App.css"
}
]
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "73410d15-638b-4c0f-a458-fdd2632e509d"
}
[2026-02-06T17:23:44.644Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_0127mQgSzJjjwTtTnfBZvjMn",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01JxKfR4EWUVGhwjn3aiwu2s",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/App.css",
"limit": 100
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 569,
"cache_read_input_tokens": 22673,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 569
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "fbd60cfe-ef3b-4f55-9d2e-858e7445dc2b"
}
[2026-02-06T17:23:44.679Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01JxKfR4EWUVGhwjn3aiwu2s",
"type": "tool_result",
"content": " 1→/* ==========================================================================\n 2→ Base App Styles\n 3→ ========================================================================== */\n 4→\n 5→.app {\n 6→ display: flex;\n 7→ flex-direction: column;\n 8→ min-height: 100vh;\n 9→ padding: 1rem;\n 10→ box-sizing: border-box;\n 11→}\n 12→\n 13→.app__header {\n 14→ text-align: center;\n 15→ margin-bottom: 1.5rem;\n 16→}\n 17→\n 18→.app__header h1 {\n 19→ font-size: 2.5rem;\n 20→ margin: 0 0 0.5rem 0;\n 21→ color: #646cff;\n 22→}\n 23→\n 24→.app__header p {\n 25→ font-size: 1rem;\n 26→ color: #888;\n 27→ margin: 0;\n 28→}\n 29→\n 30→.app__main {\n 31→ display: flex;\n 32→ flex-wrap: wrap;\n 33→ gap: 1.5rem;\n 34→ justify-content: center;\n 35→ flex: 1;\n 36→}\n 37→\n 38→.app__section {\n 39→ flex: 1;\n 40→ min-width: 300px;\n 41→ max-width: 800px;\n 42→}\n 43→\n 44→.app__section--main {\n 45→ display: flex;\n 46→ flex-direction: column;\n 47→ gap: 1rem;\n 48→}\n 49→\n 50→.app__section--sidebar {\n 51→ max-width: 400px;\n 52→ display: flex;\n 53→ flex-direction: column;\n 54→ gap: 1rem;\n 55→}\n 56→\n 57→.app__current-cube {\n 58→ padding: 1rem;\n 59→ background: #1a1a1a;\n 60→ border-radius: 8px;\n 61→}\n 62→\n 63→.app__section-title {\n 64→ font-size: 1rem;\n 65→ margin: 0 0 0.75rem 0;\n 66→ color: #aaa;\n 67→}\n 68→\n 69→.app__cube-info {\n 70→ font-size: 0.875rem;\n 71→ color: #ccc;\n 72→}\n 73→\n 74→.app__cube-info p {\n 75→ margin: 0.25rem 0;\n 76→}\n 77→\n 78→.app__cube-info strong {\n 79→ color: #fff;\n 80→}\n 81→\n 82→/* ==========================================================================\n 83→ Mobile Layout Styles\n 84→ ========================================================================== */\n 85→\n 86→.app--mobile {\n 87→ padding: 0;\n 88→ display: flex;\n 89→ flex-direction: column;\n 90→ height: 100vh;\n 91→ overflow: hidden;\n 92→}\n 93→\n 94→.app__header--mobile {\n 95→ padding: 0.75rem 1rem;\n 96→ margin-bottom: 0;\n 97→ background: #1a1a1a;\n 98→ border-bottom: 1px solid #333;\n 99→}\n 100→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "b9686714-1b59-466e-a72d-20971545bcaf"
}
[2026-02-06T17:23:44.973Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_0127mQgSzJjjwTtTnfBZvjMn",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01DUkThyR6w7TrqDPqGS4Kuc",
"name": "Read",
"input": {
"file_path": "/tmp/gh-issue-solver-1770398441546/src/index.css"
}
}
],
"stop_reason": null,
"stop_sequence": null,
"usage": {
"input_tokens": 7,
"cache_creation_input_tokens": 569,
"cache_read_input_tokens": 22673,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 569
},
"output_tokens": 1,
"service_tier": "standard",
"inference_geo": "not_available"
},
"context_management": null
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "a070ee36-2f74-4a30-a361-bbfd88d41822"
}
[2026-02-06T17:23:45.020Z] [INFO] {
"type": "user",
"message": {
"role": "user",
"content": [
{
"tool_use_id": "toolu_01DUkThyR6w7TrqDPqGS4Kuc",
"type": "tool_result",
"content": " 1→@import 'tailwindcss';\n 2→\n 3→:root {\n 4→ font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;\n 5→ line-height: 1.5;\n 6→ font-weight: 400;\n 7→\n 8→ color-scheme: light dark;\n 9→ color: rgba(255, 255, 255, 0.87);\n 10→ background-color: #242424;\n 11→\n 12→ font-synthesis: none;\n 13→ text-rendering: optimizeLegibility;\n 14→ -webkit-font-smoothing: antialiased;\n 15→ -moz-osx-font-smoothing: grayscale;\n 16→}\n 17→\n 18→a {\n 19→ font-weight: 500;\n 20→ color: #646cff;\n 21→ text-decoration: inherit;\n 22→}\n 23→a:hover {\n 24→ color: #535bf2;\n 25→}\n 26→\n 27→body {\n 28→ margin: 0;\n 29→ min-width: 320px;\n 30→ min-height: 100vh;\n 31→}\n 32→\n 33→#root {\n 34→ width: 100%;\n 35→ min-height: 100vh;\n 36→}\n 37→\n 38→h1 {\n 39→ font-size: 3.2em;\n 40→ line-height: 1.1;\n 41→}\n 42→\n 43→button {\n 44→ border-radius: 8px;\n 45→ border: 1px solid transparent;\n 46→ padding: 0.6em 1.2em;\n 47→ font-size: 1em;\n 48→ font-weight: 500;\n 49→ font-family: inherit;\n 50→ background-color: #1a1a1a;\n 51→ cursor: pointer;\n 52→ transition: border-color 0.25s;\n 53→}\n 54→button:hover {\n 55→ border-color: #646cff;\n 56→}\n 57→button:focus,\n 58→button:focus-visible {\n 59→ outline: 4px auto -webkit-focus-ring-color;\n 60→}\n 61→\n 62→@media (prefers-color-scheme: light) {\n 63→ :root {\n 64→ color: #213547;\n 65→ background-color: #ffffff;\n 66→ }\n 67→ a:hover {\n 68→ color: #747bff;\n 69→ }\n 70→ button {\n 71→ background-color: #f9f9f9;\n 72→ }\n 73→}\n 74→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"
}
]
},
"parent_tool_use_id": "toolu_014gZuegsrA5SkgkFfj1AXfg",
"session_id": "cc8a3d02-3872-415e-b0af-91bf8cc77c67",
"uuid": "b9d7a31c-09ae-441f-b1ec-8c9153a89cd1"
}
[2026-02-06T17:23:46.838Z] [INFO] {
"type": "assistant",
"message": {
"model": "claude-haiku-4-5-20251001",
"id": "msg_01FgkQb4jAwzQDC4ACXFtrNH",
"type": "message",
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_01C8Vpry1GJAd1NJ3aLYBdAF",
"name": "Grep",
"input": {
"pattern": "gallery",
"path": "/tmp/gh-issue-solver-177039
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment