From 863a971330f1c3e3a027d38cba959356a65e60ad Mon Sep 17 00:00:00 2001 From: Julien Cabillot Date: Mon, 30 Mar 2026 12:51:50 -0400 Subject: [PATCH] feat: import --- Jenkinsfile | 38 + src/.dockerignore | 26 + src/.github/CODEOWNERS | 2 + src/.github/ISSUE_TEMPLATE/bug_report.yml | 45 + src/.github/ISSUE_TEMPLATE/config.yml | 1 + .../ISSUE_TEMPLATE/feature_request.yml | 22 + .../workflows/build-macos-arm64-dmg.yml | 125 + src/.github/workflows/docs-source.yml | 86 + src/.github/workflows/oc-integration.yml | 33 + src/.github/workflows/oc-review.yml | 33 + src/.github/workflows/release.yml | 590 + src/.github/workflows/vscode-extension.yml | 60 + src/.gitignore | 58 + src/.nvmrc | 1 + src/.opencode/commands/changelog.md | 37 + .../skills/clack-cli-patterns/SKILL.md | 216 + .../skills/settings-ui-patterns/SKILL.md | 238 + src/.opencode/skills/theme-system/SKILL.md | 242 + .../theme-system/references/adding-themes.md | 51 + src/AGENTS.md | 180 + src/CHANGELOG.md | 827 + src/CONTRIBUTING.md | 92 + src/Caddyfile | 22 + src/Dockerfile | 67 + src/LICENSE | 21 + src/README.md | 398 + src/SECURITY.md | 32 + src/bun.lock | 3070 ++++ src/components.json | 21 + src/docker-compose.yml | 30 + src/docs/.gitkeep | 0 src/docs/CUSTOM_THEMES.md | 229 + .../badges/created-with-opencode.svg | 19 + .../badges/openchamber-logo-dark.png | Bin 0 -> 23070 bytes .../badges/openchamber-logo-dark.svg | 47 + .../badges/openchamber-logo-light.svg | 47 + src/docs/references/chat_example.png | Bin 0 -> 996462 bytes src/docs/references/diff_example.png | Bin 0 -> 1082490 bytes src/docs/references/pwa_chat_example.png | Bin 0 -> 994192 bytes src/docs/references/pwa_diff_example.png | Bin 0 -> 573012 bytes src/docs/references/settings_example.png | Bin 0 -> 739015 bytes src/docs/references/tool_output_example.png | Bin 0 -> 1025189 bytes src/docs/references/web_version_example.png | Bin 0 -> 882602 bytes src/eslint.config.js | 23 + src/fix-deprecation.js | 81 + src/package.json | 155 + src/packages/desktop/.gitignore | 21 + src/packages/desktop/README.md | 68 + src/packages/desktop/noop-dist/index.html | 123 + src/packages/desktop/package.json | 26 + .../ibm-plex-mono-latin-600-normal.woff2 | Bin 0 -> 15620 bytes .../ibm-plex-mono-latin-700-normal.woff2 | Bin 0 -> 14908 bytes .../desktop/scripts/build-sidecar.mjs | 135 + src/packages/desktop/scripts/desktop-dev.mjs | 138 + .../desktop/scripts/dev-web-server.mjs | 197 + src/packages/desktop/scripts/opencode-cli.mjs | 237 + src/packages/desktop/src-tauri/Cargo.lock | 6209 +++++++ src/packages/desktop/src-tauri/Cargo.toml | 35 + src/packages/desktop/src-tauri/Info.plist | 27 + src/packages/desktop/src-tauri/build.rs | 3 + .../src-tauri/capabilities/default.json | 41 + .../desktop/src-tauri/entitlements.plist | 23 + .../desktop/src-tauri/icons/app-icon.png | Bin 0 -> 24006 bytes .../desktop/src-tauri/icons/app-icon.svg | 33 + .../desktop/src-tauri/icons/dev-icon.icns | Bin 0 -> 173094 bytes .../desktop/src-tauri/icons/dev-icon.png | Bin 0 -> 66751 bytes .../desktop/src-tauri/icons/icon.icns | Bin 0 -> 160844 bytes src/packages/desktop/src-tauri/icons/icon.png | Bin 0 -> 55246 bytes .../desktop/src-tauri/resources/.gitkeep | 0 .../desktop/src-tauri/sidecars/.gitkeep | 0 src/packages/desktop/src-tauri/src/main.rs | 3381 ++++ .../desktop/src-tauri/src/remote_ssh.rs | 2969 ++++ .../desktop/src-tauri/tauri.conf.json | 84 + .../desktop/src-tauri/tauri.dev.conf.json | 9 + src/packages/docs/CONTRIBUTING.md | 57 + src/packages/docs/DEPLOYMENT.md | 42 + src/packages/docs/README.md | 31 + src/packages/docs/content/docs/index.mdx | 25 + src/packages/docs/content/docs/install.mdx | 33 + src/packages/docs/content/docs/quickstart.mdx | 22 + src/packages/docs/content/docs/themes.mdx | 30 + .../docs/content/docs/troubleshooting.mdx | 30 + src/packages/docs/content/docs/tunnels.mdx | 77 + src/packages/docs/sidebar.config.json | 25 + src/packages/ui/package.json | 111 + src/packages/ui/src/App.css | 42 + src/packages/ui/src/App.tsx | 556 + .../ui/src/assets/icons/file-types/3d.svg | 1 + .../ui/src/assets/icons/file-types/README.md | 26 + .../ui/src/assets/icons/file-types/abap.svg | 1 + .../ui/src/assets/icons/file-types/abc.svg | 1 + .../assets/icons/file-types/actionscript.svg | 1 + .../ui/src/assets/icons/file-types/ada.svg | 1 + .../icons/file-types/adobe-illustrator.svg | 1 + .../file-types/adobe-illustrator_light.svg | 1 + .../icons/file-types/adobe-photoshop.svg | 1 + .../file-types/adobe-photoshop_light.svg | 1 + .../src/assets/icons/file-types/adobe-swc.svg | 1 + .../ui/src/assets/icons/file-types/adonis.svg | 1 + .../ui/src/assets/icons/file-types/advpl.svg | 1 + .../src/assets/icons/file-types/amplify.svg | 1 + .../src/assets/icons/file-types/android.svg | 1 + .../src/assets/icons/file-types/angular.svg | 1 + .../ui/src/assets/icons/file-types/antlr.svg | 1 + .../assets/icons/file-types/apiblueprint.svg | 1 + .../ui/src/assets/icons/file-types/apollo.svg | 1 + .../assets/icons/file-types/applescript.svg | 1 + .../assets/icons/file-types/apps-script.svg | 1 + .../src/assets/icons/file-types/appveyor.svg | 1 + .../assets/icons/file-types/architecture.svg | 1 + .../src/assets/icons/file-types/arduino.svg | 1 + .../src/assets/icons/file-types/asciidoc.svg | 1 + .../src/assets/icons/file-types/assembly.svg | 1 + .../assets/icons/file-types/astro-config.svg | 1 + .../ui/src/assets/icons/file-types/astro.svg | 1 + .../ui/src/assets/icons/file-types/astyle.svg | 1 + .../ui/src/assets/icons/file-types/audio.svg | 1 + .../src/assets/icons/file-types/aurelia.svg | 1 + .../src/assets/icons/file-types/authors.svg | 1 + .../ui/src/assets/icons/file-types/auto.svg | 1 + .../assets/icons/file-types/auto_light.svg | 12 + .../assets/icons/file-types/autohotkey.svg | 1 + .../ui/src/assets/icons/file-types/autoit.svg | 1 + .../icons/file-types/azure-pipelines.svg | 1 + .../ui/src/assets/icons/file-types/azure.svg | 1 + .../ui/src/assets/icons/file-types/babel.svg | 1 + .../src/assets/icons/file-types/ballerina.svg | 1 + .../ui/src/assets/icons/file-types/bazel.svg | 1 + .../ui/src/assets/icons/file-types/bbx.svg | 1 + .../src/assets/icons/file-types/beancount.svg | 1 + .../src/assets/icons/file-types/bench-js.svg | 1 + .../src/assets/icons/file-types/bench-jsx.svg | 1 + .../src/assets/icons/file-types/bench-ts.svg | 1 + .../assets/icons/file-types/bibliography.svg | 1 + .../assets/icons/file-types/bibtex-style.svg | 1 + .../ui/src/assets/icons/file-types/bicep.svg | 1 + .../ui/src/assets/icons/file-types/biome.svg | 1 + .../src/assets/icons/file-types/bitbucket.svg | 1 + .../src/assets/icons/file-types/bithound.svg | 1 + .../src/assets/icons/file-types/blender.svg | 1 + .../ui/src/assets/icons/file-types/blink.svg | 1 + .../assets/icons/file-types/blink_light.svg | 1 + .../ui/src/assets/icons/file-types/blitz.svg | 1 + .../ui/src/assets/icons/file-types/bower.svg | 1 + .../src/assets/icons/file-types/brainfuck.svg | 1 + .../assets/icons/file-types/browserlist.svg | 1 + .../icons/file-types/browserlist_light.svg | 1 + .../ui/src/assets/icons/file-types/bruno.svg | 1 + .../ui/src/assets/icons/file-types/buck.svg | 1 + .../assets/icons/file-types/bucklescript.svg | 1 + .../src/assets/icons/file-types/buildkite.svg | 1 + .../ui/src/assets/icons/file-types/bun.svg | 1 + .../src/assets/icons/file-types/bun_light.svg | 1 + .../ui/src/assets/icons/file-types/c.svg | 1 + .../ui/src/assets/icons/file-types/c3.svg | 1 + .../ui/src/assets/icons/file-types/cabal.svg | 1 + .../ui/src/assets/icons/file-types/caddy.svg | 1 + .../src/assets/icons/file-types/cadence.svg | 1 + .../ui/src/assets/icons/file-types/cairo.svg | 1 + .../ui/src/assets/icons/file-types/cake.svg | 1 + .../src/assets/icons/file-types/capacitor.svg | 1 + .../ui/src/assets/icons/file-types/capnp.svg | 1 + .../ui/src/assets/icons/file-types/cbx.svg | 1 + .../ui/src/assets/icons/file-types/cds.svg | 1 + .../assets/icons/file-types/certificate.svg | 1 + .../src/assets/icons/file-types/changelog.svg | 1 + .../ui/src/assets/icons/file-types/chess.svg | 1 + .../assets/icons/file-types/chess_light.svg | 1 + .../ui/src/assets/icons/file-types/chrome.svg | 1 + .../src/assets/icons/file-types/circleci.svg | 1 + .../icons/file-types/circleci_light.svg | 1 + .../src/assets/icons/file-types/citation.svg | 1 + .../ui/src/assets/icons/file-types/clangd.svg | 1 + .../ui/src/assets/icons/file-types/claude.svg | 1 + .../ui/src/assets/icons/file-types/cline.svg | 1 + .../src/assets/icons/file-types/clojure.svg | 1 + .../assets/icons/file-types/cloudfoundry.svg | 1 + .../ui/src/assets/icons/file-types/cmake.svg | 1 + .../ui/src/assets/icons/file-types/coala.svg | 1 + .../ui/src/assets/icons/file-types/cobol.svg | 1 + .../src/assets/icons/file-types/coconut.svg | 1 + .../assets/icons/file-types/code-climate.svg | 1 + .../icons/file-types/code-climate_light.svg | 1 + .../src/assets/icons/file-types/codecov.svg | 1 + .../assets/icons/file-types/codeowners.svg | 1 + .../assets/icons/file-types/coderabbit-ai.svg | 1 + .../ui/src/assets/icons/file-types/coffee.svg | 1 + .../assets/icons/file-types/coldfusion.svg | 1 + .../icons/file-types/coloredpetrinets.svg | 1 + .../src/assets/icons/file-types/command.svg | 1 + .../assets/icons/file-types/commitizen.svg | 1 + .../assets/icons/file-types/commitlint.svg | 1 + .../src/assets/icons/file-types/concourse.svg | 1 + .../src/assets/icons/file-types/conduct.svg | 1 + .../src/assets/icons/file-types/console.svg | 1 + .../assets/icons/file-types/contentlayer.svg | 1 + .../src/assets/icons/file-types/context.svg | 1 + .../assets/icons/file-types/contributing.svg | 1 + .../assets/icons/file-types/controller.svg | 1 + .../src/assets/icons/file-types/copilot.svg | 1 + .../assets/icons/file-types/copilot_light.svg | 1 + .../ui/src/assets/icons/file-types/cpp.svg | 1 + .../ui/src/assets/icons/file-types/craco.svg | 1 + .../src/assets/icons/file-types/credits.svg | 1 + .../src/assets/icons/file-types/crystal.svg | 1 + .../assets/icons/file-types/crystal_light.svg | 1 + .../ui/src/assets/icons/file-types/csharp.svg | 1 + .../src/assets/icons/file-types/css-map.svg | 1 + .../ui/src/assets/icons/file-types/css.svg | 1 + .../src/assets/icons/file-types/cucumber.svg | 1 + .../ui/src/assets/icons/file-types/cuda.svg | 1 + .../ui/src/assets/icons/file-types/cursor.svg | 1 + .../assets/icons/file-types/cursor_light.svg | 1 + .../src/assets/icons/file-types/cypress.svg | 1 + .../ui/src/assets/icons/file-types/d.svg | 1 + .../ui/src/assets/icons/file-types/dart.svg | 1 + .../icons/file-types/dart_generated.svg | 1 + .../src/assets/icons/file-types/database.svg | 1 + .../assets/icons/file-types/deepsource.svg | 1 + .../assets/icons/file-types/denizenscript.svg | 1 + .../ui/src/assets/icons/file-types/deno.svg | 1 + .../assets/icons/file-types/deno_light.svg | 1 + .../assets/icons/file-types/dependabot.svg | 1 + .../icons/file-types/dependencies-update.svg | 1 + .../ui/src/assets/icons/file-types/dhall.svg | 1 + .../ui/src/assets/icons/file-types/diff.svg | 1 + .../src/assets/icons/file-types/dinophp.svg | 1 + .../ui/src/assets/icons/file-types/disc.svg | 1 + .../ui/src/assets/icons/file-types/django.svg | 1 + .../ui/src/assets/icons/file-types/dll.svg | 1 + .../ui/src/assets/icons/file-types/docker.svg | 1 + .../icons/file-types/doctex-installer.svg | 1 + .../src/assets/icons/file-types/document.svg | 1 + .../ui/src/assets/icons/file-types/dotjs.svg | 1 + .../ui/src/assets/icons/file-types/drawio.svg | 1 + .../src/assets/icons/file-types/drizzle.svg | 1 + .../ui/src/assets/icons/file-types/drone.svg | 1 + .../assets/icons/file-types/drone_light.svg | 4 + .../ui/src/assets/icons/file-types/duc.svg | 1 + .../ui/src/assets/icons/file-types/dune.svg | 1 + .../ui/src/assets/icons/file-types/edge.svg | 1 + .../assets/icons/file-types/editorconfig.svg | 1 + .../ui/src/assets/icons/file-types/ejs.svg | 1 + .../ui/src/assets/icons/file-types/elixir.svg | 1 + .../ui/src/assets/icons/file-types/elm.svg | 1 + .../ui/src/assets/icons/file-types/email.svg | 1 + .../ui/src/assets/icons/file-types/ember.svg | 1 + .../ui/src/assets/icons/file-types/epub.svg | 1 + .../ui/src/assets/icons/file-types/erlang.svg | 1 + .../src/assets/icons/file-types/esbuild.svg | 1 + .../ui/src/assets/icons/file-types/eslint.svg | 1 + .../assets/icons/file-types/excalidraw.svg | 1 + .../ui/src/assets/icons/file-types/exe.svg | 1 + .../src/assets/icons/file-types/fastlane.svg | 1 + .../src/assets/icons/file-types/favicon.svg | 1 + .../ui/src/assets/icons/file-types/figma.svg | 1 + .../src/assets/icons/file-types/firebase.svg | 1 + .../ui/src/assets/icons/file-types/flash.svg | 1 + .../ui/src/assets/icons/file-types/flow.svg | 1 + .../icons/file-types/folder-admin-open.svg | 6 + .../assets/icons/file-types/folder-admin.svg | 6 + .../icons/file-types/folder-android-open.svg | 1 + .../icons/file-types/folder-android.svg | 1 + .../icons/file-types/folder-angular-open.svg | 1 + .../icons/file-types/folder-angular.svg | 1 + .../file-types/folder-animation-open.svg | 1 + .../icons/file-types/folder-animation.svg | 1 + .../icons/file-types/folder-ansible-open.svg | 1 + .../icons/file-types/folder-ansible.svg | 1 + .../icons/file-types/folder-api-open.svg | 1 + .../assets/icons/file-types/folder-api.svg | 1 + .../icons/file-types/folder-apollo-open.svg | 1 + .../assets/icons/file-types/folder-apollo.svg | 1 + .../icons/file-types/folder-app-open.svg | 1 + .../assets/icons/file-types/folder-app.svg | 1 + .../icons/file-types/folder-archive-open.svg | 1 + .../icons/file-types/folder-archive.svg | 1 + .../icons/file-types/folder-astro-open.svg | 1 + .../assets/icons/file-types/folder-astro.svg | 1 + .../icons/file-types/folder-atom-open.svg | 1 + .../assets/icons/file-types/folder-atom.svg | 1 + .../file-types/folder-attachment-open.svg | 1 + .../icons/file-types/folder-attachment.svg | 1 + .../icons/file-types/folder-audio-open.svg | 1 + .../assets/icons/file-types/folder-audio.svg | 1 + .../icons/file-types/folder-aurelia-open.svg | 1 + .../icons/file-types/folder-aurelia.svg | 1 + .../icons/file-types/folder-aws-open.svg | 1 + .../assets/icons/file-types/folder-aws.svg | 1 + .../folder-azure-pipelines-open.svg | 1 + .../file-types/folder-azure-pipelines.svg | 1 + .../icons/file-types/folder-backup-open.svg | 1 + .../assets/icons/file-types/folder-backup.svg | 1 + .../icons/file-types/folder-base-open.svg | 1 + .../assets/icons/file-types/folder-base.svg | 1 + .../icons/file-types/folder-batch-open.svg | 1 + .../assets/icons/file-types/folder-batch.svg | 1 + .../file-types/folder-benchmark-open.svg | 1 + .../icons/file-types/folder-benchmark.svg | 1 + .../file-types/folder-bibliography-open.svg | 1 + .../icons/file-types/folder-bibliography.svg | 1 + .../icons/file-types/folder-bicep-open.svg | 1 + .../assets/icons/file-types/folder-bicep.svg | 1 + .../icons/file-types/folder-blender-open.svg | 1 + .../icons/file-types/folder-blender.svg | 1 + .../icons/file-types/folder-bloc-open.svg | 1 + .../assets/icons/file-types/folder-bloc.svg | 1 + .../icons/file-types/folder-bower-open.svg | 1 + .../assets/icons/file-types/folder-bower.svg | 1 + .../file-types/folder-buildkite-open.svg | 1 + .../icons/file-types/folder-buildkite.svg | 1 + .../icons/file-types/folder-cart-open.svg | 1 + .../assets/icons/file-types/folder-cart.svg | 1 + .../file-types/folder-changesets-open.svg | 1 + .../icons/file-types/folder-changesets.svg | 1 + .../icons/file-types/folder-ci-open.svg | 1 + .../src/assets/icons/file-types/folder-ci.svg | 1 + .../icons/file-types/folder-circleci-open.svg | 7 + .../icons/file-types/folder-circleci.svg | 7 + .../icons/file-types/folder-class-open.svg | 1 + .../assets/icons/file-types/folder-class.svg | 1 + .../icons/file-types/folder-claude-open.svg | 1 + .../assets/icons/file-types/folder-claude.svg | 1 + .../icons/file-types/folder-client-open.svg | 1 + .../assets/icons/file-types/folder-client.svg | 1 + .../icons/file-types/folder-cline-open.svg | 1 + .../assets/icons/file-types/folder-cline.svg | 1 + .../folder-cloud-functions-open.svg | 1 + .../file-types/folder-cloud-functions.svg | 1 + .../file-types/folder-cloudflare-open.svg | 1 + .../icons/file-types/folder-cloudflare.svg | 1 + .../icons/file-types/folder-cluster-open.svg | 1 + .../icons/file-types/folder-cluster.svg | 1 + .../icons/file-types/folder-cobol-open.svg | 1 + .../assets/icons/file-types/folder-cobol.svg | 1 + .../icons/file-types/folder-command-open.svg | 1 + .../icons/file-types/folder-command.svg | 1 + .../file-types/folder-components-open.svg | 1 + .../icons/file-types/folder-components.svg | 1 + .../icons/file-types/folder-config-open.svg | 1 + .../assets/icons/file-types/folder-config.svg | 1 + .../file-types/folder-connection-open.svg | 1 + .../icons/file-types/folder-connection.svg | 1 + .../icons/file-types/folder-console-open.svg | 1 + .../icons/file-types/folder-console.svg | 1 + .../icons/file-types/folder-constant-open.svg | 1 + .../icons/file-types/folder-constant.svg | 1 + .../file-types/folder-container-open.svg | 1 + .../icons/file-types/folder-container.svg | 1 + .../icons/file-types/folder-content-open.svg | 1 + .../icons/file-types/folder-content.svg | 1 + .../icons/file-types/folder-context-open.svg | 1 + .../icons/file-types/folder-context.svg | 1 + .../icons/file-types/folder-contract-open.svg | 1 + .../icons/file-types/folder-contract.svg | 1 + .../file-types/folder-controller-open.svg | 1 + .../icons/file-types/folder-controller.svg | 1 + .../icons/file-types/folder-core-open.svg | 1 + .../assets/icons/file-types/folder-core.svg | 1 + .../icons/file-types/folder-coverage-open.svg | 1 + .../icons/file-types/folder-coverage.svg | 1 + .../icons/file-types/folder-css-open.svg | 1 + .../assets/icons/file-types/folder-css.svg | 1 + .../icons/file-types/folder-cursor-open.svg | 1 + .../file-types/folder-cursor-open_light.svg | 1 + .../assets/icons/file-types/folder-cursor.svg | 1 + .../icons/file-types/folder-cursor_light.svg | 1 + .../icons/file-types/folder-custom-open.svg | 1 + .../assets/icons/file-types/folder-custom.svg | 1 + .../icons/file-types/folder-cypress-open.svg | 1 + .../icons/file-types/folder-cypress.svg | 1 + .../icons/file-types/folder-dart-open.svg | 1 + .../assets/icons/file-types/folder-dart.svg | 1 + .../icons/file-types/folder-database-open.svg | 1 + .../icons/file-types/folder-database.svg | 1 + .../icons/file-types/folder-debug-open.svg | 1 + .../assets/icons/file-types/folder-debug.svg | 1 + .../file-types/folder-decorators-open.svg | 1 + .../icons/file-types/folder-decorators.svg | 1 + .../icons/file-types/folder-delta-open.svg | 1 + .../assets/icons/file-types/folder-delta.svg | 1 + .../icons/file-types/folder-desktop-open.svg | 1 + .../icons/file-types/folder-desktop.svg | 1 + .../file-types/folder-directive-open.svg | 1 + .../icons/file-types/folder-directive.svg | 1 + .../icons/file-types/folder-dist-open.svg | 1 + .../assets/icons/file-types/folder-dist.svg | 1 + .../icons/file-types/folder-docker-open.svg | 1 + .../assets/icons/file-types/folder-docker.svg | 1 + .../icons/file-types/folder-docs-open.svg | 1 + .../assets/icons/file-types/folder-docs.svg | 1 + .../icons/file-types/folder-download-open.svg | 1 + .../icons/file-types/folder-download.svg | 1 + .../icons/file-types/folder-drizzle-open.svg | 1 + .../icons/file-types/folder-drizzle.svg | 1 + .../icons/file-types/folder-dump-open.svg | 1 + .../assets/icons/file-types/folder-dump.svg | 1 + .../icons/file-types/folder-element-open.svg | 1 + .../icons/file-types/folder-element.svg | 1 + .../icons/file-types/folder-enum-open.svg | 1 + .../assets/icons/file-types/folder-enum.svg | 1 + .../file-types/folder-environment-open.svg | 1 + .../icons/file-types/folder-environment.svg | 1 + .../icons/file-types/folder-error-open.svg | 1 + .../assets/icons/file-types/folder-error.svg | 1 + .../icons/file-types/folder-event-open.svg | 1 + .../assets/icons/file-types/folder-event.svg | 1 + .../icons/file-types/folder-examples-open.svg | 1 + .../icons/file-types/folder-examples.svg | 1 + .../icons/file-types/folder-expo-open.svg | 1 + .../assets/icons/file-types/folder-expo.svg | 1 + .../icons/file-types/folder-export-open.svg | 1 + .../assets/icons/file-types/folder-export.svg | 1 + .../icons/file-types/folder-fastlane-open.svg | 1 + .../icons/file-types/folder-fastlane.svg | 1 + .../icons/file-types/folder-favicon-open.svg | 1 + .../icons/file-types/folder-favicon.svg | 1 + .../icons/file-types/folder-firebase-open.svg | 1 + .../icons/file-types/folder-firebase.svg | 1 + .../file-types/folder-firestore-open.svg | 1 + .../icons/file-types/folder-firestore.svg | 1 + .../icons/file-types/folder-flow-open.svg | 6 + .../assets/icons/file-types/folder-flow.svg | 6 + .../icons/file-types/folder-flutter-open.svg | 1 + .../icons/file-types/folder-flutter.svg | 1 + .../icons/file-types/folder-font-open.svg | 1 + .../assets/icons/file-types/folder-font.svg | 1 + .../icons/file-types/folder-forgejo-open.svg | 1 + .../icons/file-types/folder-forgejo.svg | 1 + .../file-types/folder-functions-open.svg | 1 + .../icons/file-types/folder-functions.svg | 1 + .../file-types/folder-gamemaker-open.svg | 1 + .../icons/file-types/folder-gamemaker.svg | 1 + .../file-types/folder-generator-open.svg | 1 + .../icons/file-types/folder-generator.svg | 1 + .../file-types/folder-gh-workflows-open.svg | 6 + .../icons/file-types/folder-gh-workflows.svg | 6 + .../icons/file-types/folder-git-open.svg | 1 + .../assets/icons/file-types/folder-git.svg | 1 + .../icons/file-types/folder-gitea-open.svg | 1 + .../assets/icons/file-types/folder-gitea.svg | 1 + .../icons/file-types/folder-github-open.svg | 6 + .../assets/icons/file-types/folder-github.svg | 6 + .../icons/file-types/folder-gitlab-open.svg | 1 + .../assets/icons/file-types/folder-gitlab.svg | 1 + .../icons/file-types/folder-global-open.svg | 1 + .../assets/icons/file-types/folder-global.svg | 1 + .../icons/file-types/folder-godot-open.svg | 1 + .../assets/icons/file-types/folder-godot.svg | 1 + .../icons/file-types/folder-gradle-open.svg | 1 + .../assets/icons/file-types/folder-gradle.svg | 1 + .../icons/file-types/folder-graphql-open.svg | 1 + .../icons/file-types/folder-graphql.svg | 1 + .../icons/file-types/folder-guard-open.svg | 1 + .../assets/icons/file-types/folder-guard.svg | 1 + .../icons/file-types/folder-gulp-open.svg | 1 + .../assets/icons/file-types/folder-gulp.svg | 1 + .../icons/file-types/folder-helm-open.svg | 1 + .../assets/icons/file-types/folder-helm.svg | 1 + .../icons/file-types/folder-helper-open.svg | 1 + .../assets/icons/file-types/folder-helper.svg | 1 + .../icons/file-types/folder-home-open.svg | 1 + .../assets/icons/file-types/folder-home.svg | 1 + .../icons/file-types/folder-hook-open.svg | 1 + .../assets/icons/file-types/folder-hook.svg | 1 + .../icons/file-types/folder-husky-open.svg | 1 + .../assets/icons/file-types/folder-husky.svg | 1 + .../icons/file-types/folder-i18n-open.svg | 1 + .../assets/icons/file-types/folder-i18n.svg | 1 + .../icons/file-types/folder-images-open.svg | 1 + .../assets/icons/file-types/folder-images.svg | 1 + .../icons/file-types/folder-import-open.svg | 1 + .../assets/icons/file-types/folder-import.svg | 1 + .../icons/file-types/folder-include-open.svg | 1 + .../icons/file-types/folder-include.svg | 1 + .../icons/file-types/folder-intellij-open.svg | 39 + .../file-types/folder-intellij-open_light.svg | 1 + .../icons/file-types/folder-intellij.svg | 39 + .../file-types/folder-intellij_light.svg | 1 + .../file-types/folder-interceptor-open.svg | 1 + .../icons/file-types/folder-interceptor.svg | 1 + .../file-types/folder-interface-open.svg | 1 + .../icons/file-types/folder-interface.svg | 1 + .../icons/file-types/folder-ios-open.svg | 1 + .../assets/icons/file-types/folder-ios.svg | 1 + .../icons/file-types/folder-java-open.svg | 1 + .../assets/icons/file-types/folder-java.svg | 1 + .../file-types/folder-javascript-open.svg | 1 + .../icons/file-types/folder-javascript.svg | 1 + .../icons/file-types/folder-jinja-open.svg | 1 + .../file-types/folder-jinja-open_light.svg | 1 + .../assets/icons/file-types/folder-jinja.svg | 1 + .../icons/file-types/folder-jinja_light.svg | 1 + .../icons/file-types/folder-job-open.svg | 1 + .../assets/icons/file-types/folder-job.svg | 1 + .../icons/file-types/folder-json-open.svg | 1 + .../assets/icons/file-types/folder-json.svg | 1 + .../icons/file-types/folder-jupyter-open.svg | 1 + .../icons/file-types/folder-jupyter.svg | 1 + .../icons/file-types/folder-keys-open.svg | 1 + .../assets/icons/file-types/folder-keys.svg | 1 + .../file-types/folder-kubernetes-open.svg | 1 + .../icons/file-types/folder-kubernetes.svg | 1 + .../icons/file-types/folder-kusto-open.svg | 1 + .../assets/icons/file-types/folder-kusto.svg | 1 + .../icons/file-types/folder-layout-open.svg | 1 + .../assets/icons/file-types/folder-layout.svg | 1 + .../icons/file-types/folder-lefthook-open.svg | 1 + .../icons/file-types/folder-lefthook.svg | 1 + .../icons/file-types/folder-less-open.svg | 1 + .../assets/icons/file-types/folder-less.svg | 1 + .../icons/file-types/folder-lib-open.svg | 1 + .../assets/icons/file-types/folder-lib.svg | 1 + .../icons/file-types/folder-link-open.svg | 1 + .../assets/icons/file-types/folder-link.svg | 1 + .../icons/file-types/folder-linux-open.svg | 1 + .../assets/icons/file-types/folder-linux.svg | 1 + .../file-types/folder-liquibase-open.svg | 1 + .../icons/file-types/folder-liquibase.svg | 1 + .../icons/file-types/folder-log-open.svg | 1 + .../assets/icons/file-types/folder-log.svg | 1 + .../icons/file-types/folder-lottie-open.svg | 1 + .../assets/icons/file-types/folder-lottie.svg | 1 + .../icons/file-types/folder-lua-open.svg | 1 + .../assets/icons/file-types/folder-lua.svg | 1 + .../icons/file-types/folder-luau-open.svg | 1 + .../assets/icons/file-types/folder-luau.svg | 1 + .../icons/file-types/folder-macos-open.svg | 6 + .../assets/icons/file-types/folder-macos.svg | 6 + .../icons/file-types/folder-mail-open.svg | 1 + .../assets/icons/file-types/folder-mail.svg | 1 + .../icons/file-types/folder-mappings-open.svg | 1 + .../icons/file-types/folder-mappings.svg | 1 + .../icons/file-types/folder-markdown-open.svg | 1 + .../icons/file-types/folder-markdown.svg | 1 + .../file-types/folder-mercurial-open.svg | 1 + .../icons/file-types/folder-mercurial.svg | 1 + .../icons/file-types/folder-messages-open.svg | 1 + .../icons/file-types/folder-messages.svg | 1 + .../icons/file-types/folder-meta-open.svg | 1 + .../assets/icons/file-types/folder-meta.svg | 1 + .../file-types/folder-middleware-open.svg | 1 + .../icons/file-types/folder-middleware.svg | 1 + .../icons/file-types/folder-mjml-open.svg | 1 + .../assets/icons/file-types/folder-mjml.svg | 1 + .../icons/file-types/folder-mobile-open.svg | 1 + .../assets/icons/file-types/folder-mobile.svg | 1 + .../icons/file-types/folder-mock-open.svg | 1 + .../assets/icons/file-types/folder-mock.svg | 1 + .../icons/file-types/folder-mojo-open.svg | 1 + .../assets/icons/file-types/folder-mojo.svg | 1 + .../icons/file-types/folder-molecule-open.svg | 1 + .../icons/file-types/folder-molecule.svg | 1 + .../icons/file-types/folder-moon-open.svg | 1 + .../assets/icons/file-types/folder-moon.svg | 1 + .../icons/file-types/folder-netlify-open.svg | 1 + .../icons/file-types/folder-netlify.svg | 1 + .../icons/file-types/folder-next-open.svg | 6 + .../assets/icons/file-types/folder-next.svg | 6 + .../file-types/folder-ngrx-store-open.svg | 1 + .../icons/file-types/folder-ngrx-store.svg | 1 + .../icons/file-types/folder-node-open.svg | 1 + .../assets/icons/file-types/folder-node.svg | 1 + .../icons/file-types/folder-nuxt-open.svg | 6 + .../assets/icons/file-types/folder-nuxt.svg | 6 + .../icons/file-types/folder-obsidian-open.svg | 1 + .../icons/file-types/folder-obsidian.svg | 1 + .../assets/icons/file-types/folder-open.svg | 5 + .../icons/file-types/folder-organism-open.svg | 1 + .../icons/file-types/folder-organism.svg | 1 + .../icons/file-types/folder-other-open.svg | 1 + .../assets/icons/file-types/folder-other.svg | 1 + .../icons/file-types/folder-packages-open.svg | 1 + .../icons/file-types/folder-packages.svg | 1 + .../icons/file-types/folder-pdf-open.svg | 1 + .../assets/icons/file-types/folder-pdf.svg | 1 + .../icons/file-types/folder-pdm-open.svg | 1 + .../assets/icons/file-types/folder-pdm.svg | 1 + .../icons/file-types/folder-php-open.svg | 1 + .../assets/icons/file-types/folder-php.svg | 1 + .../file-types/folder-phpmailer-open.svg | 1 + .../icons/file-types/folder-phpmailer.svg | 1 + .../icons/file-types/folder-pipe-open.svg | 1 + .../assets/icons/file-types/folder-pipe.svg | 1 + .../icons/file-types/folder-plastic-open.svg | 1 + .../icons/file-types/folder-plastic.svg | 1 + .../icons/file-types/folder-plugin-open.svg | 1 + .../assets/icons/file-types/folder-plugin.svg | 1 + .../icons/file-types/folder-policy-open.svg | 1 + .../assets/icons/file-types/folder-policy.svg | 1 + .../file-types/folder-powershell-open.svg | 1 + .../icons/file-types/folder-powershell.svg | 1 + .../icons/file-types/folder-prisma-open.svg | 1 + .../assets/icons/file-types/folder-prisma.svg | 1 + .../icons/file-types/folder-private-open.svg | 1 + .../icons/file-types/folder-private.svg | 1 + .../icons/file-types/folder-project-open.svg | 1 + .../icons/file-types/folder-project.svg | 1 + .../icons/file-types/folder-prompts-open.svg | 1 + .../icons/file-types/folder-prompts.svg | 1 + .../icons/file-types/folder-proto-open.svg | 1 + .../assets/icons/file-types/folder-proto.svg | 1 + .../icons/file-types/folder-public-open.svg | 1 + .../assets/icons/file-types/folder-public.svg | 1 + .../icons/file-types/folder-python-open.svg | 1 + .../assets/icons/file-types/folder-python.svg | 1 + .../icons/file-types/folder-pytorch-open.svg | 1 + .../icons/file-types/folder-pytorch.svg | 1 + .../icons/file-types/folder-quasar-open.svg | 1 + .../assets/icons/file-types/folder-quasar.svg | 1 + .../icons/file-types/folder-queue-open.svg | 1 + .../assets/icons/file-types/folder-queue.svg | 1 + .../folder-react-components-open.svg | 1 + .../file-types/folder-react-components.svg | 1 + .../file-types/folder-redux-reducer-open.svg | 1 + .../icons/file-types/folder-redux-reducer.svg | 1 + .../file-types/folder-repository-open.svg | 1 + .../icons/file-types/folder-repository.svg | 1 + .../icons/file-types/folder-resolver-open.svg | 1 + .../icons/file-types/folder-resolver.svg | 1 + .../icons/file-types/folder-resource-open.svg | 1 + .../icons/file-types/folder-resource.svg | 1 + .../icons/file-types/folder-review-open.svg | 1 + .../assets/icons/file-types/folder-review.svg | 1 + .../icons/file-types/folder-robot-open.svg | 1 + .../assets/icons/file-types/folder-robot.svg | 1 + .../icons/file-types/folder-routes-open.svg | 1 + .../assets/icons/file-types/folder-routes.svg | 1 + .../icons/file-types/folder-rules-open.svg | 1 + .../assets/icons/file-types/folder-rules.svg | 1 + .../icons/file-types/folder-rust-open.svg | 1 + .../assets/icons/file-types/folder-rust.svg | 1 + .../icons/file-types/folder-sandbox-open.svg | 1 + .../icons/file-types/folder-sandbox.svg | 1 + .../icons/file-types/folder-sass-open.svg | 1 + .../assets/icons/file-types/folder-sass.svg | 1 + .../icons/file-types/folder-scala-open.svg | 1 + .../assets/icons/file-types/folder-scala.svg | 1 + .../icons/file-types/folder-scons-open.svg | 1 + .../assets/icons/file-types/folder-scons.svg | 1 + .../icons/file-types/folder-scripts-open.svg | 6 + .../icons/file-types/folder-scripts.svg | 6 + .../icons/file-types/folder-secure-open.svg | 1 + .../assets/icons/file-types/folder-secure.svg | 1 + .../icons/file-types/folder-seeders-open.svg | 1 + .../icons/file-types/folder-seeders.svg | 1 + .../icons/file-types/folder-server-open.svg | 1 + .../assets/icons/file-types/folder-server.svg | 1 + .../file-types/folder-serverless-open.svg | 1 + .../icons/file-types/folder-serverless.svg | 1 + .../icons/file-types/folder-shader-open.svg | 1 + .../assets/icons/file-types/folder-shader.svg | 1 + .../icons/file-types/folder-shared-open.svg | 1 + .../assets/icons/file-types/folder-shared.svg | 1 + .../file-types/folder-snapcraft-open.svg | 1 + .../icons/file-types/folder-snapcraft.svg | 1 + .../icons/file-types/folder-snippet-open.svg | 1 + .../icons/file-types/folder-snippet.svg | 1 + .../icons/file-types/folder-src-open.svg | 1 + .../file-types/folder-src-tauri-open.svg | 1 + .../icons/file-types/folder-src-tauri.svg | 1 + .../assets/icons/file-types/folder-src.svg | 1 + .../icons/file-types/folder-stack-open.svg | 1 + .../assets/icons/file-types/folder-stack.svg | 1 + .../icons/file-types/folder-stencil-open.svg | 1 + .../icons/file-types/folder-stencil.svg | 1 + .../icons/file-types/folder-store-open.svg | 1 + .../assets/icons/file-types/folder-store.svg | 1 + .../file-types/folder-storybook-open.svg | 1 + .../icons/file-types/folder-storybook.svg | 1 + .../icons/file-types/folder-stylus-open.svg | 1 + .../assets/icons/file-types/folder-stylus.svg | 1 + .../icons/file-types/folder-sublime-open.svg | 1 + .../icons/file-types/folder-sublime.svg | 1 + .../icons/file-types/folder-supabase-open.svg | 1 + .../icons/file-types/folder-supabase.svg | 1 + .../icons/file-types/folder-svelte-open.svg | 1 + .../assets/icons/file-types/folder-svelte.svg | 1 + .../icons/file-types/folder-svg-open.svg | 1 + .../assets/icons/file-types/folder-svg.svg | 1 + .../icons/file-types/folder-syntax-open.svg | 1 + .../assets/icons/file-types/folder-syntax.svg | 1 + .../icons/file-types/folder-target-open.svg | 10 + .../assets/icons/file-types/folder-target.svg | 10 + .../icons/file-types/folder-taskfile-open.svg | 1 + .../icons/file-types/folder-taskfile.svg | 1 + .../icons/file-types/folder-tasks-open.svg | 1 + .../assets/icons/file-types/folder-tasks.svg | 1 + .../file-types/folder-television-open.svg | 1 + .../icons/file-types/folder-television.svg | 1 + .../icons/file-types/folder-temp-open.svg | 1 + .../assets/icons/file-types/folder-temp.svg | 1 + .../icons/file-types/folder-template-open.svg | 1 + .../icons/file-types/folder-template.svg | 1 + .../file-types/folder-terraform-open.svg | 1 + .../icons/file-types/folder-terraform.svg | 1 + .../icons/file-types/folder-test-open.svg | 1 + .../assets/icons/file-types/folder-test.svg | 1 + .../icons/file-types/folder-theme-open.svg | 1 + .../assets/icons/file-types/folder-theme.svg | 1 + .../icons/file-types/folder-tools-open.svg | 1 + .../assets/icons/file-types/folder-tools.svg | 1 + .../icons/file-types/folder-trash-open.svg | 1 + .../assets/icons/file-types/folder-trash.svg | 1 + .../icons/file-types/folder-trigger-open.svg | 1 + .../icons/file-types/folder-trigger.svg | 1 + .../file-types/folder-turborepo-open.svg | 15 + .../icons/file-types/folder-turborepo.svg | 15 + .../file-types/folder-typescript-open.svg | 1 + .../icons/file-types/folder-typescript.svg | 1 + .../icons/file-types/folder-ui-open.svg | 1 + .../src/assets/icons/file-types/folder-ui.svg | 1 + .../icons/file-types/folder-unity-open.svg | 1 + .../assets/icons/file-types/folder-unity.svg | 1 + .../icons/file-types/folder-update-open.svg | 1 + .../assets/icons/file-types/folder-update.svg | 1 + .../icons/file-types/folder-upload-open.svg | 1 + .../assets/icons/file-types/folder-upload.svg | 1 + .../icons/file-types/folder-utils-open.svg | 1 + .../assets/icons/file-types/folder-utils.svg | 1 + .../icons/file-types/folder-vercel-open.svg | 5 + .../assets/icons/file-types/folder-vercel.svg | 5 + .../file-types/folder-verdaccio-open.svg | 1 + .../icons/file-types/folder-verdaccio.svg | 1 + .../icons/file-types/folder-video-open.svg | 1 + .../assets/icons/file-types/folder-video.svg | 1 + .../icons/file-types/folder-views-open.svg | 1 + .../assets/icons/file-types/folder-views.svg | 1 + .../icons/file-types/folder-vm-open.svg | 1 + .../src/assets/icons/file-types/folder-vm.svg | 1 + .../icons/file-types/folder-vscode-open.svg | 1 + .../assets/icons/file-types/folder-vscode.svg | 1 + .../file-types/folder-vue-directives-open.svg | 1 + .../file-types/folder-vue-directives.svg | 1 + .../icons/file-types/folder-vue-open.svg | 1 + .../assets/icons/file-types/folder-vue.svg | 1 + .../icons/file-types/folder-vuepress-open.svg | 1 + .../icons/file-types/folder-vuepress.svg | 1 + .../file-types/folder-vuex-store-open.svg | 1 + .../icons/file-types/folder-vuex-store.svg | 1 + .../icons/file-types/folder-wakatime-open.svg | 1 + .../icons/file-types/folder-wakatime.svg | 1 + .../icons/file-types/folder-webpack-open.svg | 1 + .../icons/file-types/folder-webpack.svg | 1 + .../icons/file-types/folder-windows-open.svg | 1 + .../icons/file-types/folder-windows.svg | 1 + .../file-types/folder-wordpress-open.svg | 1 + .../icons/file-types/folder-wordpress.svg | 1 + .../icons/file-types/folder-yarn-open.svg | 1 + .../assets/icons/file-types/folder-yarn.svg | 1 + .../icons/file-types/folder-zeabur-open.svg | 1 + .../assets/icons/file-types/folder-zeabur.svg | 1 + .../ui/src/assets/icons/file-types/folder.svg | 5 + .../ui/src/assets/icons/file-types/font.svg | 1 + .../ui/src/assets/icons/file-types/forth.svg | 1 + .../src/assets/icons/file-types/fortran.svg | 1 + .../ui/src/assets/icons/file-types/foxpro.svg | 1 + .../assets/icons/file-types/freemarker.svg | 1 + .../ui/src/assets/icons/file-types/fsharp.svg | 1 + .../src/assets/icons/file-types/fusebox.svg | 1 + .../src/assets/icons/file-types/gamemaker.svg | 1 + .../ui/src/assets/icons/file-types/garden.svg | 1 + .../ui/src/assets/icons/file-types/gatsby.svg | 1 + .../ui/src/assets/icons/file-types/gcp.svg | 1 + .../src/assets/icons/file-types/gemfile.svg | 1 + .../src/assets/icons/file-types/gemini-ai.svg | 1 + .../ui/src/assets/icons/file-types/gemini.svg | 1 + .../ui/src/assets/icons/file-types/git.svg | 1 + .../file-types/github-actions-workflow.svg | 1 + .../icons/file-types/github-sponsors.svg | 1 + .../ui/src/assets/icons/file-types/gitlab.svg | 1 + .../ui/src/assets/icons/file-types/gitpod.svg | 1 + .../ui/src/assets/icons/file-types/gleam.svg | 1 + .../src/assets/icons/file-types/gnuplot.svg | 1 + .../ui/src/assets/icons/file-types/go-mod.svg | 1 + .../ui/src/assets/icons/file-types/go.svg | 1 + .../src/assets/icons/file-types/go_gopher.svg | 35 + .../assets/icons/file-types/godot-assets.svg | 1 + .../ui/src/assets/icons/file-types/godot.svg | 1 + .../ui/src/assets/icons/file-types/gradle.svg | 1 + .../assets/icons/file-types/grafana-alloy.svg | 1 + .../ui/src/assets/icons/file-types/grain.svg | 1 + .../src/assets/icons/file-types/graphcool.svg | 1 + .../src/assets/icons/file-types/graphql.svg | 1 + .../src/assets/icons/file-types/gridsome.svg | 1 + .../ui/src/assets/icons/file-types/groovy.svg | 1 + .../ui/src/assets/icons/file-types/grunt.svg | 1 + .../ui/src/assets/icons/file-types/gulp.svg | 1 + .../ui/src/assets/icons/file-types/h.svg | 1 + .../ui/src/assets/icons/file-types/hack.svg | 1 + .../src/assets/icons/file-types/hadolint.svg | 1 + .../ui/src/assets/icons/file-types/haml.svg | 1 + .../assets/icons/file-types/handlebars.svg | 1 + .../src/assets/icons/file-types/hardhat.svg | 1 + .../src/assets/icons/file-types/harmonix.svg | 1 + .../src/assets/icons/file-types/haskell.svg | 1 + .../ui/src/assets/icons/file-types/haxe.svg | 1 + .../ui/src/assets/icons/file-types/hcl.svg | 1 + .../src/assets/icons/file-types/hcl_light.svg | 1 + .../ui/src/assets/icons/file-types/helm.svg | 1 + .../ui/src/assets/icons/file-types/heroku.svg | 1 + .../ui/src/assets/icons/file-types/hex.svg | 1 + .../src/assets/icons/file-types/histoire.svg | 1 + .../ui/src/assets/icons/file-types/hjson.svg | 1 + .../src/assets/icons/file-types/horusec.svg | 1 + .../ui/src/assets/icons/file-types/hosts.svg | 1 + .../assets/icons/file-types/hosts_light.svg | 1 + .../ui/src/assets/icons/file-types/hpp.svg | 1 + .../ui/src/assets/icons/file-types/html.svg | 1 + .../ui/src/assets/icons/file-types/http.svg | 1 + .../ui/src/assets/icons/file-types/huff.svg | 1 + .../assets/icons/file-types/huff_light.svg | 1 + .../ui/src/assets/icons/file-types/hurl.svg | 1 + .../ui/src/assets/icons/file-types/husky.svg | 1 + .../ui/src/assets/icons/file-types/i18n.svg | 1 + .../ui/src/assets/icons/file-types/idris.svg | 1 + .../assets/icons/file-types/ifanr-cloud.svg | 1 + .../ui/src/assets/icons/file-types/image.svg | 1 + .../ui/src/assets/icons/file-types/imba.svg | 1 + .../assets/icons/file-types/installation.svg | 1 + .../ui/src/assets/icons/file-types/ionic.svg | 1 + .../src/assets/icons/file-types/istanbul.svg | 1 + .../ui/src/assets/icons/file-types/jar.svg | 1 + .../ui/src/assets/icons/file-types/java.svg | 1 + .../src/assets/icons/file-types/javaclass.svg | 1 + .../icons/file-types/javascript-map.svg | 1 + .../assets/icons/file-types/javascript.svg | 1 + .../src/assets/icons/file-types/jenkins.svg | 1 + .../ui/src/assets/icons/file-types/jest.svg | 1 + .../ui/src/assets/icons/file-types/jinja.svg | 1 + .../assets/icons/file-types/jinja_light.svg | 1 + .../src/assets/icons/file-types/jsconfig.svg | 1 + .../ui/src/assets/icons/file-types/json.svg | 1 + .../ui/src/assets/icons/file-types/jsr.svg | 1 + .../src/assets/icons/file-types/jsr_light.svg | 1 + .../ui/src/assets/icons/file-types/julia.svg | 1 + .../src/assets/icons/file-types/jupyter.svg | 1 + .../ui/src/assets/icons/file-types/just.svg | 1 + .../ui/src/assets/icons/file-types/karma.svg | 1 + .../ui/src/assets/icons/file-types/kcl.svg | 1 + .../ui/src/assets/icons/file-types/key.svg | 1 + .../src/assets/icons/file-types/keystatic.svg | 1 + .../ui/src/assets/icons/file-types/kivy.svg | 1 + .../ui/src/assets/icons/file-types/kl.svg | 1 + .../ui/src/assets/icons/file-types/knip.svg | 1 + .../ui/src/assets/icons/file-types/kotlin.svg | 1 + .../assets/icons/file-types/kubernetes.svg | 1 + .../ui/src/assets/icons/file-types/kusto.svg | 1 + .../ui/src/assets/icons/file-types/label.svg | 1 + .../src/assets/icons/file-types/laravel.svg | 1 + .../src/assets/icons/file-types/latexmk.svg | 1 + .../ui/src/assets/icons/file-types/lbx.svg | 1 + .../src/assets/icons/file-types/lefthook.svg | 1 + .../ui/src/assets/icons/file-types/lerna.svg | 1 + .../ui/src/assets/icons/file-types/less.svg | 1 + .../ui/src/assets/icons/file-types/liara.svg | 1 + .../ui/src/assets/icons/file-types/lib.svg | 1 + .../assets/icons/file-types/lighthouse.svg | 1 + .../src/assets/icons/file-types/lilypond.svg | 1 + .../assets/icons/file-types/lintstaged.svg | 1 + .../ui/src/assets/icons/file-types/liquid.svg | 1 + .../ui/src/assets/icons/file-types/lisp.svg | 1 + .../assets/icons/file-types/livescript.svg | 1 + .../ui/src/assets/icons/file-types/lock.svg | 1 + .../ui/src/assets/icons/file-types/log.svg | 1 + .../src/assets/icons/file-types/lolcode.svg | 1 + .../ui/src/assets/icons/file-types/lottie.svg | 1 + .../ui/src/assets/icons/file-types/lua.svg | 1 + .../ui/src/assets/icons/file-types/luau.svg | 1 + .../ui/src/assets/icons/file-types/lyric.svg | 1 + .../src/assets/icons/file-types/makefile.svg | 1 + .../icons/file-types/markdoc-config.svg | 1 + .../src/assets/icons/file-types/markdoc.svg | 1 + .../src/assets/icons/file-types/markdown.svg | 1 + .../assets/icons/file-types/markdownlint.svg | 1 + .../src/assets/icons/file-types/markojs.svg | 1 + .../assets/icons/file-types/mathematica.svg | 1 + .../ui/src/assets/icons/file-types/matlab.svg | 1 + .../ui/src/assets/icons/file-types/maven.svg | 1 + .../ui/src/assets/icons/file-types/mdsvex.svg | 1 + .../ui/src/assets/icons/file-types/mdx.svg | 1 + .../src/assets/icons/file-types/mercurial.svg | 1 + .../ui/src/assets/icons/file-types/merlin.svg | 1 + .../src/assets/icons/file-types/mermaid.svg | 1 + .../ui/src/assets/icons/file-types/meson.svg | 1 + .../icons/file-types/minecraft-fabric.svg | 1 + .../src/assets/icons/file-types/minecraft.svg | 1 + .../ui/src/assets/icons/file-types/mint.svg | 1 + .../ui/src/assets/icons/file-types/mjml.svg | 1 + .../ui/src/assets/icons/file-types/mocha.svg | 1 + .../src/assets/icons/file-types/modernizr.svg | 1 + .../ui/src/assets/icons/file-types/mojo.svg | 1 + .../ui/src/assets/icons/file-types/moon.svg | 1 + .../assets/icons/file-types/moonscript.svg | 1 + .../ui/src/assets/icons/file-types/mxml.svg | 1 + .../assets/icons/file-types/nano-staged.svg | 1 + .../icons/file-types/nano-staged_light.svg | 4 + .../ui/src/assets/icons/file-types/ndst.svg | 1 + .../ui/src/assets/icons/file-types/nest.svg | 1 + .../src/assets/icons/file-types/netlify.svg | 1 + .../assets/icons/file-types/netlify_light.svg | 1 + .../ui/src/assets/icons/file-types/next.svg | 1 + .../assets/icons/file-types/next_light.svg | 1 + .../ui/src/assets/icons/file-types/nginx.svg | 1 + .../assets/icons/file-types/ngrx-actions.svg | 1 + .../assets/icons/file-types/ngrx-effects.svg | 1 + .../assets/icons/file-types/ngrx-entity.svg | 1 + .../assets/icons/file-types/ngrx-reducer.svg | 1 + .../icons/file-types/ngrx-selectors.svg | 1 + .../assets/icons/file-types/ngrx-state.svg | 1 + .../ui/src/assets/icons/file-types/nim.svg | 1 + .../ui/src/assets/icons/file-types/nix.svg | 1 + .../ui/src/assets/icons/file-types/nodejs.svg | 1 + .../assets/icons/file-types/nodejs_alt.svg | 1 + .../src/assets/icons/file-types/nodemon.svg | 1 + .../ui/src/assets/icons/file-types/npm.svg | 1 + .../ui/src/assets/icons/file-types/nuget.svg | 1 + .../src/assets/icons/file-types/nunjucks.svg | 1 + .../ui/src/assets/icons/file-types/nuxt.svg | 1 + .../ui/src/assets/icons/file-types/nx.svg | 1 + .../assets/icons/file-types/objective-c.svg | 1 + .../assets/icons/file-types/objective-cpp.svg | 1 + .../ui/src/assets/icons/file-types/ocaml.svg | 1 + .../ui/src/assets/icons/file-types/odin.svg | 1 + .../ui/src/assets/icons/file-types/opa.svg | 9 + .../ui/src/assets/icons/file-types/opam.svg | 1 + .../src/assets/icons/file-types/openapi.svg | 1 + .../assets/icons/file-types/openapi_light.svg | 1 + .../ui/src/assets/icons/file-types/otne.svg | 1 + .../ui/src/assets/icons/file-types/oxlint.svg | 1 + .../src/assets/icons/file-types/packship.svg | 1 + .../src/assets/icons/file-types/palette.svg | 1 + .../ui/src/assets/icons/file-types/panda.svg | 1 + .../ui/src/assets/icons/file-types/parcel.svg | 1 + .../ui/src/assets/icons/file-types/pascal.svg | 1 + .../ui/src/assets/icons/file-types/pawn.svg | 1 + .../src/assets/icons/file-types/payload.svg | 1 + .../assets/icons/file-types/payload_light.svg | 1 + .../ui/src/assets/icons/file-types/pdf.svg | 1 + .../ui/src/assets/icons/file-types/pdm.svg | 1 + .../ui/src/assets/icons/file-types/percy.svg | 1 + .../ui/src/assets/icons/file-types/perl.svg | 1 + .../assets/icons/file-types/php-cs-fixer.svg | 1 + .../ui/src/assets/icons/file-types/php.svg | 1 + .../assets/icons/file-types/php_elephant.svg | 1 + .../icons/file-types/php_elephant_pink.svg | 1 + .../src/assets/icons/file-types/phpstan.svg | 1 + .../src/assets/icons/file-types/phpunit.svg | 1 + .../ui/src/assets/icons/file-types/pinejs.svg | 1 + .../src/assets/icons/file-types/pipeline.svg | 1 + .../ui/src/assets/icons/file-types/pkl.svg | 1 + .../src/assets/icons/file-types/plastic.svg | 1 + .../assets/icons/file-types/playwright.svg | 1 + .../ui/src/assets/icons/file-types/plop.svg | 1 + .../assets/icons/file-types/pm2-ecosystem.svg | 1 + .../ui/src/assets/icons/file-types/pnpm.svg | 1 + .../assets/icons/file-types/pnpm_light.svg | 1 + .../ui/src/assets/icons/file-types/poetry.svg | 1 + .../src/assets/icons/file-types/postcss.svg | 1 + .../src/assets/icons/file-types/posthtml.svg | 1 + .../assets/icons/file-types/powerpoint.svg | 1 + .../assets/icons/file-types/powershell.svg | 1 + .../assets/icons/file-types/pre-commit.svg | 1 + .../src/assets/icons/file-types/prettier.svg | 1 + .../ui/src/assets/icons/file-types/prisma.svg | 1 + .../assets/icons/file-types/processing.svg | 1 + .../ui/src/assets/icons/file-types/prolog.svg | 1 + .../ui/src/assets/icons/file-types/prompt.svg | 1 + .../ui/src/assets/icons/file-types/proto.svg | 1 + .../assets/icons/file-types/protractor.svg | 1 + .../ui/src/assets/icons/file-types/pug.svg | 1 + .../ui/src/assets/icons/file-types/puppet.svg | 1 + .../src/assets/icons/file-types/puppeteer.svg | 1 + .../assets/icons/file-types/purescript.svg | 1 + .../assets/icons/file-types/python-misc.svg | 1 + .../ui/src/assets/icons/file-types/python.svg | 1 + .../src/assets/icons/file-types/pytorch.svg | 1 + .../ui/src/assets/icons/file-types/qsharp.svg | 1 + .../ui/src/assets/icons/file-types/quarto.svg | 5 + .../ui/src/assets/icons/file-types/quasar.svg | 1 + .../ui/src/assets/icons/file-types/quokka.svg | 1 + .../ui/src/assets/icons/file-types/qwik.svg | 1 + .../ui/src/assets/icons/file-types/r.svg | 1 + .../ui/src/assets/icons/file-types/racket.svg | 1 + .../ui/src/assets/icons/file-types/raml.svg | 1 + .../ui/src/assets/icons/file-types/razor.svg | 1 + .../ui/src/assets/icons/file-types/rbxmk.svg | 1 + .../ui/src/assets/icons/file-types/rc.svg | 1 + .../ui/src/assets/icons/file-types/react.svg | 1 + .../src/assets/icons/file-types/react_ts.svg | 1 + .../ui/src/assets/icons/file-types/readme.svg | 1 + .../ui/src/assets/icons/file-types/reason.svg | 1 + .../ui/src/assets/icons/file-types/red.svg | 1 + .../assets/icons/file-types/redux-action.svg | 1 + .../assets/icons/file-types/redux-reducer.svg | 1 + .../icons/file-types/redux-selector.svg | 1 + .../assets/icons/file-types/redux-store.svg | 1 + .../src/assets/icons/file-types/regedit.svg | 1 + .../ui/src/assets/icons/file-types/remark.svg | 1 + .../ui/src/assets/icons/file-types/remix.svg | 1 + .../assets/icons/file-types/remix_light.svg | 1 + .../src/assets/icons/file-types/renovate.svg | 1 + .../ui/src/assets/icons/file-types/replit.svg | 1 + .../icons/file-types/rescript-interface.svg | 1 + .../src/assets/icons/file-types/rescript.svg | 1 + .../ui/src/assets/icons/file-types/restql.svg | 1 + .../ui/src/assets/icons/file-types/riot.svg | 1 + .../src/assets/icons/file-types/roadmap.svg | 1 + .../ui/src/assets/icons/file-types/roblox.svg | 1 + .../ui/src/assets/icons/file-types/robot.svg | 1 + .../ui/src/assets/icons/file-types/robots.svg | 1 + .../ui/src/assets/icons/file-types/rocket.svg | 1 + .../ui/src/assets/icons/file-types/rojo.svg | 1 + .../ui/src/assets/icons/file-types/rollup.svg | 1 + .../ui/src/assets/icons/file-types/rome.svg | 6 + .../src/assets/icons/file-types/routing.svg | 1 + .../ui/src/assets/icons/file-types/rspec.svg | 1 + .../src/assets/icons/file-types/rubocop.svg | 1 + .../assets/icons/file-types/rubocop_light.svg | 1 + .../ui/src/assets/icons/file-types/ruby.svg | 1 + .../ui/src/assets/icons/file-types/ruff.svg | 1 + .../ui/src/assets/icons/file-types/rust.svg | 1 + .../assets/icons/file-types/salesforce.svg | 1 + .../ui/src/assets/icons/file-types/san.svg | 1 + .../ui/src/assets/icons/file-types/sas.svg | 1 + .../ui/src/assets/icons/file-types/sass.svg | 1 + .../ui/src/assets/icons/file-types/sbt.svg | 1 + .../ui/src/assets/icons/file-types/scala.svg | 1 + .../ui/src/assets/icons/file-types/scheme.svg | 1 + .../ui/src/assets/icons/file-types/scons.svg | 1 + .../assets/icons/file-types/scons_light.svg | 1 + .../assets/icons/file-types/screwdriver.svg | 1 + .../ui/src/assets/icons/file-types/search.svg | 1 + .../icons/file-types/semantic-release.svg | 1 + .../file-types/semantic-release_light.svg | 1 + .../src/assets/icons/file-types/semgrep.svg | 1 + .../ui/src/assets/icons/file-types/sentry.svg | 1 + .../src/assets/icons/file-types/sequelize.svg | 1 + .../assets/icons/file-types/serverless.svg | 1 + .../src/assets/icons/file-types/settings.svg | 1 + .../ui/src/assets/icons/file-types/shader.svg | 1 + .../assets/icons/file-types/silverstripe.svg | 1 + .../src/assets/icons/file-types/simulink.svg | 1 + .../ui/src/assets/icons/file-types/siyuan.svg | 1 + .../ui/src/assets/icons/file-types/sketch.svg | 1 + .../ui/src/assets/icons/file-types/slim.svg | 1 + .../ui/src/assets/icons/file-types/slint.svg | 1 + .../ui/src/assets/icons/file-types/slug.svg | 1 + .../ui/src/assets/icons/file-types/smarty.svg | 1 + .../ui/src/assets/icons/file-types/sml.svg | 1 + .../src/assets/icons/file-types/snakemake.svg | 1 + .../src/assets/icons/file-types/snapcraft.svg | 1 + .../src/assets/icons/file-types/snowpack.svg | 1 + .../icons/file-types/snowpack_light.svg | 1 + .../ui/src/assets/icons/file-types/snyk.svg | 1 + .../src/assets/icons/file-types/solidity.svg | 1 + .../assets/icons/file-types/sonarcloud.svg | 1 + .../ui/src/assets/icons/file-types/sprite.svg | 6509 +++++++ .../ui/src/assets/icons/file-types/spwn.svg | 1 + .../assets/icons/file-types/stackblitz.svg | 1 + .../ui/src/assets/icons/file-types/stan.svg | 1 + .../src/assets/icons/file-types/steadybit.svg | 1 + .../src/assets/icons/file-types/stencil.svg | 1 + .../src/assets/icons/file-types/stitches.svg | 1 + .../icons/file-types/stitches_light.svg | 10 + .../src/assets/icons/file-types/storybook.svg | 1 + .../src/assets/icons/file-types/stryker.svg | 1 + .../src/assets/icons/file-types/stylable.svg | 1 + .../src/assets/icons/file-types/stylelint.svg | 1 + .../icons/file-types/stylelint_light.svg | 13 + .../ui/src/assets/icons/file-types/stylus.svg | 1 + .../src/assets/icons/file-types/sublime.svg | 1 + .../src/assets/icons/file-types/subtitles.svg | 1 + .../src/assets/icons/file-types/supabase.svg | 1 + .../ui/src/assets/icons/file-types/svelte.svg | 1 + .../ui/src/assets/icons/file-types/svg.svg | 1 + .../ui/src/assets/icons/file-types/svgo.svg | 1 + .../ui/src/assets/icons/file-types/svgr.svg | 1 + .../src/assets/icons/file-types/swagger.svg | 1 + .../ui/src/assets/icons/file-types/sway.svg | 1 + .../ui/src/assets/icons/file-types/swc.svg | 1 + .../ui/src/assets/icons/file-types/swift.svg | 1 + .../src/assets/icons/file-types/syncpack.svg | 1 + .../src/assets/icons/file-types/systemd.svg | 1 + .../assets/icons/file-types/systemd_light.svg | 1 + .../ui/src/assets/icons/file-types/table.svg | 1 + .../assets/icons/file-types/tailwindcss.svg | 1 + .../src/assets/icons/file-types/taskfile.svg | 1 + .../ui/src/assets/icons/file-types/tauri.svg | 1 + .../ui/src/assets/icons/file-types/taze.svg | 1 + .../ui/src/assets/icons/file-types/tcl.svg | 1 + .../ui/src/assets/icons/file-types/teal.svg | 1 + .../ui/src/assets/icons/file-types/templ.svg | 1 + .../src/assets/icons/file-types/template.svg | 1 + .../src/assets/icons/file-types/terraform.svg | 1 + .../src/assets/icons/file-types/test-js.svg | 1 + .../src/assets/icons/file-types/test-jsx.svg | 1 + .../src/assets/icons/file-types/test-ts.svg | 1 + .../ui/src/assets/icons/file-types/tex.svg | 1 + .../src/assets/icons/file-types/textlint.svg | 1 + .../ui/src/assets/icons/file-types/tilt.svg | 1 + .../ui/src/assets/icons/file-types/tldraw.svg | 1 + .../assets/icons/file-types/tldraw_light.svg | 1 + .../ui/src/assets/icons/file-types/tobi.svg | 1 + .../src/assets/icons/file-types/tobimake.svg | 1 + .../ui/src/assets/icons/file-types/todo.svg | 1 + .../ui/src/assets/icons/file-types/toml.svg | 1 + .../assets/icons/file-types/toml_light.svg | 1 + .../ui/src/assets/icons/file-types/travis.svg | 1 + .../ui/src/assets/icons/file-types/tree.svg | 1 + .../src/assets/icons/file-types/trigger.svg | 1 + .../src/assets/icons/file-types/tsconfig.svg | 1 + .../ui/src/assets/icons/file-types/tsdoc.svg | 1 + .../ui/src/assets/icons/file-types/tsil.svg | 1 + .../ui/src/assets/icons/file-types/tune.svg | 1 + .../src/assets/icons/file-types/turborepo.svg | 1 + .../icons/file-types/turborepo_light.svg | 1 + .../ui/src/assets/icons/file-types/twig.svg | 1 + .../ui/src/assets/icons/file-types/twine.svg | 1 + .../icons/file-types/typescript-def.svg | 1 + .../assets/icons/file-types/typescript.svg | 1 + .../ui/src/assets/icons/file-types/typst.svg | 1 + .../ui/src/assets/icons/file-types/umi.svg | 1 + .../ui/src/assets/icons/file-types/uml.svg | 1 + .../src/assets/icons/file-types/uml_light.svg | 1 + .../ui/src/assets/icons/file-types/unity.svg | 1 + .../ui/src/assets/icons/file-types/unocss.svg | 5 + .../ui/src/assets/icons/file-types/url.svg | 1 + .../ui/src/assets/icons/file-types/uv.svg | 1 + .../src/assets/icons/file-types/vagrant.svg | 1 + .../ui/src/assets/icons/file-types/vala.svg | 1 + .../icons/file-types/vanilla-extract.svg | 1 + .../src/assets/icons/file-types/varnish.svg | 1 + .../ui/src/assets/icons/file-types/vedic.svg | 1 + .../ui/src/assets/icons/file-types/velite.svg | 1 + .../src/assets/icons/file-types/velocity.svg | 1 + .../ui/src/assets/icons/file-types/vercel.svg | 1 + .../assets/icons/file-types/vercel_light.svg | 1 + .../src/assets/icons/file-types/verdaccio.svg | 1 + .../src/assets/icons/file-types/verified.svg | 1 + .../src/assets/icons/file-types/verilog.svg | 1 + .../ui/src/assets/icons/file-types/vfl.svg | 1 + .../ui/src/assets/icons/file-types/video.svg | 1 + .../ui/src/assets/icons/file-types/vim.svg | 1 + .../src/assets/icons/file-types/virtual.svg | 1 + .../assets/icons/file-types/visualstudio.svg | 1 + .../ui/src/assets/icons/file-types/vite.svg | 1 + .../ui/src/assets/icons/file-types/vitest.svg | 1 + .../ui/src/assets/icons/file-types/vlang.svg | 6 + .../ui/src/assets/icons/file-types/vscode.svg | 1 + .../assets/icons/file-types/vue-config.svg | 1 + .../ui/src/assets/icons/file-types/vue.svg | 1 + .../assets/icons/file-types/vuex-store.svg | 1 + .../src/assets/icons/file-types/wakatime.svg | 1 + .../icons/file-types/wakatime_light.svg | 1 + .../src/assets/icons/file-types/wallaby.svg | 1 + .../ui/src/assets/icons/file-types/wally.svg | 1 + .../src/assets/icons/file-types/watchman.svg | 1 + .../assets/icons/file-types/webassembly.svg | 1 + .../src/assets/icons/file-types/webhint.svg | 1 + .../src/assets/icons/file-types/webpack.svg | 1 + .../ui/src/assets/icons/file-types/wepy.svg | 1 + .../ui/src/assets/icons/file-types/werf.svg | 1 + .../src/assets/icons/file-types/windicss.svg | 1 + .../icons/file-types/wolframlanguage.svg | 1 + .../ui/src/assets/icons/file-types/word.svg | 1 + .../src/assets/icons/file-types/wrangler.svg | 1 + .../ui/src/assets/icons/file-types/wxt.svg | 1 + .../ui/src/assets/icons/file-types/xaml.svg | 1 + .../ui/src/assets/icons/file-types/xmake.svg | 1 + .../ui/src/assets/icons/file-types/xml.svg | 1 + .../ui/src/assets/icons/file-types/yaml.svg | 1 + .../ui/src/assets/icons/file-types/yang.svg | 1 + .../ui/src/assets/icons/file-types/yarn.svg | 1 + .../ui/src/assets/icons/file-types/zeabur.svg | 1 + .../assets/icons/file-types/zeabur_light.svg | 1 + .../ui/src/assets/icons/file-types/zig.svg | 1 + .../ui/src/assets/icons/file-types/zip.svg | 1 + .../provider-logos/bailian-coding-plan.svg | 3 + .../ui/src/assets/provider-logos/cursor.svg | 6 + .../ui/src/assets/provider-logos/evroc.svg | 3 + .../ui/src/assets/provider-logos/gocode.svg | 2 + .../ui/src/assets/provider-logos/lmstudio.svg | 1 + .../ui/src/assets/provider-logos/ollama.svg | 1 + .../src/components/auth/SessionAuthGate.tsx | 366 + .../chat/AgentMentionAutocomplete.tsx | 245 + .../ui/src/components/chat/ChatContainer.tsx | 588 + .../ui/src/components/chat/ChatEmptyState.tsx | 47 + .../src/components/chat/ChatErrorBoundary.tsx | 88 + .../ui/src/components/chat/ChatInput.tsx | 3482 ++++ .../ui/src/components/chat/ChatMessage.tsx | 1134 ++ .../components/chat/CommandAutocomplete.tsx | 419 + .../ui/src/components/chat/DiffPreview.tsx | 131 + .../ui/src/components/chat/FileAttachment.tsx | 674 + .../chat/FileMentionAutocomplete.tsx | 569 + .../src/components/chat/MarkdownRenderer.tsx | 1527 ++ .../ui/src/components/chat/MessageList.tsx | 1543 ++ .../src/components/chat/MobileAgentButton.tsx | 94 + .../src/components/chat/MobileModelButton.tsx | 37 + .../chat/MobileSessionStatusBar.tsx | 1598 ++ .../ui/src/components/chat/ModelControls.tsx | 2784 +++ .../ui/src/components/chat/PermissionCard.tsx | 468 + .../src/components/chat/PermissionRequest.tsx | 128 + .../chat/PermissionToastActions.tsx | 131 + .../ui/src/components/chat/QuestionCard.tsx | 425 + .../components/chat/QueuedMessageChips.tsx | 116 + .../src/components/chat/SkillAutocomplete.tsx | 172 + .../ui/src/components/chat/StatusChip.tsx | 67 + .../ui/src/components/chat/StatusRow.tsx | 326 + .../src/components/chat/StreamingTextDiff.tsx | 0 .../ui/src/components/chat/TimelineDialog.tsx | 244 + .../components/chat/UnifiedControlsDrawer.tsx | 258 + .../chat/components/ScrollToBottomButton.tsx | 33 + .../chat/components/TurnActivity.tsx | 37 + .../chat/components/TurnAssistantBlock.tsx | 18 + .../components/chat/components/TurnItem.tsx | 39 + .../components/chat/components/TurnList.tsx | 16 + .../chat/hooks/useChatTimelineController.ts | 430 + .../chat/hooks/useChatTurnNavigation.ts | 189 + .../chat/hooks/useStreamingTextThrottle.ts | 105 + .../components/chat/hooks/useTurnLookup.ts | 26 + .../components/chat/hooks/useTurnRecords.ts | 55 + .../components/chat/lib/blockingRequests.ts | 66 + .../chat/lib/scroll/scrollIntent.ts | 78 + .../components/chat/lib/scroll/scrollSpy.ts | 331 + .../chat/lib/turns/applyRetryOverlay.ts | 91 + .../components/chat/lib/turns/constants.ts | 11 + .../chat/lib/turns/historySignals.ts | 67 + .../chat/lib/turns/projectTurnActivity.ts | 218 + .../chat/lib/turns/projectTurnIndexes.ts | 64 + .../chat/lib/turns/projectTurnRecords.ts | 327 + .../chat/lib/turns/projectTurnSummary.ts | 104 + .../chat/lib/turns/stabilizeTurnProjection.ts | 56 + .../components/chat/lib/turns/stageTurns.ts | 159 + .../ui/src/components/chat/lib/turns/types.ts | 122 + .../components/chat/lib/turns/windowTurns.ts | 129 + .../chat/message/DiffViewToggle.tsx | 39 + .../chat/message/FadeInOnReveal.tsx | 84 + .../components/chat/message/MessageBody.tsx | 1528 ++ .../components/chat/message/MessageHeader.tsx | 99 + .../chat/message/TextSelectionMenu.tsx | 593 + .../chat/message/ToolOutputDialog.tsx | 1214 ++ .../components/chat/message/messageRole.ts | 34 + .../chat/message/normalizeUserDisplayParts.ts | 130 + .../src/components/chat/message/partUtils.ts | 70 + .../chat/message/parts/AssistantTextPart.tsx | 108 + .../chat/message/parts/DOCUMENTATION.md | 87 + .../message/parts/GenericStatusSpinner.tsx | 56 + .../chat/message/parts/JustificationBlock.tsx | 56 + .../chat/message/parts/MigratingPart.tsx | 31 + .../message/parts/MinDurationShineText.tsx | 109 + .../chat/message/parts/ProgressiveGroup.tsx | 834 + .../chat/message/parts/ReasoningPart.tsx | 227 + .../message/parts/SessionActiveSpinner.tsx | 270 + .../chat/message/parts/ToolPart.tsx | 2192 +++ .../chat/message/parts/ToolRevealOnMount.tsx | 125 + .../chat/message/parts/UserTextPart.tsx | 164 + .../message/parts/VirtualizedCodeBlock.tsx | 339 + .../chat/message/parts/WorkingPlaceholder.tsx | 237 + .../message/parts/assistantTextVisibility.ts | 17 + .../chat/message/parts/toolPresentation.tsx | 87 + .../chat/message/parts/toolRenderUtils.ts | 44 + .../chat/message/parts/useDurationTicker.ts | 70 + .../src/components/chat/message/timeFormat.ts | 48 + .../components/chat/message/toolRenderers.tsx | 722 + .../ui/src/components/chat/message/types.ts | 37 + .../components/chat/mobileControlsUtils.ts | 105 + .../comments/CodeMirrorCommentWidgets.tsx | 106 + .../components/comments/InlineCommentCard.tsx | 120 + .../comments/InlineCommentInput.tsx | 179 + .../comments/PierreDiffCommentOverlays.tsx | 230 + .../comments/PierreDiffCommentUtils.ts | 57 + .../ui/src/components/comments/index.ts | 6 + .../comments/useInlineCommentController.ts | 154 + .../desktop/DesktopHostSwitcher.tsx | 1387 ++ .../components/desktop/OpenInAppButton.tsx | 214 + .../ui/src/components/icons/ArrowsMerge.tsx | 19 + .../ui/src/components/icons/DiffIcon.tsx | 27 + .../ui/src/components/icons/FileTypeIcon.tsx | 26 + .../ui/src/components/icons/McpIcon.tsx | 20 + .../ui/src/components/icons/StopIcon.tsx | 20 + .../components/layout/BottomTerminalDock.tsx | 193 + .../ui/src/components/layout/ContextPanel.tsx | 578 + .../components/layout/ContextSidebarTab.tsx | 607 + .../ui/src/components/layout/Header.tsx | 2201 +++ .../ui/src/components/layout/MainLayout.tsx | 966 ++ .../layout/ProjectActionsButton.tsx | 825 + .../components/layout/ProjectEditDialog.tsx | 433 + .../ui/src/components/layout/RightSidebar.tsx | 196 + .../components/layout/RightSidebarTabs.tsx | 46 + .../ui/src/components/layout/Sidebar.tsx | 167 + .../layout/SidebarContextSummary.tsx | 61 + .../components/layout/SidebarFilesTree.tsx | 900 + .../ui/src/components/layout/VSCodeLayout.tsx | 790 + .../ui/src/components/mcp/McpDropdown.tsx | 412 + .../src/components/multirun/AgentSelector.tsx | 117 + .../components/multirun/BranchSelector.tsx | 200 + .../components/multirun/ModelMultiSelect.tsx | 583 + .../components/multirun/MultiRunLauncher.tsx | 778 + .../ui/src/components/multirun/index.ts | 4 + .../onboarding/OnboardingScreen.tsx | 341 + .../components/providers/ThemeProvider.tsx | 17 + .../sections/SectionPlaceholder.tsx | 42 + .../components/sections/agents/AgentsPage.tsx | 1097 ++ .../sections/agents/AgentsSidebar.tsx | 626 + .../sections/agents/ModelSelector.tsx | 698 + .../sections/commands/AgentSelector.tsx | 158 + .../sections/commands/CommandsPage.tsx | 337 + .../sections/commands/CommandsSidebar.tsx | 485 + .../GitIdentityEditorDialog.tsx | 477 + .../sections/git-identities/GitPage.tsx | 347 + .../src/components/sections/mcp/McpPage.tsx | 745 + .../components/sections/mcp/McpSidebar.tsx | 329 + .../sections/openchamber/AboutSettings.tsx | 224 + .../sections/openchamber/DefaultsSettings.tsx | 297 + .../sections/openchamber/GitHubSettings.tsx | 408 + .../sections/openchamber/GitSettings.tsx | 137 + .../openchamber/KeyboardShortcutsSettings.tsx | 263 + .../openchamber/NotificationSettings.tsx | 921 + .../sections/openchamber/OpenChamberPage.tsx | 175 + .../openchamber/OpenChamberVisualSettings.tsx | 1293 ++ .../openchamber/OpenCodeCliSettings.tsx | 149 + .../openchamber/SessionRetentionSettings.tsx | 132 + .../sections/openchamber/TunnelSettings.tsx | 1652 ++ .../sections/openchamber/VoiceSettings.tsx | 647 + .../openchamber/WorktreeSectionContent.tsx | 383 + .../components/sections/openchamber/types.ts | 10 + .../projects/ProjectActionsSection.tsx | 434 + .../sections/projects/ProjectsPage.tsx | 499 + .../sections/projects/ProjectsSidebar.tsx | 150 + .../sections/providers/ProvidersPage.tsx | 1114 ++ .../sections/providers/ProvidersSidebar.tsx | 213 + .../remote-instances/RemoteInstancesPage.tsx | 1587 ++ .../RemoteInstancesSidebar.tsx | 218 + .../sections/shared/SettingsPageLayout.tsx | 48 + .../shared/SettingsProjectSelector.tsx | 89 + .../sections/shared/SettingsSection.tsx | 62 + .../sections/shared/SettingsSidebarHeader.tsx | 63 + .../sections/shared/SettingsSidebarItem.tsx | 134 + .../sections/shared/SettingsSidebarLayout.tsx | 118 + .../sections/shared/SidebarGroup.tsx | 81 + .../src/components/sections/shared/index.ts | 57 + .../components/sections/skills/SkillsPage.tsx | 628 + .../sections/skills/SkillsSidebar.tsx | 508 + .../skills/catalog/AddCatalogDialog.tsx | 338 + .../skills/catalog/InstallConflictsDialog.tsx | 129 + .../skills/catalog/InstallFromRepoDialog.tsx | 518 + .../skills/catalog/InstallSkillDialog.tsx | 281 + .../skills/catalog/SkillsCatalogPage.tsx | 401 + .../src/components/sections/skills/index.ts | 2 + .../sections/skills/skillLocations.ts | 60 + .../sections/usage/PaceIndicator.tsx | 97 + .../components/sections/usage/UsageCard.tsx | 92 + .../components/sections/usage/UsagePage.tsx | 369 + .../sections/usage/UsageProgressBar.tsx | 54 + .../sections/usage/UsageSidebar.tsx | 187 + .../components/session/BranchPickerDialog.tsx | 582 + .../session/DirectoryAutocomplete.tsx | 314 + .../session/DirectoryExplorerDialog.tsx | 362 + .../src/components/session/DirectoryTree.tsx | 1065 ++ .../session/GitHubIntegrationDialog.tsx | 618 + .../session/GitHubIssuePickerDialog.tsx | 742 + .../session/GitHubPrPickerDialog.tsx | 489 + .../components/session/NewWorktreeDialog.tsx | 1764 ++ .../session/ProjectNotesTodoPanel.tsx | 390 + .../src/components/session/SessionDialogs.tsx | 814 + .../components/session/SessionFolderItem.tsx | 341 + .../src/components/session/SessionSidebar.tsx | 1526 ++ .../session/sidebar/ConfirmDialogs.tsx | 113 + .../session/sidebar/DOCUMENTATION.md | 52 + .../session/sidebar/SessionGroupSection.tsx | 669 + .../session/sidebar/SessionNodeItem.tsx | 604 + .../sidebar/SidebarActivitySections.tsx | 110 + .../session/sidebar/SidebarFooter.tsx | 68 + .../session/sidebar/SidebarHeader.tsx | 282 + .../session/sidebar/SidebarProjectsList.tsx | 244 + .../session/sidebar/activitySections.ts | 107 + .../sidebar/hooks/useArchivedAutoFolders.ts | 120 + .../sidebar/hooks/useDirectoryStatusProbe.ts | 96 + .../session/sidebar/hooks/useGroupOrdering.ts | 31 + .../sidebar/hooks/useProjectRepoStatus.ts | 105 + .../sidebar/hooks/useProjectSessionLists.ts | 121 + .../hooks/useProjectSessionSelection.ts | 186 + .../sidebar/hooks/useSessionActions.ts | 244 + .../sidebar/hooks/useSessionFolderCleanup.ts | 94 + .../sidebar/hooks/useSessionGrouping.ts | 246 + .../sidebar/hooks/useSessionPrefetch.ts | 128 + .../sidebar/hooks/useSessionSearchEffects.ts | 42 + .../hooks/useSessionSidebarSections.ts | 174 + .../sidebar/hooks/useSidebarPersistence.ts | 167 + .../sidebar/hooks/useStickyProjectHeaders.ts | 50 + .../session/sidebar/sessionFolderDnd.tsx | 134 + .../session/sidebar/sortableItems.tsx | 353 + .../src/components/session/sidebar/types.ts | 36 + .../src/components/session/sidebar/utils.tsx | 270 + .../components/terminal/TerminalViewport.tsx | 1582 ++ .../ui/src/components/ui/AboutDialog.tsx | 196 + .../ui/src/components/ui/CodeMirrorEditor.tsx | 418 + .../ui/src/components/ui/CommandPalette.tsx | 323 + .../src/components/ui/ConfigUpdateOverlay.tsx | 27 + .../src/components/ui/ContextUsageDisplay.tsx | 172 + .../ui/src/components/ui/ErrorBoundary.tsx | 101 + .../src/components/ui/FireworksAnimation.tsx | 101 + .../ui/src/components/ui/HelpDialog.tsx | 302 + .../ui/src/components/ui/MemoryDebugPanel.tsx | 163 + .../src/components/ui/MobileOverlayPanel.tsx | 124 + .../ui/src/components/ui/OpenChamberLogo.tsx | 277 + .../ui/src/components/ui/OpenCodeIcon.tsx | 35 + .../ui/src/components/ui/OpenCodeLogo.tsx | 41 + .../components/ui/OpenCodeStatusDialog.tsx | 59 + .../ui/src/components/ui/OverlayScrollbar.tsx | 287 + .../ui/src/components/ui/ProviderLogo.tsx | 37 + .../ui/src/components/ui/ScrollShadow.tsx | 166 + .../src/components/ui/ScrollableOverlay.tsx | 101 + .../ui/src/components/ui/TextLoop.tsx | 83 + .../ui/src/components/ui/UpdateDialog.tsx | 530 + src/packages/ui/src/components/ui/alert.tsx | 66 + src/packages/ui/src/components/ui/button.tsx | 62 + src/packages/ui/src/components/ui/card.tsx | 92 + .../ui/src/components/ui/checkbox.tsx | 68 + .../ui/src/components/ui/collapsible.tsx | 31 + src/packages/ui/src/components/ui/command.tsx | 238 + src/packages/ui/src/components/ui/dialog.tsx | 160 + .../ui/src/components/ui/dropdown-menu.tsx | 269 + .../ui/src/components/ui/grid-loader.tsx | 40 + src/packages/ui/src/components/ui/index.ts | 2 + src/packages/ui/src/components/ui/input.tsx | 26 + .../ui/src/components/ui/number-input.tsx | 319 + src/packages/ui/src/components/ui/radio.tsx | 69 + .../ui/src/components/ui/scroll-area.tsx | 56 + src/packages/ui/src/components/ui/select.tsx | 201 + .../ui/src/components/ui/separator.tsx | 28 + .../ui/src/components/ui/skeleton.tsx | 13 + src/packages/ui/src/components/ui/slider.tsx | 64 + src/packages/ui/src/components/ui/sonner.tsx | 52 + .../src/components/ui/sortable-tabs-strip.tsx | 481 + src/packages/ui/src/components/ui/switch.tsx | 29 + src/packages/ui/src/components/ui/text.tsx | 231 + .../ui/src/components/ui/textarea.tsx | 49 + src/packages/ui/src/components/ui/toast.ts | 86 + src/packages/ui/src/components/ui/toggle.tsx | 47 + src/packages/ui/src/components/ui/tooltip.tsx | 68 + .../ui/src/components/ui/typewriter-text.tsx | 61 + .../ui/src/components/views/ChatView.tsx | 14 + .../ui/src/components/views/DiffView.tsx | 1740 ++ .../ui/src/components/views/FilesView.tsx | 2901 ++++ .../ui/src/components/views/GitView.tsx | 2225 +++ .../src/components/views/MultiRunWindow.tsx | 73 + .../src/components/views/PierreDiffViewer.tsx | 744 + .../ui/src/components/views/PlanView.tsx | 551 + .../components/views/PreviewToggleButton.tsx | 51 + .../ui/src/components/views/SettingsView.tsx | 770 + .../src/components/views/SettingsWindow.tsx | 56 + .../ui/src/components/views/TerminalView.tsx | 1098 ++ .../views/agent-manager/AgentGroupDetail.tsx | 342 + .../agent-manager/AgentManagerEmptyState.tsx | 510 + .../agent-manager/AgentManagerSidebar.tsx | 286 + .../views/agent-manager/AgentManagerView.tsx | 199 + .../components/views/agent-manager/index.ts | 3 + .../components/views/git/AIHighlightsBox.tsx | 56 + .../views/git/BranchIntegrationSection.tsx | 468 + .../components/views/git/BranchSelector.tsx | 346 + .../ui/src/components/views/git/ChangeRow.tsx | 183 + .../components/views/git/ChangesSection.tsx | 239 + .../src/components/views/git/CommitInput.tsx | 61 + .../components/views/git/CommitSection.tsx | 192 + .../components/views/git/ConflictDialog.tsx | 273 + .../components/views/git/GitEmptyState.tsx | 42 + .../ui/src/components/views/git/GitHeader.tsx | 302 + .../components/views/git/HistoryCommitRow.tsx | 160 + .../components/views/git/HistorySection.tsx | 191 + .../views/git/InProgressOperationBanner.tsx | 152 + .../views/git/IntegrateCommitsSection.tsx | 516 + .../views/git/PullRequestSection.tsx | 1990 +++ .../src/components/views/git/StashDialog.tsx | 128 + .../src/components/views/git/SyncActions.tsx | 264 + .../views/git/WorktreeBranchDisplay.tsx | 142 + .../ui/src/components/views/git/index.ts | 14 + src/packages/ui/src/components/views/index.ts | 9 + .../components/voice/BrowserVoiceButton.tsx | 381 + .../ui/src/components/voice/VoiceProvider.tsx | 20 + .../components/voice/VoiceStatusIndicator.tsx | 139 + src/packages/ui/src/components/voice/index.ts | 3 + src/packages/ui/src/constants/sidebar.ts | 85 + .../ui/src/contexts/DiffWorkerProvider.tsx | 142 + .../ui/src/contexts/DrawerContext.tsx | 41 + .../ui/src/contexts/FireworksContext.tsx | 35 + .../ui/src/contexts/RuntimeAPIProvider.tsx | 7 + .../ui/src/contexts/ThemeSystemContext.tsx | 797 + .../ui/src/contexts/runtimeAPIContext.ts | 4 + .../ui/src/contexts/runtimeAPIRegistry.ts | 9 + .../ui/src/contexts/theme-system-context.ts | 21 + .../ui/src/contexts/useThemeSystem.ts | 15 + .../ui/src/hooks/useAssistantStatus.ts | 412 + .../ui/src/hooks/useAssistantTyping.ts | 229 + .../ui/src/hooks/useAvailableTools.ts | 49 + src/packages/ui/src/hooks/useBrowserVoice.ts | 799 + .../ui/src/hooks/useChatScrollManager.ts | 645 + .../ui/src/hooks/useChatSearchDirectory.ts | 42 + .../ui/src/hooks/useDebouncedValue.ts | 17 + src/packages/ui/src/hooks/useDrawerSwipe.ts | 194 + src/packages/ui/src/hooks/useEdgeSwipe.ts | 132 + .../ui/src/hooks/useEffectiveDirectory.ts | 48 + src/packages/ui/src/hooks/useEventStream.ts | 2676 +++ .../ui/src/hooks/useFileSystemAccess.ts | 41 + src/packages/ui/src/hooks/useFireworks.ts | 53 + .../ui/src/hooks/useFontPreferences.ts | 13 + .../hooks/useGitHubPrBackgroundTracking.ts | 503 + src/packages/ui/src/hooks/useGitPolling.tsx | 10 + .../ui/src/hooks/useGitPollingHook.ts | 141 + .../ui/src/hooks/useIsTextTruncated.ts | 46 + .../ui/src/hooks/useKeyboardShortcuts.ts | 447 + src/packages/ui/src/hooks/useLongPress.ts | 100 + src/packages/ui/src/hooks/useMenuActions.ts | 308 + src/packages/ui/src/hooks/useMessageTTS.ts | 135 + src/packages/ui/src/hooks/useModelLists.ts | 58 + src/packages/ui/src/hooks/useProviderLogo.ts | 96 + .../ui/src/hooks/usePushVisibilityBeacon.ts | 63 + src/packages/ui/src/hooks/usePwaDetection.ts | 57 + .../ui/src/hooks/usePwaInstallPrompt.ts | 87 + .../ui/src/hooks/usePwaManifestSync.ts | 90 + .../ui/src/hooks/useQueuedMessageAutoSend.ts | 196 + src/packages/ui/src/hooks/useRouter.ts | 347 + src/packages/ui/src/hooks/useRuntimeAPIs.ts | 18 + src/packages/ui/src/hooks/useSayTTS.ts | 308 + src/packages/ui/src/hooks/useScrollEngine.ts | 266 + .../ui/src/hooks/useServerSessionStatus.ts | 334 + src/packages/ui/src/hooks/useServerTTS.ts | 328 + .../ui/src/hooks/useSessionActivity.ts | 57 + .../ui/src/hooks/useSessionAutoCleanup.ts | 187 + .../ui/src/hooks/useSessionStatusBootstrap.ts | 47 + src/packages/ui/src/hooks/useVoiceContext.ts | 61 + src/packages/ui/src/hooks/useWindowTitle.ts | 135 + src/packages/ui/src/index.css | 1385 ++ src/packages/ui/src/lib/agentColors.ts | 37 + src/packages/ui/src/lib/api/types.ts | 1081 ++ src/packages/ui/src/lib/appearanceAutoSave.ts | 190 + .../ui/src/lib/appearancePersistence.ts | 77 + src/packages/ui/src/lib/clipboard.ts | 39 + src/packages/ui/src/lib/codeTheme.ts | 352 + .../ui/src/lib/codemirror/flexokiTheme.ts | 552 + .../src/lib/codemirror/languageByExtension.ts | 277 + src/packages/ui/src/lib/configSync.ts | 62 + src/packages/ui/src/lib/configUpdate.ts | 69 + .../ui/src/lib/contextFileOpenGuard.ts | 66 + src/packages/ui/src/lib/debug.ts | 706 + src/packages/ui/src/lib/desktop.ts | 638 + src/packages/ui/src/lib/desktopHosts.ts | 181 + src/packages/ui/src/lib/desktopSsh.ts | 454 + src/packages/ui/src/lib/device.ts | 228 + src/packages/ui/src/lib/diff/workerFactory.ts | 5 + .../ui/src/lib/directoryPersistence.ts | 28 + .../ui/src/lib/directoryShowHidden.ts | 71 + src/packages/ui/src/lib/execCommands.ts | 57 + src/packages/ui/src/lib/fileOpenLimits.ts | 19 + src/packages/ui/src/lib/fileTypeIconIds.ts | 2088 +++ src/packages/ui/src/lib/fileTypeIcons.ts | 249 + .../ui/src/lib/filesViewShowGitignored.ts | 69 + src/packages/ui/src/lib/fontOptions.ts | 38 + .../ui/src/lib/git/branchNameGenerator.ts | 76 + .../src/lib/git/integrateWorktreeCommits.ts | 359 + src/packages/ui/src/lib/gitApi.ts | 740 + src/packages/ui/src/lib/gitApiHttp.ts | 872 + src/packages/ui/src/lib/ime.ts | 14 + src/packages/ui/src/lib/messageCompletion.ts | 109 + .../ui/src/lib/messageCursorPersistence.ts | 176 + src/packages/ui/src/lib/messageFreshness.ts | 90 + .../ui/src/lib/messages/agentMentions.ts | 76 + .../ui/src/lib/messages/executionMeta.ts | 16 + .../ui/src/lib/messages/inlineComments.ts | 58 + .../ui/src/lib/messages/messageText.ts | 13 + .../ui/src/lib/messages/providerAuthError.ts | 34 + src/packages/ui/src/lib/messages/synthetic.ts | 64 + src/packages/ui/src/lib/modelPrefsAutoSave.ts | 76 + src/packages/ui/src/lib/openCodeStatus.ts | 345 + src/packages/ui/src/lib/openInApps.ts | 45 + src/packages/ui/src/lib/openchamberConfig.ts | 694 + src/packages/ui/src/lib/opencode/client.ts | 2254 +++ .../ui/src/lib/permissions/editModeColors.ts | 30 + .../lib/permissions/editPermissionDefaults.ts | 101 + src/packages/ui/src/lib/persistence.ts | 995 ++ src/packages/ui/src/lib/projectActions.ts | 199 + src/packages/ui/src/lib/projectMeta.ts | 86 + src/packages/ui/src/lib/pwa.ts | 41 + src/packages/ui/src/lib/quota/index.ts | 14 + .../ui/src/lib/quota/model-families.ts | 146 + .../ui/src/lib/quota/providers/base.ts | 8 + .../ui/src/lib/quota/providers/index.ts | 27 + src/packages/ui/src/lib/quota/utils.ts | 244 + src/packages/ui/src/lib/router/index.ts | 31 + src/packages/ui/src/lib/router/parseRoute.ts | 136 + .../ui/src/lib/router/serializeRoute.ts | 148 + src/packages/ui/src/lib/router/types.ts | 55 + src/packages/ui/src/lib/sessionEvents.ts | 57 + src/packages/ui/src/lib/settings/metadata.ts | 210 + .../ui/src/lib/shiki/appThemeRegistry.ts | 95 + .../lib/shiki/textMateThemeFromAppTheme.ts | 482 + .../ui/src/lib/shiki/vscodeTextMateTheme.ts | 14 + src/packages/ui/src/lib/shortcuts.ts | 590 + .../ui/src/lib/terminal/SerializeAddon.ts | 497 + src/packages/ui/src/lib/terminalApi.ts | 784 + src/packages/ui/src/lib/terminalTheme.ts | 143 + src/packages/ui/src/lib/theme/cssGenerator.ts | 772 + .../ui/src/lib/theme/syntaxThemeGenerator.ts | 208 + .../ui/src/lib/theme/themes/amoled-dark.json | 435 + .../ui/src/lib/theme/themes/amoled-light.json | 435 + .../ui/src/lib/theme/themes/aura-dark.json | 183 + .../ui/src/lib/theme/themes/aura-light.json | 183 + .../ui/src/lib/theme/themes/ayu-dark.json | 183 + .../ui/src/lib/theme/themes/ayu-light.json | 183 + .../src/lib/theme/themes/carbonfox-dark.json | 183 + .../src/lib/theme/themes/carbonfox-light.json | 183 + .../src/lib/theme/themes/catppuccin-dark.json | 183 + .../lib/theme/themes/catppuccin-light.json | 183 + .../ui/src/lib/theme/themes/cursor-dark.json | 435 + .../ui/src/lib/theme/themes/cursor-light.json | 435 + .../ui/src/lib/theme/themes/dracula-dark.json | 183 + .../src/lib/theme/themes/dracula-light.json | 183 + .../themes/fields-of-the-shire-dark.json | 184 + .../themes/fields-of-the-shire-light.json | 184 + .../ui/src/lib/theme/themes/flexoki-dark.json | 183 + .../src/lib/theme/themes/flexoki-light.json | 183 + .../ui/src/lib/theme/themes/github-dark.json | 435 + .../ui/src/lib/theme/themes/github-light.json | 435 + .../ui/src/lib/theme/themes/gruvbox-dark.json | 183 + .../src/lib/theme/themes/gruvbox-light.json | 183 + src/packages/ui/src/lib/theme/themes/index.ts | 47 + .../src/lib/theme/themes/kanagawa-dark.json | 183 + .../src/lib/theme/themes/kanagawa-light.json | 183 + .../lib/theme/themes/lucent-orng-dark.json | 435 + .../lib/theme/themes/lucent-orng-light.json | 435 + .../ui/src/lib/theme/themes/mono-dark.json | 183 + .../ui/src/lib/theme/themes/mono-light.json | 183 + .../src/lib/theme/themes/mono-plus-dark.json | 162 + .../src/lib/theme/themes/mono-plus-light.json | 162 + .../ui/src/lib/theme/themes/monokai-dark.json | 183 + .../src/lib/theme/themes/monokai-light.json | 183 + .../src/lib/theme/themes/nightowl-dark.json | 183 + .../src/lib/theme/themes/nightowl-light.json | 183 + .../ui/src/lib/theme/themes/nord-dark.json | 183 + .../ui/src/lib/theme/themes/nord-light.json | 183 + .../ui/src/lib/theme/themes/oc-2-dark.json | 435 + .../ui/src/lib/theme/themes/oc-2-light.json | 435 + .../src/lib/theme/themes/onedarkpro-dark.json | 183 + .../lib/theme/themes/onedarkpro-light.json | 183 + .../ui/src/lib/theme/themes/orng-dark.json | 435 + .../ui/src/lib/theme/themes/orng-light.json | 435 + .../ui/src/lib/theme/themes/prColors.ts | 39 + .../ui/src/lib/theme/themes/presets.ts | 118 + .../src/lib/theme/themes/rosepine-dark.json | 435 + .../src/lib/theme/themes/rosepine-light.json | 435 + .../lib/theme/themes/shadesofpurple-dark.json | 435 + .../theme/themes/shadesofpurple-light.json | 435 + .../src/lib/theme/themes/solarized-dark.json | 183 + .../src/lib/theme/themes/solarized-light.json | 183 + .../src/lib/theme/themes/tokyonight-dark.json | 183 + .../lib/theme/themes/tokyonight-light.json | 183 + .../ui/src/lib/theme/themes/vercel-dark.json | 435 + .../ui/src/lib/theme/themes/vercel-light.json | 435 + .../ui/src/lib/theme/themes/vesper-dark.json | 183 + .../ui/src/lib/theme/themes/vesper-light.json | 183 + .../lib/theme/themes/vitesse-dark-dark.json | 166 + .../lib/theme/themes/vitesse-light-light.json | 166 + .../ui/src/lib/theme/themes/zenburn-dark.json | 435 + .../src/lib/theme/themes/zenburn-light.json | 435 + .../ui/src/lib/theme/vscode/adapter.ts | 548 + src/packages/ui/src/lib/toolHelpers.ts | 749 + src/packages/ui/src/lib/toolStatus.ts | 83 + src/packages/ui/src/lib/typography.ts | 357 + src/packages/ui/src/lib/typographyWatcher.ts | 37 + src/packages/ui/src/lib/url.ts | 86 + src/packages/ui/src/lib/userSendAnimation.ts | 34 + src/packages/ui/src/lib/utils.ts | 152 + .../ui/src/lib/voice/browserVoiceService.ts | 654 + .../ui/src/lib/voice/contextFormatters.ts | 131 + src/packages/ui/src/lib/voice/index.ts | 36 + .../ui/src/lib/voice/realtimeClientTools.ts | 106 + src/packages/ui/src/lib/voice/summarize.ts | 117 + src/packages/ui/src/lib/voice/voiceConfig.ts | 35 + src/packages/ui/src/lib/voice/voiceHooks.ts | 133 + src/packages/ui/src/lib/voice/voiceSession.ts | 46 + .../ui/src/lib/worktreeSessionCreator.ts | 568 + .../src/lib/worktrees/pendingDraftWorktree.ts | 51 + .../ui/src/lib/worktrees/worktreeBootstrap.ts | 119 + .../ui/src/lib/worktrees/worktreeCreate.ts | 120 + .../ui/src/lib/worktrees/worktreeManager.ts | 283 + .../ui/src/lib/worktrees/worktreeStatus.ts | 97 + src/packages/ui/src/main.tsx | 101 + src/packages/ui/src/stores/contextStore.ts | 678 + src/packages/ui/src/stores/fileStore.ts | 271 + src/packages/ui/src/stores/globalSessions.ts | 96 + .../ui/src/stores/messageQueueStore.ts | 144 + src/packages/ui/src/stores/messageStore.ts | 3006 ++++ src/packages/ui/src/stores/permissionStore.ts | 280 + src/packages/ui/src/stores/questionStore.ts | 123 + src/packages/ui/src/stores/sessionStore.ts | 1750 ++ .../ui/src/stores/types/sessionTypes.ts | 327 + .../ui/src/stores/useAgentGroupsStore.ts | 737 + src/packages/ui/src/stores/useAgentsStore.ts | 715 + .../ui/src/stores/useCommandsStore.ts | 553 + src/packages/ui/src/stores/useConfigStore.ts | 1870 ++ .../ui/src/stores/useDesktopSshStore.ts | 191 + .../ui/src/stores/useDirectoryStore.ts | 438 + .../ui/src/stores/useFileSearchStore.ts | 151 + .../ui/src/stores/useFilesViewTabsStore.ts | 419 + .../ui/src/stores/useGitHubAuthStore.ts | 62 + .../ui/src/stores/useGitHubPrStatusStore.ts | 694 + .../ui/src/stores/useGitIdentitiesStore.ts | 285 + src/packages/ui/src/stores/useGitStore.ts | 831 + .../src/stores/useInlineCommentDraftStore.ts | 228 + .../ui/src/stores/useMcpConfigStore.ts | 320 + src/packages/ui/src/stores/useMcpStore.ts | 117 + .../ui/src/stores/useMultiRunStore.ts | 283 + .../ui/src/stores/useOpenInAppsStore.ts | 281 + .../ui/src/stores/useProjectsStore.ts | 702 + src/packages/ui/src/stores/useQuotaStore.ts | 298 + .../ui/src/stores/useSessionDisplayStore.ts | 21 + .../ui/src/stores/useSessionFoldersStore.ts | 553 + src/packages/ui/src/stores/useSessionStore.ts | 1484 ++ .../ui/src/stores/useSkillsCatalogStore.ts | 444 + src/packages/ui/src/stores/useSkillsStore.ts | 577 + .../ui/src/stores/useTerminalStore.ts | 550 + src/packages/ui/src/stores/useTodoStore.ts | 98 + src/packages/ui/src/stores/useUIStore.ts | 1883 ++ src/packages/ui/src/stores/useUpdateStore.ts | 293 + .../ui/src/stores/utils/contextUtils.ts | 22 + .../ui/src/stores/utils/messageProjectors.ts | 46 + .../ui/src/stores/utils/messageUtils.ts | 216 + .../src/stores/utils/permissionAutoAccept.ts | 87 + .../ui/src/stores/utils/permissionUtils.ts | 94 + .../ui/src/stores/utils/safeStorage.ts | 224 + .../ui/src/stores/utils/streamDebug.ts | 17 + .../ui/src/stores/utils/streamingUtils.ts | 55 + .../ui/src/stores/utils/tokenUtils.ts | 51 + src/packages/ui/src/styles/design-system.css | 387 + src/packages/ui/src/styles/fireworks.css | 76 + src/packages/ui/src/styles/fonts.ts | 9 + src/packages/ui/src/styles/mobile.css | 488 + src/packages/ui/src/styles/typography.css | 138 + .../ui/src/types/codemirror-lang-elixir.d.ts | 5 + src/packages/ui/src/types/desktop.d.ts | 9 + src/packages/ui/src/types/ghostty-web.d.ts | 11 + src/packages/ui/src/types/index.ts | 73 + src/packages/ui/src/types/multirun.ts | 48 + src/packages/ui/src/types/permission.ts | 28 + src/packages/ui/src/types/question.ts | 45 + src/packages/ui/src/types/quota.ts | 43 + ...act-syntax-highlighter-create-element.d.ts | 14 + src/packages/ui/src/types/streamdown.d.ts | 36 + src/packages/ui/src/types/theme.ts | 299 + src/packages/ui/src/types/tool.ts | 53 + src/packages/ui/src/types/vscode.d.ts | 11 + src/packages/ui/src/types/worktree.ts | 38 + src/packages/ui/src/vite-env.d.ts | 16 + src/packages/ui/tsconfig.json | 23 + src/packages/vscode/.vscodeignore | 11 + src/packages/vscode/CHANGELOG.md | 498 + src/packages/vscode/LICENSE | 21 + src/packages/vscode/README.md | 89 + src/packages/vscode/assets/app-icon.png | Bin 0 -> 27470 bytes src/packages/vscode/assets/icon-titlebar.svg | 42 + src/packages/vscode/assets/icon.svg | 15 + src/packages/vscode/extension.jpg | Bin 0 -> 435055 bytes src/packages/vscode/package.json | 253 + .../vscode/src/AgentManagerPanelProvider.ts | 237 + src/packages/vscode/src/ChatViewProvider.ts | 308 + .../vscode/src/SessionEditorPanelProvider.ts | 276 + src/packages/vscode/src/bridge.ts | 3829 ++++ src/packages/vscode/src/extension.ts | 646 + src/packages/vscode/src/git.d.ts | 349 + src/packages/vscode/src/gitService.ts | 2905 ++++ src/packages/vscode/src/githubAuth.ts | 271 + src/packages/vscode/src/githubIssues.ts | 237 + src/packages/vscode/src/githubPr.ts | 486 + src/packages/vscode/src/githubPulls.ts | 607 + src/packages/vscode/src/opencode.ts | 1001 ++ src/packages/vscode/src/opencodeAuth.ts | 72 + src/packages/vscode/src/opencodeConfig.ts | 1791 ++ src/packages/vscode/src/quotaProviders.ts | 1396 ++ .../vscode/src/sessionActivityWatcher.ts | 220 + src/packages/vscode/src/shikiThemes.ts | 232 + src/packages/vscode/src/skillsCatalog.ts | 950 + src/packages/vscode/src/sseProxy.ts | 140 + src/packages/vscode/src/theme.ts | 15 + src/packages/vscode/src/webviewDevServer.ts | 36 + src/packages/vscode/src/webviewHtml.ts | 307 + src/packages/vscode/tsconfig.json | 18 + src/packages/vscode/tsconfig.webview.json | 24 + src/packages/vscode/vite.config.ts | 65 + src/packages/vscode/webview/api/bridge.ts | 183 + src/packages/vscode/webview/api/editor.ts | 18 + src/packages/vscode/webview/api/files.ts | 119 + src/packages/vscode/webview/api/git.ts | 375 + src/packages/vscode/webview/api/github.ts | 61 + src/packages/vscode/webview/api/index.ts | 33 + .../vscode/webview/api/notifications.ts | 23 + .../vscode/webview/api/permissions.ts | 16 + src/packages/vscode/webview/api/settings.ts | 70 + src/packages/vscode/webview/api/tools.ts | 22 + src/packages/vscode/webview/api/vscode.ts | 17 + src/packages/vscode/webview/index.html | 12 + src/packages/vscode/webview/main.tsx | 1078 ++ src/packages/vscode/webview/tsconfig.json | 12 + src/packages/web/.gitignore | 2 + src/packages/web/README.md | 193 + src/packages/web/bin/cli-entry.js | 55 + src/packages/web/bin/cli-output.js | 145 + src/packages/web/bin/cli.js | 4899 ++++++ src/packages/web/bin/cli.test.js | 56 + src/packages/web/index.html | 561 + src/packages/web/package.json | 106 + .../web/public/apple-touch-icon-120x120.png | Bin 0 -> 3250 bytes .../web/public/apple-touch-icon-152x152.png | Bin 0 -> 4329 bytes .../web/public/apple-touch-icon-167x167.png | Bin 0 -> 4806 bytes .../web/public/apple-touch-icon-180x180.png | Bin 0 -> 5081 bytes src/packages/web/public/apple-touch-icon.png | Bin 0 -> 5081 bytes src/packages/web/public/apple-touch-icon.svg | 16 + src/packages/web/public/favicon-16.png | Bin 0 -> 437 bytes src/packages/web/public/favicon-32.png | Bin 0 -> 919 bytes src/packages/web/public/favicon.png | Bin 0 -> 2050 bytes src/packages/web/public/favicon.svg | 26 + src/packages/web/public/logo-dark-192x192.png | Bin 0 -> 3863 bytes src/packages/web/public/logo-dark-512x512.svg | 16 + .../web/public/logo-light-192x192.png | Bin 0 -> 3827 bytes .../web/public/logo-light-512x512.svg | 16 + src/packages/web/public/pwa-192.png | Bin 0 -> 4440 bytes src/packages/web/public/pwa-512.png | Bin 0 -> 15773 bytes src/packages/web/public/pwa-maskable-192.png | Bin 0 -> 4037 bytes src/packages/web/public/pwa-maskable-512.png | Bin 0 -> 14526 bytes src/packages/web/public/site.webmanifest | 22 + .../web/server/TERMINAL_INPUT_WS_PROTOCOL.md | 44 + src/packages/web/server/index.d.ts | 39 + src/packages/web/server/index.js | 14413 ++++++++++++++++ .../web/server/lib/cloudflare-tunnel.js | 650 + .../web/server/lib/git/DOCUMENTATION.md | 146 + .../web/server/lib/git/credentials.js | 74 + .../web/server/lib/git/identity-storage.js | 110 + src/packages/web/server/lib/git/index.js | 6 + src/packages/web/server/lib/git/service.js | 3124 ++++ .../web/server/lib/github/DOCUMENTATION.md | 170 + src/packages/web/server/lib/github/auth.js | 307 + .../web/server/lib/github/device-flow.js | 50 + src/packages/web/server/lib/github/index.js | 24 + src/packages/web/server/lib/github/octokit.js | 10 + .../web/server/lib/github/pr-status.js | 478 + .../web/server/lib/github/repo/index.js | 55 + .../server/lib/notifications/DOCUMENTATION.md | 61 + .../web/server/lib/notifications/index.js | 1 + .../web/server/lib/notifications/message.js | 49 + .../server/lib/notifications/message.test.js | 59 + .../web/server/lib/opencode/DOCUMENTATION.md | 59 + .../web/server/lib/opencode/agents.js | 634 + src/packages/web/server/lib/opencode/auth.js | 81 + .../web/server/lib/opencode/commands.js | 339 + src/packages/web/server/lib/opencode/index.js | 66 + src/packages/web/server/lib/opencode/mcp.js | 206 + .../web/server/lib/opencode/providers.js | 96 + .../web/server/lib/opencode/shared.js | 527 + .../web/server/lib/opencode/skills.js | 480 + .../web/server/lib/opencode/tunnel-auth.js | 591 + .../web/server/lib/opencode/ui-auth.js | 510 + .../web/server/lib/package-manager.js | 505 + .../web/server/lib/quota/DOCUMENTATION.md | 55 + src/packages/web/server/lib/quota/index.js | 24 + .../web/server/lib/quota/providers/claude.js | 107 + .../web/server/lib/quota/providers/codex.js | 113 + .../web/server/lib/quota/providers/copilot.js | 165 + .../server/lib/quota/providers/google/api.js | 92 + .../server/lib/quota/providers/google/auth.js | 108 + .../lib/quota/providers/google/index.js | 124 + .../lib/quota/providers/google/transforms.js | 109 + .../web/server/lib/quota/providers/index.js | 152 + .../server/lib/quota/providers/interface.js | 55 + .../web/server/lib/quota/providers/kimi.js | 108 + .../quota/providers/minimax-cn-coding-plan.js | 15 + .../quota/providers/minimax-coding-plan.js | 15 + .../lib/quota/providers/minimax-shared.js | 136 + .../web/server/lib/quota/providers/nanogpt.js | 124 + .../lib/quota/providers/ollama-cloud.js | 112 + .../web/server/lib/quota/providers/openai.js | 91 + .../server/lib/quota/providers/openrouter.js | 92 + .../web/server/lib/quota/providers/zai.js | 91 + .../web/server/lib/quota/utils/auth.js | 46 + .../web/server/lib/quota/utils/formatters.js | 76 + .../web/server/lib/quota/utils/index.js | 10 + .../server/lib/quota/utils/transformers.js | 55 + .../lib/skills-catalog/DOCUMENTATION.md | 178 + .../web/server/lib/skills-catalog/cache.js | 29 + .../server/lib/skills-catalog/clawdhub/api.js | 158 + .../lib/skills-catalog/clawdhub/index.js | 30 + .../lib/skills-catalog/clawdhub/install.js | 238 + .../lib/skills-catalog/clawdhub/scan.js | 113 + .../lib/skills-catalog/curated-sources.js | 21 + .../web/server/lib/skills-catalog/git.js | 77 + .../web/server/lib/skills-catalog/index.js | 42 + .../web/server/lib/skills-catalog/install.js | 294 + .../web/server/lib/skills-catalog/scan.js | 221 + .../web/server/lib/skills-catalog/source.js | 85 + .../web/server/lib/terminal/DOCUMENTATION.md | 114 + src/packages/web/server/lib/terminal/index.js | 12 + .../server/lib/terminal/input-ws-protocol.js | 66 + .../lib/terminal/input-ws-protocol.test.js | 138 + .../web/server/lib/tts/DOCUMENTATION.md | 134 + src/packages/web/server/lib/tts/index.js | 16 + src/packages/web/server/lib/tts/service.js | 162 + .../web/server/lib/tts/summarization.js | 171 + src/packages/web/server/lib/tunnels/index.js | 166 + .../lib/tunnels/providers/cloudflare.js | 260 + .../web/server/lib/tunnels/registry.js | 51 + src/packages/web/server/lib/tunnels/types.js | 219 + src/packages/web/src/api/files.ts | 197 + src/packages/web/src/api/git.ts | 61 + src/packages/web/src/api/github.ts | 233 + src/packages/web/src/api/index.ts | 23 + src/packages/web/src/api/notifications.ts | 77 + src/packages/web/src/api/permissions.ts | 15 + src/packages/web/src/api/push.ts | 59 + src/packages/web/src/api/settings.ts | 58 + src/packages/web/src/api/terminal.ts | 74 + src/packages/web/src/api/tools.ts | 22 + src/packages/web/src/main.tsx | 28 + src/packages/web/src/pwa.d.ts | 13 + src/packages/web/src/sw.ts | 71 + src/packages/web/tsconfig.json | 25 + src/packages/web/vite.config.ts | 128 + src/patches/ghostty-web+0.3.0.patch | 33 + src/postcss.config.js | 5 + src/scripts/bump-version.mjs | 97 + src/scripts/convert-vscode-theme.cjs | 497 + src/scripts/dev-vscode.mjs | 213 + src/scripts/dev-web-full.mjs | 214 + src/scripts/dev-web-hmr.mjs | 136 + src/scripts/docker-entrypoint.sh | 77 + src/scripts/docs/validate-docs.mjs | 88 + src/scripts/generate-file-type-sprite.mjs | 129 + src/scripts/install.sh | 218 + src/scripts/port-opencode-theme.ts | 1360 ++ src/scripts/test-release-build.sh | 328 + src/tsconfig.json | 21 + src/vite-theme-plugin.ts | 8 + src/vite.config.ts | 57 + 1941 files changed, 269637 insertions(+) create mode 100644 Jenkinsfile create mode 100644 src/.dockerignore create mode 100644 src/.github/CODEOWNERS create mode 100644 src/.github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 src/.github/ISSUE_TEMPLATE/config.yml create mode 100644 src/.github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 src/.github/workflows/build-macos-arm64-dmg.yml create mode 100644 src/.github/workflows/docs-source.yml create mode 100644 src/.github/workflows/oc-integration.yml create mode 100644 src/.github/workflows/oc-review.yml create mode 100644 src/.github/workflows/release.yml create mode 100644 src/.github/workflows/vscode-extension.yml create mode 100644 src/.gitignore create mode 100644 src/.nvmrc create mode 100644 src/.opencode/commands/changelog.md create mode 100644 src/.opencode/skills/clack-cli-patterns/SKILL.md create mode 100644 src/.opencode/skills/settings-ui-patterns/SKILL.md create mode 100644 src/.opencode/skills/theme-system/SKILL.md create mode 100644 src/.opencode/skills/theme-system/references/adding-themes.md create mode 100644 src/AGENTS.md create mode 100644 src/CHANGELOG.md create mode 100644 src/CONTRIBUTING.md create mode 100644 src/Caddyfile create mode 100644 src/Dockerfile create mode 100644 src/LICENSE create mode 100644 src/README.md create mode 100644 src/SECURITY.md create mode 100644 src/bun.lock create mode 100644 src/components.json create mode 100644 src/docker-compose.yml create mode 100644 src/docs/.gitkeep create mode 100644 src/docs/CUSTOM_THEMES.md create mode 100644 src/docs/references/badges/created-with-opencode.svg create mode 100644 src/docs/references/badges/openchamber-logo-dark.png create mode 100644 src/docs/references/badges/openchamber-logo-dark.svg create mode 100644 src/docs/references/badges/openchamber-logo-light.svg create mode 100644 src/docs/references/chat_example.png create mode 100644 src/docs/references/diff_example.png create mode 100644 src/docs/references/pwa_chat_example.png create mode 100644 src/docs/references/pwa_diff_example.png create mode 100644 src/docs/references/settings_example.png create mode 100644 src/docs/references/tool_output_example.png create mode 100644 src/docs/references/web_version_example.png create mode 100644 src/eslint.config.js create mode 100644 src/fix-deprecation.js create mode 100644 src/package.json create mode 100644 src/packages/desktop/.gitignore create mode 100644 src/packages/desktop/README.md create mode 100644 src/packages/desktop/noop-dist/index.html create mode 100644 src/packages/desktop/package.json create mode 100644 src/packages/desktop/public/ibm-plex-mono-latin-600-normal.woff2 create mode 100644 src/packages/desktop/public/ibm-plex-mono-latin-700-normal.woff2 create mode 100644 src/packages/desktop/scripts/build-sidecar.mjs create mode 100644 src/packages/desktop/scripts/desktop-dev.mjs create mode 100644 src/packages/desktop/scripts/dev-web-server.mjs create mode 100644 src/packages/desktop/scripts/opencode-cli.mjs create mode 100644 src/packages/desktop/src-tauri/Cargo.lock create mode 100644 src/packages/desktop/src-tauri/Cargo.toml create mode 100644 src/packages/desktop/src-tauri/Info.plist create mode 100644 src/packages/desktop/src-tauri/build.rs create mode 100644 src/packages/desktop/src-tauri/capabilities/default.json create mode 100644 src/packages/desktop/src-tauri/entitlements.plist create mode 100644 src/packages/desktop/src-tauri/icons/app-icon.png create mode 100644 src/packages/desktop/src-tauri/icons/app-icon.svg create mode 100644 src/packages/desktop/src-tauri/icons/dev-icon.icns create mode 100644 src/packages/desktop/src-tauri/icons/dev-icon.png create mode 100644 src/packages/desktop/src-tauri/icons/icon.icns create mode 100644 src/packages/desktop/src-tauri/icons/icon.png create mode 100644 src/packages/desktop/src-tauri/resources/.gitkeep create mode 100644 src/packages/desktop/src-tauri/sidecars/.gitkeep create mode 100644 src/packages/desktop/src-tauri/src/main.rs create mode 100644 src/packages/desktop/src-tauri/src/remote_ssh.rs create mode 100644 src/packages/desktop/src-tauri/tauri.conf.json create mode 100644 src/packages/desktop/src-tauri/tauri.dev.conf.json create mode 100644 src/packages/docs/CONTRIBUTING.md create mode 100644 src/packages/docs/DEPLOYMENT.md create mode 100644 src/packages/docs/README.md create mode 100644 src/packages/docs/content/docs/index.mdx create mode 100644 src/packages/docs/content/docs/install.mdx create mode 100644 src/packages/docs/content/docs/quickstart.mdx create mode 100644 src/packages/docs/content/docs/themes.mdx create mode 100644 src/packages/docs/content/docs/troubleshooting.mdx create mode 100644 src/packages/docs/content/docs/tunnels.mdx create mode 100644 src/packages/docs/sidebar.config.json create mode 100644 src/packages/ui/package.json create mode 100644 src/packages/ui/src/App.css create mode 100644 src/packages/ui/src/App.tsx create mode 100644 src/packages/ui/src/assets/icons/file-types/3d.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/README.md create mode 100644 src/packages/ui/src/assets/icons/file-types/abap.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/abc.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/actionscript.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ada.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/adobe-illustrator.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/adobe-illustrator_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/adobe-photoshop.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/adobe-photoshop_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/adobe-swc.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/adonis.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/advpl.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/amplify.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/android.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/angular.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/antlr.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/apiblueprint.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/apollo.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/applescript.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/apps-script.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/appveyor.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/architecture.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/arduino.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/asciidoc.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/assembly.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/astro-config.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/astro.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/astyle.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/audio.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/aurelia.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/authors.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/auto.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/auto_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/autohotkey.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/autoit.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/azure-pipelines.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/azure.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/babel.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ballerina.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bazel.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bbx.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/beancount.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bench-js.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bench-jsx.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bench-ts.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bibliography.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bibtex-style.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bicep.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/biome.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bitbucket.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bithound.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/blender.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/blink.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/blink_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/blitz.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bower.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/brainfuck.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/browserlist.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/browserlist_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bruno.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/buck.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bucklescript.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/buildkite.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bun.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/bun_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/c.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/c3.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cabal.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/caddy.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cadence.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cairo.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cake.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/capacitor.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/capnp.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cbx.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cds.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/certificate.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/changelog.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/chess.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/chess_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/chrome.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/circleci.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/circleci_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/citation.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/clangd.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/claude.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cline.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/clojure.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cloudfoundry.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cmake.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/coala.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cobol.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/coconut.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/code-climate.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/code-climate_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/codecov.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/codeowners.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/coderabbit-ai.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/coffee.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/coldfusion.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/coloredpetrinets.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/command.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/commitizen.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/commitlint.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/concourse.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/conduct.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/console.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/contentlayer.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/context.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/contributing.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/controller.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/copilot.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/copilot_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cpp.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/craco.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/credits.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/crystal.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/crystal_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/csharp.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/css-map.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/css.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cucumber.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cuda.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cursor.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cursor_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/cypress.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/d.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/dart.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/dart_generated.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/database.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/deepsource.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/denizenscript.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/deno.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/deno_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/dependabot.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/dependencies-update.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/dhall.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/diff.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/dinophp.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/disc.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/django.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/dll.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/docker.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/doctex-installer.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/document.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/dotjs.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/drawio.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/drizzle.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/drone.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/drone_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/duc.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/dune.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/edge.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/editorconfig.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ejs.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/elixir.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/elm.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/email.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ember.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/epub.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/erlang.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/esbuild.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/eslint.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/excalidraw.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/exe.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/fastlane.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/favicon.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/figma.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/firebase.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/flash.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/flow.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-admin-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-admin.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-android-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-android.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-angular-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-angular.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-animation-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-animation.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-ansible-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-ansible.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-api-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-api.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-apollo-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-apollo.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-app-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-app.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-archive-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-archive.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-astro-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-astro.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-atom-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-atom.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-attachment-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-attachment.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-audio-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-audio.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-aurelia-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-aurelia.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-aws-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-aws.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-azure-pipelines-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-azure-pipelines.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-backup-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-backup.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-base-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-base.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-batch-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-batch.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-benchmark-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-benchmark.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-bibliography-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-bibliography.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-bicep-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-bicep.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-blender-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-blender.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-bloc-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-bloc.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-bower-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-bower.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-buildkite-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-buildkite.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cart-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cart.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-changesets-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-changesets.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-ci-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-ci.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-circleci-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-circleci.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-class-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-class.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-claude-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-claude.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-client-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-client.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cline-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cline.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cloud-functions-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cloud-functions.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cloudflare-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cloudflare.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cluster-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cluster.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cobol-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cobol.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-command-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-command.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-components-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-components.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-config-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-config.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-connection-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-connection.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-console-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-console.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-constant-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-constant.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-container-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-container.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-content-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-content.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-context-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-context.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-contract-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-contract.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-controller-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-controller.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-core-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-core.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-coverage-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-coverage.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-css-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-css.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cursor-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cursor-open_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cursor.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cursor_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-custom-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-custom.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cypress-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-cypress.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-dart-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-dart.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-database-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-database.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-debug-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-debug.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-decorators-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-decorators.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-delta-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-delta.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-desktop-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-desktop.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-directive-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-directive.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-dist-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-dist.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-docker-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-docker.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-docs-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-docs.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-download-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-download.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-drizzle-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-drizzle.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-dump-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-dump.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-element-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-element.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-enum-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-enum.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-environment-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-environment.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-error-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-error.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-event-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-event.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-examples-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-examples.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-expo-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-expo.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-export-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-export.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-fastlane-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-fastlane.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-favicon-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-favicon.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-firebase-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-firebase.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-firestore-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-firestore.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-flow-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-flow.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-flutter-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-flutter.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-font-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-font.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-forgejo-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-forgejo.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-functions-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-functions.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-gamemaker-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-gamemaker.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-generator-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-generator.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-gh-workflows-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-gh-workflows.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-git-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-git.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-gitea-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-gitea.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-github-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-github.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-gitlab-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-gitlab.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-global-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-global.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-godot-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-godot.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-gradle-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-gradle.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-graphql-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-graphql.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-guard-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-guard.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-gulp-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-gulp.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-helm-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-helm.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-helper-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-helper.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-home-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-home.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-hook-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-hook.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-husky-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-husky.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-i18n-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-i18n.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-images-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-images.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-import-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-import.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-include-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-include.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-intellij-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-intellij-open_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-intellij.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-intellij_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-interceptor-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-interceptor.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-interface-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-interface.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-ios-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-ios.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-java-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-java.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-javascript-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-javascript.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-jinja-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-jinja-open_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-jinja.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-jinja_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-job-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-job.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-json-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-json.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-jupyter-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-jupyter.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-keys-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-keys.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-kubernetes-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-kubernetes.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-kusto-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-kusto.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-layout-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-layout.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-lefthook-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-lefthook.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-less-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-less.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-lib-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-lib.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-link-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-link.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-linux-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-linux.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-liquibase-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-liquibase.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-log-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-log.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-lottie-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-lottie.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-lua-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-lua.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-luau-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-luau.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-macos-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-macos.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-mail-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-mail.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-mappings-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-mappings.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-markdown-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-markdown.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-mercurial-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-mercurial.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-messages-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-messages.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-meta-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-meta.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-middleware-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-middleware.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-mjml-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-mjml.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-mobile-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-mobile.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-mock-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-mock.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-mojo-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-mojo.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-molecule-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-molecule.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-moon-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-moon.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-netlify-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-netlify.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-next-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-next.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-ngrx-store-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-ngrx-store.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-node-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-node.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-nuxt-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-nuxt.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-obsidian-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-obsidian.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-organism-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-organism.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-other-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-other.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-packages-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-packages.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-pdf-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-pdf.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-pdm-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-pdm.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-php-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-php.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-phpmailer-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-phpmailer.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-pipe-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-pipe.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-plastic-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-plastic.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-plugin-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-plugin.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-policy-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-policy.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-powershell-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-powershell.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-prisma-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-prisma.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-private-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-private.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-project-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-project.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-prompts-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-prompts.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-proto-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-proto.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-public-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-public.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-python-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-python.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-pytorch-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-pytorch.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-quasar-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-quasar.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-queue-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-queue.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-react-components-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-react-components.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-redux-reducer-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-redux-reducer.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-repository-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-repository.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-resolver-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-resolver.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-resource-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-resource.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-review-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-review.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-robot-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-robot.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-routes-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-routes.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-rules-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-rules.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-rust-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-rust.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-sandbox-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-sandbox.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-sass-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-sass.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-scala-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-scala.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-scons-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-scons.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-scripts-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-scripts.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-secure-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-secure.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-seeders-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-seeders.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-server-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-server.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-serverless-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-serverless.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-shader-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-shader.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-shared-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-shared.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-snapcraft-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-snapcraft.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-snippet-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-snippet.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-src-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-src-tauri-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-src-tauri.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-src.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-stack-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-stack.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-stencil-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-stencil.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-store-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-store.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-storybook-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-storybook.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-stylus-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-stylus.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-sublime-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-sublime.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-supabase-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-supabase.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-svelte-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-svelte.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-svg-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-svg.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-syntax-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-syntax.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-target-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-target.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-taskfile-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-taskfile.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-tasks-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-tasks.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-television-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-television.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-temp-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-temp.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-template-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-template.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-terraform-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-terraform.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-test-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-test.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-theme-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-theme.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-tools-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-tools.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-trash-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-trash.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-trigger-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-trigger.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-turborepo-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-turborepo.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-typescript-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-typescript.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-ui-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-ui.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-unity-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-unity.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-update-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-update.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-upload-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-upload.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-utils-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-utils.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-vercel-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-vercel.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-verdaccio-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-verdaccio.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-video-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-video.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-views-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-views.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-vm-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-vm.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-vscode-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-vscode.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-vue-directives-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-vue-directives.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-vue-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-vue.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-vuepress-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-vuepress.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-vuex-store-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-vuex-store.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-wakatime-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-wakatime.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-webpack-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-webpack.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-windows-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-windows.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-wordpress-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-wordpress.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-yarn-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-yarn.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-zeabur-open.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder-zeabur.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/folder.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/font.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/forth.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/fortran.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/foxpro.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/freemarker.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/fsharp.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/fusebox.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/gamemaker.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/garden.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/gatsby.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/gcp.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/gemfile.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/gemini-ai.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/gemini.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/git.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/github-actions-workflow.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/github-sponsors.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/gitlab.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/gitpod.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/gleam.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/gnuplot.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/go-mod.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/go.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/go_gopher.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/godot-assets.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/godot.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/gradle.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/grafana-alloy.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/grain.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/graphcool.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/graphql.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/gridsome.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/groovy.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/grunt.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/gulp.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/h.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/hack.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/hadolint.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/haml.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/handlebars.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/hardhat.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/harmonix.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/haskell.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/haxe.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/hcl.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/hcl_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/helm.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/heroku.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/hex.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/histoire.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/hjson.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/horusec.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/hosts.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/hosts_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/hpp.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/html.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/http.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/huff.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/huff_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/hurl.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/husky.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/i18n.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/idris.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ifanr-cloud.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/image.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/imba.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/installation.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ionic.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/istanbul.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/jar.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/java.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/javaclass.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/javascript-map.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/javascript.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/jenkins.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/jest.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/jinja.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/jinja_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/jsconfig.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/json.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/jsr.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/jsr_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/julia.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/jupyter.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/just.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/karma.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/kcl.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/key.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/keystatic.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/kivy.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/kl.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/knip.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/kotlin.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/kubernetes.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/kusto.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/label.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/laravel.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/latexmk.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/lbx.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/lefthook.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/lerna.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/less.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/liara.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/lib.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/lighthouse.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/lilypond.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/lintstaged.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/liquid.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/lisp.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/livescript.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/lock.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/log.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/lolcode.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/lottie.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/lua.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/luau.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/lyric.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/makefile.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/markdoc-config.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/markdoc.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/markdown.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/markdownlint.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/markojs.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/mathematica.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/matlab.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/maven.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/mdsvex.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/mdx.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/mercurial.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/merlin.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/mermaid.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/meson.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/minecraft-fabric.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/minecraft.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/mint.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/mjml.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/mocha.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/modernizr.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/mojo.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/moon.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/moonscript.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/mxml.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/nano-staged.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/nano-staged_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ndst.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/nest.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/netlify.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/netlify_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/next.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/next_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/nginx.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ngrx-actions.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ngrx-effects.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ngrx-entity.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ngrx-reducer.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ngrx-selectors.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ngrx-state.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/nim.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/nix.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/nodejs.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/nodejs_alt.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/nodemon.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/npm.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/nuget.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/nunjucks.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/nuxt.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/nx.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/objective-c.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/objective-cpp.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ocaml.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/odin.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/opa.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/opam.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/openapi.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/openapi_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/otne.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/oxlint.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/packship.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/palette.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/panda.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/parcel.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/pascal.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/pawn.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/payload.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/payload_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/pdf.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/pdm.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/percy.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/perl.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/php-cs-fixer.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/php.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/php_elephant.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/php_elephant_pink.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/phpstan.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/phpunit.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/pinejs.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/pipeline.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/pkl.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/plastic.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/playwright.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/plop.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/pm2-ecosystem.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/pnpm.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/pnpm_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/poetry.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/postcss.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/posthtml.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/powerpoint.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/powershell.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/pre-commit.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/prettier.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/prisma.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/processing.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/prolog.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/prompt.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/proto.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/protractor.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/pug.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/puppet.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/puppeteer.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/purescript.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/python-misc.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/python.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/pytorch.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/qsharp.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/quarto.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/quasar.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/quokka.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/qwik.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/r.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/racket.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/raml.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/razor.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/rbxmk.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/rc.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/react.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/react_ts.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/readme.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/reason.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/red.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/redux-action.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/redux-reducer.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/redux-selector.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/redux-store.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/regedit.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/remark.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/remix.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/remix_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/renovate.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/replit.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/rescript-interface.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/rescript.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/restql.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/riot.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/roadmap.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/roblox.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/robot.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/robots.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/rocket.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/rojo.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/rollup.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/rome.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/routing.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/rspec.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/rubocop.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/rubocop_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ruby.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/ruff.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/rust.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/salesforce.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/san.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/sas.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/sass.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/sbt.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/scala.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/scheme.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/scons.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/scons_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/screwdriver.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/search.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/semantic-release.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/semantic-release_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/semgrep.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/sentry.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/sequelize.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/serverless.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/settings.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/shader.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/silverstripe.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/simulink.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/siyuan.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/sketch.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/slim.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/slint.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/slug.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/smarty.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/sml.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/snakemake.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/snapcraft.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/snowpack.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/snowpack_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/snyk.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/solidity.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/sonarcloud.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/sprite.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/spwn.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/stackblitz.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/stan.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/steadybit.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/stencil.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/stitches.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/stitches_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/storybook.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/stryker.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/stylable.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/stylelint.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/stylelint_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/stylus.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/sublime.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/subtitles.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/supabase.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/svelte.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/svg.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/svgo.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/svgr.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/swagger.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/sway.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/swc.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/swift.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/syncpack.svg create mode 100755 src/packages/ui/src/assets/icons/file-types/systemd.svg create mode 100755 src/packages/ui/src/assets/icons/file-types/systemd_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/table.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/tailwindcss.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/taskfile.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/tauri.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/taze.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/tcl.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/teal.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/templ.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/template.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/terraform.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/test-js.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/test-jsx.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/test-ts.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/tex.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/textlint.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/tilt.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/tldraw.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/tldraw_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/tobi.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/tobimake.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/todo.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/toml.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/toml_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/travis.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/tree.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/trigger.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/tsconfig.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/tsdoc.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/tsil.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/tune.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/turborepo.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/turborepo_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/twig.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/twine.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/typescript-def.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/typescript.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/typst.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/umi.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/uml.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/uml_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/unity.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/unocss.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/url.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/uv.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vagrant.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vala.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vanilla-extract.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/varnish.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vedic.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/velite.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/velocity.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vercel.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vercel_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/verdaccio.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/verified.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/verilog.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vfl.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/video.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vim.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/virtual.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/visualstudio.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vite.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vitest.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vlang.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vscode.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vue-config.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vue.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/vuex-store.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/wakatime.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/wakatime_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/wallaby.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/wally.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/watchman.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/webassembly.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/webhint.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/webpack.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/wepy.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/werf.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/windicss.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/wolframlanguage.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/word.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/wrangler.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/wxt.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/xaml.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/xmake.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/xml.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/yaml.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/yang.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/yarn.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/zeabur.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/zeabur_light.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/zig.svg create mode 100644 src/packages/ui/src/assets/icons/file-types/zip.svg create mode 100644 src/packages/ui/src/assets/provider-logos/bailian-coding-plan.svg create mode 100644 src/packages/ui/src/assets/provider-logos/cursor.svg create mode 100644 src/packages/ui/src/assets/provider-logos/evroc.svg create mode 100644 src/packages/ui/src/assets/provider-logos/gocode.svg create mode 100644 src/packages/ui/src/assets/provider-logos/lmstudio.svg create mode 100644 src/packages/ui/src/assets/provider-logos/ollama.svg create mode 100644 src/packages/ui/src/components/auth/SessionAuthGate.tsx create mode 100644 src/packages/ui/src/components/chat/AgentMentionAutocomplete.tsx create mode 100644 src/packages/ui/src/components/chat/ChatContainer.tsx create mode 100644 src/packages/ui/src/components/chat/ChatEmptyState.tsx create mode 100644 src/packages/ui/src/components/chat/ChatErrorBoundary.tsx create mode 100644 src/packages/ui/src/components/chat/ChatInput.tsx create mode 100644 src/packages/ui/src/components/chat/ChatMessage.tsx create mode 100644 src/packages/ui/src/components/chat/CommandAutocomplete.tsx create mode 100644 src/packages/ui/src/components/chat/DiffPreview.tsx create mode 100644 src/packages/ui/src/components/chat/FileAttachment.tsx create mode 100644 src/packages/ui/src/components/chat/FileMentionAutocomplete.tsx create mode 100644 src/packages/ui/src/components/chat/MarkdownRenderer.tsx create mode 100644 src/packages/ui/src/components/chat/MessageList.tsx create mode 100644 src/packages/ui/src/components/chat/MobileAgentButton.tsx create mode 100644 src/packages/ui/src/components/chat/MobileModelButton.tsx create mode 100644 src/packages/ui/src/components/chat/MobileSessionStatusBar.tsx create mode 100644 src/packages/ui/src/components/chat/ModelControls.tsx create mode 100644 src/packages/ui/src/components/chat/PermissionCard.tsx create mode 100644 src/packages/ui/src/components/chat/PermissionRequest.tsx create mode 100644 src/packages/ui/src/components/chat/PermissionToastActions.tsx create mode 100644 src/packages/ui/src/components/chat/QuestionCard.tsx create mode 100644 src/packages/ui/src/components/chat/QueuedMessageChips.tsx create mode 100644 src/packages/ui/src/components/chat/SkillAutocomplete.tsx create mode 100644 src/packages/ui/src/components/chat/StatusChip.tsx create mode 100644 src/packages/ui/src/components/chat/StatusRow.tsx create mode 100644 src/packages/ui/src/components/chat/StreamingTextDiff.tsx create mode 100644 src/packages/ui/src/components/chat/TimelineDialog.tsx create mode 100644 src/packages/ui/src/components/chat/UnifiedControlsDrawer.tsx create mode 100644 src/packages/ui/src/components/chat/components/ScrollToBottomButton.tsx create mode 100644 src/packages/ui/src/components/chat/components/TurnActivity.tsx create mode 100644 src/packages/ui/src/components/chat/components/TurnAssistantBlock.tsx create mode 100644 src/packages/ui/src/components/chat/components/TurnItem.tsx create mode 100644 src/packages/ui/src/components/chat/components/TurnList.tsx create mode 100644 src/packages/ui/src/components/chat/hooks/useChatTimelineController.ts create mode 100644 src/packages/ui/src/components/chat/hooks/useChatTurnNavigation.ts create mode 100644 src/packages/ui/src/components/chat/hooks/useStreamingTextThrottle.ts create mode 100644 src/packages/ui/src/components/chat/hooks/useTurnLookup.ts create mode 100644 src/packages/ui/src/components/chat/hooks/useTurnRecords.ts create mode 100644 src/packages/ui/src/components/chat/lib/blockingRequests.ts create mode 100644 src/packages/ui/src/components/chat/lib/scroll/scrollIntent.ts create mode 100644 src/packages/ui/src/components/chat/lib/scroll/scrollSpy.ts create mode 100644 src/packages/ui/src/components/chat/lib/turns/applyRetryOverlay.ts create mode 100644 src/packages/ui/src/components/chat/lib/turns/constants.ts create mode 100644 src/packages/ui/src/components/chat/lib/turns/historySignals.ts create mode 100644 src/packages/ui/src/components/chat/lib/turns/projectTurnActivity.ts create mode 100644 src/packages/ui/src/components/chat/lib/turns/projectTurnIndexes.ts create mode 100644 src/packages/ui/src/components/chat/lib/turns/projectTurnRecords.ts create mode 100644 src/packages/ui/src/components/chat/lib/turns/projectTurnSummary.ts create mode 100644 src/packages/ui/src/components/chat/lib/turns/stabilizeTurnProjection.ts create mode 100644 src/packages/ui/src/components/chat/lib/turns/stageTurns.ts create mode 100644 src/packages/ui/src/components/chat/lib/turns/types.ts create mode 100644 src/packages/ui/src/components/chat/lib/turns/windowTurns.ts create mode 100644 src/packages/ui/src/components/chat/message/DiffViewToggle.tsx create mode 100644 src/packages/ui/src/components/chat/message/FadeInOnReveal.tsx create mode 100644 src/packages/ui/src/components/chat/message/MessageBody.tsx create mode 100644 src/packages/ui/src/components/chat/message/MessageHeader.tsx create mode 100644 src/packages/ui/src/components/chat/message/TextSelectionMenu.tsx create mode 100644 src/packages/ui/src/components/chat/message/ToolOutputDialog.tsx create mode 100644 src/packages/ui/src/components/chat/message/messageRole.ts create mode 100644 src/packages/ui/src/components/chat/message/normalizeUserDisplayParts.ts create mode 100644 src/packages/ui/src/components/chat/message/partUtils.ts create mode 100644 src/packages/ui/src/components/chat/message/parts/AssistantTextPart.tsx create mode 100644 src/packages/ui/src/components/chat/message/parts/DOCUMENTATION.md create mode 100644 src/packages/ui/src/components/chat/message/parts/GenericStatusSpinner.tsx create mode 100644 src/packages/ui/src/components/chat/message/parts/JustificationBlock.tsx create mode 100644 src/packages/ui/src/components/chat/message/parts/MigratingPart.tsx create mode 100644 src/packages/ui/src/components/chat/message/parts/MinDurationShineText.tsx create mode 100644 src/packages/ui/src/components/chat/message/parts/ProgressiveGroup.tsx create mode 100644 src/packages/ui/src/components/chat/message/parts/ReasoningPart.tsx create mode 100644 src/packages/ui/src/components/chat/message/parts/SessionActiveSpinner.tsx create mode 100644 src/packages/ui/src/components/chat/message/parts/ToolPart.tsx create mode 100644 src/packages/ui/src/components/chat/message/parts/ToolRevealOnMount.tsx create mode 100644 src/packages/ui/src/components/chat/message/parts/UserTextPart.tsx create mode 100644 src/packages/ui/src/components/chat/message/parts/VirtualizedCodeBlock.tsx create mode 100644 src/packages/ui/src/components/chat/message/parts/WorkingPlaceholder.tsx create mode 100644 src/packages/ui/src/components/chat/message/parts/assistantTextVisibility.ts create mode 100644 src/packages/ui/src/components/chat/message/parts/toolPresentation.tsx create mode 100644 src/packages/ui/src/components/chat/message/parts/toolRenderUtils.ts create mode 100644 src/packages/ui/src/components/chat/message/parts/useDurationTicker.ts create mode 100644 src/packages/ui/src/components/chat/message/timeFormat.ts create mode 100644 src/packages/ui/src/components/chat/message/toolRenderers.tsx create mode 100644 src/packages/ui/src/components/chat/message/types.ts create mode 100644 src/packages/ui/src/components/chat/mobileControlsUtils.ts create mode 100644 src/packages/ui/src/components/comments/CodeMirrorCommentWidgets.tsx create mode 100644 src/packages/ui/src/components/comments/InlineCommentCard.tsx create mode 100644 src/packages/ui/src/components/comments/InlineCommentInput.tsx create mode 100644 src/packages/ui/src/components/comments/PierreDiffCommentOverlays.tsx create mode 100644 src/packages/ui/src/components/comments/PierreDiffCommentUtils.ts create mode 100644 src/packages/ui/src/components/comments/index.ts create mode 100644 src/packages/ui/src/components/comments/useInlineCommentController.ts create mode 100644 src/packages/ui/src/components/desktop/DesktopHostSwitcher.tsx create mode 100644 src/packages/ui/src/components/desktop/OpenInAppButton.tsx create mode 100644 src/packages/ui/src/components/icons/ArrowsMerge.tsx create mode 100644 src/packages/ui/src/components/icons/DiffIcon.tsx create mode 100644 src/packages/ui/src/components/icons/FileTypeIcon.tsx create mode 100644 src/packages/ui/src/components/icons/McpIcon.tsx create mode 100644 src/packages/ui/src/components/icons/StopIcon.tsx create mode 100644 src/packages/ui/src/components/layout/BottomTerminalDock.tsx create mode 100644 src/packages/ui/src/components/layout/ContextPanel.tsx create mode 100644 src/packages/ui/src/components/layout/ContextSidebarTab.tsx create mode 100644 src/packages/ui/src/components/layout/Header.tsx create mode 100644 src/packages/ui/src/components/layout/MainLayout.tsx create mode 100644 src/packages/ui/src/components/layout/ProjectActionsButton.tsx create mode 100644 src/packages/ui/src/components/layout/ProjectEditDialog.tsx create mode 100644 src/packages/ui/src/components/layout/RightSidebar.tsx create mode 100644 src/packages/ui/src/components/layout/RightSidebarTabs.tsx create mode 100644 src/packages/ui/src/components/layout/Sidebar.tsx create mode 100644 src/packages/ui/src/components/layout/SidebarContextSummary.tsx create mode 100644 src/packages/ui/src/components/layout/SidebarFilesTree.tsx create mode 100644 src/packages/ui/src/components/layout/VSCodeLayout.tsx create mode 100644 src/packages/ui/src/components/mcp/McpDropdown.tsx create mode 100644 src/packages/ui/src/components/multirun/AgentSelector.tsx create mode 100644 src/packages/ui/src/components/multirun/BranchSelector.tsx create mode 100644 src/packages/ui/src/components/multirun/ModelMultiSelect.tsx create mode 100644 src/packages/ui/src/components/multirun/MultiRunLauncher.tsx create mode 100644 src/packages/ui/src/components/multirun/index.ts create mode 100644 src/packages/ui/src/components/onboarding/OnboardingScreen.tsx create mode 100644 src/packages/ui/src/components/providers/ThemeProvider.tsx create mode 100644 src/packages/ui/src/components/sections/SectionPlaceholder.tsx create mode 100644 src/packages/ui/src/components/sections/agents/AgentsPage.tsx create mode 100644 src/packages/ui/src/components/sections/agents/AgentsSidebar.tsx create mode 100644 src/packages/ui/src/components/sections/agents/ModelSelector.tsx create mode 100644 src/packages/ui/src/components/sections/commands/AgentSelector.tsx create mode 100644 src/packages/ui/src/components/sections/commands/CommandsPage.tsx create mode 100644 src/packages/ui/src/components/sections/commands/CommandsSidebar.tsx create mode 100644 src/packages/ui/src/components/sections/git-identities/GitIdentityEditorDialog.tsx create mode 100644 src/packages/ui/src/components/sections/git-identities/GitPage.tsx create mode 100644 src/packages/ui/src/components/sections/mcp/McpPage.tsx create mode 100644 src/packages/ui/src/components/sections/mcp/McpSidebar.tsx create mode 100644 src/packages/ui/src/components/sections/openchamber/AboutSettings.tsx create mode 100644 src/packages/ui/src/components/sections/openchamber/DefaultsSettings.tsx create mode 100644 src/packages/ui/src/components/sections/openchamber/GitHubSettings.tsx create mode 100644 src/packages/ui/src/components/sections/openchamber/GitSettings.tsx create mode 100644 src/packages/ui/src/components/sections/openchamber/KeyboardShortcutsSettings.tsx create mode 100644 src/packages/ui/src/components/sections/openchamber/NotificationSettings.tsx create mode 100644 src/packages/ui/src/components/sections/openchamber/OpenChamberPage.tsx create mode 100644 src/packages/ui/src/components/sections/openchamber/OpenChamberVisualSettings.tsx create mode 100644 src/packages/ui/src/components/sections/openchamber/OpenCodeCliSettings.tsx create mode 100644 src/packages/ui/src/components/sections/openchamber/SessionRetentionSettings.tsx create mode 100644 src/packages/ui/src/components/sections/openchamber/TunnelSettings.tsx create mode 100644 src/packages/ui/src/components/sections/openchamber/VoiceSettings.tsx create mode 100644 src/packages/ui/src/components/sections/openchamber/WorktreeSectionContent.tsx create mode 100644 src/packages/ui/src/components/sections/openchamber/types.ts create mode 100644 src/packages/ui/src/components/sections/projects/ProjectActionsSection.tsx create mode 100644 src/packages/ui/src/components/sections/projects/ProjectsPage.tsx create mode 100644 src/packages/ui/src/components/sections/projects/ProjectsSidebar.tsx create mode 100644 src/packages/ui/src/components/sections/providers/ProvidersPage.tsx create mode 100644 src/packages/ui/src/components/sections/providers/ProvidersSidebar.tsx create mode 100644 src/packages/ui/src/components/sections/remote-instances/RemoteInstancesPage.tsx create mode 100644 src/packages/ui/src/components/sections/remote-instances/RemoteInstancesSidebar.tsx create mode 100644 src/packages/ui/src/components/sections/shared/SettingsPageLayout.tsx create mode 100644 src/packages/ui/src/components/sections/shared/SettingsProjectSelector.tsx create mode 100644 src/packages/ui/src/components/sections/shared/SettingsSection.tsx create mode 100644 src/packages/ui/src/components/sections/shared/SettingsSidebarHeader.tsx create mode 100644 src/packages/ui/src/components/sections/shared/SettingsSidebarItem.tsx create mode 100644 src/packages/ui/src/components/sections/shared/SettingsSidebarLayout.tsx create mode 100644 src/packages/ui/src/components/sections/shared/SidebarGroup.tsx create mode 100644 src/packages/ui/src/components/sections/shared/index.ts create mode 100644 src/packages/ui/src/components/sections/skills/SkillsPage.tsx create mode 100644 src/packages/ui/src/components/sections/skills/SkillsSidebar.tsx create mode 100644 src/packages/ui/src/components/sections/skills/catalog/AddCatalogDialog.tsx create mode 100644 src/packages/ui/src/components/sections/skills/catalog/InstallConflictsDialog.tsx create mode 100644 src/packages/ui/src/components/sections/skills/catalog/InstallFromRepoDialog.tsx create mode 100644 src/packages/ui/src/components/sections/skills/catalog/InstallSkillDialog.tsx create mode 100644 src/packages/ui/src/components/sections/skills/catalog/SkillsCatalogPage.tsx create mode 100644 src/packages/ui/src/components/sections/skills/index.ts create mode 100644 src/packages/ui/src/components/sections/skills/skillLocations.ts create mode 100644 src/packages/ui/src/components/sections/usage/PaceIndicator.tsx create mode 100644 src/packages/ui/src/components/sections/usage/UsageCard.tsx create mode 100644 src/packages/ui/src/components/sections/usage/UsagePage.tsx create mode 100644 src/packages/ui/src/components/sections/usage/UsageProgressBar.tsx create mode 100644 src/packages/ui/src/components/sections/usage/UsageSidebar.tsx create mode 100644 src/packages/ui/src/components/session/BranchPickerDialog.tsx create mode 100644 src/packages/ui/src/components/session/DirectoryAutocomplete.tsx create mode 100644 src/packages/ui/src/components/session/DirectoryExplorerDialog.tsx create mode 100644 src/packages/ui/src/components/session/DirectoryTree.tsx create mode 100644 src/packages/ui/src/components/session/GitHubIntegrationDialog.tsx create mode 100644 src/packages/ui/src/components/session/GitHubIssuePickerDialog.tsx create mode 100644 src/packages/ui/src/components/session/GitHubPrPickerDialog.tsx create mode 100644 src/packages/ui/src/components/session/NewWorktreeDialog.tsx create mode 100644 src/packages/ui/src/components/session/ProjectNotesTodoPanel.tsx create mode 100644 src/packages/ui/src/components/session/SessionDialogs.tsx create mode 100644 src/packages/ui/src/components/session/SessionFolderItem.tsx create mode 100644 src/packages/ui/src/components/session/SessionSidebar.tsx create mode 100644 src/packages/ui/src/components/session/sidebar/ConfirmDialogs.tsx create mode 100644 src/packages/ui/src/components/session/sidebar/DOCUMENTATION.md create mode 100644 src/packages/ui/src/components/session/sidebar/SessionGroupSection.tsx create mode 100644 src/packages/ui/src/components/session/sidebar/SessionNodeItem.tsx create mode 100644 src/packages/ui/src/components/session/sidebar/SidebarActivitySections.tsx create mode 100644 src/packages/ui/src/components/session/sidebar/SidebarFooter.tsx create mode 100644 src/packages/ui/src/components/session/sidebar/SidebarHeader.tsx create mode 100644 src/packages/ui/src/components/session/sidebar/SidebarProjectsList.tsx create mode 100644 src/packages/ui/src/components/session/sidebar/activitySections.ts create mode 100644 src/packages/ui/src/components/session/sidebar/hooks/useArchivedAutoFolders.ts create mode 100644 src/packages/ui/src/components/session/sidebar/hooks/useDirectoryStatusProbe.ts create mode 100644 src/packages/ui/src/components/session/sidebar/hooks/useGroupOrdering.ts create mode 100644 src/packages/ui/src/components/session/sidebar/hooks/useProjectRepoStatus.ts create mode 100644 src/packages/ui/src/components/session/sidebar/hooks/useProjectSessionLists.ts create mode 100644 src/packages/ui/src/components/session/sidebar/hooks/useProjectSessionSelection.ts create mode 100644 src/packages/ui/src/components/session/sidebar/hooks/useSessionActions.ts create mode 100644 src/packages/ui/src/components/session/sidebar/hooks/useSessionFolderCleanup.ts create mode 100644 src/packages/ui/src/components/session/sidebar/hooks/useSessionGrouping.ts create mode 100644 src/packages/ui/src/components/session/sidebar/hooks/useSessionPrefetch.ts create mode 100644 src/packages/ui/src/components/session/sidebar/hooks/useSessionSearchEffects.ts create mode 100644 src/packages/ui/src/components/session/sidebar/hooks/useSessionSidebarSections.ts create mode 100644 src/packages/ui/src/components/session/sidebar/hooks/useSidebarPersistence.ts create mode 100644 src/packages/ui/src/components/session/sidebar/hooks/useStickyProjectHeaders.ts create mode 100644 src/packages/ui/src/components/session/sidebar/sessionFolderDnd.tsx create mode 100644 src/packages/ui/src/components/session/sidebar/sortableItems.tsx create mode 100644 src/packages/ui/src/components/session/sidebar/types.ts create mode 100644 src/packages/ui/src/components/session/sidebar/utils.tsx create mode 100644 src/packages/ui/src/components/terminal/TerminalViewport.tsx create mode 100644 src/packages/ui/src/components/ui/AboutDialog.tsx create mode 100644 src/packages/ui/src/components/ui/CodeMirrorEditor.tsx create mode 100644 src/packages/ui/src/components/ui/CommandPalette.tsx create mode 100644 src/packages/ui/src/components/ui/ConfigUpdateOverlay.tsx create mode 100644 src/packages/ui/src/components/ui/ContextUsageDisplay.tsx create mode 100644 src/packages/ui/src/components/ui/ErrorBoundary.tsx create mode 100644 src/packages/ui/src/components/ui/FireworksAnimation.tsx create mode 100644 src/packages/ui/src/components/ui/HelpDialog.tsx create mode 100644 src/packages/ui/src/components/ui/MemoryDebugPanel.tsx create mode 100644 src/packages/ui/src/components/ui/MobileOverlayPanel.tsx create mode 100644 src/packages/ui/src/components/ui/OpenChamberLogo.tsx create mode 100644 src/packages/ui/src/components/ui/OpenCodeIcon.tsx create mode 100644 src/packages/ui/src/components/ui/OpenCodeLogo.tsx create mode 100644 src/packages/ui/src/components/ui/OpenCodeStatusDialog.tsx create mode 100644 src/packages/ui/src/components/ui/OverlayScrollbar.tsx create mode 100644 src/packages/ui/src/components/ui/ProviderLogo.tsx create mode 100644 src/packages/ui/src/components/ui/ScrollShadow.tsx create mode 100644 src/packages/ui/src/components/ui/ScrollableOverlay.tsx create mode 100644 src/packages/ui/src/components/ui/TextLoop.tsx create mode 100644 src/packages/ui/src/components/ui/UpdateDialog.tsx create mode 100644 src/packages/ui/src/components/ui/alert.tsx create mode 100644 src/packages/ui/src/components/ui/button.tsx create mode 100644 src/packages/ui/src/components/ui/card.tsx create mode 100644 src/packages/ui/src/components/ui/checkbox.tsx create mode 100644 src/packages/ui/src/components/ui/collapsible.tsx create mode 100644 src/packages/ui/src/components/ui/command.tsx create mode 100644 src/packages/ui/src/components/ui/dialog.tsx create mode 100644 src/packages/ui/src/components/ui/dropdown-menu.tsx create mode 100644 src/packages/ui/src/components/ui/grid-loader.tsx create mode 100644 src/packages/ui/src/components/ui/index.ts create mode 100644 src/packages/ui/src/components/ui/input.tsx create mode 100644 src/packages/ui/src/components/ui/number-input.tsx create mode 100644 src/packages/ui/src/components/ui/radio.tsx create mode 100644 src/packages/ui/src/components/ui/scroll-area.tsx create mode 100644 src/packages/ui/src/components/ui/select.tsx create mode 100644 src/packages/ui/src/components/ui/separator.tsx create mode 100644 src/packages/ui/src/components/ui/skeleton.tsx create mode 100644 src/packages/ui/src/components/ui/slider.tsx create mode 100644 src/packages/ui/src/components/ui/sonner.tsx create mode 100644 src/packages/ui/src/components/ui/sortable-tabs-strip.tsx create mode 100644 src/packages/ui/src/components/ui/switch.tsx create mode 100644 src/packages/ui/src/components/ui/text.tsx create mode 100644 src/packages/ui/src/components/ui/textarea.tsx create mode 100644 src/packages/ui/src/components/ui/toast.ts create mode 100644 src/packages/ui/src/components/ui/toggle.tsx create mode 100644 src/packages/ui/src/components/ui/tooltip.tsx create mode 100644 src/packages/ui/src/components/ui/typewriter-text.tsx create mode 100644 src/packages/ui/src/components/views/ChatView.tsx create mode 100644 src/packages/ui/src/components/views/DiffView.tsx create mode 100644 src/packages/ui/src/components/views/FilesView.tsx create mode 100644 src/packages/ui/src/components/views/GitView.tsx create mode 100644 src/packages/ui/src/components/views/MultiRunWindow.tsx create mode 100644 src/packages/ui/src/components/views/PierreDiffViewer.tsx create mode 100644 src/packages/ui/src/components/views/PlanView.tsx create mode 100644 src/packages/ui/src/components/views/PreviewToggleButton.tsx create mode 100644 src/packages/ui/src/components/views/SettingsView.tsx create mode 100644 src/packages/ui/src/components/views/SettingsWindow.tsx create mode 100644 src/packages/ui/src/components/views/TerminalView.tsx create mode 100644 src/packages/ui/src/components/views/agent-manager/AgentGroupDetail.tsx create mode 100644 src/packages/ui/src/components/views/agent-manager/AgentManagerEmptyState.tsx create mode 100644 src/packages/ui/src/components/views/agent-manager/AgentManagerSidebar.tsx create mode 100644 src/packages/ui/src/components/views/agent-manager/AgentManagerView.tsx create mode 100644 src/packages/ui/src/components/views/agent-manager/index.ts create mode 100644 src/packages/ui/src/components/views/git/AIHighlightsBox.tsx create mode 100644 src/packages/ui/src/components/views/git/BranchIntegrationSection.tsx create mode 100644 src/packages/ui/src/components/views/git/BranchSelector.tsx create mode 100644 src/packages/ui/src/components/views/git/ChangeRow.tsx create mode 100644 src/packages/ui/src/components/views/git/ChangesSection.tsx create mode 100644 src/packages/ui/src/components/views/git/CommitInput.tsx create mode 100644 src/packages/ui/src/components/views/git/CommitSection.tsx create mode 100644 src/packages/ui/src/components/views/git/ConflictDialog.tsx create mode 100644 src/packages/ui/src/components/views/git/GitEmptyState.tsx create mode 100644 src/packages/ui/src/components/views/git/GitHeader.tsx create mode 100644 src/packages/ui/src/components/views/git/HistoryCommitRow.tsx create mode 100644 src/packages/ui/src/components/views/git/HistorySection.tsx create mode 100644 src/packages/ui/src/components/views/git/InProgressOperationBanner.tsx create mode 100644 src/packages/ui/src/components/views/git/IntegrateCommitsSection.tsx create mode 100644 src/packages/ui/src/components/views/git/PullRequestSection.tsx create mode 100644 src/packages/ui/src/components/views/git/StashDialog.tsx create mode 100644 src/packages/ui/src/components/views/git/SyncActions.tsx create mode 100644 src/packages/ui/src/components/views/git/WorktreeBranchDisplay.tsx create mode 100644 src/packages/ui/src/components/views/git/index.ts create mode 100644 src/packages/ui/src/components/views/index.ts create mode 100644 src/packages/ui/src/components/voice/BrowserVoiceButton.tsx create mode 100644 src/packages/ui/src/components/voice/VoiceProvider.tsx create mode 100644 src/packages/ui/src/components/voice/VoiceStatusIndicator.tsx create mode 100644 src/packages/ui/src/components/voice/index.ts create mode 100644 src/packages/ui/src/constants/sidebar.ts create mode 100644 src/packages/ui/src/contexts/DiffWorkerProvider.tsx create mode 100644 src/packages/ui/src/contexts/DrawerContext.tsx create mode 100644 src/packages/ui/src/contexts/FireworksContext.tsx create mode 100644 src/packages/ui/src/contexts/RuntimeAPIProvider.tsx create mode 100644 src/packages/ui/src/contexts/ThemeSystemContext.tsx create mode 100644 src/packages/ui/src/contexts/runtimeAPIContext.ts create mode 100644 src/packages/ui/src/contexts/runtimeAPIRegistry.ts create mode 100644 src/packages/ui/src/contexts/theme-system-context.ts create mode 100644 src/packages/ui/src/contexts/useThemeSystem.ts create mode 100644 src/packages/ui/src/hooks/useAssistantStatus.ts create mode 100644 src/packages/ui/src/hooks/useAssistantTyping.ts create mode 100644 src/packages/ui/src/hooks/useAvailableTools.ts create mode 100644 src/packages/ui/src/hooks/useBrowserVoice.ts create mode 100644 src/packages/ui/src/hooks/useChatScrollManager.ts create mode 100644 src/packages/ui/src/hooks/useChatSearchDirectory.ts create mode 100644 src/packages/ui/src/hooks/useDebouncedValue.ts create mode 100644 src/packages/ui/src/hooks/useDrawerSwipe.ts create mode 100644 src/packages/ui/src/hooks/useEdgeSwipe.ts create mode 100644 src/packages/ui/src/hooks/useEffectiveDirectory.ts create mode 100644 src/packages/ui/src/hooks/useEventStream.ts create mode 100644 src/packages/ui/src/hooks/useFileSystemAccess.ts create mode 100644 src/packages/ui/src/hooks/useFireworks.ts create mode 100644 src/packages/ui/src/hooks/useFontPreferences.ts create mode 100644 src/packages/ui/src/hooks/useGitHubPrBackgroundTracking.ts create mode 100644 src/packages/ui/src/hooks/useGitPolling.tsx create mode 100644 src/packages/ui/src/hooks/useGitPollingHook.ts create mode 100644 src/packages/ui/src/hooks/useIsTextTruncated.ts create mode 100644 src/packages/ui/src/hooks/useKeyboardShortcuts.ts create mode 100644 src/packages/ui/src/hooks/useLongPress.ts create mode 100644 src/packages/ui/src/hooks/useMenuActions.ts create mode 100644 src/packages/ui/src/hooks/useMessageTTS.ts create mode 100644 src/packages/ui/src/hooks/useModelLists.ts create mode 100644 src/packages/ui/src/hooks/useProviderLogo.ts create mode 100644 src/packages/ui/src/hooks/usePushVisibilityBeacon.ts create mode 100644 src/packages/ui/src/hooks/usePwaDetection.ts create mode 100644 src/packages/ui/src/hooks/usePwaInstallPrompt.ts create mode 100644 src/packages/ui/src/hooks/usePwaManifestSync.ts create mode 100644 src/packages/ui/src/hooks/useQueuedMessageAutoSend.ts create mode 100644 src/packages/ui/src/hooks/useRouter.ts create mode 100644 src/packages/ui/src/hooks/useRuntimeAPIs.ts create mode 100644 src/packages/ui/src/hooks/useSayTTS.ts create mode 100644 src/packages/ui/src/hooks/useScrollEngine.ts create mode 100644 src/packages/ui/src/hooks/useServerSessionStatus.ts create mode 100644 src/packages/ui/src/hooks/useServerTTS.ts create mode 100644 src/packages/ui/src/hooks/useSessionActivity.ts create mode 100644 src/packages/ui/src/hooks/useSessionAutoCleanup.ts create mode 100644 src/packages/ui/src/hooks/useSessionStatusBootstrap.ts create mode 100644 src/packages/ui/src/hooks/useVoiceContext.ts create mode 100644 src/packages/ui/src/hooks/useWindowTitle.ts create mode 100644 src/packages/ui/src/index.css create mode 100644 src/packages/ui/src/lib/agentColors.ts create mode 100644 src/packages/ui/src/lib/api/types.ts create mode 100644 src/packages/ui/src/lib/appearanceAutoSave.ts create mode 100644 src/packages/ui/src/lib/appearancePersistence.ts create mode 100644 src/packages/ui/src/lib/clipboard.ts create mode 100644 src/packages/ui/src/lib/codeTheme.ts create mode 100644 src/packages/ui/src/lib/codemirror/flexokiTheme.ts create mode 100644 src/packages/ui/src/lib/codemirror/languageByExtension.ts create mode 100644 src/packages/ui/src/lib/configSync.ts create mode 100644 src/packages/ui/src/lib/configUpdate.ts create mode 100644 src/packages/ui/src/lib/contextFileOpenGuard.ts create mode 100644 src/packages/ui/src/lib/debug.ts create mode 100644 src/packages/ui/src/lib/desktop.ts create mode 100644 src/packages/ui/src/lib/desktopHosts.ts create mode 100644 src/packages/ui/src/lib/desktopSsh.ts create mode 100644 src/packages/ui/src/lib/device.ts create mode 100644 src/packages/ui/src/lib/diff/workerFactory.ts create mode 100644 src/packages/ui/src/lib/directoryPersistence.ts create mode 100644 src/packages/ui/src/lib/directoryShowHidden.ts create mode 100644 src/packages/ui/src/lib/execCommands.ts create mode 100644 src/packages/ui/src/lib/fileOpenLimits.ts create mode 100644 src/packages/ui/src/lib/fileTypeIconIds.ts create mode 100644 src/packages/ui/src/lib/fileTypeIcons.ts create mode 100644 src/packages/ui/src/lib/filesViewShowGitignored.ts create mode 100644 src/packages/ui/src/lib/fontOptions.ts create mode 100644 src/packages/ui/src/lib/git/branchNameGenerator.ts create mode 100644 src/packages/ui/src/lib/git/integrateWorktreeCommits.ts create mode 100644 src/packages/ui/src/lib/gitApi.ts create mode 100644 src/packages/ui/src/lib/gitApiHttp.ts create mode 100644 src/packages/ui/src/lib/ime.ts create mode 100644 src/packages/ui/src/lib/messageCompletion.ts create mode 100644 src/packages/ui/src/lib/messageCursorPersistence.ts create mode 100644 src/packages/ui/src/lib/messageFreshness.ts create mode 100644 src/packages/ui/src/lib/messages/agentMentions.ts create mode 100644 src/packages/ui/src/lib/messages/executionMeta.ts create mode 100644 src/packages/ui/src/lib/messages/inlineComments.ts create mode 100644 src/packages/ui/src/lib/messages/messageText.ts create mode 100644 src/packages/ui/src/lib/messages/providerAuthError.ts create mode 100644 src/packages/ui/src/lib/messages/synthetic.ts create mode 100644 src/packages/ui/src/lib/modelPrefsAutoSave.ts create mode 100644 src/packages/ui/src/lib/openCodeStatus.ts create mode 100644 src/packages/ui/src/lib/openInApps.ts create mode 100644 src/packages/ui/src/lib/openchamberConfig.ts create mode 100644 src/packages/ui/src/lib/opencode/client.ts create mode 100644 src/packages/ui/src/lib/permissions/editModeColors.ts create mode 100644 src/packages/ui/src/lib/permissions/editPermissionDefaults.ts create mode 100644 src/packages/ui/src/lib/persistence.ts create mode 100644 src/packages/ui/src/lib/projectActions.ts create mode 100644 src/packages/ui/src/lib/projectMeta.ts create mode 100644 src/packages/ui/src/lib/pwa.ts create mode 100644 src/packages/ui/src/lib/quota/index.ts create mode 100644 src/packages/ui/src/lib/quota/model-families.ts create mode 100644 src/packages/ui/src/lib/quota/providers/base.ts create mode 100644 src/packages/ui/src/lib/quota/providers/index.ts create mode 100644 src/packages/ui/src/lib/quota/utils.ts create mode 100644 src/packages/ui/src/lib/router/index.ts create mode 100644 src/packages/ui/src/lib/router/parseRoute.ts create mode 100644 src/packages/ui/src/lib/router/serializeRoute.ts create mode 100644 src/packages/ui/src/lib/router/types.ts create mode 100644 src/packages/ui/src/lib/sessionEvents.ts create mode 100644 src/packages/ui/src/lib/settings/metadata.ts create mode 100644 src/packages/ui/src/lib/shiki/appThemeRegistry.ts create mode 100644 src/packages/ui/src/lib/shiki/textMateThemeFromAppTheme.ts create mode 100644 src/packages/ui/src/lib/shiki/vscodeTextMateTheme.ts create mode 100644 src/packages/ui/src/lib/shortcuts.ts create mode 100644 src/packages/ui/src/lib/terminal/SerializeAddon.ts create mode 100644 src/packages/ui/src/lib/terminalApi.ts create mode 100644 src/packages/ui/src/lib/terminalTheme.ts create mode 100644 src/packages/ui/src/lib/theme/cssGenerator.ts create mode 100644 src/packages/ui/src/lib/theme/syntaxThemeGenerator.ts create mode 100644 src/packages/ui/src/lib/theme/themes/amoled-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/amoled-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/aura-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/aura-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/ayu-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/ayu-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/carbonfox-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/carbonfox-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/catppuccin-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/catppuccin-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/cursor-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/cursor-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/dracula-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/dracula-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/fields-of-the-shire-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/fields-of-the-shire-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/flexoki-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/flexoki-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/github-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/github-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/gruvbox-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/gruvbox-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/index.ts create mode 100644 src/packages/ui/src/lib/theme/themes/kanagawa-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/kanagawa-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/lucent-orng-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/lucent-orng-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/mono-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/mono-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/mono-plus-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/mono-plus-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/monokai-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/monokai-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/nightowl-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/nightowl-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/nord-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/nord-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/oc-2-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/oc-2-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/onedarkpro-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/onedarkpro-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/orng-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/orng-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/prColors.ts create mode 100644 src/packages/ui/src/lib/theme/themes/presets.ts create mode 100644 src/packages/ui/src/lib/theme/themes/rosepine-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/rosepine-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/shadesofpurple-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/shadesofpurple-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/solarized-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/solarized-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/tokyonight-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/tokyonight-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/vercel-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/vercel-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/vesper-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/vesper-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/vitesse-dark-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/vitesse-light-light.json create mode 100644 src/packages/ui/src/lib/theme/themes/zenburn-dark.json create mode 100644 src/packages/ui/src/lib/theme/themes/zenburn-light.json create mode 100644 src/packages/ui/src/lib/theme/vscode/adapter.ts create mode 100644 src/packages/ui/src/lib/toolHelpers.ts create mode 100644 src/packages/ui/src/lib/toolStatus.ts create mode 100644 src/packages/ui/src/lib/typography.ts create mode 100644 src/packages/ui/src/lib/typographyWatcher.ts create mode 100644 src/packages/ui/src/lib/url.ts create mode 100644 src/packages/ui/src/lib/userSendAnimation.ts create mode 100644 src/packages/ui/src/lib/utils.ts create mode 100644 src/packages/ui/src/lib/voice/browserVoiceService.ts create mode 100644 src/packages/ui/src/lib/voice/contextFormatters.ts create mode 100644 src/packages/ui/src/lib/voice/index.ts create mode 100644 src/packages/ui/src/lib/voice/realtimeClientTools.ts create mode 100644 src/packages/ui/src/lib/voice/summarize.ts create mode 100644 src/packages/ui/src/lib/voice/voiceConfig.ts create mode 100644 src/packages/ui/src/lib/voice/voiceHooks.ts create mode 100644 src/packages/ui/src/lib/voice/voiceSession.ts create mode 100644 src/packages/ui/src/lib/worktreeSessionCreator.ts create mode 100644 src/packages/ui/src/lib/worktrees/pendingDraftWorktree.ts create mode 100644 src/packages/ui/src/lib/worktrees/worktreeBootstrap.ts create mode 100644 src/packages/ui/src/lib/worktrees/worktreeCreate.ts create mode 100644 src/packages/ui/src/lib/worktrees/worktreeManager.ts create mode 100644 src/packages/ui/src/lib/worktrees/worktreeStatus.ts create mode 100644 src/packages/ui/src/main.tsx create mode 100644 src/packages/ui/src/stores/contextStore.ts create mode 100644 src/packages/ui/src/stores/fileStore.ts create mode 100644 src/packages/ui/src/stores/globalSessions.ts create mode 100644 src/packages/ui/src/stores/messageQueueStore.ts create mode 100644 src/packages/ui/src/stores/messageStore.ts create mode 100644 src/packages/ui/src/stores/permissionStore.ts create mode 100644 src/packages/ui/src/stores/questionStore.ts create mode 100644 src/packages/ui/src/stores/sessionStore.ts create mode 100644 src/packages/ui/src/stores/types/sessionTypes.ts create mode 100644 src/packages/ui/src/stores/useAgentGroupsStore.ts create mode 100644 src/packages/ui/src/stores/useAgentsStore.ts create mode 100644 src/packages/ui/src/stores/useCommandsStore.ts create mode 100644 src/packages/ui/src/stores/useConfigStore.ts create mode 100644 src/packages/ui/src/stores/useDesktopSshStore.ts create mode 100644 src/packages/ui/src/stores/useDirectoryStore.ts create mode 100644 src/packages/ui/src/stores/useFileSearchStore.ts create mode 100644 src/packages/ui/src/stores/useFilesViewTabsStore.ts create mode 100644 src/packages/ui/src/stores/useGitHubAuthStore.ts create mode 100644 src/packages/ui/src/stores/useGitHubPrStatusStore.ts create mode 100644 src/packages/ui/src/stores/useGitIdentitiesStore.ts create mode 100644 src/packages/ui/src/stores/useGitStore.ts create mode 100644 src/packages/ui/src/stores/useInlineCommentDraftStore.ts create mode 100644 src/packages/ui/src/stores/useMcpConfigStore.ts create mode 100644 src/packages/ui/src/stores/useMcpStore.ts create mode 100644 src/packages/ui/src/stores/useMultiRunStore.ts create mode 100644 src/packages/ui/src/stores/useOpenInAppsStore.ts create mode 100644 src/packages/ui/src/stores/useProjectsStore.ts create mode 100644 src/packages/ui/src/stores/useQuotaStore.ts create mode 100644 src/packages/ui/src/stores/useSessionDisplayStore.ts create mode 100644 src/packages/ui/src/stores/useSessionFoldersStore.ts create mode 100644 src/packages/ui/src/stores/useSessionStore.ts create mode 100644 src/packages/ui/src/stores/useSkillsCatalogStore.ts create mode 100644 src/packages/ui/src/stores/useSkillsStore.ts create mode 100644 src/packages/ui/src/stores/useTerminalStore.ts create mode 100644 src/packages/ui/src/stores/useTodoStore.ts create mode 100644 src/packages/ui/src/stores/useUIStore.ts create mode 100644 src/packages/ui/src/stores/useUpdateStore.ts create mode 100644 src/packages/ui/src/stores/utils/contextUtils.ts create mode 100644 src/packages/ui/src/stores/utils/messageProjectors.ts create mode 100644 src/packages/ui/src/stores/utils/messageUtils.ts create mode 100644 src/packages/ui/src/stores/utils/permissionAutoAccept.ts create mode 100644 src/packages/ui/src/stores/utils/permissionUtils.ts create mode 100644 src/packages/ui/src/stores/utils/safeStorage.ts create mode 100644 src/packages/ui/src/stores/utils/streamDebug.ts create mode 100644 src/packages/ui/src/stores/utils/streamingUtils.ts create mode 100644 src/packages/ui/src/stores/utils/tokenUtils.ts create mode 100644 src/packages/ui/src/styles/design-system.css create mode 100644 src/packages/ui/src/styles/fireworks.css create mode 100644 src/packages/ui/src/styles/fonts.ts create mode 100644 src/packages/ui/src/styles/mobile.css create mode 100644 src/packages/ui/src/styles/typography.css create mode 100644 src/packages/ui/src/types/codemirror-lang-elixir.d.ts create mode 100644 src/packages/ui/src/types/desktop.d.ts create mode 100644 src/packages/ui/src/types/ghostty-web.d.ts create mode 100644 src/packages/ui/src/types/index.ts create mode 100644 src/packages/ui/src/types/multirun.ts create mode 100644 src/packages/ui/src/types/permission.ts create mode 100644 src/packages/ui/src/types/question.ts create mode 100644 src/packages/ui/src/types/quota.ts create mode 100644 src/packages/ui/src/types/react-syntax-highlighter-create-element.d.ts create mode 100644 src/packages/ui/src/types/streamdown.d.ts create mode 100644 src/packages/ui/src/types/theme.ts create mode 100644 src/packages/ui/src/types/tool.ts create mode 100644 src/packages/ui/src/types/vscode.d.ts create mode 100644 src/packages/ui/src/types/worktree.ts create mode 100644 src/packages/ui/src/vite-env.d.ts create mode 100644 src/packages/ui/tsconfig.json create mode 100644 src/packages/vscode/.vscodeignore create mode 100644 src/packages/vscode/CHANGELOG.md create mode 100644 src/packages/vscode/LICENSE create mode 100644 src/packages/vscode/README.md create mode 100644 src/packages/vscode/assets/app-icon.png create mode 100644 src/packages/vscode/assets/icon-titlebar.svg create mode 100644 src/packages/vscode/assets/icon.svg create mode 100644 src/packages/vscode/extension.jpg create mode 100644 src/packages/vscode/package.json create mode 100644 src/packages/vscode/src/AgentManagerPanelProvider.ts create mode 100644 src/packages/vscode/src/ChatViewProvider.ts create mode 100644 src/packages/vscode/src/SessionEditorPanelProvider.ts create mode 100644 src/packages/vscode/src/bridge.ts create mode 100644 src/packages/vscode/src/extension.ts create mode 100644 src/packages/vscode/src/git.d.ts create mode 100644 src/packages/vscode/src/gitService.ts create mode 100644 src/packages/vscode/src/githubAuth.ts create mode 100644 src/packages/vscode/src/githubIssues.ts create mode 100644 src/packages/vscode/src/githubPr.ts create mode 100644 src/packages/vscode/src/githubPulls.ts create mode 100644 src/packages/vscode/src/opencode.ts create mode 100644 src/packages/vscode/src/opencodeAuth.ts create mode 100644 src/packages/vscode/src/opencodeConfig.ts create mode 100644 src/packages/vscode/src/quotaProviders.ts create mode 100644 src/packages/vscode/src/sessionActivityWatcher.ts create mode 100644 src/packages/vscode/src/shikiThemes.ts create mode 100644 src/packages/vscode/src/skillsCatalog.ts create mode 100644 src/packages/vscode/src/sseProxy.ts create mode 100644 src/packages/vscode/src/theme.ts create mode 100644 src/packages/vscode/src/webviewDevServer.ts create mode 100644 src/packages/vscode/src/webviewHtml.ts create mode 100644 src/packages/vscode/tsconfig.json create mode 100644 src/packages/vscode/tsconfig.webview.json create mode 100644 src/packages/vscode/vite.config.ts create mode 100644 src/packages/vscode/webview/api/bridge.ts create mode 100644 src/packages/vscode/webview/api/editor.ts create mode 100644 src/packages/vscode/webview/api/files.ts create mode 100644 src/packages/vscode/webview/api/git.ts create mode 100644 src/packages/vscode/webview/api/github.ts create mode 100644 src/packages/vscode/webview/api/index.ts create mode 100644 src/packages/vscode/webview/api/notifications.ts create mode 100644 src/packages/vscode/webview/api/permissions.ts create mode 100644 src/packages/vscode/webview/api/settings.ts create mode 100644 src/packages/vscode/webview/api/tools.ts create mode 100644 src/packages/vscode/webview/api/vscode.ts create mode 100644 src/packages/vscode/webview/index.html create mode 100644 src/packages/vscode/webview/main.tsx create mode 100644 src/packages/vscode/webview/tsconfig.json create mode 100644 src/packages/web/.gitignore create mode 100644 src/packages/web/README.md create mode 100644 src/packages/web/bin/cli-entry.js create mode 100644 src/packages/web/bin/cli-output.js create mode 100755 src/packages/web/bin/cli.js create mode 100644 src/packages/web/bin/cli.test.js create mode 100644 src/packages/web/index.html create mode 100644 src/packages/web/package.json create mode 100644 src/packages/web/public/apple-touch-icon-120x120.png create mode 100644 src/packages/web/public/apple-touch-icon-152x152.png create mode 100644 src/packages/web/public/apple-touch-icon-167x167.png create mode 100644 src/packages/web/public/apple-touch-icon-180x180.png create mode 100644 src/packages/web/public/apple-touch-icon.png create mode 100644 src/packages/web/public/apple-touch-icon.svg create mode 100644 src/packages/web/public/favicon-16.png create mode 100644 src/packages/web/public/favicon-32.png create mode 100644 src/packages/web/public/favicon.png create mode 100644 src/packages/web/public/favicon.svg create mode 100644 src/packages/web/public/logo-dark-192x192.png create mode 100644 src/packages/web/public/logo-dark-512x512.svg create mode 100644 src/packages/web/public/logo-light-192x192.png create mode 100644 src/packages/web/public/logo-light-512x512.svg create mode 100644 src/packages/web/public/pwa-192.png create mode 100644 src/packages/web/public/pwa-512.png create mode 100644 src/packages/web/public/pwa-maskable-192.png create mode 100644 src/packages/web/public/pwa-maskable-512.png create mode 100644 src/packages/web/public/site.webmanifest create mode 100644 src/packages/web/server/TERMINAL_INPUT_WS_PROTOCOL.md create mode 100644 src/packages/web/server/index.d.ts create mode 100644 src/packages/web/server/index.js create mode 100644 src/packages/web/server/lib/cloudflare-tunnel.js create mode 100644 src/packages/web/server/lib/git/DOCUMENTATION.md create mode 100644 src/packages/web/server/lib/git/credentials.js create mode 100644 src/packages/web/server/lib/git/identity-storage.js create mode 100644 src/packages/web/server/lib/git/index.js create mode 100644 src/packages/web/server/lib/git/service.js create mode 100644 src/packages/web/server/lib/github/DOCUMENTATION.md create mode 100644 src/packages/web/server/lib/github/auth.js create mode 100644 src/packages/web/server/lib/github/device-flow.js create mode 100644 src/packages/web/server/lib/github/index.js create mode 100644 src/packages/web/server/lib/github/octokit.js create mode 100644 src/packages/web/server/lib/github/pr-status.js create mode 100644 src/packages/web/server/lib/github/repo/index.js create mode 100644 src/packages/web/server/lib/notifications/DOCUMENTATION.md create mode 100644 src/packages/web/server/lib/notifications/index.js create mode 100644 src/packages/web/server/lib/notifications/message.js create mode 100644 src/packages/web/server/lib/notifications/message.test.js create mode 100644 src/packages/web/server/lib/opencode/DOCUMENTATION.md create mode 100644 src/packages/web/server/lib/opencode/agents.js create mode 100644 src/packages/web/server/lib/opencode/auth.js create mode 100644 src/packages/web/server/lib/opencode/commands.js create mode 100644 src/packages/web/server/lib/opencode/index.js create mode 100644 src/packages/web/server/lib/opencode/mcp.js create mode 100644 src/packages/web/server/lib/opencode/providers.js create mode 100644 src/packages/web/server/lib/opencode/shared.js create mode 100644 src/packages/web/server/lib/opencode/skills.js create mode 100644 src/packages/web/server/lib/opencode/tunnel-auth.js create mode 100644 src/packages/web/server/lib/opencode/ui-auth.js create mode 100644 src/packages/web/server/lib/package-manager.js create mode 100644 src/packages/web/server/lib/quota/DOCUMENTATION.md create mode 100644 src/packages/web/server/lib/quota/index.js create mode 100644 src/packages/web/server/lib/quota/providers/claude.js create mode 100644 src/packages/web/server/lib/quota/providers/codex.js create mode 100644 src/packages/web/server/lib/quota/providers/copilot.js create mode 100644 src/packages/web/server/lib/quota/providers/google/api.js create mode 100644 src/packages/web/server/lib/quota/providers/google/auth.js create mode 100644 src/packages/web/server/lib/quota/providers/google/index.js create mode 100644 src/packages/web/server/lib/quota/providers/google/transforms.js create mode 100644 src/packages/web/server/lib/quota/providers/index.js create mode 100644 src/packages/web/server/lib/quota/providers/interface.js create mode 100644 src/packages/web/server/lib/quota/providers/kimi.js create mode 100644 src/packages/web/server/lib/quota/providers/minimax-cn-coding-plan.js create mode 100644 src/packages/web/server/lib/quota/providers/minimax-coding-plan.js create mode 100644 src/packages/web/server/lib/quota/providers/minimax-shared.js create mode 100644 src/packages/web/server/lib/quota/providers/nanogpt.js create mode 100644 src/packages/web/server/lib/quota/providers/ollama-cloud.js create mode 100644 src/packages/web/server/lib/quota/providers/openai.js create mode 100644 src/packages/web/server/lib/quota/providers/openrouter.js create mode 100644 src/packages/web/server/lib/quota/providers/zai.js create mode 100644 src/packages/web/server/lib/quota/utils/auth.js create mode 100644 src/packages/web/server/lib/quota/utils/formatters.js create mode 100644 src/packages/web/server/lib/quota/utils/index.js create mode 100644 src/packages/web/server/lib/quota/utils/transformers.js create mode 100644 src/packages/web/server/lib/skills-catalog/DOCUMENTATION.md create mode 100644 src/packages/web/server/lib/skills-catalog/cache.js create mode 100644 src/packages/web/server/lib/skills-catalog/clawdhub/api.js create mode 100644 src/packages/web/server/lib/skills-catalog/clawdhub/index.js create mode 100644 src/packages/web/server/lib/skills-catalog/clawdhub/install.js create mode 100644 src/packages/web/server/lib/skills-catalog/clawdhub/scan.js create mode 100644 src/packages/web/server/lib/skills-catalog/curated-sources.js create mode 100644 src/packages/web/server/lib/skills-catalog/git.js create mode 100644 src/packages/web/server/lib/skills-catalog/index.js create mode 100644 src/packages/web/server/lib/skills-catalog/install.js create mode 100644 src/packages/web/server/lib/skills-catalog/scan.js create mode 100644 src/packages/web/server/lib/skills-catalog/source.js create mode 100644 src/packages/web/server/lib/terminal/DOCUMENTATION.md create mode 100644 src/packages/web/server/lib/terminal/index.js create mode 100644 src/packages/web/server/lib/terminal/input-ws-protocol.js create mode 100644 src/packages/web/server/lib/terminal/input-ws-protocol.test.js create mode 100644 src/packages/web/server/lib/tts/DOCUMENTATION.md create mode 100644 src/packages/web/server/lib/tts/index.js create mode 100644 src/packages/web/server/lib/tts/service.js create mode 100644 src/packages/web/server/lib/tts/summarization.js create mode 100644 src/packages/web/server/lib/tunnels/index.js create mode 100644 src/packages/web/server/lib/tunnels/providers/cloudflare.js create mode 100644 src/packages/web/server/lib/tunnels/registry.js create mode 100644 src/packages/web/server/lib/tunnels/types.js create mode 100644 src/packages/web/src/api/files.ts create mode 100644 src/packages/web/src/api/git.ts create mode 100644 src/packages/web/src/api/github.ts create mode 100644 src/packages/web/src/api/index.ts create mode 100644 src/packages/web/src/api/notifications.ts create mode 100644 src/packages/web/src/api/permissions.ts create mode 100644 src/packages/web/src/api/push.ts create mode 100644 src/packages/web/src/api/settings.ts create mode 100644 src/packages/web/src/api/terminal.ts create mode 100644 src/packages/web/src/api/tools.ts create mode 100644 src/packages/web/src/main.tsx create mode 100644 src/packages/web/src/pwa.d.ts create mode 100644 src/packages/web/src/sw.ts create mode 100644 src/packages/web/tsconfig.json create mode 100644 src/packages/web/vite.config.ts create mode 100644 src/patches/ghostty-web+0.3.0.patch create mode 100644 src/postcss.config.js create mode 100644 src/scripts/bump-version.mjs create mode 100644 src/scripts/convert-vscode-theme.cjs create mode 100644 src/scripts/dev-vscode.mjs create mode 100644 src/scripts/dev-web-full.mjs create mode 100644 src/scripts/dev-web-hmr.mjs create mode 100644 src/scripts/docker-entrypoint.sh create mode 100644 src/scripts/docs/validate-docs.mjs create mode 100644 src/scripts/generate-file-type-sprite.mjs create mode 100755 src/scripts/install.sh create mode 100644 src/scripts/port-opencode-theme.ts create mode 100755 src/scripts/test-release-build.sh create mode 100644 src/tsconfig.json create mode 100644 src/vite-theme-plugin.ts create mode 100644 src/vite.config.ts diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..1e6267b --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,38 @@ +pipeline { + environment { + registry = 'https://registry.hub.docker.com' + registryCredential = 'dockerhub_jcabillot' + dockerImage = 'jcabillot/openchamber' + } + + agent any + + triggers { + cron('@midnight') + } + + stages { + stage('Clone repository') { + steps{ + checkout scm + } + } + + stage('Build image') { + steps{ + sh 'docker build --force-rm=true --no-cache=true --pull -f src/Dockerfile -t ${dockerImage} src/' + } + } + + stage('Deploy Image') { + steps{ + script { + withCredentials([usernamePassword(credentialsId: 'dockerhub_jcabillot', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) { + sh 'docker login --username ${DOCKER_USER} --password ${DOCKER_PASS}' + sh 'docker push ${dockerImage}' + } + } + } + } + } +} diff --git a/src/.dockerignore b/src/.dockerignore new file mode 100644 index 0000000..3ba6be7 --- /dev/null +++ b/src/.dockerignore @@ -0,0 +1,26 @@ +.git +.gitignore +node_modules +**/node_modules +dist +**/dist +build +**/build +.DS_Store +.idea +.vscode +coverage +tmp +logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +.env +.env.* +.opencode +data +workspaces +packages/desktop/src-tauri +packages/desktop/target +packages/intellij diff --git a/src/.github/CODEOWNERS b/src/.github/CODEOWNERS new file mode 100644 index 0000000..af8017b --- /dev/null +++ b/src/.github/CODEOWNERS @@ -0,0 +1,2 @@ +# .github/CODEOWNERS +* @btriapitsyn diff --git a/src/.github/ISSUE_TEMPLATE/bug_report.yml b/src/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..6a62a81 --- /dev/null +++ b/src/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,45 @@ +name: Bug report +description: Report something broken +title: "[Bug] " +labels: [bug] +body: + - type: textarea + id: what + attributes: + label: What's wrong? Maybe some steps to reproduce. + description: What happened and what you expected. + placeholder: "Expected … but got …" + validations: + required: true + + - type: dropdown + id: runtime + attributes: + label: Where does it happen? + options: + - Desktop (macOS) + - Desktop Web + - Mobile (Web/PWA) + - VS Code extension + - Not sure + validations: + required: true + + - type: input + id: version + attributes: + label: Version (if known) + placeholder: "e.g. 1.2.3" + + - type: textarea + id: screenshots + attributes: + label: Screenshots / recordings (optional) + description: "Anything visual that helps." + + - type: textarea + id: logs + attributes: + label: Logs (optional) + description: "Paste relevant logs." + render: shell diff --git a/src/.github/ISSUE_TEMPLATE/config.yml b/src/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..3ba13e0 --- /dev/null +++ b/src/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false diff --git a/src/.github/ISSUE_TEMPLATE/feature_request.yml b/src/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..d58d57e --- /dev/null +++ b/src/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,22 @@ +name: Feature request +description: Suggest an improvement +title: "[Feature Request] " +labels: [enhancement] +body: + - type: textarea + id: request + attributes: + label: What should we add/change? + description: What you're trying to do + what you'd like to happen. + placeholder: | + I'm trying to … + + It would be great if OpenChamber … + validations: + required: true + + - type: textarea + id: context + attributes: + label: Extra context (optional) + description: Links, screenshots, mockups, constraints, etc. diff --git a/src/.github/workflows/build-macos-arm64-dmg.yml b/src/.github/workflows/build-macos-arm64-dmg.yml new file mode 100644 index 0000000..551ccca --- /dev/null +++ b/src/.github/workflows/build-macos-arm64-dmg.yml @@ -0,0 +1,125 @@ +name: Build macOS DMG (arm64) + +on: + workflow_dispatch: + inputs: + macos_version: + description: macOS runner version + required: true + type: choice + options: + - "macos-15" + - "macos-26" + default: "macos-15" + ref: + description: Git ref to build (branch, tag, or sha) + required: false + default: "" + +env: + CARGO_INCREMENTAL: 0 + RUST_BACKTRACE: short + +jobs: + build-macos-dmg-arm64: + name: Build DMG (arm64, ${{ inputs.macos_version }}) + runs-on: ${{ inputs.macos_version }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref || github.ref }} + + - name: Setup bun + uses: oven-sh/setup-bun@v2 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + with: + targets: aarch64-apple-darwin + + - name: Rust cache + uses: swatinem/rust-cache@v2 + with: + workspaces: packages/desktop/src-tauri + key: aarch64-apple-darwin + + - name: Install dependencies + run: bun install --frozen-lockfile + + - name: Install Apple Certificate + env: + APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} + APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} + run: | + KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db + KEYCHAIN_PASSWORD=$(openssl rand -base64 32) + + security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH" + security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH" + security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH" + + echo "$APPLE_CERTIFICATE" | base64 --decode > $RUNNER_TEMP/certificate.p12 + security import $RUNNER_TEMP/certificate.p12 \ + -P "$APPLE_CERTIFICATE_PASSWORD" \ + -A -t cert -f pkcs12 \ + -k "$KEYCHAIN_PATH" + + security list-keychain -d user -s "$KEYCHAIN_PATH" + security set-key-partition-list -S apple-tool:,apple:,codesign: \ + -s -k "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH" + + - name: Set up notarization credentials + env: + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + run: | + if [ -z "$APPLE_ID" ] || [ -z "$APPLE_TEAM_ID" ] || [ -z "$APPLE_PASSWORD" ]; then + echo "Error: Missing Apple notarization credentials" + exit 1 + fi + + xcrun notarytool store-credentials "openchamber-notarize" \ + --apple-id "$APPLE_ID" \ + --team-id "$APPLE_TEAM_ID" \ + --password "$APPLE_PASSWORD" + + - name: Build UI package + run: bun run --cwd packages/ui build + + - name: Build Desktop app (arm64) + run: bun run --cwd packages/desktop build && bun run --cwd packages/desktop tauri build --target aarch64-apple-darwin + env: + TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} + TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} + APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + + - name: Prepare DMG artifact + run: | + set -euo pipefail + mkdir -p artifacts + DMG_PATH="packages/desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/*.dmg" + if ls $DMG_PATH 1> /dev/null 2>&1; then + DMG_FILE=$(ls $DMG_PATH | head -n 1) + DMG_NAME="OpenChamber_${{ inputs.macos_version }}_arm64.dmg" + cp "$DMG_FILE" "artifacts/$DMG_NAME" + else + echo "Error: DMG file not found at $DMG_PATH" + exit 1 + fi + + - name: Upload DMG artifact + uses: actions/upload-artifact@v4 + with: + name: dmg-${{ inputs.macos_version }}-arm64 + path: artifacts/*.dmg + retention-days: 7 diff --git a/src/.github/workflows/docs-source.yml b/src/.github/workflows/docs-source.yml new file mode 100644 index 0000000..05feca6 --- /dev/null +++ b/src/.github/workflows/docs-source.yml @@ -0,0 +1,86 @@ +name: Docs Source + +on: + push: + branches: [main] + paths: + - "packages/docs/**" + - "scripts/docs/**" + - "package.json" + release: + types: [published] + workflow_dispatch: + inputs: + release_tag: + description: "Optional existing tag to upload docs source archive" + required: false + type: string + +permissions: + contents: write + +jobs: + validate-and-package: + runs-on: ubuntu-latest + outputs: + archive_name: ${{ steps.archive.outputs.archive_name }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup bun + uses: oven-sh/setup-bun@v2 + + - name: Validate docs source + run: bun run docs:validate + + - name: Build docs source archive + id: archive + run: | + mkdir -p artifacts + ARCHIVE_NAME="openchamber-docs-source-${GITHUB_SHA::8}.tar.gz" + tar -czf "artifacts/${ARCHIVE_NAME}" -C packages/docs . + echo "archive_name=${ARCHIVE_NAME}" >> "$GITHUB_OUTPUT" + + - name: Upload workflow artifact + uses: actions/upload-artifact@v4 + with: + name: docs-source + path: artifacts/${{ steps.archive.outputs.archive_name }} + retention-days: 14 + + - name: Upload archive to release tag + if: ${{ github.event_name == 'release' || github.event.inputs.release_tag != '' }} + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ github.event_name == 'release' && github.event.release.tag_name || github.event.inputs.release_tag }} + files: artifacts/${{ steps.archive.outputs.archive_name }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Trigger openchamber-website docs sync (optional) + if: ${{ github.event_name == 'release' || github.event_name == 'workflow_dispatch' }} + env: + WEBSITE_REPO: openchamber/openchamber-website + WEBSITE_TOKEN: ${{ secrets.OPENCHAMBER_WEBSITE_REPO_TOKEN }} + SOURCE_REF: ${{ github.event_name == 'release' && github.event.release.tag_name || github.ref_name }} + run: | + if [ -z "$WEBSITE_TOKEN" ]; then + echo "OPENCHAMBER_WEBSITE_REPO_TOKEN not set; skip dispatch." + exit 0 + fi + + curl -sS -X POST \ + -H "Authorization: Bearer $WEBSITE_TOKEN" \ + -H "Accept: application/vnd.github+json" \ + https://api.github.com/repos/$WEBSITE_REPO/dispatches \ + -d @- <> $GITHUB_OUTPUT + elif [[ "${{ github.ref }}" == refs/tags/* ]]; then + echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT + else + echo "version=0.0.0-dev" >> $GITHUB_OUTPUT + fi + + - name: Extract changelog for release + env: + VERSION: ${{ steps.get_version.outputs.version }} + run: | + node - <<'NODE' + const fs = require('fs'); + const version = process.env.VERSION; + const changelogPath = 'CHANGELOG.md'; + if (!fs.existsSync(changelogPath)) { + throw new Error('CHANGELOG.md not found; add it before releasing.'); + } + const changelog = fs.readFileSync(changelogPath, 'utf8'); + const sections = changelog.split(/^## /m); + const section = sections.find(s => s.startsWith('[' + version + ']')); + if (!section) { + throw new Error('Changelog section [' + version + '] not found. Add a section like "## [' + version + '] - YYYY-MM-DD".'); + } + const content = ('## ' + section).trim(); + fs.mkdirSync('artifacts', { recursive: true }); + fs.writeFileSync('artifacts/release-notes.md', content + '\n'); + NODE + + - name: Create GitHub Release + id: create_release + uses: softprops/action-gh-release@v2 + with: + tag_name: v${{ steps.get_version.outputs.version }} + draft: true + generate_release_notes: false + body_path: artifacts/release-notes.md + name: OpenChamber v${{ steps.get_version.outputs.version }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + build-desktop-macos: + needs: create-release + runs-on: macos-26 + strategy: + fail-fast: false + matrix: + target: [aarch64-apple-darwin, x86_64-apple-darwin] + include: + - target: aarch64-apple-darwin + arch: aarch64 + platform: darwin-aarch64 + - target: x86_64-apple-darwin + arch: x86_64 + platform: darwin-x86_64 + outputs: + version: ${{ needs.create-release.outputs.version }} + steps: + - uses: actions/checkout@v4 + + - name: Setup bun + uses: oven-sh/setup-bun@v2 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} + + - name: Rust cache + uses: swatinem/rust-cache@v2 + with: + workspaces: packages/desktop/src-tauri + key: ${{ matrix.target }} + + - name: Install dependencies + run: bun install --frozen-lockfile + + - name: Install Apple Certificate + env: + APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} + APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} + run: | + # Create temporary keychain + KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db + KEYCHAIN_PASSWORD=$(openssl rand -base64 32) + + security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH" + security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH" + security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH" + + # Import certificate + echo "$APPLE_CERTIFICATE" | base64 --decode > $RUNNER_TEMP/certificate.p12 + security import $RUNNER_TEMP/certificate.p12 \ + -P "$APPLE_CERTIFICATE_PASSWORD" \ + -A -t cert -f pkcs12 \ + -k "$KEYCHAIN_PATH" + + security list-keychain -d user -s "$KEYCHAIN_PATH" + security set-key-partition-list -S apple-tool:,apple:,codesign: \ + -s -k "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH" + + - name: Set up notarization credentials + env: + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + run: | + # Validate secrets are set + if [ -z "$APPLE_ID" ] || [ -z "$APPLE_TEAM_ID" ] || [ -z "$APPLE_PASSWORD" ]; then + echo "Error: Missing Apple notarization credentials" + exit 1 + fi + + xcrun notarytool store-credentials "openchamber-notarize" \ + --apple-id "$APPLE_ID" \ + --team-id "$APPLE_TEAM_ID" \ + --password "$APPLE_PASSWORD" + + - name: Build UI package + run: bun run --cwd packages/ui build + + - name: Build Desktop app + # Note: We use inline commands instead of desktop:build to pass architecture-specific --target flag + # This enables cross-compilation for both arm64 and x86_64 from the same runner + run: | + export TAURI_ENV_TARGET_TRIPLE=${{ matrix.target }} + bun run --cwd packages/desktop build + bun run --cwd packages/desktop tauri build --target ${{ matrix.target }} + env: + TAURI_ENV_TARGET_TRIPLE: ${{ matrix.target }} + TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} + TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} + APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + + - name: Verify binary architectures + run: | + set -euo pipefail + + BUNDLE_DIR="packages/desktop/src-tauri/target/${{ matrix.target }}/release/bundle/macos" + + if [ ! -d "$BUNDLE_DIR" ]; then + echo "❌ Error: bundle directory not found: $BUNDLE_DIR" + exit 1 + fi + + APP_PATH=$(find "$BUNDLE_DIR" -maxdepth 2 -name "*.app" -print -quit) + if [ -z "$APP_PATH" ]; then + echo "❌ Error: .app bundle not found under $BUNDLE_DIR" + exit 1 + fi + + echo "🔍 Verifying binary architectures in $APP_PATH" + + # Extract raw architecture names (macOS file command reports ARM as "arm64") + MAIN_ARCH_RAW=$(file "$APP_PATH/Contents/MacOS/openchamber-desktop" | grep -oE 'arm64|x86_64|aarch64' | head -1) + SIDEARCH_ARCH_RAW=$(file "$APP_PATH/Contents/MacOS/openchamber-server" | grep -oE 'arm64|x86_64|aarch64' | head -1) + + # Normalize architecture names (arm64 -> aarch64 for consistency with Rust/Tauri) + normalize_arch() { + case "$1" in + arm64) echo "aarch64" ;; + aarch64|x86_64) echo "$1" ;; + *) echo "unknown" ;; + esac + } + + MAIN_ARCH=$(normalize_arch "$MAIN_ARCH_RAW") + SIDEARCH_ARCH=$(normalize_arch "$SIDEARCH_ARCH_RAW") + EXPECTED_ARCH=$(echo "${{ matrix.target }}" | grep -oE 'aarch64|x86_64' | head -1) + + echo " Main: $MAIN_ARCH_RAW → $MAIN_ARCH" + echo " Sidecar: $SIDEARCH_ARCH_RAW → $SIDEARCH_ARCH" + echo " Expected: $EXPECTED_ARCH" + + if [ "$MAIN_ARCH" != "$EXPECTED_ARCH" ]; then + echo "❌ ERROR: Main binary architecture mismatch!" + echo " Expected: $EXPECTED_ARCH" + echo " Got: $MAIN_ARCH (raw: $MAIN_ARCH_RAW)" + exit 1 + fi + + if [ "$SIDEARCH_ARCH" != "$EXPECTED_ARCH" ]; then + echo "❌ ERROR: Sidecar binary architecture mismatch!" + echo " Expected: $EXPECTED_ARCH" + echo " Got: $SIDEARCH_ARCH (raw: $SIDEARCH_ARCH_RAW)" + exit 1 + fi + + echo "✅ Architecture verification passed: both binaries match $EXPECTED_ARCH" + + - name: Verify macOS entitlements + run: | + set -euo pipefail + + BUNDLE_DIR="packages/desktop/src-tauri/target/${{ matrix.target }}/release/bundle/macos" + + if [ ! -d "$BUNDLE_DIR" ]; then + echo "Error: bundle directory not found: $BUNDLE_DIR" + exit 1 + fi + + APP_PATH=$(find "$BUNDLE_DIR" -maxdepth 2 -name "*.app" -print -quit) + if [ -z "$APP_PATH" ]; then + echo "Error: .app bundle not found under $BUNDLE_DIR" + echo "Contents:"; ls -la "$BUNDLE_DIR" + exit 1 + fi + + echo "Verifying app bundle: $APP_PATH" + codesign -vv "$APP_PATH" + + ENTITLEMENTS=$(codesign -d --entitlements :- "$APP_PATH" 2>&1 || true) + echo "$ENTITLEMENTS" + + if echo "$ENTITLEMENTS" | grep -q "com.apple.security.app-sandbox"; then + echo "Error: app sandbox entitlement is present" + exit 1 + fi + + for key in \ + com.apple.security.cs.allow-jit \ + com.apple.security.cs.allow-unsigned-executable-memory \ + com.apple.security.cs.disable-executable-page-protection \ + com.apple.security.cs.disable-library-validation + do + if ! echo "$ENTITLEMENTS" | grep -q "$key"; then + echo "Error: required entitlement missing: $key" + exit 1 + fi + done + + - name: Prepare release artifacts + run: | + mkdir -p artifacts + VERSION="${{ needs.create-release.outputs.version }}" + + # Copy DMG (Tauri names it with the target triple in the path) + DMG_PATH="packages/desktop/src-tauri/target/${{ matrix.target }}/release/bundle/dmg/*.dmg" + if ls $DMG_PATH 1> /dev/null 2>&1; then + DMG_FILE=$(ls $DMG_PATH | head -n 1) + DMG_NAME="OpenChamber_${VERSION}_${{ matrix.platform }}.dmg" + cp "$DMG_FILE" "artifacts/$DMG_NAME" + else + echo "Error: DMG file not found at $DMG_PATH" + exit 1 + fi + + # Copy tar.gz and signature for updater + TAR_PATH="packages/desktop/src-tauri/target/${{ matrix.target }}/release/bundle/macos/*.tar.gz" + SIG_PATH="packages/desktop/src-tauri/target/${{ matrix.target }}/release/bundle/macos/*.tar.gz.sig" + + if ls $TAR_PATH 1> /dev/null 2>&1; then + TAR_FILE=$(ls $TAR_PATH | head -n 1) + TAR_BASE=$(basename "$TAR_FILE") + TAR_NAME="${TAR_BASE%.tar.gz}-${{ matrix.platform }}.tar.gz" + cp "$TAR_FILE" "artifacts/$TAR_NAME" + else + echo "Error: tar.gz file not found at $TAR_PATH" + exit 1 + fi + + if ls $SIG_PATH 1> /dev/null 2>&1; then + SIG_FILE=$(ls $SIG_PATH | head -n 1) + SIG_BASE=$(basename "$SIG_FILE") + SIG_NAME="${SIG_BASE%.tar.gz.sig}-${{ matrix.platform }}.tar.gz.sig" + cp "$SIG_FILE" "artifacts/$SIG_NAME" + else + echo "Error: signature file not found at $SIG_PATH" + exit 1 + fi + + echo "Successfully prepared artifacts:" + ls -lh artifacts/ + + - name: Generate update manifest + run: | + VERSION="${{ needs.create-release.outputs.version }}" + + # Find the signature file for this platform + SIG_FILE=$(find artifacts -name "*-${{ matrix.platform }}.tar.gz.sig" | head -1) + if [ -f "$SIG_FILE" ]; then + SIGNATURE=$(cat "$SIG_FILE") + else + SIGNATURE="" + fi + + # Find the tar.gz file name for this platform + TAR_FILE=$(find artifacts -name "*-${{ matrix.platform }}.tar.gz" ! -name "*.sig" | head -1) + TAR_NAME=$(basename "$TAR_FILE" 2>/dev/null || echo "OpenChamber-${{ matrix.platform }}.app.tar.gz") + + cat > artifacts/latest-${{ matrix.platform }}.json << EOF + { + "version": "${VERSION}", + "notes": "See release notes at https://github.com/${{ github.repository }}/releases/tag/v${VERSION}", + "pub_date": "$(date -u +%Y-%m-%dT%H:%M:%SZ)", + "platforms": { + "${{ matrix.platform }}": { + "signature": "${SIGNATURE}", + "url": "https://github.com/${{ github.repository }}/releases/download/v${VERSION}/${TAR_NAME}" + } + } + } + EOF + + echo "Generated latest-${{ matrix.platform }}.json:" + cat artifacts/latest-${{ matrix.platform }}.json + + - name: Upload release assets + uses: softprops/action-gh-release@v2 + with: + tag_name: v${{ needs.create-release.outputs.version }} + files: | + artifacts/*.dmg + artifacts/*.tar.gz + artifacts/*.tar.gz.sig + artifacts/latest-${{ matrix.platform }}.json + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload manifest as artifact + uses: actions/upload-artifact@v4 + with: + name: manifest-${{ matrix.platform }} + path: artifacts/latest-${{ matrix.platform }}.json + retention-days: 1 + + publish-npm: + needs: create-release + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup bun + uses: oven-sh/setup-bun@v2 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + registry-url: 'https://registry.npmjs.org' + + - name: Install dependencies + run: bun install --frozen-lockfile + + - name: Build packages + run: bun run build + + - name: Create npm tarball + working-directory: packages/web + run: npm pack + + - name: Upload npm tarball to release + uses: softprops/action-gh-release@v2 + with: + tag_name: v${{ needs.create-release.outputs.version }} + files: packages/web/*.tgz + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Publish to npm + if: ${{ github.event.inputs.dry_run != 'true' }} + working-directory: packages/web + run: npm publish --access public + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + combine-manifests: + needs: [create-release, build-desktop-macos] + runs-on: ubuntu-latest + steps: + - name: Download aarch64 manifest + uses: actions/download-artifact@v4 + with: + name: manifest-darwin-aarch64 + path: artifacts + + - name: Download x86_64 manifest + uses: actions/download-artifact@v4 + with: + name: manifest-darwin-x86_64 + path: artifacts + + - name: Combine manifests + run: | + VERSION="${{ needs.create-release.outputs.version }}" + PUB_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)" + REPO="${{ github.repository }}" + + # Validate that both manifest files exist and are valid JSON + if [ ! -f artifacts/latest-darwin-aarch64.json ]; then + echo "Error: aarch64 manifest not found" + exit 1 + fi + + if [ ! -f artifacts/latest-darwin-x86_64.json ]; then + echo "Error: x86_64 manifest not found" + exit 1 + fi + + # Validate JSON structure + if ! jq empty artifacts/latest-darwin-aarch64.json 2>/dev/null; then + echo "Error: aarch64 manifest is not valid JSON" + exit 1 + fi + + if ! jq empty artifacts/latest-darwin-x86_64.json 2>/dev/null; then + echo "Error: x86_64 manifest is not valid JSON" + exit 1 + fi + + # Validate platform data exists in manifests + if ! jq -e '.platforms["darwin-aarch64"]' artifacts/latest-darwin-aarch64.json > /dev/null; then + echo "Error: darwin-aarch64 platform data not found in manifest" + exit 1 + fi + + if ! jq -e '.platforms["darwin-x86_64"]' artifacts/latest-darwin-x86_64.json > /dev/null; then + echo "Error: darwin-x86_64 platform data not found in manifest" + exit 1 + fi + + # Use jq to properly combine the manifests + jq -n \ + --arg version "$VERSION" \ + --arg notes "See release notes at https://github.com/${REPO}/releases/tag/v${VERSION}" \ + --arg pub_date "$PUB_DATE" \ + --slurpfile aarch64 artifacts/latest-darwin-aarch64.json \ + --slurpfile x86_64 artifacts/latest-darwin-x86_64.json \ + '{ + version: $version, + notes: $notes, + pub_date: $pub_date, + platforms: { + "darwin-aarch64": $aarch64[0].platforms["darwin-aarch64"], + "darwin-x86_64": $x86_64[0].platforms["darwin-x86_64"] + } + }' > artifacts/latest.json + + echo "Generated combined latest.json:" + cat artifacts/latest.json + + - name: Upload combined manifest + uses: softprops/action-gh-release@v2 + with: + tag_name: v${{ needs.create-release.outputs.version }} + files: artifacts/latest.json + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + finalize-release: + needs: [create-release, build-desktop-macos, publish-npm, combine-manifests] + runs-on: ubuntu-latest + env: + DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }} + steps: + - name: Publish release + uses: softprops/action-gh-release@v2 + with: + tag_name: v${{ needs.create-release.outputs.version }} + draft: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Send release to Discord + if: ${{ env.DISCORD_WEBHOOK_URL != '' }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + VERSION: ${{ needs.create-release.outputs.version }} + REPOSITORY: ${{ github.repository }} + run: | + node - <<'NODE' + (async () => { + const tag = `v${process.env.VERSION}`; + const repo = process.env.REPOSITORY; + + const releaseRes = await fetch(`https://api.github.com/repos/${repo}/releases/tags/${tag}`, { + headers: { + Authorization: `Bearer ${process.env.GITHUB_TOKEN}`, + Accept: 'application/vnd.github+json', + }, + }); + + if (!releaseRes.ok) { + const body = await releaseRes.text(); + throw new Error(`Failed to fetch release ${tag}: ${releaseRes.status} ${body}`); + } + + const release = await releaseRes.json(); + const description = (release.body || `OpenChamber ${tag} released.`).slice(0, 4096); + + const payload = { + username: 'OpenChamber Releases', + embeds: [ + { + title: release.name || `OpenChamber ${tag}`, + url: release.html_url, + description, + color: 2105893, + footer: { text: 'OpenChamber Changelog' }, + }, + ], + }; + + const discordRes = await fetch(process.env.DISCORD_WEBHOOK_URL, { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify(payload), + }); + + if (!discordRes.ok) { + const body = await discordRes.text(); + throw new Error(`Failed to send Discord release: ${discordRes.status} ${body}`); + } + })().catch((error) => { + console.error(error); + process.exit(1); + }); + NODE + + - name: Trigger openchamber-website site refresh (optional) + env: + WEBSITE_REPO: openchamber/openchamber-website + WEBSITE_TOKEN: ${{ secrets.OPENCHAMBER_WEBSITE_REPO_TOKEN }} + VERSION: ${{ needs.create-release.outputs.version }} + run: | + if [ -z "$WEBSITE_TOKEN" ]; then + echo "OPENCHAMBER_WEBSITE_REPO_TOKEN not set; skip site refresh dispatch." + exit 0 + fi + + curl --fail-with-body -sS -X POST \ + -H "Authorization: Bearer $WEBSITE_TOKEN" \ + -H "Accept: application/vnd.github+json" \ + https://api.github.com/repos/$WEBSITE_REPO/dispatches \ + -d @- </dev/null || git rev-list --max-parents=0 HEAD); echo "Base: $BASE"; echo "Commits since base: $(git rev-list --count "$BASE"..HEAD)"; echo "Diff stats: $(git diff --shortstat "$BASE"..HEAD)"; echo; echo "=== Top 30 commits ==="; git log --oneline -30 "$BASE"..HEAD; echo; echo "=== Changed files ==="; git diff --stat "$BASE"..HEAD` + +Additional hints (optional, use only if needed): +- If there are breaking changes or user-visible behavior changes, call them out first. +- If changes are mostly internal refactors, summarize them as reliability/performance improvements. + +Now: +1) Propose the new `[Unreleased]` bullet list for the main @CHANGELOG.md. +2) Propose the VS Code-specific `[Unreleased]` list for @packages/vscode/CHANGELOG.md. +3) Edit both files to update their respective `[Unreleased]` sections. diff --git a/src/.opencode/skills/clack-cli-patterns/SKILL.md b/src/.opencode/skills/clack-cli-patterns/SKILL.md new file mode 100644 index 0000000..23e9468 --- /dev/null +++ b/src/.opencode/skills/clack-cli-patterns/SKILL.md @@ -0,0 +1,216 @@ +--- +name: clack-cli-patterns +description: Use when creating or modifying terminal CLI commands, prompts, or output formatting in OpenChamber. Enforces Clack UX standards with strict parity and safety across TTY/non-TTY, --quiet, and --json modes. +license: MIT +compatibility: opencode +--- + +## Overview + +OpenChamber terminal CLI uses `@clack/prompts` for interactive UX, but command policy and validation must be mode-agnostic. + +**Core principle:** policy-first, UX-second. Clack is presentation, not enforcement. + +## Scope + +Use this skill for terminal CLI work only (for example `packages/web/bin/*`). + +Do not use this skill for web UI or VS Code webview styling work. + +## Mandatory Rules + +1. **Validation first** + - Safety and correctness checks must run in all modes. + - Prompts may help collect input, but cannot be the only guard. + +2. **Mode parity is required** + - Behavior must be equivalent in: + - Interactive TTY + - Non-interactive shells + - `--quiet` + - `--json` + - Fully pre-specified flags + - Invalid operations must fail deterministically with non-zero exit code. + +3. **Prompt guard contract** + - Only prompt when all are true: + - stdout is TTY + - not `--quiet` + - not `--json` + - not automated/non-interactive context + +4. **Output contract** + - `--json`: machine-readable output only. + - `--quiet`: suppress non-essential output only. + - Neither mode weakens policy enforcement. + +5. **Cancellation contract** + - Handle prompt cancellation with `isCancel` + `cancel(...)`. + - Handle SIGINT cleanly and use consistent exit semantics. + +## Clack Primitive Standard + +- **Flow framing:** `intro`, `outro`, `cancel` +- **Status lines:** `log.info`, `log.success`, `log.warn`, `log.error`, `log.step` +- **Guidance blocks:** + - default: `note` + - high-severity warnings only: `box` +- **Prompts:** `select`, `confirm`, `text`, `password` +- **Long-running feedback:** + - unknown duration: `spinner` + - known duration: `progress` + - multi-stage: `tasks` + +## Preferred Pattern + +Centralize Clack imports and formatting helpers in one adapter module (for example `cli-output.js`) so command logic stays focused on behavior and policy. + +### Thin framework (recommended) + +Use a small shared helper surface rather than command-specific formatting logic. + +- `isJsonMode(options)` +- `isQuietMode(options)` +- `shouldRenderHumanOutput(options)` +- `canPrompt(options)` +- `createSpinner(options)` +- `createProgress(options, config)` +- `printJson(payload)` + +Keep this layer minimal. Do not hide core validation or command semantics inside output helpers. + +## Output Contracts by Mode + +### `--quiet` contract + +`--quiet` should still return essential result data. + +- Read/list commands: emit concise machine-friendly lines (not framed Clack blocks). +- Action commands: emit one minimal success line and concise errors. +- Do not suppress required outcomes entirely. + +Quiet output should still be complete enough for scripts and quick human scanning. + +- Status-like commands should list all active items, not only `running`/`ok`. +- Prefer compact stable key tokens in quiet lines (for example `port 3000 pass:yes`). + +### `--json` contract (strict) + +- Output must be JSON only (no extra text before/after payload). +- Warnings/info should be represented in JSON fields (for example `status`, `messages`). +- Preserve non-zero exit codes for failures. + +## Human UX Consistency + +### Framing completeness + +- If human flow uses `intro`, close with `outro` (or `outro('')` when you want structure without text). +- Avoid orphan frame/spinner artifacts (prefer `spinner.clear()` when a trailing spinner line is not wanted). +- If a structured summary section immediately follows a spinner, prefer `spinner.clear()` to avoid duplicate success lines. + +### Progress feedback for visible operations + +- For operations users wait on (start/stop/restart/tunnel lifecycle), show in-progress spinner in interactive mode. +- Resolve each spinner explicitly to done/error so users can see completion state at the same visual location. +- Keep quiet/json modes non-animated. + +### Prompt flow design + +- Ask required inputs in dependency order (for example hostname before token when token depends on chosen host/mode context). +- When offering save-vs-run flows, ask intent before collecting optional metadata (for example profile name only if user chooses save). +- Prefill editable values with `initialValue` (not only `placeholder`) so users can accept or edit quickly. +- Reuse latest relevant values when safe (for example last managed-local config path, last managed-remote hostname). + +### Readability on narrow terminals + +- Prefer short lines. +- Split long guidance into multiple detail lines. +- Use warning/info codes (`[CODE]`) when the message has follow-up docs or repeat use. + +### Guidance tone + +- Use `Optional Tips` for non-required next actions. +- Avoid wording that implies mandatory follow-up unless it is truly required. + +### Guidance rendering style (preferred) + +- Prefer structured status lines for reusable hints: + - `logStatus('info', '[CODE]', '')` +- Use short, stable codes (for example `[START_PROFILE]`, `[PORT_MISMATCH]`) so users can quickly scan and recognize repeated guidance. +- Prefer this style over boxed notes for routine follow-up actions. +- Reserve `note`/boxed callouts for rare, high-context guidance where a long paragraph is truly necessary. + +## Parity Verification Matrix + +For each command/subcommand, manually verify: + +1. default interactive TTY output +2. `--quiet` output (minimal but informative) +3. `--json` output (JSON-only) +4. non-TTY behavior (e.g. piped) +5. error path in both human and json modes + +## Copy/Paste Snippets + +### Prompt Guard + +```js +if (canPrompt(options)) { + const value = await select({ + message: 'Choose an option', + options: [{ value: 'a', label: 'Option A' }], + }); + if (isCancel(value)) { + cancel('Operation cancelled.'); + return; + } +} +``` + +### Non-Interactive Fallback + +```js +if (!resolvedValue) { + if (canPrompt(options)) { + // prompt path + } else { + throw new Error('Missing required value. Provide --flag .'); + } +} +``` + +### Spinner Guard + +```js +const spin = createSpinner(options); +spin?.start('Running operation...'); +// ...work... +spin?.stop('Done'); +``` + +### JSON vs Human Output + +```js +if (options.json) { + printJson({ ok: true, data }); + return; +} + +intro('Operation'); +log.success('Completed'); +outro('done'); +``` + +## Implementation Checklist + +1. Add or update core validators first. +2. Ensure validators execute in all modes. +3. Add interactive Clack UX only as enhancement. +4. Verify parity between interactive and non-interactive flows. +5. Ensure script-safe deterministic failure behavior. + +## References + +- Policy source: `AGENTS.md` (CLI Parity and Safety Policy) +- Terminal CLI precedent: `packages/web/bin/cli.js` +- Output adapter precedent: `packages/web/bin/cli-output.js` diff --git a/src/.opencode/skills/settings-ui-patterns/SKILL.md b/src/.opencode/skills/settings-ui-patterns/SKILL.md new file mode 100644 index 0000000..0fc9276 --- /dev/null +++ b/src/.opencode/skills/settings-ui-patterns/SKILL.md @@ -0,0 +1,238 @@ +--- +name: settings-ui-patterns +description: Use when creating or modifying UI components, styling, or visual elements related to Settings in OpenChamber. +license: MIT +compatibility: opencode +--- + +# Settings UI Patterns Skill + +## Purpose +This skill provides instructions for creating or redesigning Settings pages, informational panels, and configuration interfaces within the OpenChamber application. + +## Current Canonical Look (2026) +Use this as source of truth for new settings UI work. + +- **Flat hierarchy first**: Prefer spacing + typography hierarchy over boxed backgrounds. +- **No unnecessary wrappers**: Avoid extra section wrappers that mix unrelated controls. +- **No redundant section titles**: Do not add headers like `Theme Preferences` or `Scaling & Layout` when controls are already self-explanatory. +- **Compact controls**: Option chips and radio rows should be dense, not tall. +- **Left-leading state icon**: Radio/checkbox state icon appears before text. +- **Subtle state contrast**: Inactive radio labels should be visibly dimmer than active labels. +- **Minimal row chrome**: Avoid row hover/background highlighting by default; keep only where explicitly needed. + +## Typography Guidelines +Always utilize the standard OpenChamber typography classes defined in `packages/ui/src/lib/typography.ts`. + +- **Page Title**: Use `typography-ui-header font-semibold text-foreground` for the top-most title of a settings page/dialog. +- **Section Header**: Use `typography-ui-header font-medium text-foreground` for settings sections (e.g. `Notification Events`, `Session Defaults`). +- **Control Group Header**: Use `typography-ui-header font-medium text-foreground` (or `font-normal` if it reads too loud) for grouped controls inside a section (e.g. `Default Tool Output`, `Diff Layout`). +- **Values / Primary Text**: Use `typography-ui-label text-foreground`. Add `tabular-nums` if displaying numbers or stats to ensure vertical alignment. +- **Option Labels**: Use non-bold label text in compact option controls (`font-normal` when needed to override). +- **Meta / Helper Text**: Use `typography-meta text-muted-foreground` or `typography-small text-muted-foreground` for supplemental text. + +## Layout and Spacing Patterns + +### 1. Main Backgrounds +Main wrappers should generally use `bg-background` or `bg-[var(--surface-background)]`. Ensure adequate padding (e.g., `px-5 py-6` or `p-6`). + +### 2. Subsection Grouping +Group related controls with vertical spacing, not mandatory cards. + +- Use `space-y-3` between logical subsections. +- Use `p-2` for subsection internal padding. +- Avoid adding `bg-[var(--surface-elevated)]` unless there is a clear reason. +- Avoid extra row decorations (`rounded-md`, hover fills) unless there is explicit UX value. + +### 3. Header-to-Content Hierarchy (critical) +When removing cards/background wrappers, spacing must be rebalanced so header ownership stays clear. + +- Keep **section-to-section spacing larger** than **header-to-own-content spacing**. +- Typical pattern: + - header wrapper `mb-1 px-1` + - content wrapper `pt-0 pb-2 px-2` + - outer section spacing `mb-8` +- Do not leave legacy `mb-3` style gaps after flattening a section; it makes headers look detached. + +### 4. Headerless Blocks (when context is obvious) +If the page title already provides enough context, remove redundant local headers and place controls directly below the title. + +- Example: project page identity controls can sit directly under project name/path. +- Tighten top gap for this pattern (e.g. top header `mb-4` instead of larger section spacing). + +```tsx +
+
...
+
...
+
+``` + +## Structural Patterns + +### 1. Segmented Option Buttons (compact) +Use for short option sets where button-style segmented choice reads best (e.g. Default Tool Output). + +```tsx +
+ + Collapsed + +
+``` + +### 2. Radio Option Lists (compact rows) +Use for mutually exclusive mode/layout settings (e.g. Diff Layout, Diff View Mode). + +- Use shared `Radio` component from `@/components/ui/radio`. +- Icon first, label second. +- Row container compact: `py-0.5`. +- Inactive label can use `text-foreground/50`. + +```tsx +
+
+ + Dynamic +
+
+``` + +### 3. Checkbox Setting Rows +Use shared `Checkbox` component from `@/components/ui/checkbox` for boolean toggles. + +- Icon first, text immediately after (`gap-2`). +- Typical row spacing for checkbox rows: `py-1.5`. +- Keep row click and keyboard toggle support. +- Prefer checkbox over binary show/hide button pairs for pure boolean state. + +```tsx +
+ + Show Dotfiles +
+``` + +### 4. Invisible Two-Column Alignment +Use consistent label/control columns across settings rows so controls align on a shared vertical line. + +- Desktop row pattern: `flex items-center gap-8` +- Label column width: `w-56 shrink-0` +- Control cluster: `w-fit` + +```tsx +
+ Interface Font Size +
...
+
+``` + +#### Disabled control rule +If a control is unavailable, disable the control only. Do not dim the label row by default. + +#### Width-matching rule +When matching visual widths across different rows, compare full row footprint (control + adjacent action buttons), not just input width. + +### 5. Theme Row Composition +For theme controls in Appearance: + +- `Color Mode` header on first line; option chips below it. +- `Light Theme` and `Dark Theme` on one row where possible, wrapping on small widths. +- Keep selectors near labels and aligned to existing column rhythm. +- Replace persistent helper text with an info tooltip icon near the related action. + +```tsx +
+
Light Theme ...
+
Dark Theme ...
+
+``` + +### 6. Numeric Controls in Settings +Use compact stepper input (`- value +`) plus reset button. + +- Prefer shared `NumberInput` stepper style over slider + numeric combo in dense settings pages. +- Keep reset button adjacent to control (`gap-2`). +- Avoid using Tailwind `overflow-hidden` on mobile for controls; `packages/ui/src/styles/mobile.css` forces `.overflow-hidden { overflow-y: auto !important; }`. + Use `overflow-x-hidden overflow-y-hidden` if you truly need clipping. +- Touch devices: `packages/ui/src/styles/mobile.css` enforces `min-height: 36px` on `button`. If you build custom segmented controls with `