From 3fa280d21878ae391674a21758199df3d2d8c3b5 Mon Sep 17 00:00:00 2001
From: Adam <2363879+adamdotdevin@users.noreply.github.com>
Date: Fri, 3 Oct 2025 09:04:28 -0500
Subject: chore: app -> desktop
---
bun.lock | 96 +-
infra/desktop.ts | 2 +-
packages/app/.gitignore | 1 -
packages/app/AGENTS.md | 28 -
packages/app/README.md | 34 -
packages/app/index.html | 24 -
packages/app/package.json | 48 -
packages/app/scripts/vite-theme-plugin.ts | 163 -
packages/app/src/assets/favicon.svg | 5 -
packages/app/src/assets/file-icons/3d.svg | 1 -
packages/app/src/assets/file-icons/abap.svg | 1 -
packages/app/src/assets/file-icons/abc.svg | 1 -
.../app/src/assets/file-icons/actionscript.svg | 1 -
packages/app/src/assets/file-icons/ada.svg | 1 -
.../src/assets/file-icons/adobe-illustrator.svg | 1 -
.../assets/file-icons/adobe-illustrator_light.svg | 1 -
.../app/src/assets/file-icons/adobe-photoshop.svg | 1 -
.../assets/file-icons/adobe-photoshop_light.svg | 1 -
packages/app/src/assets/file-icons/adobe-swc.svg | 1 -
packages/app/src/assets/file-icons/adonis.svg | 1 -
packages/app/src/assets/file-icons/advpl.svg | 1 -
packages/app/src/assets/file-icons/amplify.svg | 1 -
packages/app/src/assets/file-icons/android.svg | 1 -
packages/app/src/assets/file-icons/angular.svg | 1 -
packages/app/src/assets/file-icons/antlr.svg | 1 -
.../app/src/assets/file-icons/apiblueprint.svg | 1 -
packages/app/src/assets/file-icons/apollo.svg | 1 -
packages/app/src/assets/file-icons/applescript.svg | 1 -
packages/app/src/assets/file-icons/apps-script.svg | 1 -
packages/app/src/assets/file-icons/appveyor.svg | 1 -
.../app/src/assets/file-icons/architecture.svg | 1 -
packages/app/src/assets/file-icons/arduino.svg | 1 -
packages/app/src/assets/file-icons/asciidoc.svg | 1 -
packages/app/src/assets/file-icons/assembly.svg | 1 -
.../app/src/assets/file-icons/astro-config.svg | 1 -
packages/app/src/assets/file-icons/astro.svg | 1 -
packages/app/src/assets/file-icons/astyle.svg | 1 -
packages/app/src/assets/file-icons/audio.svg | 1 -
packages/app/src/assets/file-icons/aurelia.svg | 1 -
packages/app/src/assets/file-icons/authors.svg | 1 -
packages/app/src/assets/file-icons/auto.svg | 1 -
packages/app/src/assets/file-icons/auto_light.svg | 12 -
packages/app/src/assets/file-icons/autohotkey.svg | 1 -
packages/app/src/assets/file-icons/autoit.svg | 1 -
.../app/src/assets/file-icons/azure-pipelines.svg | 1 -
packages/app/src/assets/file-icons/azure.svg | 1 -
packages/app/src/assets/file-icons/babel.svg | 1 -
packages/app/src/assets/file-icons/ballerina.svg | 1 -
packages/app/src/assets/file-icons/bazel.svg | 1 -
packages/app/src/assets/file-icons/bbx.svg | 1 -
packages/app/src/assets/file-icons/beancount.svg | 1 -
packages/app/src/assets/file-icons/bench-js.svg | 1 -
packages/app/src/assets/file-icons/bench-jsx.svg | 1 -
packages/app/src/assets/file-icons/bench-ts.svg | 1 -
.../app/src/assets/file-icons/bibliography.svg | 1 -
.../app/src/assets/file-icons/bibtex-style.svg | 1 -
packages/app/src/assets/file-icons/bicep.svg | 1 -
packages/app/src/assets/file-icons/biome.svg | 1 -
packages/app/src/assets/file-icons/bitbucket.svg | 1 -
packages/app/src/assets/file-icons/bithound.svg | 1 -
packages/app/src/assets/file-icons/blender.svg | 1 -
packages/app/src/assets/file-icons/blink.svg | 1 -
packages/app/src/assets/file-icons/blink_light.svg | 1 -
packages/app/src/assets/file-icons/blitz.svg | 1 -
packages/app/src/assets/file-icons/bower.svg | 1 -
packages/app/src/assets/file-icons/brainfuck.svg | 1 -
packages/app/src/assets/file-icons/browserlist.svg | 1 -
.../src/assets/file-icons/browserlist_light.svg | 1 -
packages/app/src/assets/file-icons/bruno.svg | 1 -
packages/app/src/assets/file-icons/buck.svg | 1 -
.../app/src/assets/file-icons/bucklescript.svg | 1 -
packages/app/src/assets/file-icons/buildkite.svg | 1 -
packages/app/src/assets/file-icons/bun.svg | 1 -
packages/app/src/assets/file-icons/bun_light.svg | 1 -
packages/app/src/assets/file-icons/c.svg | 1 -
packages/app/src/assets/file-icons/c3.svg | 1 -
packages/app/src/assets/file-icons/cabal.svg | 1 -
packages/app/src/assets/file-icons/caddy.svg | 1 -
packages/app/src/assets/file-icons/cadence.svg | 1 -
packages/app/src/assets/file-icons/cairo.svg | 1 -
packages/app/src/assets/file-icons/cake.svg | 1 -
packages/app/src/assets/file-icons/capacitor.svg | 1 -
packages/app/src/assets/file-icons/capnp.svg | 1 -
packages/app/src/assets/file-icons/cbx.svg | 1 -
packages/app/src/assets/file-icons/cds.svg | 1 -
packages/app/src/assets/file-icons/certificate.svg | 1 -
packages/app/src/assets/file-icons/changelog.svg | 1 -
packages/app/src/assets/file-icons/chess.svg | 1 -
packages/app/src/assets/file-icons/chess_light.svg | 1 -
packages/app/src/assets/file-icons/chrome.svg | 1 -
packages/app/src/assets/file-icons/circleci.svg | 1 -
.../app/src/assets/file-icons/circleci_light.svg | 1 -
packages/app/src/assets/file-icons/citation.svg | 1 -
packages/app/src/assets/file-icons/clangd.svg | 1 -
packages/app/src/assets/file-icons/claude.svg | 1 -
packages/app/src/assets/file-icons/cline.svg | 1 -
packages/app/src/assets/file-icons/clojure.svg | 1 -
.../app/src/assets/file-icons/cloudfoundry.svg | 1 -
packages/app/src/assets/file-icons/cmake.svg | 1 -
packages/app/src/assets/file-icons/coala.svg | 1 -
packages/app/src/assets/file-icons/cobol.svg | 1 -
packages/app/src/assets/file-icons/coconut.svg | 1 -
.../app/src/assets/file-icons/code-climate.svg | 1 -
.../src/assets/file-icons/code-climate_light.svg | 1 -
packages/app/src/assets/file-icons/codecov.svg | 1 -
packages/app/src/assets/file-icons/codeowners.svg | 1 -
.../app/src/assets/file-icons/coderabbit-ai.svg | 1 -
packages/app/src/assets/file-icons/coffee.svg | 1 -
packages/app/src/assets/file-icons/coldfusion.svg | 1 -
.../app/src/assets/file-icons/coloredpetrinets.svg | 1 -
packages/app/src/assets/file-icons/command.svg | 1 -
packages/app/src/assets/file-icons/commitizen.svg | 1 -
packages/app/src/assets/file-icons/commitlint.svg | 1 -
packages/app/src/assets/file-icons/concourse.svg | 1 -
packages/app/src/assets/file-icons/conduct.svg | 1 -
packages/app/src/assets/file-icons/console.svg | 1 -
.../app/src/assets/file-icons/contentlayer.svg | 1 -
packages/app/src/assets/file-icons/context.svg | 1 -
.../app/src/assets/file-icons/contributing.svg | 1 -
packages/app/src/assets/file-icons/controller.svg | 1 -
packages/app/src/assets/file-icons/copilot.svg | 1 -
.../app/src/assets/file-icons/copilot_light.svg | 1 -
packages/app/src/assets/file-icons/cpp.svg | 1 -
packages/app/src/assets/file-icons/craco.svg | 1 -
packages/app/src/assets/file-icons/credits.svg | 1 -
packages/app/src/assets/file-icons/crystal.svg | 1 -
.../app/src/assets/file-icons/crystal_light.svg | 1 -
packages/app/src/assets/file-icons/csharp.svg | 1 -
packages/app/src/assets/file-icons/css-map.svg | 1 -
packages/app/src/assets/file-icons/css.svg | 1 -
packages/app/src/assets/file-icons/cucumber.svg | 1 -
packages/app/src/assets/file-icons/cuda.svg | 1 -
packages/app/src/assets/file-icons/cursor.svg | 1 -
.../app/src/assets/file-icons/cursor_light.svg | 1 -
packages/app/src/assets/file-icons/cypress.svg | 1 -
packages/app/src/assets/file-icons/d.svg | 1 -
packages/app/src/assets/file-icons/dart.svg | 1 -
.../app/src/assets/file-icons/dart_generated.svg | 1 -
packages/app/src/assets/file-icons/database.svg | 1 -
packages/app/src/assets/file-icons/deepsource.svg | 1 -
.../app/src/assets/file-icons/denizenscript.svg | 1 -
packages/app/src/assets/file-icons/deno.svg | 1 -
packages/app/src/assets/file-icons/deno_light.svg | 1 -
packages/app/src/assets/file-icons/dependabot.svg | 1 -
.../src/assets/file-icons/dependencies-update.svg | 1 -
packages/app/src/assets/file-icons/dhall.svg | 1 -
packages/app/src/assets/file-icons/diff.svg | 1 -
packages/app/src/assets/file-icons/dinophp.svg | 1 -
packages/app/src/assets/file-icons/disc.svg | 1 -
packages/app/src/assets/file-icons/django.svg | 1 -
packages/app/src/assets/file-icons/dll.svg | 1 -
packages/app/src/assets/file-icons/docker.svg | 1 -
.../app/src/assets/file-icons/doctex-installer.svg | 1 -
packages/app/src/assets/file-icons/document.svg | 1 -
packages/app/src/assets/file-icons/dotjs.svg | 1 -
packages/app/src/assets/file-icons/drawio.svg | 1 -
packages/app/src/assets/file-icons/drizzle.svg | 1 -
packages/app/src/assets/file-icons/drone.svg | 1 -
packages/app/src/assets/file-icons/drone_light.svg | 4 -
packages/app/src/assets/file-icons/duc.svg | 1 -
packages/app/src/assets/file-icons/dune.svg | 1 -
packages/app/src/assets/file-icons/edge.svg | 1 -
.../app/src/assets/file-icons/editorconfig.svg | 1 -
packages/app/src/assets/file-icons/ejs.svg | 1 -
packages/app/src/assets/file-icons/elixir.svg | 1 -
packages/app/src/assets/file-icons/elm.svg | 1 -
packages/app/src/assets/file-icons/email.svg | 1 -
packages/app/src/assets/file-icons/ember.svg | 1 -
packages/app/src/assets/file-icons/epub.svg | 1 -
packages/app/src/assets/file-icons/erlang.svg | 1 -
packages/app/src/assets/file-icons/esbuild.svg | 1 -
packages/app/src/assets/file-icons/eslint.svg | 1 -
packages/app/src/assets/file-icons/excalidraw.svg | 1 -
packages/app/src/assets/file-icons/exe.svg | 1 -
packages/app/src/assets/file-icons/fastlane.svg | 1 -
packages/app/src/assets/file-icons/favicon.svg | 1 -
packages/app/src/assets/file-icons/figma.svg | 1 -
packages/app/src/assets/file-icons/firebase.svg | 1 -
packages/app/src/assets/file-icons/flash.svg | 1 -
packages/app/src/assets/file-icons/flow.svg | 1 -
.../src/assets/file-icons/folder-admin-open.svg | 6 -
.../app/src/assets/file-icons/folder-admin.svg | 6 -
.../src/assets/file-icons/folder-android-open.svg | 1 -
.../app/src/assets/file-icons/folder-android.svg | 1 -
.../src/assets/file-icons/folder-angular-open.svg | 1 -
.../app/src/assets/file-icons/folder-angular.svg | 1 -
.../assets/file-icons/folder-animation-open.svg | 1 -
.../app/src/assets/file-icons/folder-animation.svg | 1 -
.../src/assets/file-icons/folder-ansible-open.svg | 1 -
.../app/src/assets/file-icons/folder-ansible.svg | 1 -
.../app/src/assets/file-icons/folder-api-open.svg | 1 -
packages/app/src/assets/file-icons/folder-api.svg | 1 -
.../src/assets/file-icons/folder-apollo-open.svg | 1 -
.../app/src/assets/file-icons/folder-apollo.svg | 1 -
.../app/src/assets/file-icons/folder-app-open.svg | 1 -
packages/app/src/assets/file-icons/folder-app.svg | 1 -
.../src/assets/file-icons/folder-archive-open.svg | 1 -
.../app/src/assets/file-icons/folder-archive.svg | 1 -
.../src/assets/file-icons/folder-astro-open.svg | 1 -
.../app/src/assets/file-icons/folder-astro.svg | 1 -
.../app/src/assets/file-icons/folder-atom-open.svg | 1 -
packages/app/src/assets/file-icons/folder-atom.svg | 1 -
.../assets/file-icons/folder-attachment-open.svg | 1 -
.../src/assets/file-icons/folder-attachment.svg | 1 -
.../src/assets/file-icons/folder-audio-open.svg | 1 -
.../app/src/assets/file-icons/folder-audio.svg | 1 -
.../src/assets/file-icons/folder-aurelia-open.svg | 1 -
.../app/src/assets/file-icons/folder-aurelia.svg | 1 -
.../app/src/assets/file-icons/folder-aws-open.svg | 1 -
packages/app/src/assets/file-icons/folder-aws.svg | 1 -
.../file-icons/folder-azure-pipelines-open.svg | 1 -
.../assets/file-icons/folder-azure-pipelines.svg | 1 -
.../src/assets/file-icons/folder-backup-open.svg | 1 -
.../app/src/assets/file-icons/folder-backup.svg | 1 -
.../app/src/assets/file-icons/folder-base-open.svg | 1 -
packages/app/src/assets/file-icons/folder-base.svg | 1 -
.../src/assets/file-icons/folder-batch-open.svg | 1 -
.../app/src/assets/file-icons/folder-batch.svg | 1 -
.../assets/file-icons/folder-benchmark-open.svg | 1 -
.../app/src/assets/file-icons/folder-benchmark.svg | 1 -
.../assets/file-icons/folder-bibliography-open.svg | 1 -
.../src/assets/file-icons/folder-bibliography.svg | 1 -
.../src/assets/file-icons/folder-bicep-open.svg | 1 -
.../app/src/assets/file-icons/folder-bicep.svg | 1 -
.../src/assets/file-icons/folder-blender-open.svg | 1 -
.../app/src/assets/file-icons/folder-blender.svg | 1 -
.../app/src/assets/file-icons/folder-bloc-open.svg | 1 -
packages/app/src/assets/file-icons/folder-bloc.svg | 1 -
.../src/assets/file-icons/folder-bower-open.svg | 1 -
.../app/src/assets/file-icons/folder-bower.svg | 1 -
.../assets/file-icons/folder-buildkite-open.svg | 1 -
.../app/src/assets/file-icons/folder-buildkite.svg | 1 -
.../app/src/assets/file-icons/folder-cart-open.svg | 1 -
packages/app/src/assets/file-icons/folder-cart.svg | 1 -
.../assets/file-icons/folder-changesets-open.svg | 1 -
.../src/assets/file-icons/folder-changesets.svg | 1 -
.../app/src/assets/file-icons/folder-ci-open.svg | 1 -
packages/app/src/assets/file-icons/folder-ci.svg | 1 -
.../src/assets/file-icons/folder-circleci-open.svg | 7 -
.../app/src/assets/file-icons/folder-circleci.svg | 7 -
.../src/assets/file-icons/folder-class-open.svg | 1 -
.../app/src/assets/file-icons/folder-class.svg | 1 -
.../src/assets/file-icons/folder-claude-open.svg | 1 -
.../app/src/assets/file-icons/folder-claude.svg | 1 -
.../src/assets/file-icons/folder-client-open.svg | 1 -
.../app/src/assets/file-icons/folder-client.svg | 1 -
.../src/assets/file-icons/folder-cline-open.svg | 1 -
.../app/src/assets/file-icons/folder-cline.svg | 1 -
.../file-icons/folder-cloud-functions-open.svg | 1 -
.../assets/file-icons/folder-cloud-functions.svg | 1 -
.../assets/file-icons/folder-cloudflare-open.svg | 1 -
.../src/assets/file-icons/folder-cloudflare.svg | 1 -
.../src/assets/file-icons/folder-cluster-open.svg | 1 -
.../app/src/assets/file-icons/folder-cluster.svg | 1 -
.../src/assets/file-icons/folder-cobol-open.svg | 1 -
.../app/src/assets/file-icons/folder-cobol.svg | 1 -
.../src/assets/file-icons/folder-command-open.svg | 1 -
.../app/src/assets/file-icons/folder-command.svg | 1 -
.../assets/file-icons/folder-components-open.svg | 1 -
.../src/assets/file-icons/folder-components.svg | 1 -
.../src/assets/file-icons/folder-config-open.svg | 1 -
.../app/src/assets/file-icons/folder-config.svg | 1 -
.../assets/file-icons/folder-connection-open.svg | 1 -
.../src/assets/file-icons/folder-connection.svg | 1 -
.../src/assets/file-icons/folder-console-open.svg | 1 -
.../app/src/assets/file-icons/folder-console.svg | 1 -
.../src/assets/file-icons/folder-constant-open.svg | 1 -
.../app/src/assets/file-icons/folder-constant.svg | 1 -
.../assets/file-icons/folder-container-open.svg | 1 -
.../app/src/assets/file-icons/folder-container.svg | 1 -
.../src/assets/file-icons/folder-content-open.svg | 1 -
.../app/src/assets/file-icons/folder-content.svg | 1 -
.../src/assets/file-icons/folder-context-open.svg | 1 -
.../app/src/assets/file-icons/folder-context.svg | 1 -
.../src/assets/file-icons/folder-contract-open.svg | 1 -
.../app/src/assets/file-icons/folder-contract.svg | 1 -
.../assets/file-icons/folder-controller-open.svg | 1 -
.../src/assets/file-icons/folder-controller.svg | 1 -
.../app/src/assets/file-icons/folder-core-open.svg | 1 -
packages/app/src/assets/file-icons/folder-core.svg | 1 -
.../src/assets/file-icons/folder-coverage-open.svg | 1 -
.../app/src/assets/file-icons/folder-coverage.svg | 1 -
.../app/src/assets/file-icons/folder-css-open.svg | 1 -
packages/app/src/assets/file-icons/folder-css.svg | 1 -
.../src/assets/file-icons/folder-cursor-open.svg | 1 -
.../assets/file-icons/folder-cursor-open_light.svg | 1 -
.../app/src/assets/file-icons/folder-cursor.svg | 1 -
.../src/assets/file-icons/folder-cursor_light.svg | 1 -
.../src/assets/file-icons/folder-custom-open.svg | 1 -
.../app/src/assets/file-icons/folder-custom.svg | 1 -
.../src/assets/file-icons/folder-cypress-open.svg | 1 -
.../app/src/assets/file-icons/folder-cypress.svg | 1 -
.../app/src/assets/file-icons/folder-dart-open.svg | 1 -
packages/app/src/assets/file-icons/folder-dart.svg | 1 -
.../src/assets/file-icons/folder-database-open.svg | 1 -
.../app/src/assets/file-icons/folder-database.svg | 1 -
.../src/assets/file-icons/folder-debug-open.svg | 1 -
.../app/src/assets/file-icons/folder-debug.svg | 1 -
.../assets/file-icons/folder-decorators-open.svg | 1 -
.../src/assets/file-icons/folder-decorators.svg | 1 -
.../src/assets/file-icons/folder-delta-open.svg | 1 -
.../app/src/assets/file-icons/folder-delta.svg | 1 -
.../src/assets/file-icons/folder-desktop-open.svg | 1 -
.../app/src/assets/file-icons/folder-desktop.svg | 1 -
.../assets/file-icons/folder-directive-open.svg | 1 -
.../app/src/assets/file-icons/folder-directive.svg | 1 -
.../app/src/assets/file-icons/folder-dist-open.svg | 1 -
packages/app/src/assets/file-icons/folder-dist.svg | 1 -
.../src/assets/file-icons/folder-docker-open.svg | 1 -
.../app/src/assets/file-icons/folder-docker.svg | 1 -
.../app/src/assets/file-icons/folder-docs-open.svg | 1 -
packages/app/src/assets/file-icons/folder-docs.svg | 1 -
.../src/assets/file-icons/folder-download-open.svg | 1 -
.../app/src/assets/file-icons/folder-download.svg | 1 -
.../src/assets/file-icons/folder-drizzle-open.svg | 1 -
.../app/src/assets/file-icons/folder-drizzle.svg | 1 -
.../app/src/assets/file-icons/folder-dump-open.svg | 1 -
packages/app/src/assets/file-icons/folder-dump.svg | 1 -
.../src/assets/file-icons/folder-element-open.svg | 1 -
.../app/src/assets/file-icons/folder-element.svg | 1 -
.../app/src/assets/file-icons/folder-enum-open.svg | 1 -
packages/app/src/assets/file-icons/folder-enum.svg | 1 -
.../assets/file-icons/folder-environment-open.svg | 1 -
.../src/assets/file-icons/folder-environment.svg | 1 -
.../src/assets/file-icons/folder-error-open.svg | 1 -
.../app/src/assets/file-icons/folder-error.svg | 1 -
.../src/assets/file-icons/folder-event-open.svg | 1 -
.../app/src/assets/file-icons/folder-event.svg | 1 -
.../src/assets/file-icons/folder-examples-open.svg | 1 -
.../app/src/assets/file-icons/folder-examples.svg | 1 -
.../app/src/assets/file-icons/folder-expo-open.svg | 1 -
packages/app/src/assets/file-icons/folder-expo.svg | 1 -
.../src/assets/file-icons/folder-export-open.svg | 1 -
.../app/src/assets/file-icons/folder-export.svg | 1 -
.../src/assets/file-icons/folder-fastlane-open.svg | 1 -
.../app/src/assets/file-icons/folder-fastlane.svg | 1 -
.../src/assets/file-icons/folder-favicon-open.svg | 1 -
.../app/src/assets/file-icons/folder-favicon.svg | 1 -
.../src/assets/file-icons/folder-firebase-open.svg | 1 -
.../app/src/assets/file-icons/folder-firebase.svg | 1 -
.../assets/file-icons/folder-firestore-open.svg | 1 -
.../app/src/assets/file-icons/folder-firestore.svg | 1 -
.../app/src/assets/file-icons/folder-flow-open.svg | 6 -
packages/app/src/assets/file-icons/folder-flow.svg | 6 -
.../src/assets/file-icons/folder-flutter-open.svg | 1 -
.../app/src/assets/file-icons/folder-flutter.svg | 1 -
.../app/src/assets/file-icons/folder-font-open.svg | 1 -
packages/app/src/assets/file-icons/folder-font.svg | 1 -
.../src/assets/file-icons/folder-forgejo-open.svg | 1 -
.../app/src/assets/file-icons/folder-forgejo.svg | 1 -
.../assets/file-icons/folder-functions-open.svg | 1 -
.../app/src/assets/file-icons/folder-functions.svg | 1 -
.../assets/file-icons/folder-gamemaker-open.svg | 1 -
.../app/src/assets/file-icons/folder-gamemaker.svg | 1 -
.../assets/file-icons/folder-generator-open.svg | 1 -
.../app/src/assets/file-icons/folder-generator.svg | 1 -
.../assets/file-icons/folder-gh-workflows-open.svg | 6 -
.../src/assets/file-icons/folder-gh-workflows.svg | 6 -
.../app/src/assets/file-icons/folder-git-open.svg | 1 -
packages/app/src/assets/file-icons/folder-git.svg | 1 -
.../src/assets/file-icons/folder-gitea-open.svg | 1 -
.../app/src/assets/file-icons/folder-gitea.svg | 1 -
.../src/assets/file-icons/folder-github-open.svg | 6 -
.../app/src/assets/file-icons/folder-github.svg | 6 -
.../src/assets/file-icons/folder-gitlab-open.svg | 1 -
.../app/src/assets/file-icons/folder-gitlab.svg | 1 -
.../src/assets/file-icons/folder-global-open.svg | 1 -
.../app/src/assets/file-icons/folder-global.svg | 1 -
.../src/assets/file-icons/folder-godot-open.svg | 1 -
.../app/src/assets/file-icons/folder-godot.svg | 1 -
.../src/assets/file-icons/folder-gradle-open.svg | 1 -
.../app/src/assets/file-icons/folder-gradle.svg | 1 -
.../src/assets/file-icons/folder-graphql-open.svg | 1 -
.../app/src/assets/file-icons/folder-graphql.svg | 1 -
.../src/assets/file-icons/folder-guard-open.svg | 1 -
.../app/src/assets/file-icons/folder-guard.svg | 1 -
.../app/src/assets/file-icons/folder-gulp-open.svg | 1 -
packages/app/src/assets/file-icons/folder-gulp.svg | 1 -
.../app/src/assets/file-icons/folder-helm-open.svg | 1 -
packages/app/src/assets/file-icons/folder-helm.svg | 1 -
.../src/assets/file-icons/folder-helper-open.svg | 1 -
.../app/src/assets/file-icons/folder-helper.svg | 1 -
.../app/src/assets/file-icons/folder-home-open.svg | 1 -
packages/app/src/assets/file-icons/folder-home.svg | 1 -
.../app/src/assets/file-icons/folder-hook-open.svg | 1 -
packages/app/src/assets/file-icons/folder-hook.svg | 1 -
.../src/assets/file-icons/folder-husky-open.svg | 1 -
.../app/src/assets/file-icons/folder-husky.svg | 1 -
.../app/src/assets/file-icons/folder-i18n-open.svg | 1 -
packages/app/src/assets/file-icons/folder-i18n.svg | 1 -
.../src/assets/file-icons/folder-images-open.svg | 1 -
.../app/src/assets/file-icons/folder-images.svg | 1 -
.../src/assets/file-icons/folder-import-open.svg | 1 -
.../app/src/assets/file-icons/folder-import.svg | 1 -
.../src/assets/file-icons/folder-include-open.svg | 1 -
.../app/src/assets/file-icons/folder-include.svg | 1 -
.../src/assets/file-icons/folder-intellij-open.svg | 39 -
.../file-icons/folder-intellij-open_light.svg | 1 -
.../app/src/assets/file-icons/folder-intellij.svg | 39 -
.../assets/file-icons/folder-intellij_light.svg | 1 -
.../assets/file-icons/folder-interceptor-open.svg | 1 -
.../src/assets/file-icons/folder-interceptor.svg | 1 -
.../assets/file-icons/folder-interface-open.svg | 1 -
.../app/src/assets/file-icons/folder-interface.svg | 1 -
.../app/src/assets/file-icons/folder-ios-open.svg | 1 -
packages/app/src/assets/file-icons/folder-ios.svg | 1 -
.../app/src/assets/file-icons/folder-java-open.svg | 1 -
packages/app/src/assets/file-icons/folder-java.svg | 1 -
.../assets/file-icons/folder-javascript-open.svg | 1 -
.../src/assets/file-icons/folder-javascript.svg | 1 -
.../src/assets/file-icons/folder-jinja-open.svg | 1 -
.../assets/file-icons/folder-jinja-open_light.svg | 1 -
.../app/src/assets/file-icons/folder-jinja.svg | 1 -
.../src/assets/file-icons/folder-jinja_light.svg | 1 -
.../app/src/assets/file-icons/folder-job-open.svg | 1 -
packages/app/src/assets/file-icons/folder-job.svg | 1 -
.../app/src/assets/file-icons/folder-json-open.svg | 1 -
packages/app/src/assets/file-icons/folder-json.svg | 1 -
.../src/assets/file-icons/folder-jupyter-open.svg | 1 -
.../app/src/assets/file-icons/folder-jupyter.svg | 1 -
.../app/src/assets/file-icons/folder-keys-open.svg | 1 -
packages/app/src/assets/file-icons/folder-keys.svg | 1 -
.../assets/file-icons/folder-kubernetes-open.svg | 1 -
.../src/assets/file-icons/folder-kubernetes.svg | 1 -
.../src/assets/file-icons/folder-kusto-open.svg | 1 -
.../app/src/assets/file-icons/folder-kusto.svg | 1 -
.../src/assets/file-icons/folder-layout-open.svg | 1 -
.../app/src/assets/file-icons/folder-layout.svg | 1 -
.../src/assets/file-icons/folder-lefthook-open.svg | 1 -
.../app/src/assets/file-icons/folder-lefthook.svg | 1 -
.../app/src/assets/file-icons/folder-less-open.svg | 1 -
packages/app/src/assets/file-icons/folder-less.svg | 1 -
.../app/src/assets/file-icons/folder-lib-open.svg | 1 -
packages/app/src/assets/file-icons/folder-lib.svg | 1 -
.../app/src/assets/file-icons/folder-link-open.svg | 1 -
packages/app/src/assets/file-icons/folder-link.svg | 1 -
.../src/assets/file-icons/folder-linux-open.svg | 1 -
.../app/src/assets/file-icons/folder-linux.svg | 1 -
.../assets/file-icons/folder-liquibase-open.svg | 1 -
.../app/src/assets/file-icons/folder-liquibase.svg | 1 -
.../app/src/assets/file-icons/folder-log-open.svg | 1 -
packages/app/src/assets/file-icons/folder-log.svg | 1 -
.../src/assets/file-icons/folder-lottie-open.svg | 1 -
.../app/src/assets/file-icons/folder-lottie.svg | 1 -
.../app/src/assets/file-icons/folder-lua-open.svg | 1 -
packages/app/src/assets/file-icons/folder-lua.svg | 1 -
.../app/src/assets/file-icons/folder-luau-open.svg | 1 -
packages/app/src/assets/file-icons/folder-luau.svg | 1 -
.../src/assets/file-icons/folder-macos-open.svg | 6 -
.../app/src/assets/file-icons/folder-macos.svg | 6 -
.../app/src/assets/file-icons/folder-mail-open.svg | 1 -
packages/app/src/assets/file-icons/folder-mail.svg | 1 -
.../src/assets/file-icons/folder-mappings-open.svg | 1 -
.../app/src/assets/file-icons/folder-mappings.svg | 1 -
.../src/assets/file-icons/folder-markdown-open.svg | 1 -
.../app/src/assets/file-icons/folder-markdown.svg | 1 -
.../assets/file-icons/folder-mercurial-open.svg | 1 -
.../app/src/assets/file-icons/folder-mercurial.svg | 1 -
.../src/assets/file-icons/folder-messages-open.svg | 1 -
.../app/src/assets/file-icons/folder-messages.svg | 1 -
.../app/src/assets/file-icons/folder-meta-open.svg | 1 -
packages/app/src/assets/file-icons/folder-meta.svg | 1 -
.../assets/file-icons/folder-middleware-open.svg | 1 -
.../src/assets/file-icons/folder-middleware.svg | 1 -
.../app/src/assets/file-icons/folder-mjml-open.svg | 1 -
packages/app/src/assets/file-icons/folder-mjml.svg | 1 -
.../src/assets/file-icons/folder-mobile-open.svg | 1 -
.../app/src/assets/file-icons/folder-mobile.svg | 1 -
.../app/src/assets/file-icons/folder-mock-open.svg | 1 -
packages/app/src/assets/file-icons/folder-mock.svg | 1 -
.../app/src/assets/file-icons/folder-mojo-open.svg | 1 -
packages/app/src/assets/file-icons/folder-mojo.svg | 1 -
.../src/assets/file-icons/folder-molecule-open.svg | 1 -
.../app/src/assets/file-icons/folder-molecule.svg | 1 -
.../app/src/assets/file-icons/folder-moon-open.svg | 1 -
packages/app/src/assets/file-icons/folder-moon.svg | 1 -
.../src/assets/file-icons/folder-netlify-open.svg | 1 -
.../app/src/assets/file-icons/folder-netlify.svg | 1 -
.../app/src/assets/file-icons/folder-next-open.svg | 6 -
packages/app/src/assets/file-icons/folder-next.svg | 6 -
.../assets/file-icons/folder-ngrx-store-open.svg | 1 -
.../src/assets/file-icons/folder-ngrx-store.svg | 1 -
.../app/src/assets/file-icons/folder-node-open.svg | 1 -
packages/app/src/assets/file-icons/folder-node.svg | 1 -
.../app/src/assets/file-icons/folder-nuxt-open.svg | 6 -
packages/app/src/assets/file-icons/folder-nuxt.svg | 6 -
.../src/assets/file-icons/folder-obsidian-open.svg | 1 -
.../app/src/assets/file-icons/folder-obsidian.svg | 1 -
packages/app/src/assets/file-icons/folder-open.svg | 5 -
.../src/assets/file-icons/folder-organism-open.svg | 1 -
.../app/src/assets/file-icons/folder-organism.svg | 1 -
.../src/assets/file-icons/folder-other-open.svg | 1 -
.../app/src/assets/file-icons/folder-other.svg | 1 -
.../src/assets/file-icons/folder-packages-open.svg | 1 -
.../app/src/assets/file-icons/folder-packages.svg | 1 -
.../app/src/assets/file-icons/folder-pdf-open.svg | 1 -
packages/app/src/assets/file-icons/folder-pdf.svg | 1 -
.../app/src/assets/file-icons/folder-pdm-open.svg | 1 -
packages/app/src/assets/file-icons/folder-pdm.svg | 1 -
.../app/src/assets/file-icons/folder-php-open.svg | 1 -
packages/app/src/assets/file-icons/folder-php.svg | 1 -
.../assets/file-icons/folder-phpmailer-open.svg | 1 -
.../app/src/assets/file-icons/folder-phpmailer.svg | 1 -
.../app/src/assets/file-icons/folder-pipe-open.svg | 1 -
packages/app/src/assets/file-icons/folder-pipe.svg | 1 -
.../src/assets/file-icons/folder-plastic-open.svg | 1 -
.../app/src/assets/file-icons/folder-plastic.svg | 1 -
.../src/assets/file-icons/folder-plugin-open.svg | 1 -
.../app/src/assets/file-icons/folder-plugin.svg | 1 -
.../src/assets/file-icons/folder-policy-open.svg | 1 -
.../app/src/assets/file-icons/folder-policy.svg | 1 -
.../assets/file-icons/folder-powershell-open.svg | 1 -
.../src/assets/file-icons/folder-powershell.svg | 1 -
.../src/assets/file-icons/folder-prisma-open.svg | 1 -
.../app/src/assets/file-icons/folder-prisma.svg | 1 -
.../src/assets/file-icons/folder-private-open.svg | 1 -
.../app/src/assets/file-icons/folder-private.svg | 1 -
.../src/assets/file-icons/folder-project-open.svg | 1 -
.../app/src/assets/file-icons/folder-project.svg | 1 -
.../src/assets/file-icons/folder-prompts-open.svg | 1 -
.../app/src/assets/file-icons/folder-prompts.svg | 1 -
.../src/assets/file-icons/folder-proto-open.svg | 1 -
.../app/src/assets/file-icons/folder-proto.svg | 1 -
.../src/assets/file-icons/folder-public-open.svg | 1 -
.../app/src/assets/file-icons/folder-public.svg | 1 -
.../src/assets/file-icons/folder-python-open.svg | 1 -
.../app/src/assets/file-icons/folder-python.svg | 1 -
.../src/assets/file-icons/folder-pytorch-open.svg | 1 -
.../app/src/assets/file-icons/folder-pytorch.svg | 1 -
.../src/assets/file-icons/folder-quasar-open.svg | 1 -
.../app/src/assets/file-icons/folder-quasar.svg | 1 -
.../src/assets/file-icons/folder-queue-open.svg | 1 -
.../app/src/assets/file-icons/folder-queue.svg | 1 -
.../file-icons/folder-react-components-open.svg | 1 -
.../assets/file-icons/folder-react-components.svg | 1 -
.../file-icons/folder-redux-reducer-open.svg | 1 -
.../src/assets/file-icons/folder-redux-reducer.svg | 1 -
.../assets/file-icons/folder-repository-open.svg | 1 -
.../src/assets/file-icons/folder-repository.svg | 1 -
.../src/assets/file-icons/folder-resolver-open.svg | 1 -
.../app/src/assets/file-icons/folder-resolver.svg | 1 -
.../src/assets/file-icons/folder-resource-open.svg | 1 -
.../app/src/assets/file-icons/folder-resource.svg | 1 -
.../src/assets/file-icons/folder-review-open.svg | 1 -
.../app/src/assets/file-icons/folder-review.svg | 1 -
.../src/assets/file-icons/folder-robot-open.svg | 1 -
.../app/src/assets/file-icons/folder-robot.svg | 1 -
.../src/assets/file-icons/folder-routes-open.svg | 1 -
.../app/src/assets/file-icons/folder-routes.svg | 1 -
.../src/assets/file-icons/folder-rules-open.svg | 1 -
.../app/src/assets/file-icons/folder-rules.svg | 1 -
.../app/src/assets/file-icons/folder-rust-open.svg | 1 -
packages/app/src/assets/file-icons/folder-rust.svg | 1 -
.../src/assets/file-icons/folder-sandbox-open.svg | 1 -
.../app/src/assets/file-icons/folder-sandbox.svg | 1 -
.../app/src/assets/file-icons/folder-sass-open.svg | 1 -
packages/app/src/assets/file-icons/folder-sass.svg | 1 -
.../src/assets/file-icons/folder-scala-open.svg | 1 -
.../app/src/assets/file-icons/folder-scala.svg | 1 -
.../src/assets/file-icons/folder-scons-open.svg | 1 -
.../app/src/assets/file-icons/folder-scons.svg | 1 -
.../src/assets/file-icons/folder-scripts-open.svg | 6 -
.../app/src/assets/file-icons/folder-scripts.svg | 6 -
.../src/assets/file-icons/folder-secure-open.svg | 1 -
.../app/src/assets/file-icons/folder-secure.svg | 1 -
.../src/assets/file-icons/folder-seeders-open.svg | 1 -
.../app/src/assets/file-icons/folder-seeders.svg | 1 -
.../src/assets/file-icons/folder-server-open.svg | 1 -
.../app/src/assets/file-icons/folder-server.svg | 1 -
.../assets/file-icons/folder-serverless-open.svg | 1 -
.../src/assets/file-icons/folder-serverless.svg | 1 -
.../src/assets/file-icons/folder-shader-open.svg | 1 -
.../app/src/assets/file-icons/folder-shader.svg | 1 -
.../src/assets/file-icons/folder-shared-open.svg | 1 -
.../app/src/assets/file-icons/folder-shared.svg | 1 -
.../assets/file-icons/folder-snapcraft-open.svg | 1 -
.../app/src/assets/file-icons/folder-snapcraft.svg | 1 -
.../src/assets/file-icons/folder-snippet-open.svg | 1 -
.../app/src/assets/file-icons/folder-snippet.svg | 1 -
.../app/src/assets/file-icons/folder-src-open.svg | 1 -
.../assets/file-icons/folder-src-tauri-open.svg | 1 -
.../app/src/assets/file-icons/folder-src-tauri.svg | 1 -
packages/app/src/assets/file-icons/folder-src.svg | 1 -
.../src/assets/file-icons/folder-stack-open.svg | 1 -
.../app/src/assets/file-icons/folder-stack.svg | 1 -
.../src/assets/file-icons/folder-stencil-open.svg | 1 -
.../app/src/assets/file-icons/folder-stencil.svg | 1 -
.../src/assets/file-icons/folder-store-open.svg | 1 -
.../app/src/assets/file-icons/folder-store.svg | 1 -
.../assets/file-icons/folder-storybook-open.svg | 1 -
.../app/src/assets/file-icons/folder-storybook.svg | 1 -
.../src/assets/file-icons/folder-stylus-open.svg | 1 -
.../app/src/assets/file-icons/folder-stylus.svg | 1 -
.../src/assets/file-icons/folder-sublime-open.svg | 1 -
.../app/src/assets/file-icons/folder-sublime.svg | 1 -
.../src/assets/file-icons/folder-supabase-open.svg | 1 -
.../app/src/assets/file-icons/folder-supabase.svg | 1 -
.../src/assets/file-icons/folder-svelte-open.svg | 1 -
.../app/src/assets/file-icons/folder-svelte.svg | 1 -
.../app/src/assets/file-icons/folder-svg-open.svg | 1 -
packages/app/src/assets/file-icons/folder-svg.svg | 1 -
.../src/assets/file-icons/folder-syntax-open.svg | 1 -
.../app/src/assets/file-icons/folder-syntax.svg | 1 -
.../src/assets/file-icons/folder-target-open.svg | 10 -
.../app/src/assets/file-icons/folder-target.svg | 10 -
.../src/assets/file-icons/folder-taskfile-open.svg | 1 -
.../app/src/assets/file-icons/folder-taskfile.svg | 1 -
.../src/assets/file-icons/folder-tasks-open.svg | 1 -
.../app/src/assets/file-icons/folder-tasks.svg | 1 -
.../assets/file-icons/folder-television-open.svg | 1 -
.../src/assets/file-icons/folder-television.svg | 1 -
.../app/src/assets/file-icons/folder-temp-open.svg | 1 -
packages/app/src/assets/file-icons/folder-temp.svg | 1 -
.../src/assets/file-icons/folder-template-open.svg | 1 -
.../app/src/assets/file-icons/folder-template.svg | 1 -
.../assets/file-icons/folder-terraform-open.svg | 1 -
.../app/src/assets/file-icons/folder-terraform.svg | 1 -
.../app/src/assets/file-icons/folder-test-open.svg | 1 -
packages/app/src/assets/file-icons/folder-test.svg | 1 -
.../src/assets/file-icons/folder-theme-open.svg | 1 -
.../app/src/assets/file-icons/folder-theme.svg | 1 -
.../src/assets/file-icons/folder-tools-open.svg | 1 -
.../app/src/assets/file-icons/folder-tools.svg | 1 -
.../src/assets/file-icons/folder-trash-open.svg | 1 -
.../app/src/assets/file-icons/folder-trash.svg | 1 -
.../src/assets/file-icons/folder-trigger-open.svg | 1 -
.../app/src/assets/file-icons/folder-trigger.svg | 1 -
.../assets/file-icons/folder-turborepo-open.svg | 15 -
.../app/src/assets/file-icons/folder-turborepo.svg | 15 -
.../assets/file-icons/folder-typescript-open.svg | 1 -
.../src/assets/file-icons/folder-typescript.svg | 1 -
.../app/src/assets/file-icons/folder-ui-open.svg | 1 -
packages/app/src/assets/file-icons/folder-ui.svg | 1 -
.../src/assets/file-icons/folder-unity-open.svg | 1 -
.../app/src/assets/file-icons/folder-unity.svg | 1 -
.../src/assets/file-icons/folder-update-open.svg | 1 -
.../app/src/assets/file-icons/folder-update.svg | 1 -
.../src/assets/file-icons/folder-upload-open.svg | 1 -
.../app/src/assets/file-icons/folder-upload.svg | 1 -
.../src/assets/file-icons/folder-utils-open.svg | 1 -
.../app/src/assets/file-icons/folder-utils.svg | 1 -
.../src/assets/file-icons/folder-vercel-open.svg | 5 -
.../app/src/assets/file-icons/folder-vercel.svg | 5 -
.../assets/file-icons/folder-verdaccio-open.svg | 1 -
.../app/src/assets/file-icons/folder-verdaccio.svg | 1 -
.../src/assets/file-icons/folder-video-open.svg | 1 -
.../app/src/assets/file-icons/folder-video.svg | 1 -
.../src/assets/file-icons/folder-views-open.svg | 1 -
.../app/src/assets/file-icons/folder-views.svg | 1 -
.../app/src/assets/file-icons/folder-vm-open.svg | 1 -
packages/app/src/assets/file-icons/folder-vm.svg | 1 -
.../src/assets/file-icons/folder-vscode-open.svg | 1 -
.../app/src/assets/file-icons/folder-vscode.svg | 1 -
.../file-icons/folder-vue-directives-open.svg | 1 -
.../assets/file-icons/folder-vue-directives.svg | 1 -
.../app/src/assets/file-icons/folder-vue-open.svg | 1 -
packages/app/src/assets/file-icons/folder-vue.svg | 1 -
.../src/assets/file-icons/folder-vuepress-open.svg | 1 -
.../app/src/assets/file-icons/folder-vuepress.svg | 1 -
.../assets/file-icons/folder-vuex-store-open.svg | 1 -
.../src/assets/file-icons/folder-vuex-store.svg | 1 -
.../src/assets/file-icons/folder-wakatime-open.svg | 1 -
.../app/src/assets/file-icons/folder-wakatime.svg | 1 -
.../src/assets/file-icons/folder-webpack-open.svg | 1 -
.../app/src/assets/file-icons/folder-webpack.svg | 1 -
.../src/assets/file-icons/folder-windows-open.svg | 1 -
.../app/src/assets/file-icons/folder-windows.svg | 1 -
.../assets/file-icons/folder-wordpress-open.svg | 1 -
.../app/src/assets/file-icons/folder-wordpress.svg | 1 -
.../app/src/assets/file-icons/folder-yarn-open.svg | 1 -
packages/app/src/assets/file-icons/folder-yarn.svg | 1 -
.../src/assets/file-icons/folder-zeabur-open.svg | 1 -
.../app/src/assets/file-icons/folder-zeabur.svg | 1 -
packages/app/src/assets/file-icons/folder.svg | 5 -
packages/app/src/assets/file-icons/font.svg | 1 -
packages/app/src/assets/file-icons/forth.svg | 1 -
packages/app/src/assets/file-icons/fortran.svg | 1 -
packages/app/src/assets/file-icons/foxpro.svg | 1 -
packages/app/src/assets/file-icons/freemarker.svg | 1 -
packages/app/src/assets/file-icons/fsharp.svg | 1 -
packages/app/src/assets/file-icons/fusebox.svg | 1 -
packages/app/src/assets/file-icons/gamemaker.svg | 1 -
packages/app/src/assets/file-icons/garden.svg | 1 -
packages/app/src/assets/file-icons/gatsby.svg | 1 -
packages/app/src/assets/file-icons/gcp.svg | 1 -
packages/app/src/assets/file-icons/gemfile.svg | 1 -
packages/app/src/assets/file-icons/gemini-ai.svg | 1 -
packages/app/src/assets/file-icons/gemini.svg | 1 -
packages/app/src/assets/file-icons/git.svg | 1 -
.../assets/file-icons/github-actions-workflow.svg | 1 -
.../app/src/assets/file-icons/github-sponsors.svg | 1 -
packages/app/src/assets/file-icons/gitlab.svg | 1 -
packages/app/src/assets/file-icons/gitpod.svg | 1 -
packages/app/src/assets/file-icons/gleam.svg | 1 -
packages/app/src/assets/file-icons/gnuplot.svg | 1 -
packages/app/src/assets/file-icons/go-mod.svg | 1 -
packages/app/src/assets/file-icons/go.svg | 1 -
packages/app/src/assets/file-icons/go_gopher.svg | 35 -
.../app/src/assets/file-icons/godot-assets.svg | 1 -
packages/app/src/assets/file-icons/godot.svg | 1 -
packages/app/src/assets/file-icons/gradle.svg | 1 -
.../app/src/assets/file-icons/grafana-alloy.svg | 1 -
packages/app/src/assets/file-icons/grain.svg | 1 -
packages/app/src/assets/file-icons/graphcool.svg | 1 -
packages/app/src/assets/file-icons/graphql.svg | 1 -
packages/app/src/assets/file-icons/gridsome.svg | 1 -
packages/app/src/assets/file-icons/groovy.svg | 1 -
packages/app/src/assets/file-icons/grunt.svg | 1 -
packages/app/src/assets/file-icons/gulp.svg | 1 -
packages/app/src/assets/file-icons/h.svg | 1 -
packages/app/src/assets/file-icons/hack.svg | 1 -
packages/app/src/assets/file-icons/hadolint.svg | 1 -
packages/app/src/assets/file-icons/haml.svg | 1 -
packages/app/src/assets/file-icons/handlebars.svg | 1 -
packages/app/src/assets/file-icons/hardhat.svg | 1 -
packages/app/src/assets/file-icons/harmonix.svg | 1 -
packages/app/src/assets/file-icons/haskell.svg | 1 -
packages/app/src/assets/file-icons/haxe.svg | 1 -
packages/app/src/assets/file-icons/hcl.svg | 1 -
packages/app/src/assets/file-icons/hcl_light.svg | 1 -
packages/app/src/assets/file-icons/helm.svg | 1 -
packages/app/src/assets/file-icons/heroku.svg | 1 -
packages/app/src/assets/file-icons/hex.svg | 1 -
packages/app/src/assets/file-icons/histoire.svg | 1 -
packages/app/src/assets/file-icons/hjson.svg | 1 -
packages/app/src/assets/file-icons/horusec.svg | 1 -
packages/app/src/assets/file-icons/hosts.svg | 1 -
packages/app/src/assets/file-icons/hosts_light.svg | 1 -
packages/app/src/assets/file-icons/hpp.svg | 1 -
packages/app/src/assets/file-icons/html.svg | 1 -
packages/app/src/assets/file-icons/http.svg | 1 -
packages/app/src/assets/file-icons/huff.svg | 1 -
packages/app/src/assets/file-icons/huff_light.svg | 1 -
packages/app/src/assets/file-icons/hurl.svg | 1 -
packages/app/src/assets/file-icons/husky.svg | 1 -
packages/app/src/assets/file-icons/i18n.svg | 1 -
packages/app/src/assets/file-icons/idris.svg | 1 -
packages/app/src/assets/file-icons/ifanr-cloud.svg | 1 -
packages/app/src/assets/file-icons/image.svg | 1 -
packages/app/src/assets/file-icons/imba.svg | 1 -
.../app/src/assets/file-icons/installation.svg | 1 -
packages/app/src/assets/file-icons/ionic.svg | 1 -
packages/app/src/assets/file-icons/istanbul.svg | 1 -
packages/app/src/assets/file-icons/jar.svg | 1 -
packages/app/src/assets/file-icons/java.svg | 1 -
packages/app/src/assets/file-icons/javaclass.svg | 1 -
.../app/src/assets/file-icons/javascript-map.svg | 1 -
packages/app/src/assets/file-icons/javascript.svg | 1 -
packages/app/src/assets/file-icons/jenkins.svg | 1 -
packages/app/src/assets/file-icons/jest.svg | 1 -
packages/app/src/assets/file-icons/jinja.svg | 1 -
packages/app/src/assets/file-icons/jinja_light.svg | 1 -
packages/app/src/assets/file-icons/jsconfig.svg | 1 -
packages/app/src/assets/file-icons/json.svg | 1 -
packages/app/src/assets/file-icons/jsr.svg | 1 -
packages/app/src/assets/file-icons/jsr_light.svg | 1 -
packages/app/src/assets/file-icons/julia.svg | 1 -
packages/app/src/assets/file-icons/jupyter.svg | 1 -
packages/app/src/assets/file-icons/just.svg | 1 -
packages/app/src/assets/file-icons/karma.svg | 1 -
packages/app/src/assets/file-icons/kcl.svg | 1 -
packages/app/src/assets/file-icons/key.svg | 1 -
packages/app/src/assets/file-icons/keystatic.svg | 1 -
packages/app/src/assets/file-icons/kivy.svg | 1 -
packages/app/src/assets/file-icons/kl.svg | 1 -
packages/app/src/assets/file-icons/knip.svg | 1 -
packages/app/src/assets/file-icons/kotlin.svg | 1 -
packages/app/src/assets/file-icons/kubernetes.svg | 1 -
packages/app/src/assets/file-icons/kusto.svg | 1 -
packages/app/src/assets/file-icons/label.svg | 1 -
packages/app/src/assets/file-icons/laravel.svg | 1 -
packages/app/src/assets/file-icons/latexmk.svg | 1 -
packages/app/src/assets/file-icons/lbx.svg | 1 -
packages/app/src/assets/file-icons/lefthook.svg | 1 -
packages/app/src/assets/file-icons/lerna.svg | 1 -
packages/app/src/assets/file-icons/less.svg | 1 -
packages/app/src/assets/file-icons/liara.svg | 1 -
packages/app/src/assets/file-icons/lib.svg | 1 -
packages/app/src/assets/file-icons/lighthouse.svg | 1 -
packages/app/src/assets/file-icons/lilypond.svg | 1 -
packages/app/src/assets/file-icons/lintstaged.svg | 1 -
packages/app/src/assets/file-icons/liquid.svg | 1 -
packages/app/src/assets/file-icons/lisp.svg | 1 -
packages/app/src/assets/file-icons/livescript.svg | 1 -
packages/app/src/assets/file-icons/lock.svg | 1 -
packages/app/src/assets/file-icons/log.svg | 1 -
packages/app/src/assets/file-icons/lolcode.svg | 1 -
packages/app/src/assets/file-icons/lottie.svg | 1 -
packages/app/src/assets/file-icons/lua.svg | 1 -
packages/app/src/assets/file-icons/luau.svg | 1 -
packages/app/src/assets/file-icons/lyric.svg | 1 -
packages/app/src/assets/file-icons/makefile.svg | 1 -
.../app/src/assets/file-icons/markdoc-config.svg | 1 -
packages/app/src/assets/file-icons/markdoc.svg | 1 -
packages/app/src/assets/file-icons/markdown.svg | 1 -
.../app/src/assets/file-icons/markdownlint.svg | 1 -
packages/app/src/assets/file-icons/markojs.svg | 1 -
packages/app/src/assets/file-icons/mathematica.svg | 1 -
packages/app/src/assets/file-icons/matlab.svg | 1 -
packages/app/src/assets/file-icons/maven.svg | 1 -
packages/app/src/assets/file-icons/mdsvex.svg | 1 -
packages/app/src/assets/file-icons/mdx.svg | 1 -
packages/app/src/assets/file-icons/mercurial.svg | 1 -
packages/app/src/assets/file-icons/merlin.svg | 1 -
packages/app/src/assets/file-icons/mermaid.svg | 1 -
packages/app/src/assets/file-icons/meson.svg | 1 -
.../app/src/assets/file-icons/minecraft-fabric.svg | 1 -
packages/app/src/assets/file-icons/minecraft.svg | 1 -
packages/app/src/assets/file-icons/mint.svg | 1 -
packages/app/src/assets/file-icons/mjml.svg | 1 -
packages/app/src/assets/file-icons/mocha.svg | 1 -
packages/app/src/assets/file-icons/modernizr.svg | 1 -
packages/app/src/assets/file-icons/mojo.svg | 1 -
packages/app/src/assets/file-icons/moon.svg | 1 -
packages/app/src/assets/file-icons/moonscript.svg | 1 -
packages/app/src/assets/file-icons/mxml.svg | 1 -
packages/app/src/assets/file-icons/nano-staged.svg | 1 -
.../src/assets/file-icons/nano-staged_light.svg | 4 -
packages/app/src/assets/file-icons/ndst.svg | 1 -
packages/app/src/assets/file-icons/nest.svg | 1 -
packages/app/src/assets/file-icons/netlify.svg | 1 -
.../app/src/assets/file-icons/netlify_light.svg | 1 -
packages/app/src/assets/file-icons/next.svg | 1 -
packages/app/src/assets/file-icons/next_light.svg | 1 -
packages/app/src/assets/file-icons/nginx.svg | 1 -
.../app/src/assets/file-icons/ngrx-actions.svg | 1 -
.../app/src/assets/file-icons/ngrx-effects.svg | 1 -
packages/app/src/assets/file-icons/ngrx-entity.svg | 1 -
.../app/src/assets/file-icons/ngrx-reducer.svg | 1 -
.../app/src/assets/file-icons/ngrx-selectors.svg | 1 -
packages/app/src/assets/file-icons/ngrx-state.svg | 1 -
packages/app/src/assets/file-icons/nim.svg | 1 -
packages/app/src/assets/file-icons/nix.svg | 1 -
packages/app/src/assets/file-icons/nodejs.svg | 1 -
packages/app/src/assets/file-icons/nodejs_alt.svg | 1 -
packages/app/src/assets/file-icons/nodemon.svg | 1 -
packages/app/src/assets/file-icons/npm.svg | 1 -
packages/app/src/assets/file-icons/nuget.svg | 1 -
packages/app/src/assets/file-icons/nunjucks.svg | 1 -
packages/app/src/assets/file-icons/nuxt.svg | 1 -
packages/app/src/assets/file-icons/nx.svg | 1 -
packages/app/src/assets/file-icons/objective-c.svg | 1 -
.../app/src/assets/file-icons/objective-cpp.svg | 1 -
packages/app/src/assets/file-icons/ocaml.svg | 1 -
packages/app/src/assets/file-icons/odin.svg | 1 -
packages/app/src/assets/file-icons/opa.svg | 9 -
packages/app/src/assets/file-icons/opam.svg | 1 -
packages/app/src/assets/file-icons/openapi.svg | 1 -
.../app/src/assets/file-icons/openapi_light.svg | 1 -
packages/app/src/assets/file-icons/otne.svg | 1 -
packages/app/src/assets/file-icons/oxlint.svg | 1 -
packages/app/src/assets/file-icons/packship.svg | 1 -
packages/app/src/assets/file-icons/palette.svg | 1 -
packages/app/src/assets/file-icons/panda.svg | 1 -
packages/app/src/assets/file-icons/parcel.svg | 1 -
packages/app/src/assets/file-icons/pascal.svg | 1 -
packages/app/src/assets/file-icons/pawn.svg | 1 -
packages/app/src/assets/file-icons/payload.svg | 1 -
.../app/src/assets/file-icons/payload_light.svg | 1 -
packages/app/src/assets/file-icons/pdf.svg | 1 -
packages/app/src/assets/file-icons/pdm.svg | 1 -
packages/app/src/assets/file-icons/percy.svg | 1 -
packages/app/src/assets/file-icons/perl.svg | 1 -
.../app/src/assets/file-icons/php-cs-fixer.svg | 1 -
packages/app/src/assets/file-icons/php.svg | 1 -
.../app/src/assets/file-icons/php_elephant.svg | 1 -
.../src/assets/file-icons/php_elephant_pink.svg | 1 -
packages/app/src/assets/file-icons/phpstan.svg | 1 -
packages/app/src/assets/file-icons/phpunit.svg | 1 -
packages/app/src/assets/file-icons/pinejs.svg | 1 -
packages/app/src/assets/file-icons/pipeline.svg | 1 -
packages/app/src/assets/file-icons/pkl.svg | 1 -
packages/app/src/assets/file-icons/plastic.svg | 1 -
packages/app/src/assets/file-icons/playwright.svg | 1 -
packages/app/src/assets/file-icons/plop.svg | 1 -
.../app/src/assets/file-icons/pm2-ecosystem.svg | 1 -
packages/app/src/assets/file-icons/pnpm.svg | 1 -
packages/app/src/assets/file-icons/pnpm_light.svg | 1 -
packages/app/src/assets/file-icons/poetry.svg | 1 -
packages/app/src/assets/file-icons/postcss.svg | 1 -
packages/app/src/assets/file-icons/posthtml.svg | 1 -
packages/app/src/assets/file-icons/powerpoint.svg | 1 -
packages/app/src/assets/file-icons/powershell.svg | 1 -
packages/app/src/assets/file-icons/pre-commit.svg | 1 -
packages/app/src/assets/file-icons/prettier.svg | 1 -
packages/app/src/assets/file-icons/prisma.svg | 1 -
packages/app/src/assets/file-icons/processing.svg | 1 -
packages/app/src/assets/file-icons/prolog.svg | 1 -
packages/app/src/assets/file-icons/prompt.svg | 1 -
packages/app/src/assets/file-icons/proto.svg | 1 -
packages/app/src/assets/file-icons/protractor.svg | 1 -
packages/app/src/assets/file-icons/pug.svg | 1 -
packages/app/src/assets/file-icons/puppet.svg | 1 -
packages/app/src/assets/file-icons/puppeteer.svg | 1 -
packages/app/src/assets/file-icons/purescript.svg | 1 -
packages/app/src/assets/file-icons/python-misc.svg | 1 -
packages/app/src/assets/file-icons/python.svg | 1 -
packages/app/src/assets/file-icons/pytorch.svg | 1 -
packages/app/src/assets/file-icons/qsharp.svg | 1 -
packages/app/src/assets/file-icons/quarto.svg | 5 -
packages/app/src/assets/file-icons/quasar.svg | 1 -
packages/app/src/assets/file-icons/quokka.svg | 1 -
packages/app/src/assets/file-icons/qwik.svg | 1 -
packages/app/src/assets/file-icons/r.svg | 1 -
packages/app/src/assets/file-icons/racket.svg | 1 -
packages/app/src/assets/file-icons/raml.svg | 1 -
packages/app/src/assets/file-icons/razor.svg | 1 -
packages/app/src/assets/file-icons/rbxmk.svg | 1 -
packages/app/src/assets/file-icons/rc.svg | 1 -
packages/app/src/assets/file-icons/react.svg | 1 -
packages/app/src/assets/file-icons/react_ts.svg | 1 -
packages/app/src/assets/file-icons/readme.svg | 1 -
packages/app/src/assets/file-icons/reason.svg | 1 -
packages/app/src/assets/file-icons/red.svg | 1 -
.../app/src/assets/file-icons/redux-action.svg | 1 -
.../app/src/assets/file-icons/redux-reducer.svg | 1 -
.../app/src/assets/file-icons/redux-selector.svg | 1 -
packages/app/src/assets/file-icons/redux-store.svg | 1 -
packages/app/src/assets/file-icons/regedit.svg | 1 -
packages/app/src/assets/file-icons/remark.svg | 1 -
packages/app/src/assets/file-icons/remix.svg | 1 -
packages/app/src/assets/file-icons/remix_light.svg | 1 -
packages/app/src/assets/file-icons/renovate.svg | 1 -
packages/app/src/assets/file-icons/replit.svg | 1 -
.../src/assets/file-icons/rescript-interface.svg | 1 -
packages/app/src/assets/file-icons/rescript.svg | 1 -
packages/app/src/assets/file-icons/restql.svg | 1 -
packages/app/src/assets/file-icons/riot.svg | 1 -
packages/app/src/assets/file-icons/roadmap.svg | 1 -
packages/app/src/assets/file-icons/roblox.svg | 1 -
packages/app/src/assets/file-icons/robot.svg | 1 -
packages/app/src/assets/file-icons/robots.svg | 1 -
packages/app/src/assets/file-icons/rocket.svg | 1 -
packages/app/src/assets/file-icons/rojo.svg | 1 -
packages/app/src/assets/file-icons/rollup.svg | 1 -
packages/app/src/assets/file-icons/rome.svg | 6 -
packages/app/src/assets/file-icons/routing.svg | 1 -
packages/app/src/assets/file-icons/rspec.svg | 1 -
packages/app/src/assets/file-icons/rubocop.svg | 1 -
.../app/src/assets/file-icons/rubocop_light.svg | 1 -
packages/app/src/assets/file-icons/ruby.svg | 1 -
packages/app/src/assets/file-icons/ruff.svg | 1 -
packages/app/src/assets/file-icons/rust.svg | 1 -
packages/app/src/assets/file-icons/salesforce.svg | 1 -
packages/app/src/assets/file-icons/san.svg | 1 -
packages/app/src/assets/file-icons/sas.svg | 1 -
packages/app/src/assets/file-icons/sass.svg | 1 -
packages/app/src/assets/file-icons/sbt.svg | 1 -
packages/app/src/assets/file-icons/scala.svg | 1 -
packages/app/src/assets/file-icons/scheme.svg | 1 -
packages/app/src/assets/file-icons/scons.svg | 1 -
packages/app/src/assets/file-icons/scons_light.svg | 1 -
packages/app/src/assets/file-icons/screwdriver.svg | 1 -
packages/app/src/assets/file-icons/search.svg | 1 -
.../app/src/assets/file-icons/semantic-release.svg | 1 -
.../assets/file-icons/semantic-release_light.svg | 1 -
packages/app/src/assets/file-icons/semgrep.svg | 1 -
packages/app/src/assets/file-icons/sentry.svg | 1 -
packages/app/src/assets/file-icons/sequelize.svg | 1 -
packages/app/src/assets/file-icons/serverless.svg | 1 -
packages/app/src/assets/file-icons/settings.svg | 1 -
packages/app/src/assets/file-icons/shader.svg | 1 -
.../app/src/assets/file-icons/silverstripe.svg | 1 -
packages/app/src/assets/file-icons/simulink.svg | 1 -
packages/app/src/assets/file-icons/siyuan.svg | 1 -
packages/app/src/assets/file-icons/sketch.svg | 1 -
packages/app/src/assets/file-icons/slim.svg | 1 -
packages/app/src/assets/file-icons/slint.svg | 1 -
packages/app/src/assets/file-icons/slug.svg | 1 -
packages/app/src/assets/file-icons/smarty.svg | 1 -
packages/app/src/assets/file-icons/sml.svg | 1 -
packages/app/src/assets/file-icons/snakemake.svg | 1 -
packages/app/src/assets/file-icons/snapcraft.svg | 1 -
packages/app/src/assets/file-icons/snowpack.svg | 1 -
.../app/src/assets/file-icons/snowpack_light.svg | 1 -
packages/app/src/assets/file-icons/snyk.svg | 1 -
packages/app/src/assets/file-icons/solidity.svg | 1 -
packages/app/src/assets/file-icons/sonarcloud.svg | 1 -
packages/app/src/assets/file-icons/spwn.svg | 1 -
packages/app/src/assets/file-icons/stackblitz.svg | 1 -
packages/app/src/assets/file-icons/stan.svg | 1 -
packages/app/src/assets/file-icons/steadybit.svg | 1 -
packages/app/src/assets/file-icons/stencil.svg | 1 -
packages/app/src/assets/file-icons/stitches.svg | 1 -
.../app/src/assets/file-icons/stitches_light.svg | 10 -
packages/app/src/assets/file-icons/storybook.svg | 1 -
packages/app/src/assets/file-icons/stryker.svg | 1 -
packages/app/src/assets/file-icons/stylable.svg | 1 -
packages/app/src/assets/file-icons/stylelint.svg | 1 -
.../app/src/assets/file-icons/stylelint_light.svg | 13 -
packages/app/src/assets/file-icons/stylus.svg | 1 -
packages/app/src/assets/file-icons/sublime.svg | 1 -
packages/app/src/assets/file-icons/subtitles.svg | 1 -
packages/app/src/assets/file-icons/supabase.svg | 1 -
packages/app/src/assets/file-icons/svelte.svg | 1 -
packages/app/src/assets/file-icons/svg.svg | 1 -
packages/app/src/assets/file-icons/svgo.svg | 1 -
packages/app/src/assets/file-icons/svgr.svg | 1 -
packages/app/src/assets/file-icons/swagger.svg | 1 -
packages/app/src/assets/file-icons/sway.svg | 1 -
packages/app/src/assets/file-icons/swc.svg | 1 -
packages/app/src/assets/file-icons/swift.svg | 1 -
packages/app/src/assets/file-icons/syncpack.svg | 1 -
packages/app/src/assets/file-icons/systemd.svg | 1 -
.../app/src/assets/file-icons/systemd_light.svg | 1 -
packages/app/src/assets/file-icons/table.svg | 1 -
packages/app/src/assets/file-icons/tailwindcss.svg | 1 -
packages/app/src/assets/file-icons/taskfile.svg | 1 -
packages/app/src/assets/file-icons/tauri.svg | 1 -
packages/app/src/assets/file-icons/taze.svg | 1 -
packages/app/src/assets/file-icons/tcl.svg | 1 -
packages/app/src/assets/file-icons/teal.svg | 1 -
packages/app/src/assets/file-icons/templ.svg | 1 -
packages/app/src/assets/file-icons/template.svg | 1 -
packages/app/src/assets/file-icons/terraform.svg | 1 -
packages/app/src/assets/file-icons/test-js.svg | 1 -
packages/app/src/assets/file-icons/test-jsx.svg | 1 -
packages/app/src/assets/file-icons/test-ts.svg | 1 -
packages/app/src/assets/file-icons/tex.svg | 1 -
packages/app/src/assets/file-icons/textlint.svg | 1 -
packages/app/src/assets/file-icons/tilt.svg | 1 -
packages/app/src/assets/file-icons/tldraw.svg | 1 -
.../app/src/assets/file-icons/tldraw_light.svg | 1 -
packages/app/src/assets/file-icons/tobi.svg | 1 -
packages/app/src/assets/file-icons/tobimake.svg | 1 -
packages/app/src/assets/file-icons/todo.svg | 1 -
packages/app/src/assets/file-icons/toml.svg | 1 -
packages/app/src/assets/file-icons/toml_light.svg | 1 -
packages/app/src/assets/file-icons/travis.svg | 1 -
packages/app/src/assets/file-icons/tree.svg | 1 -
packages/app/src/assets/file-icons/trigger.svg | 1 -
packages/app/src/assets/file-icons/tsconfig.svg | 1 -
packages/app/src/assets/file-icons/tsdoc.svg | 1 -
packages/app/src/assets/file-icons/tsil.svg | 1 -
packages/app/src/assets/file-icons/tune.svg | 1 -
packages/app/src/assets/file-icons/turborepo.svg | 1 -
.../app/src/assets/file-icons/turborepo_light.svg | 1 -
packages/app/src/assets/file-icons/twig.svg | 1 -
packages/app/src/assets/file-icons/twine.svg | 1 -
.../app/src/assets/file-icons/typescript-def.svg | 1 -
packages/app/src/assets/file-icons/typescript.svg | 1 -
packages/app/src/assets/file-icons/typst.svg | 1 -
packages/app/src/assets/file-icons/umi.svg | 1 -
packages/app/src/assets/file-icons/uml.svg | 1 -
packages/app/src/assets/file-icons/uml_light.svg | 1 -
packages/app/src/assets/file-icons/unity.svg | 1 -
packages/app/src/assets/file-icons/unocss.svg | 5 -
packages/app/src/assets/file-icons/url.svg | 1 -
packages/app/src/assets/file-icons/uv.svg | 1 -
packages/app/src/assets/file-icons/vagrant.svg | 1 -
packages/app/src/assets/file-icons/vala.svg | 1 -
.../app/src/assets/file-icons/vanilla-extract.svg | 1 -
packages/app/src/assets/file-icons/varnish.svg | 1 -
packages/app/src/assets/file-icons/vedic.svg | 1 -
packages/app/src/assets/file-icons/velite.svg | 1 -
packages/app/src/assets/file-icons/velocity.svg | 1 -
packages/app/src/assets/file-icons/vercel.svg | 1 -
.../app/src/assets/file-icons/vercel_light.svg | 1 -
packages/app/src/assets/file-icons/verdaccio.svg | 1 -
packages/app/src/assets/file-icons/verified.svg | 1 -
packages/app/src/assets/file-icons/verilog.svg | 1 -
packages/app/src/assets/file-icons/vfl.svg | 1 -
packages/app/src/assets/file-icons/video.svg | 1 -
packages/app/src/assets/file-icons/vim.svg | 1 -
packages/app/src/assets/file-icons/virtual.svg | 1 -
.../app/src/assets/file-icons/visualstudio.svg | 1 -
packages/app/src/assets/file-icons/vite.svg | 1 -
packages/app/src/assets/file-icons/vitest.svg | 1 -
packages/app/src/assets/file-icons/vlang.svg | 6 -
packages/app/src/assets/file-icons/vscode.svg | 1 -
packages/app/src/assets/file-icons/vue-config.svg | 1 -
packages/app/src/assets/file-icons/vue.svg | 1 -
packages/app/src/assets/file-icons/vuex-store.svg | 1 -
packages/app/src/assets/file-icons/wakatime.svg | 1 -
.../app/src/assets/file-icons/wakatime_light.svg | 1 -
packages/app/src/assets/file-icons/wallaby.svg | 1 -
packages/app/src/assets/file-icons/wally.svg | 1 -
packages/app/src/assets/file-icons/watchman.svg | 1 -
packages/app/src/assets/file-icons/webassembly.svg | 1 -
packages/app/src/assets/file-icons/webhint.svg | 1 -
packages/app/src/assets/file-icons/webpack.svg | 1 -
packages/app/src/assets/file-icons/wepy.svg | 1 -
packages/app/src/assets/file-icons/werf.svg | 1 -
packages/app/src/assets/file-icons/windicss.svg | 1 -
.../app/src/assets/file-icons/wolframlanguage.svg | 1 -
packages/app/src/assets/file-icons/word.svg | 1 -
packages/app/src/assets/file-icons/wrangler.svg | 1 -
packages/app/src/assets/file-icons/wxt.svg | 1 -
packages/app/src/assets/file-icons/xaml.svg | 1 -
packages/app/src/assets/file-icons/xmake.svg | 1 -
packages/app/src/assets/file-icons/xml.svg | 1 -
packages/app/src/assets/file-icons/yaml.svg | 1 -
packages/app/src/assets/file-icons/yang.svg | 1 -
packages/app/src/assets/file-icons/yarn.svg | 1 -
packages/app/src/assets/file-icons/zeabur.svg | 1 -
.../app/src/assets/file-icons/zeabur_light.svg | 1 -
packages/app/src/assets/file-icons/zig.svg | 1 -
packages/app/src/assets/file-icons/zip.svg | 1 -
packages/app/src/components/code.tsx | 846 --
packages/app/src/components/editor-pane.tsx | 381 -
packages/app/src/components/file-tree.tsx | 110 -
packages/app/src/components/markdown.tsx | 23 -
packages/app/src/components/prompt-form.tsx | 295 -
packages/app/src/components/resizeable-pane.tsx | 217 -
packages/app/src/components/select-dialog.tsx | 225 -
packages/app/src/components/select.tsx | 107 -
packages/app/src/components/session-list.tsx | 28 -
packages/app/src/components/session-timeline.tsx | 459 -
packages/app/src/components/sidebar-nav.tsx | 48 -
packages/app/src/context/event.tsx | 34 -
packages/app/src/context/index.ts | 7 -
packages/app/src/context/local.tsx | 537 -
packages/app/src/context/marked.tsx | 43 -
packages/app/src/context/sdk.tsx | 29 -
packages/app/src/context/shiki.tsx | 582 -
packages/app/src/context/sync.tsx | 174 -
packages/app/src/context/theme.tsx | 92 -
packages/app/src/env.d.ts | 8 -
packages/app/src/index.css | 168 -
packages/app/src/index.tsx | 48 -
packages/app/src/pages/index.tsx | 278 -
packages/app/src/pages/layout.tsx | 5 -
packages/app/src/sst-env.d.ts | 10 -
packages/app/src/ui/button.tsx | 36 -
packages/app/src/ui/collapsible.tsx | 62 -
packages/app/src/ui/file-icon.tsx | 582 -
packages/app/src/ui/file-icons/sprite.svg | 11707 -------------------
packages/app/src/ui/file-icons/types.ts | 1095 --
packages/app/src/ui/icon-button.tsx | 38 -
packages/app/src/ui/icon.tsx | 155 -
packages/app/src/ui/index.ts | 13 -
packages/app/src/ui/link.tsx | 13 -
packages/app/src/ui/logo.tsx | 125 -
packages/app/src/ui/tabs.tsx | 71 -
packages/app/src/ui/tooltip.tsx | 58 -
packages/app/src/utils/binary.ts | 41 -
packages/app/src/utils/dom.ts | 51 -
packages/app/src/utils/index.ts | 2 -
packages/app/src/utils/path.ts | 14 -
packages/app/src/utils/speech.ts | 302 -
packages/app/sst-env.d.ts | 9 -
packages/app/tsconfig.json | 13 -
packages/app/vite.config.ts | 32 -
packages/desktop/.gitignore | 1 +
packages/desktop/AGENTS.md | 28 +
packages/desktop/README.md | 34 +
packages/desktop/index.html | 24 +
packages/desktop/package.json | 48 +
packages/desktop/scripts/vite-theme-plugin.ts | 163 +
packages/desktop/src/assets/favicon.svg | 5 +
packages/desktop/src/assets/file-icons/3d.svg | 1 +
packages/desktop/src/assets/file-icons/abap.svg | 1 +
packages/desktop/src/assets/file-icons/abc.svg | 1 +
.../desktop/src/assets/file-icons/actionscript.svg | 1 +
packages/desktop/src/assets/file-icons/ada.svg | 1 +
.../src/assets/file-icons/adobe-illustrator.svg | 1 +
.../assets/file-icons/adobe-illustrator_light.svg | 1 +
.../src/assets/file-icons/adobe-photoshop.svg | 1 +
.../assets/file-icons/adobe-photoshop_light.svg | 1 +
.../desktop/src/assets/file-icons/adobe-swc.svg | 1 +
packages/desktop/src/assets/file-icons/adonis.svg | 1 +
packages/desktop/src/assets/file-icons/advpl.svg | 1 +
packages/desktop/src/assets/file-icons/amplify.svg | 1 +
packages/desktop/src/assets/file-icons/android.svg | 1 +
packages/desktop/src/assets/file-icons/angular.svg | 1 +
packages/desktop/src/assets/file-icons/antlr.svg | 1 +
.../desktop/src/assets/file-icons/apiblueprint.svg | 1 +
packages/desktop/src/assets/file-icons/apollo.svg | 1 +
.../desktop/src/assets/file-icons/applescript.svg | 1 +
.../desktop/src/assets/file-icons/apps-script.svg | 1 +
.../desktop/src/assets/file-icons/appveyor.svg | 1 +
.../desktop/src/assets/file-icons/architecture.svg | 1 +
packages/desktop/src/assets/file-icons/arduino.svg | 1 +
.../desktop/src/assets/file-icons/asciidoc.svg | 1 +
.../desktop/src/assets/file-icons/assembly.svg | 1 +
.../desktop/src/assets/file-icons/astro-config.svg | 1 +
packages/desktop/src/assets/file-icons/astro.svg | 1 +
packages/desktop/src/assets/file-icons/astyle.svg | 1 +
packages/desktop/src/assets/file-icons/audio.svg | 1 +
packages/desktop/src/assets/file-icons/aurelia.svg | 1 +
packages/desktop/src/assets/file-icons/authors.svg | 1 +
packages/desktop/src/assets/file-icons/auto.svg | 1 +
.../desktop/src/assets/file-icons/auto_light.svg | 12 +
.../desktop/src/assets/file-icons/autohotkey.svg | 1 +
packages/desktop/src/assets/file-icons/autoit.svg | 1 +
.../src/assets/file-icons/azure-pipelines.svg | 1 +
packages/desktop/src/assets/file-icons/azure.svg | 1 +
packages/desktop/src/assets/file-icons/babel.svg | 1 +
.../desktop/src/assets/file-icons/ballerina.svg | 1 +
packages/desktop/src/assets/file-icons/bazel.svg | 1 +
packages/desktop/src/assets/file-icons/bbx.svg | 1 +
.../desktop/src/assets/file-icons/beancount.svg | 1 +
.../desktop/src/assets/file-icons/bench-js.svg | 1 +
.../desktop/src/assets/file-icons/bench-jsx.svg | 1 +
.../desktop/src/assets/file-icons/bench-ts.svg | 1 +
.../desktop/src/assets/file-icons/bibliography.svg | 1 +
.../desktop/src/assets/file-icons/bibtex-style.svg | 1 +
packages/desktop/src/assets/file-icons/bicep.svg | 1 +
packages/desktop/src/assets/file-icons/biome.svg | 1 +
.../desktop/src/assets/file-icons/bitbucket.svg | 1 +
.../desktop/src/assets/file-icons/bithound.svg | 1 +
packages/desktop/src/assets/file-icons/blender.svg | 1 +
packages/desktop/src/assets/file-icons/blink.svg | 1 +
.../desktop/src/assets/file-icons/blink_light.svg | 1 +
packages/desktop/src/assets/file-icons/blitz.svg | 1 +
packages/desktop/src/assets/file-icons/bower.svg | 1 +
.../desktop/src/assets/file-icons/brainfuck.svg | 1 +
.../desktop/src/assets/file-icons/browserlist.svg | 1 +
.../src/assets/file-icons/browserlist_light.svg | 1 +
packages/desktop/src/assets/file-icons/bruno.svg | 1 +
packages/desktop/src/assets/file-icons/buck.svg | 1 +
.../desktop/src/assets/file-icons/bucklescript.svg | 1 +
.../desktop/src/assets/file-icons/buildkite.svg | 1 +
packages/desktop/src/assets/file-icons/bun.svg | 1 +
.../desktop/src/assets/file-icons/bun_light.svg | 1 +
packages/desktop/src/assets/file-icons/c.svg | 1 +
packages/desktop/src/assets/file-icons/c3.svg | 1 +
packages/desktop/src/assets/file-icons/cabal.svg | 1 +
packages/desktop/src/assets/file-icons/caddy.svg | 1 +
packages/desktop/src/assets/file-icons/cadence.svg | 1 +
packages/desktop/src/assets/file-icons/cairo.svg | 1 +
packages/desktop/src/assets/file-icons/cake.svg | 1 +
.../desktop/src/assets/file-icons/capacitor.svg | 1 +
packages/desktop/src/assets/file-icons/capnp.svg | 1 +
packages/desktop/src/assets/file-icons/cbx.svg | 1 +
packages/desktop/src/assets/file-icons/cds.svg | 1 +
.../desktop/src/assets/file-icons/certificate.svg | 1 +
.../desktop/src/assets/file-icons/changelog.svg | 1 +
packages/desktop/src/assets/file-icons/chess.svg | 1 +
.../desktop/src/assets/file-icons/chess_light.svg | 1 +
packages/desktop/src/assets/file-icons/chrome.svg | 1 +
.../desktop/src/assets/file-icons/circleci.svg | 1 +
.../src/assets/file-icons/circleci_light.svg | 1 +
.../desktop/src/assets/file-icons/citation.svg | 1 +
packages/desktop/src/assets/file-icons/clangd.svg | 1 +
packages/desktop/src/assets/file-icons/claude.svg | 1 +
packages/desktop/src/assets/file-icons/cline.svg | 1 +
packages/desktop/src/assets/file-icons/clojure.svg | 1 +
.../desktop/src/assets/file-icons/cloudfoundry.svg | 1 +
packages/desktop/src/assets/file-icons/cmake.svg | 1 +
packages/desktop/src/assets/file-icons/coala.svg | 1 +
packages/desktop/src/assets/file-icons/cobol.svg | 1 +
packages/desktop/src/assets/file-icons/coconut.svg | 1 +
.../desktop/src/assets/file-icons/code-climate.svg | 1 +
.../src/assets/file-icons/code-climate_light.svg | 1 +
packages/desktop/src/assets/file-icons/codecov.svg | 1 +
.../desktop/src/assets/file-icons/codeowners.svg | 1 +
.../src/assets/file-icons/coderabbit-ai.svg | 1 +
packages/desktop/src/assets/file-icons/coffee.svg | 1 +
.../desktop/src/assets/file-icons/coldfusion.svg | 1 +
.../src/assets/file-icons/coloredpetrinets.svg | 1 +
packages/desktop/src/assets/file-icons/command.svg | 1 +
.../desktop/src/assets/file-icons/commitizen.svg | 1 +
.../desktop/src/assets/file-icons/commitlint.svg | 1 +
.../desktop/src/assets/file-icons/concourse.svg | 1 +
packages/desktop/src/assets/file-icons/conduct.svg | 1 +
packages/desktop/src/assets/file-icons/console.svg | 1 +
.../desktop/src/assets/file-icons/contentlayer.svg | 1 +
packages/desktop/src/assets/file-icons/context.svg | 1 +
.../desktop/src/assets/file-icons/contributing.svg | 1 +
.../desktop/src/assets/file-icons/controller.svg | 1 +
packages/desktop/src/assets/file-icons/copilot.svg | 1 +
.../src/assets/file-icons/copilot_light.svg | 1 +
packages/desktop/src/assets/file-icons/cpp.svg | 1 +
packages/desktop/src/assets/file-icons/craco.svg | 1 +
packages/desktop/src/assets/file-icons/credits.svg | 1 +
packages/desktop/src/assets/file-icons/crystal.svg | 1 +
.../src/assets/file-icons/crystal_light.svg | 1 +
packages/desktop/src/assets/file-icons/csharp.svg | 1 +
packages/desktop/src/assets/file-icons/css-map.svg | 1 +
packages/desktop/src/assets/file-icons/css.svg | 1 +
.../desktop/src/assets/file-icons/cucumber.svg | 1 +
packages/desktop/src/assets/file-icons/cuda.svg | 1 +
packages/desktop/src/assets/file-icons/cursor.svg | 1 +
.../desktop/src/assets/file-icons/cursor_light.svg | 1 +
packages/desktop/src/assets/file-icons/cypress.svg | 1 +
packages/desktop/src/assets/file-icons/d.svg | 1 +
packages/desktop/src/assets/file-icons/dart.svg | 1 +
.../src/assets/file-icons/dart_generated.svg | 1 +
.../desktop/src/assets/file-icons/database.svg | 1 +
.../desktop/src/assets/file-icons/deepsource.svg | 1 +
.../src/assets/file-icons/denizenscript.svg | 1 +
packages/desktop/src/assets/file-icons/deno.svg | 1 +
.../desktop/src/assets/file-icons/deno_light.svg | 1 +
.../desktop/src/assets/file-icons/dependabot.svg | 1 +
.../src/assets/file-icons/dependencies-update.svg | 1 +
packages/desktop/src/assets/file-icons/dhall.svg | 1 +
packages/desktop/src/assets/file-icons/diff.svg | 1 +
packages/desktop/src/assets/file-icons/dinophp.svg | 1 +
packages/desktop/src/assets/file-icons/disc.svg | 1 +
packages/desktop/src/assets/file-icons/django.svg | 1 +
packages/desktop/src/assets/file-icons/dll.svg | 1 +
packages/desktop/src/assets/file-icons/docker.svg | 1 +
.../src/assets/file-icons/doctex-installer.svg | 1 +
.../desktop/src/assets/file-icons/document.svg | 1 +
packages/desktop/src/assets/file-icons/dotjs.svg | 1 +
packages/desktop/src/assets/file-icons/drawio.svg | 1 +
packages/desktop/src/assets/file-icons/drizzle.svg | 1 +
packages/desktop/src/assets/file-icons/drone.svg | 1 +
.../desktop/src/assets/file-icons/drone_light.svg | 4 +
packages/desktop/src/assets/file-icons/duc.svg | 1 +
packages/desktop/src/assets/file-icons/dune.svg | 1 +
packages/desktop/src/assets/file-icons/edge.svg | 1 +
.../desktop/src/assets/file-icons/editorconfig.svg | 1 +
packages/desktop/src/assets/file-icons/ejs.svg | 1 +
packages/desktop/src/assets/file-icons/elixir.svg | 1 +
packages/desktop/src/assets/file-icons/elm.svg | 1 +
packages/desktop/src/assets/file-icons/email.svg | 1 +
packages/desktop/src/assets/file-icons/ember.svg | 1 +
packages/desktop/src/assets/file-icons/epub.svg | 1 +
packages/desktop/src/assets/file-icons/erlang.svg | 1 +
packages/desktop/src/assets/file-icons/esbuild.svg | 1 +
packages/desktop/src/assets/file-icons/eslint.svg | 1 +
.../desktop/src/assets/file-icons/excalidraw.svg | 1 +
packages/desktop/src/assets/file-icons/exe.svg | 1 +
.../desktop/src/assets/file-icons/fastlane.svg | 1 +
packages/desktop/src/assets/file-icons/favicon.svg | 1 +
packages/desktop/src/assets/file-icons/figma.svg | 1 +
.../desktop/src/assets/file-icons/firebase.svg | 1 +
packages/desktop/src/assets/file-icons/flash.svg | 1 +
packages/desktop/src/assets/file-icons/flow.svg | 1 +
.../src/assets/file-icons/folder-admin-open.svg | 6 +
.../desktop/src/assets/file-icons/folder-admin.svg | 6 +
.../src/assets/file-icons/folder-android-open.svg | 1 +
.../src/assets/file-icons/folder-android.svg | 1 +
.../src/assets/file-icons/folder-angular-open.svg | 1 +
.../src/assets/file-icons/folder-angular.svg | 1 +
.../assets/file-icons/folder-animation-open.svg | 1 +
.../src/assets/file-icons/folder-animation.svg | 1 +
.../src/assets/file-icons/folder-ansible-open.svg | 1 +
.../src/assets/file-icons/folder-ansible.svg | 1 +
.../src/assets/file-icons/folder-api-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-api.svg | 1 +
.../src/assets/file-icons/folder-apollo-open.svg | 1 +
.../src/assets/file-icons/folder-apollo.svg | 1 +
.../src/assets/file-icons/folder-app-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-app.svg | 1 +
.../src/assets/file-icons/folder-archive-open.svg | 1 +
.../src/assets/file-icons/folder-archive.svg | 1 +
.../src/assets/file-icons/folder-astro-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-astro.svg | 1 +
.../src/assets/file-icons/folder-atom-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-atom.svg | 1 +
.../assets/file-icons/folder-attachment-open.svg | 1 +
.../src/assets/file-icons/folder-attachment.svg | 1 +
.../src/assets/file-icons/folder-audio-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-audio.svg | 1 +
.../src/assets/file-icons/folder-aurelia-open.svg | 1 +
.../src/assets/file-icons/folder-aurelia.svg | 1 +
.../src/assets/file-icons/folder-aws-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-aws.svg | 1 +
.../file-icons/folder-azure-pipelines-open.svg | 1 +
.../assets/file-icons/folder-azure-pipelines.svg | 1 +
.../src/assets/file-icons/folder-backup-open.svg | 1 +
.../src/assets/file-icons/folder-backup.svg | 1 +
.../src/assets/file-icons/folder-base-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-base.svg | 1 +
.../src/assets/file-icons/folder-batch-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-batch.svg | 1 +
.../assets/file-icons/folder-benchmark-open.svg | 1 +
.../src/assets/file-icons/folder-benchmark.svg | 1 +
.../assets/file-icons/folder-bibliography-open.svg | 1 +
.../src/assets/file-icons/folder-bibliography.svg | 1 +
.../src/assets/file-icons/folder-bicep-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-bicep.svg | 1 +
.../src/assets/file-icons/folder-blender-open.svg | 1 +
.../src/assets/file-icons/folder-blender.svg | 1 +
.../src/assets/file-icons/folder-bloc-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-bloc.svg | 1 +
.../src/assets/file-icons/folder-bower-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-bower.svg | 1 +
.../assets/file-icons/folder-buildkite-open.svg | 1 +
.../src/assets/file-icons/folder-buildkite.svg | 1 +
.../src/assets/file-icons/folder-cart-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-cart.svg | 1 +
.../assets/file-icons/folder-changesets-open.svg | 1 +
.../src/assets/file-icons/folder-changesets.svg | 1 +
.../src/assets/file-icons/folder-ci-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-ci.svg | 1 +
.../src/assets/file-icons/folder-circleci-open.svg | 7 +
.../src/assets/file-icons/folder-circleci.svg | 7 +
.../src/assets/file-icons/folder-class-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-class.svg | 1 +
.../src/assets/file-icons/folder-claude-open.svg | 1 +
.../src/assets/file-icons/folder-claude.svg | 1 +
.../src/assets/file-icons/folder-client-open.svg | 1 +
.../src/assets/file-icons/folder-client.svg | 1 +
.../src/assets/file-icons/folder-cline-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-cline.svg | 1 +
.../file-icons/folder-cloud-functions-open.svg | 1 +
.../assets/file-icons/folder-cloud-functions.svg | 1 +
.../assets/file-icons/folder-cloudflare-open.svg | 1 +
.../src/assets/file-icons/folder-cloudflare.svg | 1 +
.../src/assets/file-icons/folder-cluster-open.svg | 1 +
.../src/assets/file-icons/folder-cluster.svg | 1 +
.../src/assets/file-icons/folder-cobol-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-cobol.svg | 1 +
.../src/assets/file-icons/folder-command-open.svg | 1 +
.../src/assets/file-icons/folder-command.svg | 1 +
.../assets/file-icons/folder-components-open.svg | 1 +
.../src/assets/file-icons/folder-components.svg | 1 +
.../src/assets/file-icons/folder-config-open.svg | 1 +
.../src/assets/file-icons/folder-config.svg | 1 +
.../assets/file-icons/folder-connection-open.svg | 1 +
.../src/assets/file-icons/folder-connection.svg | 1 +
.../src/assets/file-icons/folder-console-open.svg | 1 +
.../src/assets/file-icons/folder-console.svg | 1 +
.../src/assets/file-icons/folder-constant-open.svg | 1 +
.../src/assets/file-icons/folder-constant.svg | 1 +
.../assets/file-icons/folder-container-open.svg | 1 +
.../src/assets/file-icons/folder-container.svg | 1 +
.../src/assets/file-icons/folder-content-open.svg | 1 +
.../src/assets/file-icons/folder-content.svg | 1 +
.../src/assets/file-icons/folder-context-open.svg | 1 +
.../src/assets/file-icons/folder-context.svg | 1 +
.../src/assets/file-icons/folder-contract-open.svg | 1 +
.../src/assets/file-icons/folder-contract.svg | 1 +
.../assets/file-icons/folder-controller-open.svg | 1 +
.../src/assets/file-icons/folder-controller.svg | 1 +
.../src/assets/file-icons/folder-core-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-core.svg | 1 +
.../src/assets/file-icons/folder-coverage-open.svg | 1 +
.../src/assets/file-icons/folder-coverage.svg | 1 +
.../src/assets/file-icons/folder-css-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-css.svg | 1 +
.../src/assets/file-icons/folder-cursor-open.svg | 1 +
.../assets/file-icons/folder-cursor-open_light.svg | 1 +
.../src/assets/file-icons/folder-cursor.svg | 1 +
.../src/assets/file-icons/folder-cursor_light.svg | 1 +
.../src/assets/file-icons/folder-custom-open.svg | 1 +
.../src/assets/file-icons/folder-custom.svg | 1 +
.../src/assets/file-icons/folder-cypress-open.svg | 1 +
.../src/assets/file-icons/folder-cypress.svg | 1 +
.../src/assets/file-icons/folder-dart-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-dart.svg | 1 +
.../src/assets/file-icons/folder-database-open.svg | 1 +
.../src/assets/file-icons/folder-database.svg | 1 +
.../src/assets/file-icons/folder-debug-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-debug.svg | 1 +
.../assets/file-icons/folder-decorators-open.svg | 1 +
.../src/assets/file-icons/folder-decorators.svg | 1 +
.../src/assets/file-icons/folder-delta-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-delta.svg | 1 +
.../src/assets/file-icons/folder-desktop-open.svg | 1 +
.../src/assets/file-icons/folder-desktop.svg | 1 +
.../assets/file-icons/folder-directive-open.svg | 1 +
.../src/assets/file-icons/folder-directive.svg | 1 +
.../src/assets/file-icons/folder-dist-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-dist.svg | 1 +
.../src/assets/file-icons/folder-docker-open.svg | 1 +
.../src/assets/file-icons/folder-docker.svg | 1 +
.../src/assets/file-icons/folder-docs-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-docs.svg | 1 +
.../src/assets/file-icons/folder-download-open.svg | 1 +
.../src/assets/file-icons/folder-download.svg | 1 +
.../src/assets/file-icons/folder-drizzle-open.svg | 1 +
.../src/assets/file-icons/folder-drizzle.svg | 1 +
.../src/assets/file-icons/folder-dump-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-dump.svg | 1 +
.../src/assets/file-icons/folder-element-open.svg | 1 +
.../src/assets/file-icons/folder-element.svg | 1 +
.../src/assets/file-icons/folder-enum-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-enum.svg | 1 +
.../assets/file-icons/folder-environment-open.svg | 1 +
.../src/assets/file-icons/folder-environment.svg | 1 +
.../src/assets/file-icons/folder-error-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-error.svg | 1 +
.../src/assets/file-icons/folder-event-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-event.svg | 1 +
.../src/assets/file-icons/folder-examples-open.svg | 1 +
.../src/assets/file-icons/folder-examples.svg | 1 +
.../src/assets/file-icons/folder-expo-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-expo.svg | 1 +
.../src/assets/file-icons/folder-export-open.svg | 1 +
.../src/assets/file-icons/folder-export.svg | 1 +
.../src/assets/file-icons/folder-fastlane-open.svg | 1 +
.../src/assets/file-icons/folder-fastlane.svg | 1 +
.../src/assets/file-icons/folder-favicon-open.svg | 1 +
.../src/assets/file-icons/folder-favicon.svg | 1 +
.../src/assets/file-icons/folder-firebase-open.svg | 1 +
.../src/assets/file-icons/folder-firebase.svg | 1 +
.../assets/file-icons/folder-firestore-open.svg | 1 +
.../src/assets/file-icons/folder-firestore.svg | 1 +
.../src/assets/file-icons/folder-flow-open.svg | 6 +
.../desktop/src/assets/file-icons/folder-flow.svg | 6 +
.../src/assets/file-icons/folder-flutter-open.svg | 1 +
.../src/assets/file-icons/folder-flutter.svg | 1 +
.../src/assets/file-icons/folder-font-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-font.svg | 1 +
.../src/assets/file-icons/folder-forgejo-open.svg | 1 +
.../src/assets/file-icons/folder-forgejo.svg | 1 +
.../assets/file-icons/folder-functions-open.svg | 1 +
.../src/assets/file-icons/folder-functions.svg | 1 +
.../assets/file-icons/folder-gamemaker-open.svg | 1 +
.../src/assets/file-icons/folder-gamemaker.svg | 1 +
.../assets/file-icons/folder-generator-open.svg | 1 +
.../src/assets/file-icons/folder-generator.svg | 1 +
.../assets/file-icons/folder-gh-workflows-open.svg | 6 +
.../src/assets/file-icons/folder-gh-workflows.svg | 6 +
.../src/assets/file-icons/folder-git-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-git.svg | 1 +
.../src/assets/file-icons/folder-gitea-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-gitea.svg | 1 +
.../src/assets/file-icons/folder-github-open.svg | 6 +
.../src/assets/file-icons/folder-github.svg | 6 +
.../src/assets/file-icons/folder-gitlab-open.svg | 1 +
.../src/assets/file-icons/folder-gitlab.svg | 1 +
.../src/assets/file-icons/folder-global-open.svg | 1 +
.../src/assets/file-icons/folder-global.svg | 1 +
.../src/assets/file-icons/folder-godot-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-godot.svg | 1 +
.../src/assets/file-icons/folder-gradle-open.svg | 1 +
.../src/assets/file-icons/folder-gradle.svg | 1 +
.../src/assets/file-icons/folder-graphql-open.svg | 1 +
.../src/assets/file-icons/folder-graphql.svg | 1 +
.../src/assets/file-icons/folder-guard-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-guard.svg | 1 +
.../src/assets/file-icons/folder-gulp-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-gulp.svg | 1 +
.../src/assets/file-icons/folder-helm-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-helm.svg | 1 +
.../src/assets/file-icons/folder-helper-open.svg | 1 +
.../src/assets/file-icons/folder-helper.svg | 1 +
.../src/assets/file-icons/folder-home-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-home.svg | 1 +
.../src/assets/file-icons/folder-hook-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-hook.svg | 1 +
.../src/assets/file-icons/folder-husky-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-husky.svg | 1 +
.../src/assets/file-icons/folder-i18n-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-i18n.svg | 1 +
.../src/assets/file-icons/folder-images-open.svg | 1 +
.../src/assets/file-icons/folder-images.svg | 1 +
.../src/assets/file-icons/folder-import-open.svg | 1 +
.../src/assets/file-icons/folder-import.svg | 1 +
.../src/assets/file-icons/folder-include-open.svg | 1 +
.../src/assets/file-icons/folder-include.svg | 1 +
.../src/assets/file-icons/folder-intellij-open.svg | 39 +
.../file-icons/folder-intellij-open_light.svg | 1 +
.../src/assets/file-icons/folder-intellij.svg | 39 +
.../assets/file-icons/folder-intellij_light.svg | 1 +
.../assets/file-icons/folder-interceptor-open.svg | 1 +
.../src/assets/file-icons/folder-interceptor.svg | 1 +
.../assets/file-icons/folder-interface-open.svg | 1 +
.../src/assets/file-icons/folder-interface.svg | 1 +
.../src/assets/file-icons/folder-ios-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-ios.svg | 1 +
.../src/assets/file-icons/folder-java-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-java.svg | 1 +
.../assets/file-icons/folder-javascript-open.svg | 1 +
.../src/assets/file-icons/folder-javascript.svg | 1 +
.../src/assets/file-icons/folder-jinja-open.svg | 1 +
.../assets/file-icons/folder-jinja-open_light.svg | 1 +
.../desktop/src/assets/file-icons/folder-jinja.svg | 1 +
.../src/assets/file-icons/folder-jinja_light.svg | 1 +
.../src/assets/file-icons/folder-job-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-job.svg | 1 +
.../src/assets/file-icons/folder-json-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-json.svg | 1 +
.../src/assets/file-icons/folder-jupyter-open.svg | 1 +
.../src/assets/file-icons/folder-jupyter.svg | 1 +
.../src/assets/file-icons/folder-keys-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-keys.svg | 1 +
.../assets/file-icons/folder-kubernetes-open.svg | 1 +
.../src/assets/file-icons/folder-kubernetes.svg | 1 +
.../src/assets/file-icons/folder-kusto-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-kusto.svg | 1 +
.../src/assets/file-icons/folder-layout-open.svg | 1 +
.../src/assets/file-icons/folder-layout.svg | 1 +
.../src/assets/file-icons/folder-lefthook-open.svg | 1 +
.../src/assets/file-icons/folder-lefthook.svg | 1 +
.../src/assets/file-icons/folder-less-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-less.svg | 1 +
.../src/assets/file-icons/folder-lib-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-lib.svg | 1 +
.../src/assets/file-icons/folder-link-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-link.svg | 1 +
.../src/assets/file-icons/folder-linux-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-linux.svg | 1 +
.../assets/file-icons/folder-liquibase-open.svg | 1 +
.../src/assets/file-icons/folder-liquibase.svg | 1 +
.../src/assets/file-icons/folder-log-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-log.svg | 1 +
.../src/assets/file-icons/folder-lottie-open.svg | 1 +
.../src/assets/file-icons/folder-lottie.svg | 1 +
.../src/assets/file-icons/folder-lua-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-lua.svg | 1 +
.../src/assets/file-icons/folder-luau-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-luau.svg | 1 +
.../src/assets/file-icons/folder-macos-open.svg | 6 +
.../desktop/src/assets/file-icons/folder-macos.svg | 6 +
.../src/assets/file-icons/folder-mail-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-mail.svg | 1 +
.../src/assets/file-icons/folder-mappings-open.svg | 1 +
.../src/assets/file-icons/folder-mappings.svg | 1 +
.../src/assets/file-icons/folder-markdown-open.svg | 1 +
.../src/assets/file-icons/folder-markdown.svg | 1 +
.../assets/file-icons/folder-mercurial-open.svg | 1 +
.../src/assets/file-icons/folder-mercurial.svg | 1 +
.../src/assets/file-icons/folder-messages-open.svg | 1 +
.../src/assets/file-icons/folder-messages.svg | 1 +
.../src/assets/file-icons/folder-meta-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-meta.svg | 1 +
.../assets/file-icons/folder-middleware-open.svg | 1 +
.../src/assets/file-icons/folder-middleware.svg | 1 +
.../src/assets/file-icons/folder-mjml-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-mjml.svg | 1 +
.../src/assets/file-icons/folder-mobile-open.svg | 1 +
.../src/assets/file-icons/folder-mobile.svg | 1 +
.../src/assets/file-icons/folder-mock-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-mock.svg | 1 +
.../src/assets/file-icons/folder-mojo-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-mojo.svg | 1 +
.../src/assets/file-icons/folder-molecule-open.svg | 1 +
.../src/assets/file-icons/folder-molecule.svg | 1 +
.../src/assets/file-icons/folder-moon-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-moon.svg | 1 +
.../src/assets/file-icons/folder-netlify-open.svg | 1 +
.../src/assets/file-icons/folder-netlify.svg | 1 +
.../src/assets/file-icons/folder-next-open.svg | 6 +
.../desktop/src/assets/file-icons/folder-next.svg | 6 +
.../assets/file-icons/folder-ngrx-store-open.svg | 1 +
.../src/assets/file-icons/folder-ngrx-store.svg | 1 +
.../src/assets/file-icons/folder-node-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-node.svg | 1 +
.../src/assets/file-icons/folder-nuxt-open.svg | 6 +
.../desktop/src/assets/file-icons/folder-nuxt.svg | 6 +
.../src/assets/file-icons/folder-obsidian-open.svg | 1 +
.../src/assets/file-icons/folder-obsidian.svg | 1 +
.../desktop/src/assets/file-icons/folder-open.svg | 5 +
.../src/assets/file-icons/folder-organism-open.svg | 1 +
.../src/assets/file-icons/folder-organism.svg | 1 +
.../src/assets/file-icons/folder-other-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-other.svg | 1 +
.../src/assets/file-icons/folder-packages-open.svg | 1 +
.../src/assets/file-icons/folder-packages.svg | 1 +
.../src/assets/file-icons/folder-pdf-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-pdf.svg | 1 +
.../src/assets/file-icons/folder-pdm-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-pdm.svg | 1 +
.../src/assets/file-icons/folder-php-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-php.svg | 1 +
.../assets/file-icons/folder-phpmailer-open.svg | 1 +
.../src/assets/file-icons/folder-phpmailer.svg | 1 +
.../src/assets/file-icons/folder-pipe-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-pipe.svg | 1 +
.../src/assets/file-icons/folder-plastic-open.svg | 1 +
.../src/assets/file-icons/folder-plastic.svg | 1 +
.../src/assets/file-icons/folder-plugin-open.svg | 1 +
.../src/assets/file-icons/folder-plugin.svg | 1 +
.../src/assets/file-icons/folder-policy-open.svg | 1 +
.../src/assets/file-icons/folder-policy.svg | 1 +
.../assets/file-icons/folder-powershell-open.svg | 1 +
.../src/assets/file-icons/folder-powershell.svg | 1 +
.../src/assets/file-icons/folder-prisma-open.svg | 1 +
.../src/assets/file-icons/folder-prisma.svg | 1 +
.../src/assets/file-icons/folder-private-open.svg | 1 +
.../src/assets/file-icons/folder-private.svg | 1 +
.../src/assets/file-icons/folder-project-open.svg | 1 +
.../src/assets/file-icons/folder-project.svg | 1 +
.../src/assets/file-icons/folder-prompts-open.svg | 1 +
.../src/assets/file-icons/folder-prompts.svg | 1 +
.../src/assets/file-icons/folder-proto-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-proto.svg | 1 +
.../src/assets/file-icons/folder-public-open.svg | 1 +
.../src/assets/file-icons/folder-public.svg | 1 +
.../src/assets/file-icons/folder-python-open.svg | 1 +
.../src/assets/file-icons/folder-python.svg | 1 +
.../src/assets/file-icons/folder-pytorch-open.svg | 1 +
.../src/assets/file-icons/folder-pytorch.svg | 1 +
.../src/assets/file-icons/folder-quasar-open.svg | 1 +
.../src/assets/file-icons/folder-quasar.svg | 1 +
.../src/assets/file-icons/folder-queue-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-queue.svg | 1 +
.../file-icons/folder-react-components-open.svg | 1 +
.../assets/file-icons/folder-react-components.svg | 1 +
.../file-icons/folder-redux-reducer-open.svg | 1 +
.../src/assets/file-icons/folder-redux-reducer.svg | 1 +
.../assets/file-icons/folder-repository-open.svg | 1 +
.../src/assets/file-icons/folder-repository.svg | 1 +
.../src/assets/file-icons/folder-resolver-open.svg | 1 +
.../src/assets/file-icons/folder-resolver.svg | 1 +
.../src/assets/file-icons/folder-resource-open.svg | 1 +
.../src/assets/file-icons/folder-resource.svg | 1 +
.../src/assets/file-icons/folder-review-open.svg | 1 +
.../src/assets/file-icons/folder-review.svg | 1 +
.../src/assets/file-icons/folder-robot-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-robot.svg | 1 +
.../src/assets/file-icons/folder-routes-open.svg | 1 +
.../src/assets/file-icons/folder-routes.svg | 1 +
.../src/assets/file-icons/folder-rules-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-rules.svg | 1 +
.../src/assets/file-icons/folder-rust-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-rust.svg | 1 +
.../src/assets/file-icons/folder-sandbox-open.svg | 1 +
.../src/assets/file-icons/folder-sandbox.svg | 1 +
.../src/assets/file-icons/folder-sass-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-sass.svg | 1 +
.../src/assets/file-icons/folder-scala-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-scala.svg | 1 +
.../src/assets/file-icons/folder-scons-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-scons.svg | 1 +
.../src/assets/file-icons/folder-scripts-open.svg | 6 +
.../src/assets/file-icons/folder-scripts.svg | 6 +
.../src/assets/file-icons/folder-secure-open.svg | 1 +
.../src/assets/file-icons/folder-secure.svg | 1 +
.../src/assets/file-icons/folder-seeders-open.svg | 1 +
.../src/assets/file-icons/folder-seeders.svg | 1 +
.../src/assets/file-icons/folder-server-open.svg | 1 +
.../src/assets/file-icons/folder-server.svg | 1 +
.../assets/file-icons/folder-serverless-open.svg | 1 +
.../src/assets/file-icons/folder-serverless.svg | 1 +
.../src/assets/file-icons/folder-shader-open.svg | 1 +
.../src/assets/file-icons/folder-shader.svg | 1 +
.../src/assets/file-icons/folder-shared-open.svg | 1 +
.../src/assets/file-icons/folder-shared.svg | 1 +
.../assets/file-icons/folder-snapcraft-open.svg | 1 +
.../src/assets/file-icons/folder-snapcraft.svg | 1 +
.../src/assets/file-icons/folder-snippet-open.svg | 1 +
.../src/assets/file-icons/folder-snippet.svg | 1 +
.../src/assets/file-icons/folder-src-open.svg | 1 +
.../assets/file-icons/folder-src-tauri-open.svg | 1 +
.../src/assets/file-icons/folder-src-tauri.svg | 1 +
.../desktop/src/assets/file-icons/folder-src.svg | 1 +
.../src/assets/file-icons/folder-stack-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-stack.svg | 1 +
.../src/assets/file-icons/folder-stencil-open.svg | 1 +
.../src/assets/file-icons/folder-stencil.svg | 1 +
.../src/assets/file-icons/folder-store-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-store.svg | 1 +
.../assets/file-icons/folder-storybook-open.svg | 1 +
.../src/assets/file-icons/folder-storybook.svg | 1 +
.../src/assets/file-icons/folder-stylus-open.svg | 1 +
.../src/assets/file-icons/folder-stylus.svg | 1 +
.../src/assets/file-icons/folder-sublime-open.svg | 1 +
.../src/assets/file-icons/folder-sublime.svg | 1 +
.../src/assets/file-icons/folder-supabase-open.svg | 1 +
.../src/assets/file-icons/folder-supabase.svg | 1 +
.../src/assets/file-icons/folder-svelte-open.svg | 1 +
.../src/assets/file-icons/folder-svelte.svg | 1 +
.../src/assets/file-icons/folder-svg-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-svg.svg | 1 +
.../src/assets/file-icons/folder-syntax-open.svg | 1 +
.../src/assets/file-icons/folder-syntax.svg | 1 +
.../src/assets/file-icons/folder-target-open.svg | 10 +
.../src/assets/file-icons/folder-target.svg | 10 +
.../src/assets/file-icons/folder-taskfile-open.svg | 1 +
.../src/assets/file-icons/folder-taskfile.svg | 1 +
.../src/assets/file-icons/folder-tasks-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-tasks.svg | 1 +
.../assets/file-icons/folder-television-open.svg | 1 +
.../src/assets/file-icons/folder-television.svg | 1 +
.../src/assets/file-icons/folder-temp-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-temp.svg | 1 +
.../src/assets/file-icons/folder-template-open.svg | 1 +
.../src/assets/file-icons/folder-template.svg | 1 +
.../assets/file-icons/folder-terraform-open.svg | 1 +
.../src/assets/file-icons/folder-terraform.svg | 1 +
.../src/assets/file-icons/folder-test-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-test.svg | 1 +
.../src/assets/file-icons/folder-theme-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-theme.svg | 1 +
.../src/assets/file-icons/folder-tools-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-tools.svg | 1 +
.../src/assets/file-icons/folder-trash-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-trash.svg | 1 +
.../src/assets/file-icons/folder-trigger-open.svg | 1 +
.../src/assets/file-icons/folder-trigger.svg | 1 +
.../assets/file-icons/folder-turborepo-open.svg | 15 +
.../src/assets/file-icons/folder-turborepo.svg | 15 +
.../assets/file-icons/folder-typescript-open.svg | 1 +
.../src/assets/file-icons/folder-typescript.svg | 1 +
.../src/assets/file-icons/folder-ui-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-ui.svg | 1 +
.../src/assets/file-icons/folder-unity-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-unity.svg | 1 +
.../src/assets/file-icons/folder-update-open.svg | 1 +
.../src/assets/file-icons/folder-update.svg | 1 +
.../src/assets/file-icons/folder-upload-open.svg | 1 +
.../src/assets/file-icons/folder-upload.svg | 1 +
.../src/assets/file-icons/folder-utils-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-utils.svg | 1 +
.../src/assets/file-icons/folder-vercel-open.svg | 5 +
.../src/assets/file-icons/folder-vercel.svg | 5 +
.../assets/file-icons/folder-verdaccio-open.svg | 1 +
.../src/assets/file-icons/folder-verdaccio.svg | 1 +
.../src/assets/file-icons/folder-video-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-video.svg | 1 +
.../src/assets/file-icons/folder-views-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-views.svg | 1 +
.../src/assets/file-icons/folder-vm-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-vm.svg | 1 +
.../src/assets/file-icons/folder-vscode-open.svg | 1 +
.../src/assets/file-icons/folder-vscode.svg | 1 +
.../file-icons/folder-vue-directives-open.svg | 1 +
.../assets/file-icons/folder-vue-directives.svg | 1 +
.../src/assets/file-icons/folder-vue-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-vue.svg | 1 +
.../src/assets/file-icons/folder-vuepress-open.svg | 1 +
.../src/assets/file-icons/folder-vuepress.svg | 1 +
.../assets/file-icons/folder-vuex-store-open.svg | 1 +
.../src/assets/file-icons/folder-vuex-store.svg | 1 +
.../src/assets/file-icons/folder-wakatime-open.svg | 1 +
.../src/assets/file-icons/folder-wakatime.svg | 1 +
.../src/assets/file-icons/folder-webpack-open.svg | 1 +
.../src/assets/file-icons/folder-webpack.svg | 1 +
.../src/assets/file-icons/folder-windows-open.svg | 1 +
.../src/assets/file-icons/folder-windows.svg | 1 +
.../assets/file-icons/folder-wordpress-open.svg | 1 +
.../src/assets/file-icons/folder-wordpress.svg | 1 +
.../src/assets/file-icons/folder-yarn-open.svg | 1 +
.../desktop/src/assets/file-icons/folder-yarn.svg | 1 +
.../src/assets/file-icons/folder-zeabur-open.svg | 1 +
.../src/assets/file-icons/folder-zeabur.svg | 1 +
packages/desktop/src/assets/file-icons/folder.svg | 5 +
packages/desktop/src/assets/file-icons/font.svg | 1 +
packages/desktop/src/assets/file-icons/forth.svg | 1 +
packages/desktop/src/assets/file-icons/fortran.svg | 1 +
packages/desktop/src/assets/file-icons/foxpro.svg | 1 +
.../desktop/src/assets/file-icons/freemarker.svg | 1 +
packages/desktop/src/assets/file-icons/fsharp.svg | 1 +
packages/desktop/src/assets/file-icons/fusebox.svg | 1 +
.../desktop/src/assets/file-icons/gamemaker.svg | 1 +
packages/desktop/src/assets/file-icons/garden.svg | 1 +
packages/desktop/src/assets/file-icons/gatsby.svg | 1 +
packages/desktop/src/assets/file-icons/gcp.svg | 1 +
packages/desktop/src/assets/file-icons/gemfile.svg | 1 +
.../desktop/src/assets/file-icons/gemini-ai.svg | 1 +
packages/desktop/src/assets/file-icons/gemini.svg | 1 +
packages/desktop/src/assets/file-icons/git.svg | 1 +
.../assets/file-icons/github-actions-workflow.svg | 1 +
.../src/assets/file-icons/github-sponsors.svg | 1 +
packages/desktop/src/assets/file-icons/gitlab.svg | 1 +
packages/desktop/src/assets/file-icons/gitpod.svg | 1 +
packages/desktop/src/assets/file-icons/gleam.svg | 1 +
packages/desktop/src/assets/file-icons/gnuplot.svg | 1 +
packages/desktop/src/assets/file-icons/go-mod.svg | 1 +
packages/desktop/src/assets/file-icons/go.svg | 1 +
.../desktop/src/assets/file-icons/go_gopher.svg | 35 +
.../desktop/src/assets/file-icons/godot-assets.svg | 1 +
packages/desktop/src/assets/file-icons/godot.svg | 1 +
packages/desktop/src/assets/file-icons/gradle.svg | 1 +
.../src/assets/file-icons/grafana-alloy.svg | 1 +
packages/desktop/src/assets/file-icons/grain.svg | 1 +
.../desktop/src/assets/file-icons/graphcool.svg | 1 +
packages/desktop/src/assets/file-icons/graphql.svg | 1 +
.../desktop/src/assets/file-icons/gridsome.svg | 1 +
packages/desktop/src/assets/file-icons/groovy.svg | 1 +
packages/desktop/src/assets/file-icons/grunt.svg | 1 +
packages/desktop/src/assets/file-icons/gulp.svg | 1 +
packages/desktop/src/assets/file-icons/h.svg | 1 +
packages/desktop/src/assets/file-icons/hack.svg | 1 +
.../desktop/src/assets/file-icons/hadolint.svg | 1 +
packages/desktop/src/assets/file-icons/haml.svg | 1 +
.../desktop/src/assets/file-icons/handlebars.svg | 1 +
packages/desktop/src/assets/file-icons/hardhat.svg | 1 +
.../desktop/src/assets/file-icons/harmonix.svg | 1 +
packages/desktop/src/assets/file-icons/haskell.svg | 1 +
packages/desktop/src/assets/file-icons/haxe.svg | 1 +
packages/desktop/src/assets/file-icons/hcl.svg | 1 +
.../desktop/src/assets/file-icons/hcl_light.svg | 1 +
packages/desktop/src/assets/file-icons/helm.svg | 1 +
packages/desktop/src/assets/file-icons/heroku.svg | 1 +
packages/desktop/src/assets/file-icons/hex.svg | 1 +
.../desktop/src/assets/file-icons/histoire.svg | 1 +
packages/desktop/src/assets/file-icons/hjson.svg | 1 +
packages/desktop/src/assets/file-icons/horusec.svg | 1 +
packages/desktop/src/assets/file-icons/hosts.svg | 1 +
.../desktop/src/assets/file-icons/hosts_light.svg | 1 +
packages/desktop/src/assets/file-icons/hpp.svg | 1 +
packages/desktop/src/assets/file-icons/html.svg | 1 +
packages/desktop/src/assets/file-icons/http.svg | 1 +
packages/desktop/src/assets/file-icons/huff.svg | 1 +
.../desktop/src/assets/file-icons/huff_light.svg | 1 +
packages/desktop/src/assets/file-icons/hurl.svg | 1 +
packages/desktop/src/assets/file-icons/husky.svg | 1 +
packages/desktop/src/assets/file-icons/i18n.svg | 1 +
packages/desktop/src/assets/file-icons/idris.svg | 1 +
.../desktop/src/assets/file-icons/ifanr-cloud.svg | 1 +
packages/desktop/src/assets/file-icons/image.svg | 1 +
packages/desktop/src/assets/file-icons/imba.svg | 1 +
.../desktop/src/assets/file-icons/installation.svg | 1 +
packages/desktop/src/assets/file-icons/ionic.svg | 1 +
.../desktop/src/assets/file-icons/istanbul.svg | 1 +
packages/desktop/src/assets/file-icons/jar.svg | 1 +
packages/desktop/src/assets/file-icons/java.svg | 1 +
.../desktop/src/assets/file-icons/javaclass.svg | 1 +
.../src/assets/file-icons/javascript-map.svg | 1 +
.../desktop/src/assets/file-icons/javascript.svg | 1 +
packages/desktop/src/assets/file-icons/jenkins.svg | 1 +
packages/desktop/src/assets/file-icons/jest.svg | 1 +
packages/desktop/src/assets/file-icons/jinja.svg | 1 +
.../desktop/src/assets/file-icons/jinja_light.svg | 1 +
.../desktop/src/assets/file-icons/jsconfig.svg | 1 +
packages/desktop/src/assets/file-icons/json.svg | 1 +
packages/desktop/src/assets/file-icons/jsr.svg | 1 +
.../desktop/src/assets/file-icons/jsr_light.svg | 1 +
packages/desktop/src/assets/file-icons/julia.svg | 1 +
packages/desktop/src/assets/file-icons/jupyter.svg | 1 +
packages/desktop/src/assets/file-icons/just.svg | 1 +
packages/desktop/src/assets/file-icons/karma.svg | 1 +
packages/desktop/src/assets/file-icons/kcl.svg | 1 +
packages/desktop/src/assets/file-icons/key.svg | 1 +
.../desktop/src/assets/file-icons/keystatic.svg | 1 +
packages/desktop/src/assets/file-icons/kivy.svg | 1 +
packages/desktop/src/assets/file-icons/kl.svg | 1 +
packages/desktop/src/assets/file-icons/knip.svg | 1 +
packages/desktop/src/assets/file-icons/kotlin.svg | 1 +
.../desktop/src/assets/file-icons/kubernetes.svg | 1 +
packages/desktop/src/assets/file-icons/kusto.svg | 1 +
packages/desktop/src/assets/file-icons/label.svg | 1 +
packages/desktop/src/assets/file-icons/laravel.svg | 1 +
packages/desktop/src/assets/file-icons/latexmk.svg | 1 +
packages/desktop/src/assets/file-icons/lbx.svg | 1 +
.../desktop/src/assets/file-icons/lefthook.svg | 1 +
packages/desktop/src/assets/file-icons/lerna.svg | 1 +
packages/desktop/src/assets/file-icons/less.svg | 1 +
packages/desktop/src/assets/file-icons/liara.svg | 1 +
packages/desktop/src/assets/file-icons/lib.svg | 1 +
.../desktop/src/assets/file-icons/lighthouse.svg | 1 +
.../desktop/src/assets/file-icons/lilypond.svg | 1 +
.../desktop/src/assets/file-icons/lintstaged.svg | 1 +
packages/desktop/src/assets/file-icons/liquid.svg | 1 +
packages/desktop/src/assets/file-icons/lisp.svg | 1 +
.../desktop/src/assets/file-icons/livescript.svg | 1 +
packages/desktop/src/assets/file-icons/lock.svg | 1 +
packages/desktop/src/assets/file-icons/log.svg | 1 +
packages/desktop/src/assets/file-icons/lolcode.svg | 1 +
packages/desktop/src/assets/file-icons/lottie.svg | 1 +
packages/desktop/src/assets/file-icons/lua.svg | 1 +
packages/desktop/src/assets/file-icons/luau.svg | 1 +
packages/desktop/src/assets/file-icons/lyric.svg | 1 +
.../desktop/src/assets/file-icons/makefile.svg | 1 +
.../src/assets/file-icons/markdoc-config.svg | 1 +
packages/desktop/src/assets/file-icons/markdoc.svg | 1 +
.../desktop/src/assets/file-icons/markdown.svg | 1 +
.../desktop/src/assets/file-icons/markdownlint.svg | 1 +
packages/desktop/src/assets/file-icons/markojs.svg | 1 +
.../desktop/src/assets/file-icons/mathematica.svg | 1 +
packages/desktop/src/assets/file-icons/matlab.svg | 1 +
packages/desktop/src/assets/file-icons/maven.svg | 1 +
packages/desktop/src/assets/file-icons/mdsvex.svg | 1 +
packages/desktop/src/assets/file-icons/mdx.svg | 1 +
.../desktop/src/assets/file-icons/mercurial.svg | 1 +
packages/desktop/src/assets/file-icons/merlin.svg | 1 +
packages/desktop/src/assets/file-icons/mermaid.svg | 1 +
packages/desktop/src/assets/file-icons/meson.svg | 1 +
.../src/assets/file-icons/minecraft-fabric.svg | 1 +
.../desktop/src/assets/file-icons/minecraft.svg | 1 +
packages/desktop/src/assets/file-icons/mint.svg | 1 +
packages/desktop/src/assets/file-icons/mjml.svg | 1 +
packages/desktop/src/assets/file-icons/mocha.svg | 1 +
.../desktop/src/assets/file-icons/modernizr.svg | 1 +
packages/desktop/src/assets/file-icons/mojo.svg | 1 +
packages/desktop/src/assets/file-icons/moon.svg | 1 +
.../desktop/src/assets/file-icons/moonscript.svg | 1 +
packages/desktop/src/assets/file-icons/mxml.svg | 1 +
.../desktop/src/assets/file-icons/nano-staged.svg | 1 +
.../src/assets/file-icons/nano-staged_light.svg | 4 +
packages/desktop/src/assets/file-icons/ndst.svg | 1 +
packages/desktop/src/assets/file-icons/nest.svg | 1 +
packages/desktop/src/assets/file-icons/netlify.svg | 1 +
.../src/assets/file-icons/netlify_light.svg | 1 +
packages/desktop/src/assets/file-icons/next.svg | 1 +
.../desktop/src/assets/file-icons/next_light.svg | 1 +
packages/desktop/src/assets/file-icons/nginx.svg | 1 +
.../desktop/src/assets/file-icons/ngrx-actions.svg | 1 +
.../desktop/src/assets/file-icons/ngrx-effects.svg | 1 +
.../desktop/src/assets/file-icons/ngrx-entity.svg | 1 +
.../desktop/src/assets/file-icons/ngrx-reducer.svg | 1 +
.../src/assets/file-icons/ngrx-selectors.svg | 1 +
.../desktop/src/assets/file-icons/ngrx-state.svg | 1 +
packages/desktop/src/assets/file-icons/nim.svg | 1 +
packages/desktop/src/assets/file-icons/nix.svg | 1 +
packages/desktop/src/assets/file-icons/nodejs.svg | 1 +
.../desktop/src/assets/file-icons/nodejs_alt.svg | 1 +
packages/desktop/src/assets/file-icons/nodemon.svg | 1 +
packages/desktop/src/assets/file-icons/npm.svg | 1 +
packages/desktop/src/assets/file-icons/nuget.svg | 1 +
.../desktop/src/assets/file-icons/nunjucks.svg | 1 +
packages/desktop/src/assets/file-icons/nuxt.svg | 1 +
packages/desktop/src/assets/file-icons/nx.svg | 1 +
.../desktop/src/assets/file-icons/objective-c.svg | 1 +
.../src/assets/file-icons/objective-cpp.svg | 1 +
packages/desktop/src/assets/file-icons/ocaml.svg | 1 +
packages/desktop/src/assets/file-icons/odin.svg | 1 +
packages/desktop/src/assets/file-icons/opa.svg | 9 +
packages/desktop/src/assets/file-icons/opam.svg | 1 +
packages/desktop/src/assets/file-icons/openapi.svg | 1 +
.../src/assets/file-icons/openapi_light.svg | 1 +
packages/desktop/src/assets/file-icons/otne.svg | 1 +
packages/desktop/src/assets/file-icons/oxlint.svg | 1 +
.../desktop/src/assets/file-icons/packship.svg | 1 +
packages/desktop/src/assets/file-icons/palette.svg | 1 +
packages/desktop/src/assets/file-icons/panda.svg | 1 +
packages/desktop/src/assets/file-icons/parcel.svg | 1 +
packages/desktop/src/assets/file-icons/pascal.svg | 1 +
packages/desktop/src/assets/file-icons/pawn.svg | 1 +
packages/desktop/src/assets/file-icons/payload.svg | 1 +
.../src/assets/file-icons/payload_light.svg | 1 +
packages/desktop/src/assets/file-icons/pdf.svg | 1 +
packages/desktop/src/assets/file-icons/pdm.svg | 1 +
packages/desktop/src/assets/file-icons/percy.svg | 1 +
packages/desktop/src/assets/file-icons/perl.svg | 1 +
.../desktop/src/assets/file-icons/php-cs-fixer.svg | 1 +
packages/desktop/src/assets/file-icons/php.svg | 1 +
.../desktop/src/assets/file-icons/php_elephant.svg | 1 +
.../src/assets/file-icons/php_elephant_pink.svg | 1 +
packages/desktop/src/assets/file-icons/phpstan.svg | 1 +
packages/desktop/src/assets/file-icons/phpunit.svg | 1 +
packages/desktop/src/assets/file-icons/pinejs.svg | 1 +
.../desktop/src/assets/file-icons/pipeline.svg | 1 +
packages/desktop/src/assets/file-icons/pkl.svg | 1 +
packages/desktop/src/assets/file-icons/plastic.svg | 1 +
.../desktop/src/assets/file-icons/playwright.svg | 1 +
packages/desktop/src/assets/file-icons/plop.svg | 1 +
.../src/assets/file-icons/pm2-ecosystem.svg | 1 +
packages/desktop/src/assets/file-icons/pnpm.svg | 1 +
.../desktop/src/assets/file-icons/pnpm_light.svg | 1 +
packages/desktop/src/assets/file-icons/poetry.svg | 1 +
packages/desktop/src/assets/file-icons/postcss.svg | 1 +
.../desktop/src/assets/file-icons/posthtml.svg | 1 +
.../desktop/src/assets/file-icons/powerpoint.svg | 1 +
.../desktop/src/assets/file-icons/powershell.svg | 1 +
.../desktop/src/assets/file-icons/pre-commit.svg | 1 +
.../desktop/src/assets/file-icons/prettier.svg | 1 +
packages/desktop/src/assets/file-icons/prisma.svg | 1 +
.../desktop/src/assets/file-icons/processing.svg | 1 +
packages/desktop/src/assets/file-icons/prolog.svg | 1 +
packages/desktop/src/assets/file-icons/prompt.svg | 1 +
packages/desktop/src/assets/file-icons/proto.svg | 1 +
.../desktop/src/assets/file-icons/protractor.svg | 1 +
packages/desktop/src/assets/file-icons/pug.svg | 1 +
packages/desktop/src/assets/file-icons/puppet.svg | 1 +
.../desktop/src/assets/file-icons/puppeteer.svg | 1 +
.../desktop/src/assets/file-icons/purescript.svg | 1 +
.../desktop/src/assets/file-icons/python-misc.svg | 1 +
packages/desktop/src/assets/file-icons/python.svg | 1 +
packages/desktop/src/assets/file-icons/pytorch.svg | 1 +
packages/desktop/src/assets/file-icons/qsharp.svg | 1 +
packages/desktop/src/assets/file-icons/quarto.svg | 5 +
packages/desktop/src/assets/file-icons/quasar.svg | 1 +
packages/desktop/src/assets/file-icons/quokka.svg | 1 +
packages/desktop/src/assets/file-icons/qwik.svg | 1 +
packages/desktop/src/assets/file-icons/r.svg | 1 +
packages/desktop/src/assets/file-icons/racket.svg | 1 +
packages/desktop/src/assets/file-icons/raml.svg | 1 +
packages/desktop/src/assets/file-icons/razor.svg | 1 +
packages/desktop/src/assets/file-icons/rbxmk.svg | 1 +
packages/desktop/src/assets/file-icons/rc.svg | 1 +
packages/desktop/src/assets/file-icons/react.svg | 1 +
.../desktop/src/assets/file-icons/react_ts.svg | 1 +
packages/desktop/src/assets/file-icons/readme.svg | 1 +
packages/desktop/src/assets/file-icons/reason.svg | 1 +
packages/desktop/src/assets/file-icons/red.svg | 1 +
.../desktop/src/assets/file-icons/redux-action.svg | 1 +
.../src/assets/file-icons/redux-reducer.svg | 1 +
.../src/assets/file-icons/redux-selector.svg | 1 +
.../desktop/src/assets/file-icons/redux-store.svg | 1 +
packages/desktop/src/assets/file-icons/regedit.svg | 1 +
packages/desktop/src/assets/file-icons/remark.svg | 1 +
packages/desktop/src/assets/file-icons/remix.svg | 1 +
.../desktop/src/assets/file-icons/remix_light.svg | 1 +
.../desktop/src/assets/file-icons/renovate.svg | 1 +
packages/desktop/src/assets/file-icons/replit.svg | 1 +
.../src/assets/file-icons/rescript-interface.svg | 1 +
.../desktop/src/assets/file-icons/rescript.svg | 1 +
packages/desktop/src/assets/file-icons/restql.svg | 1 +
packages/desktop/src/assets/file-icons/riot.svg | 1 +
packages/desktop/src/assets/file-icons/roadmap.svg | 1 +
packages/desktop/src/assets/file-icons/roblox.svg | 1 +
packages/desktop/src/assets/file-icons/robot.svg | 1 +
packages/desktop/src/assets/file-icons/robots.svg | 1 +
packages/desktop/src/assets/file-icons/rocket.svg | 1 +
packages/desktop/src/assets/file-icons/rojo.svg | 1 +
packages/desktop/src/assets/file-icons/rollup.svg | 1 +
packages/desktop/src/assets/file-icons/rome.svg | 6 +
packages/desktop/src/assets/file-icons/routing.svg | 1 +
packages/desktop/src/assets/file-icons/rspec.svg | 1 +
packages/desktop/src/assets/file-icons/rubocop.svg | 1 +
.../src/assets/file-icons/rubocop_light.svg | 1 +
packages/desktop/src/assets/file-icons/ruby.svg | 1 +
packages/desktop/src/assets/file-icons/ruff.svg | 1 +
packages/desktop/src/assets/file-icons/rust.svg | 1 +
.../desktop/src/assets/file-icons/salesforce.svg | 1 +
packages/desktop/src/assets/file-icons/san.svg | 1 +
packages/desktop/src/assets/file-icons/sas.svg | 1 +
packages/desktop/src/assets/file-icons/sass.svg | 1 +
packages/desktop/src/assets/file-icons/sbt.svg | 1 +
packages/desktop/src/assets/file-icons/scala.svg | 1 +
packages/desktop/src/assets/file-icons/scheme.svg | 1 +
packages/desktop/src/assets/file-icons/scons.svg | 1 +
.../desktop/src/assets/file-icons/scons_light.svg | 1 +
.../desktop/src/assets/file-icons/screwdriver.svg | 1 +
packages/desktop/src/assets/file-icons/search.svg | 1 +
.../src/assets/file-icons/semantic-release.svg | 1 +
.../assets/file-icons/semantic-release_light.svg | 1 +
packages/desktop/src/assets/file-icons/semgrep.svg | 1 +
packages/desktop/src/assets/file-icons/sentry.svg | 1 +
.../desktop/src/assets/file-icons/sequelize.svg | 1 +
.../desktop/src/assets/file-icons/serverless.svg | 1 +
.../desktop/src/assets/file-icons/settings.svg | 1 +
packages/desktop/src/assets/file-icons/shader.svg | 1 +
.../desktop/src/assets/file-icons/silverstripe.svg | 1 +
.../desktop/src/assets/file-icons/simulink.svg | 1 +
packages/desktop/src/assets/file-icons/siyuan.svg | 1 +
packages/desktop/src/assets/file-icons/sketch.svg | 1 +
packages/desktop/src/assets/file-icons/slim.svg | 1 +
packages/desktop/src/assets/file-icons/slint.svg | 1 +
packages/desktop/src/assets/file-icons/slug.svg | 1 +
packages/desktop/src/assets/file-icons/smarty.svg | 1 +
packages/desktop/src/assets/file-icons/sml.svg | 1 +
.../desktop/src/assets/file-icons/snakemake.svg | 1 +
.../desktop/src/assets/file-icons/snapcraft.svg | 1 +
.../desktop/src/assets/file-icons/snowpack.svg | 1 +
.../src/assets/file-icons/snowpack_light.svg | 1 +
packages/desktop/src/assets/file-icons/snyk.svg | 1 +
.../desktop/src/assets/file-icons/solidity.svg | 1 +
.../desktop/src/assets/file-icons/sonarcloud.svg | 1 +
packages/desktop/src/assets/file-icons/spwn.svg | 1 +
.../desktop/src/assets/file-icons/stackblitz.svg | 1 +
packages/desktop/src/assets/file-icons/stan.svg | 1 +
.../desktop/src/assets/file-icons/steadybit.svg | 1 +
packages/desktop/src/assets/file-icons/stencil.svg | 1 +
.../desktop/src/assets/file-icons/stitches.svg | 1 +
.../src/assets/file-icons/stitches_light.svg | 10 +
.../desktop/src/assets/file-icons/storybook.svg | 1 +
packages/desktop/src/assets/file-icons/stryker.svg | 1 +
.../desktop/src/assets/file-icons/stylable.svg | 1 +
.../desktop/src/assets/file-icons/stylelint.svg | 1 +
.../src/assets/file-icons/stylelint_light.svg | 13 +
packages/desktop/src/assets/file-icons/stylus.svg | 1 +
packages/desktop/src/assets/file-icons/sublime.svg | 1 +
.../desktop/src/assets/file-icons/subtitles.svg | 1 +
.../desktop/src/assets/file-icons/supabase.svg | 1 +
packages/desktop/src/assets/file-icons/svelte.svg | 1 +
packages/desktop/src/assets/file-icons/svg.svg | 1 +
packages/desktop/src/assets/file-icons/svgo.svg | 1 +
packages/desktop/src/assets/file-icons/svgr.svg | 1 +
packages/desktop/src/assets/file-icons/swagger.svg | 1 +
packages/desktop/src/assets/file-icons/sway.svg | 1 +
packages/desktop/src/assets/file-icons/swc.svg | 1 +
packages/desktop/src/assets/file-icons/swift.svg | 1 +
.../desktop/src/assets/file-icons/syncpack.svg | 1 +
packages/desktop/src/assets/file-icons/systemd.svg | 1 +
.../src/assets/file-icons/systemd_light.svg | 1 +
packages/desktop/src/assets/file-icons/table.svg | 1 +
.../desktop/src/assets/file-icons/tailwindcss.svg | 1 +
.../desktop/src/assets/file-icons/taskfile.svg | 1 +
packages/desktop/src/assets/file-icons/tauri.svg | 1 +
packages/desktop/src/assets/file-icons/taze.svg | 1 +
packages/desktop/src/assets/file-icons/tcl.svg | 1 +
packages/desktop/src/assets/file-icons/teal.svg | 1 +
packages/desktop/src/assets/file-icons/templ.svg | 1 +
.../desktop/src/assets/file-icons/template.svg | 1 +
.../desktop/src/assets/file-icons/terraform.svg | 1 +
packages/desktop/src/assets/file-icons/test-js.svg | 1 +
.../desktop/src/assets/file-icons/test-jsx.svg | 1 +
packages/desktop/src/assets/file-icons/test-ts.svg | 1 +
packages/desktop/src/assets/file-icons/tex.svg | 1 +
.../desktop/src/assets/file-icons/textlint.svg | 1 +
packages/desktop/src/assets/file-icons/tilt.svg | 1 +
packages/desktop/src/assets/file-icons/tldraw.svg | 1 +
.../desktop/src/assets/file-icons/tldraw_light.svg | 1 +
packages/desktop/src/assets/file-icons/tobi.svg | 1 +
.../desktop/src/assets/file-icons/tobimake.svg | 1 +
packages/desktop/src/assets/file-icons/todo.svg | 1 +
packages/desktop/src/assets/file-icons/toml.svg | 1 +
.../desktop/src/assets/file-icons/toml_light.svg | 1 +
packages/desktop/src/assets/file-icons/travis.svg | 1 +
packages/desktop/src/assets/file-icons/tree.svg | 1 +
packages/desktop/src/assets/file-icons/trigger.svg | 1 +
.../desktop/src/assets/file-icons/tsconfig.svg | 1 +
packages/desktop/src/assets/file-icons/tsdoc.svg | 1 +
packages/desktop/src/assets/file-icons/tsil.svg | 1 +
packages/desktop/src/assets/file-icons/tune.svg | 1 +
.../desktop/src/assets/file-icons/turborepo.svg | 1 +
.../src/assets/file-icons/turborepo_light.svg | 1 +
packages/desktop/src/assets/file-icons/twig.svg | 1 +
packages/desktop/src/assets/file-icons/twine.svg | 1 +
.../src/assets/file-icons/typescript-def.svg | 1 +
.../desktop/src/assets/file-icons/typescript.svg | 1 +
packages/desktop/src/assets/file-icons/typst.svg | 1 +
packages/desktop/src/assets/file-icons/umi.svg | 1 +
packages/desktop/src/assets/file-icons/uml.svg | 1 +
.../desktop/src/assets/file-icons/uml_light.svg | 1 +
packages/desktop/src/assets/file-icons/unity.svg | 1 +
packages/desktop/src/assets/file-icons/unocss.svg | 5 +
packages/desktop/src/assets/file-icons/url.svg | 1 +
packages/desktop/src/assets/file-icons/uv.svg | 1 +
packages/desktop/src/assets/file-icons/vagrant.svg | 1 +
packages/desktop/src/assets/file-icons/vala.svg | 1 +
.../src/assets/file-icons/vanilla-extract.svg | 1 +
packages/desktop/src/assets/file-icons/varnish.svg | 1 +
packages/desktop/src/assets/file-icons/vedic.svg | 1 +
packages/desktop/src/assets/file-icons/velite.svg | 1 +
.../desktop/src/assets/file-icons/velocity.svg | 1 +
packages/desktop/src/assets/file-icons/vercel.svg | 1 +
.../desktop/src/assets/file-icons/vercel_light.svg | 1 +
.../desktop/src/assets/file-icons/verdaccio.svg | 1 +
.../desktop/src/assets/file-icons/verified.svg | 1 +
packages/desktop/src/assets/file-icons/verilog.svg | 1 +
packages/desktop/src/assets/file-icons/vfl.svg | 1 +
packages/desktop/src/assets/file-icons/video.svg | 1 +
packages/desktop/src/assets/file-icons/vim.svg | 1 +
packages/desktop/src/assets/file-icons/virtual.svg | 1 +
.../desktop/src/assets/file-icons/visualstudio.svg | 1 +
packages/desktop/src/assets/file-icons/vite.svg | 1 +
packages/desktop/src/assets/file-icons/vitest.svg | 1 +
packages/desktop/src/assets/file-icons/vlang.svg | 6 +
packages/desktop/src/assets/file-icons/vscode.svg | 1 +
.../desktop/src/assets/file-icons/vue-config.svg | 1 +
packages/desktop/src/assets/file-icons/vue.svg | 1 +
.../desktop/src/assets/file-icons/vuex-store.svg | 1 +
.../desktop/src/assets/file-icons/wakatime.svg | 1 +
.../src/assets/file-icons/wakatime_light.svg | 1 +
packages/desktop/src/assets/file-icons/wallaby.svg | 1 +
packages/desktop/src/assets/file-icons/wally.svg | 1 +
.../desktop/src/assets/file-icons/watchman.svg | 1 +
.../desktop/src/assets/file-icons/webassembly.svg | 1 +
packages/desktop/src/assets/file-icons/webhint.svg | 1 +
packages/desktop/src/assets/file-icons/webpack.svg | 1 +
packages/desktop/src/assets/file-icons/wepy.svg | 1 +
packages/desktop/src/assets/file-icons/werf.svg | 1 +
.../desktop/src/assets/file-icons/windicss.svg | 1 +
.../src/assets/file-icons/wolframlanguage.svg | 1 +
packages/desktop/src/assets/file-icons/word.svg | 1 +
.../desktop/src/assets/file-icons/wrangler.svg | 1 +
packages/desktop/src/assets/file-icons/wxt.svg | 1 +
packages/desktop/src/assets/file-icons/xaml.svg | 1 +
packages/desktop/src/assets/file-icons/xmake.svg | 1 +
packages/desktop/src/assets/file-icons/xml.svg | 1 +
packages/desktop/src/assets/file-icons/yaml.svg | 1 +
packages/desktop/src/assets/file-icons/yang.svg | 1 +
packages/desktop/src/assets/file-icons/yarn.svg | 1 +
packages/desktop/src/assets/file-icons/zeabur.svg | 1 +
.../desktop/src/assets/file-icons/zeabur_light.svg | 1 +
packages/desktop/src/assets/file-icons/zig.svg | 1 +
packages/desktop/src/assets/file-icons/zip.svg | 1 +
packages/desktop/src/components/code.tsx | 846 ++
packages/desktop/src/components/editor-pane.tsx | 381 +
packages/desktop/src/components/file-tree.tsx | 110 +
packages/desktop/src/components/markdown.tsx | 23 +
packages/desktop/src/components/prompt-form.tsx | 295 +
.../desktop/src/components/resizeable-pane.tsx | 217 +
packages/desktop/src/components/select-dialog.tsx | 225 +
packages/desktop/src/components/select.tsx | 107 +
packages/desktop/src/components/session-list.tsx | 28 +
.../desktop/src/components/session-timeline.tsx | 459 +
packages/desktop/src/components/sidebar-nav.tsx | 48 +
packages/desktop/src/context/event.tsx | 34 +
packages/desktop/src/context/index.ts | 7 +
packages/desktop/src/context/local.tsx | 537 +
packages/desktop/src/context/marked.tsx | 43 +
packages/desktop/src/context/sdk.tsx | 29 +
packages/desktop/src/context/shiki.tsx | 582 +
packages/desktop/src/context/sync.tsx | 174 +
packages/desktop/src/context/theme.tsx | 92 +
packages/desktop/src/env.d.ts | 8 +
packages/desktop/src/index.css | 168 +
packages/desktop/src/index.tsx | 48 +
packages/desktop/src/pages/index.tsx | 278 +
packages/desktop/src/pages/layout.tsx | 5 +
packages/desktop/src/sst-env.d.ts | 10 +
packages/desktop/src/ui/button.tsx | 36 +
packages/desktop/src/ui/collapsible.tsx | 62 +
packages/desktop/src/ui/file-icon.tsx | 582 +
packages/desktop/src/ui/file-icons/sprite.svg | 11707 +++++++++++++++++++
packages/desktop/src/ui/file-icons/types.ts | 1095 ++
packages/desktop/src/ui/icon-button.tsx | 38 +
packages/desktop/src/ui/icon.tsx | 155 +
packages/desktop/src/ui/index.ts | 13 +
packages/desktop/src/ui/link.tsx | 13 +
packages/desktop/src/ui/logo.tsx | 125 +
packages/desktop/src/ui/tabs.tsx | 71 +
packages/desktop/src/ui/tooltip.tsx | 58 +
packages/desktop/src/utils/binary.ts | 41 +
packages/desktop/src/utils/dom.ts | 51 +
packages/desktop/src/utils/index.ts | 2 +
packages/desktop/src/utils/path.ts | 14 +
packages/desktop/src/utils/speech.ts | 302 +
packages/desktop/sst-env.d.ts | 9 +
packages/desktop/tsconfig.json | 13 +
packages/desktop/vite.config.ts | 32 +
2284 files changed, 20942 insertions(+), 20942 deletions(-)
delete mode 100644 packages/app/.gitignore
delete mode 100644 packages/app/AGENTS.md
delete mode 100644 packages/app/README.md
delete mode 100644 packages/app/index.html
delete mode 100644 packages/app/package.json
delete mode 100644 packages/app/scripts/vite-theme-plugin.ts
delete mode 100644 packages/app/src/assets/favicon.svg
delete mode 100644 packages/app/src/assets/file-icons/3d.svg
delete mode 100644 packages/app/src/assets/file-icons/abap.svg
delete mode 100644 packages/app/src/assets/file-icons/abc.svg
delete mode 100644 packages/app/src/assets/file-icons/actionscript.svg
delete mode 100644 packages/app/src/assets/file-icons/ada.svg
delete mode 100644 packages/app/src/assets/file-icons/adobe-illustrator.svg
delete mode 100644 packages/app/src/assets/file-icons/adobe-illustrator_light.svg
delete mode 100644 packages/app/src/assets/file-icons/adobe-photoshop.svg
delete mode 100644 packages/app/src/assets/file-icons/adobe-photoshop_light.svg
delete mode 100644 packages/app/src/assets/file-icons/adobe-swc.svg
delete mode 100644 packages/app/src/assets/file-icons/adonis.svg
delete mode 100644 packages/app/src/assets/file-icons/advpl.svg
delete mode 100644 packages/app/src/assets/file-icons/amplify.svg
delete mode 100644 packages/app/src/assets/file-icons/android.svg
delete mode 100644 packages/app/src/assets/file-icons/angular.svg
delete mode 100644 packages/app/src/assets/file-icons/antlr.svg
delete mode 100644 packages/app/src/assets/file-icons/apiblueprint.svg
delete mode 100644 packages/app/src/assets/file-icons/apollo.svg
delete mode 100644 packages/app/src/assets/file-icons/applescript.svg
delete mode 100644 packages/app/src/assets/file-icons/apps-script.svg
delete mode 100644 packages/app/src/assets/file-icons/appveyor.svg
delete mode 100644 packages/app/src/assets/file-icons/architecture.svg
delete mode 100644 packages/app/src/assets/file-icons/arduino.svg
delete mode 100644 packages/app/src/assets/file-icons/asciidoc.svg
delete mode 100644 packages/app/src/assets/file-icons/assembly.svg
delete mode 100644 packages/app/src/assets/file-icons/astro-config.svg
delete mode 100644 packages/app/src/assets/file-icons/astro.svg
delete mode 100644 packages/app/src/assets/file-icons/astyle.svg
delete mode 100644 packages/app/src/assets/file-icons/audio.svg
delete mode 100644 packages/app/src/assets/file-icons/aurelia.svg
delete mode 100644 packages/app/src/assets/file-icons/authors.svg
delete mode 100644 packages/app/src/assets/file-icons/auto.svg
delete mode 100644 packages/app/src/assets/file-icons/auto_light.svg
delete mode 100644 packages/app/src/assets/file-icons/autohotkey.svg
delete mode 100644 packages/app/src/assets/file-icons/autoit.svg
delete mode 100644 packages/app/src/assets/file-icons/azure-pipelines.svg
delete mode 100644 packages/app/src/assets/file-icons/azure.svg
delete mode 100644 packages/app/src/assets/file-icons/babel.svg
delete mode 100644 packages/app/src/assets/file-icons/ballerina.svg
delete mode 100644 packages/app/src/assets/file-icons/bazel.svg
delete mode 100644 packages/app/src/assets/file-icons/bbx.svg
delete mode 100644 packages/app/src/assets/file-icons/beancount.svg
delete mode 100644 packages/app/src/assets/file-icons/bench-js.svg
delete mode 100644 packages/app/src/assets/file-icons/bench-jsx.svg
delete mode 100644 packages/app/src/assets/file-icons/bench-ts.svg
delete mode 100644 packages/app/src/assets/file-icons/bibliography.svg
delete mode 100644 packages/app/src/assets/file-icons/bibtex-style.svg
delete mode 100644 packages/app/src/assets/file-icons/bicep.svg
delete mode 100644 packages/app/src/assets/file-icons/biome.svg
delete mode 100644 packages/app/src/assets/file-icons/bitbucket.svg
delete mode 100644 packages/app/src/assets/file-icons/bithound.svg
delete mode 100644 packages/app/src/assets/file-icons/blender.svg
delete mode 100644 packages/app/src/assets/file-icons/blink.svg
delete mode 100644 packages/app/src/assets/file-icons/blink_light.svg
delete mode 100644 packages/app/src/assets/file-icons/blitz.svg
delete mode 100644 packages/app/src/assets/file-icons/bower.svg
delete mode 100644 packages/app/src/assets/file-icons/brainfuck.svg
delete mode 100644 packages/app/src/assets/file-icons/browserlist.svg
delete mode 100644 packages/app/src/assets/file-icons/browserlist_light.svg
delete mode 100644 packages/app/src/assets/file-icons/bruno.svg
delete mode 100644 packages/app/src/assets/file-icons/buck.svg
delete mode 100644 packages/app/src/assets/file-icons/bucklescript.svg
delete mode 100644 packages/app/src/assets/file-icons/buildkite.svg
delete mode 100644 packages/app/src/assets/file-icons/bun.svg
delete mode 100644 packages/app/src/assets/file-icons/bun_light.svg
delete mode 100644 packages/app/src/assets/file-icons/c.svg
delete mode 100644 packages/app/src/assets/file-icons/c3.svg
delete mode 100644 packages/app/src/assets/file-icons/cabal.svg
delete mode 100644 packages/app/src/assets/file-icons/caddy.svg
delete mode 100644 packages/app/src/assets/file-icons/cadence.svg
delete mode 100644 packages/app/src/assets/file-icons/cairo.svg
delete mode 100644 packages/app/src/assets/file-icons/cake.svg
delete mode 100644 packages/app/src/assets/file-icons/capacitor.svg
delete mode 100644 packages/app/src/assets/file-icons/capnp.svg
delete mode 100644 packages/app/src/assets/file-icons/cbx.svg
delete mode 100644 packages/app/src/assets/file-icons/cds.svg
delete mode 100644 packages/app/src/assets/file-icons/certificate.svg
delete mode 100644 packages/app/src/assets/file-icons/changelog.svg
delete mode 100644 packages/app/src/assets/file-icons/chess.svg
delete mode 100644 packages/app/src/assets/file-icons/chess_light.svg
delete mode 100644 packages/app/src/assets/file-icons/chrome.svg
delete mode 100644 packages/app/src/assets/file-icons/circleci.svg
delete mode 100644 packages/app/src/assets/file-icons/circleci_light.svg
delete mode 100644 packages/app/src/assets/file-icons/citation.svg
delete mode 100644 packages/app/src/assets/file-icons/clangd.svg
delete mode 100644 packages/app/src/assets/file-icons/claude.svg
delete mode 100644 packages/app/src/assets/file-icons/cline.svg
delete mode 100644 packages/app/src/assets/file-icons/clojure.svg
delete mode 100644 packages/app/src/assets/file-icons/cloudfoundry.svg
delete mode 100644 packages/app/src/assets/file-icons/cmake.svg
delete mode 100644 packages/app/src/assets/file-icons/coala.svg
delete mode 100644 packages/app/src/assets/file-icons/cobol.svg
delete mode 100644 packages/app/src/assets/file-icons/coconut.svg
delete mode 100644 packages/app/src/assets/file-icons/code-climate.svg
delete mode 100644 packages/app/src/assets/file-icons/code-climate_light.svg
delete mode 100644 packages/app/src/assets/file-icons/codecov.svg
delete mode 100644 packages/app/src/assets/file-icons/codeowners.svg
delete mode 100644 packages/app/src/assets/file-icons/coderabbit-ai.svg
delete mode 100644 packages/app/src/assets/file-icons/coffee.svg
delete mode 100644 packages/app/src/assets/file-icons/coldfusion.svg
delete mode 100644 packages/app/src/assets/file-icons/coloredpetrinets.svg
delete mode 100644 packages/app/src/assets/file-icons/command.svg
delete mode 100644 packages/app/src/assets/file-icons/commitizen.svg
delete mode 100644 packages/app/src/assets/file-icons/commitlint.svg
delete mode 100644 packages/app/src/assets/file-icons/concourse.svg
delete mode 100644 packages/app/src/assets/file-icons/conduct.svg
delete mode 100644 packages/app/src/assets/file-icons/console.svg
delete mode 100644 packages/app/src/assets/file-icons/contentlayer.svg
delete mode 100644 packages/app/src/assets/file-icons/context.svg
delete mode 100644 packages/app/src/assets/file-icons/contributing.svg
delete mode 100644 packages/app/src/assets/file-icons/controller.svg
delete mode 100644 packages/app/src/assets/file-icons/copilot.svg
delete mode 100644 packages/app/src/assets/file-icons/copilot_light.svg
delete mode 100644 packages/app/src/assets/file-icons/cpp.svg
delete mode 100644 packages/app/src/assets/file-icons/craco.svg
delete mode 100644 packages/app/src/assets/file-icons/credits.svg
delete mode 100644 packages/app/src/assets/file-icons/crystal.svg
delete mode 100644 packages/app/src/assets/file-icons/crystal_light.svg
delete mode 100644 packages/app/src/assets/file-icons/csharp.svg
delete mode 100644 packages/app/src/assets/file-icons/css-map.svg
delete mode 100644 packages/app/src/assets/file-icons/css.svg
delete mode 100644 packages/app/src/assets/file-icons/cucumber.svg
delete mode 100644 packages/app/src/assets/file-icons/cuda.svg
delete mode 100644 packages/app/src/assets/file-icons/cursor.svg
delete mode 100644 packages/app/src/assets/file-icons/cursor_light.svg
delete mode 100644 packages/app/src/assets/file-icons/cypress.svg
delete mode 100644 packages/app/src/assets/file-icons/d.svg
delete mode 100644 packages/app/src/assets/file-icons/dart.svg
delete mode 100644 packages/app/src/assets/file-icons/dart_generated.svg
delete mode 100644 packages/app/src/assets/file-icons/database.svg
delete mode 100644 packages/app/src/assets/file-icons/deepsource.svg
delete mode 100644 packages/app/src/assets/file-icons/denizenscript.svg
delete mode 100644 packages/app/src/assets/file-icons/deno.svg
delete mode 100644 packages/app/src/assets/file-icons/deno_light.svg
delete mode 100644 packages/app/src/assets/file-icons/dependabot.svg
delete mode 100644 packages/app/src/assets/file-icons/dependencies-update.svg
delete mode 100644 packages/app/src/assets/file-icons/dhall.svg
delete mode 100644 packages/app/src/assets/file-icons/diff.svg
delete mode 100644 packages/app/src/assets/file-icons/dinophp.svg
delete mode 100644 packages/app/src/assets/file-icons/disc.svg
delete mode 100644 packages/app/src/assets/file-icons/django.svg
delete mode 100644 packages/app/src/assets/file-icons/dll.svg
delete mode 100644 packages/app/src/assets/file-icons/docker.svg
delete mode 100644 packages/app/src/assets/file-icons/doctex-installer.svg
delete mode 100644 packages/app/src/assets/file-icons/document.svg
delete mode 100644 packages/app/src/assets/file-icons/dotjs.svg
delete mode 100644 packages/app/src/assets/file-icons/drawio.svg
delete mode 100644 packages/app/src/assets/file-icons/drizzle.svg
delete mode 100644 packages/app/src/assets/file-icons/drone.svg
delete mode 100644 packages/app/src/assets/file-icons/drone_light.svg
delete mode 100644 packages/app/src/assets/file-icons/duc.svg
delete mode 100644 packages/app/src/assets/file-icons/dune.svg
delete mode 100644 packages/app/src/assets/file-icons/edge.svg
delete mode 100644 packages/app/src/assets/file-icons/editorconfig.svg
delete mode 100644 packages/app/src/assets/file-icons/ejs.svg
delete mode 100644 packages/app/src/assets/file-icons/elixir.svg
delete mode 100644 packages/app/src/assets/file-icons/elm.svg
delete mode 100644 packages/app/src/assets/file-icons/email.svg
delete mode 100644 packages/app/src/assets/file-icons/ember.svg
delete mode 100644 packages/app/src/assets/file-icons/epub.svg
delete mode 100644 packages/app/src/assets/file-icons/erlang.svg
delete mode 100644 packages/app/src/assets/file-icons/esbuild.svg
delete mode 100644 packages/app/src/assets/file-icons/eslint.svg
delete mode 100644 packages/app/src/assets/file-icons/excalidraw.svg
delete mode 100644 packages/app/src/assets/file-icons/exe.svg
delete mode 100644 packages/app/src/assets/file-icons/fastlane.svg
delete mode 100644 packages/app/src/assets/file-icons/favicon.svg
delete mode 100644 packages/app/src/assets/file-icons/figma.svg
delete mode 100644 packages/app/src/assets/file-icons/firebase.svg
delete mode 100644 packages/app/src/assets/file-icons/flash.svg
delete mode 100644 packages/app/src/assets/file-icons/flow.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-admin-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-admin.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-android-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-android.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-angular-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-angular.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-animation-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-animation.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-ansible-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-ansible.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-api-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-api.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-apollo-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-apollo.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-app-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-app.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-archive-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-archive.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-astro-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-astro.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-atom-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-atom.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-attachment-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-attachment.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-audio-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-audio.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-aurelia-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-aurelia.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-aws-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-aws.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-azure-pipelines-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-azure-pipelines.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-backup-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-backup.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-base-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-base.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-batch-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-batch.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-benchmark-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-benchmark.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-bibliography-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-bibliography.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-bicep-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-bicep.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-blender-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-blender.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-bloc-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-bloc.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-bower-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-bower.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-buildkite-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-buildkite.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cart-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cart.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-changesets-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-changesets.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-ci-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-ci.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-circleci-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-circleci.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-class-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-class.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-claude-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-claude.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-client-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-client.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cline-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cline.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cloud-functions-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cloud-functions.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cloudflare-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cloudflare.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cluster-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cluster.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cobol-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cobol.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-command-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-command.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-components-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-components.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-config-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-config.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-connection-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-connection.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-console-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-console.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-constant-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-constant.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-container-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-container.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-content-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-content.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-context-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-context.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-contract-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-contract.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-controller-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-controller.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-core-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-core.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-coverage-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-coverage.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-css-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-css.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cursor-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cursor-open_light.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cursor.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cursor_light.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-custom-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-custom.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cypress-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-cypress.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-dart-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-dart.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-database-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-database.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-debug-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-debug.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-decorators-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-decorators.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-delta-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-delta.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-desktop-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-desktop.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-directive-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-directive.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-dist-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-dist.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-docker-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-docker.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-docs-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-docs.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-download-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-download.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-drizzle-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-drizzle.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-dump-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-dump.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-element-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-element.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-enum-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-enum.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-environment-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-environment.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-error-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-error.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-event-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-event.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-examples-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-examples.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-expo-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-expo.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-export-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-export.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-fastlane-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-fastlane.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-favicon-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-favicon.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-firebase-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-firebase.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-firestore-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-firestore.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-flow-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-flow.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-flutter-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-flutter.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-font-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-font.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-forgejo-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-forgejo.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-functions-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-functions.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-gamemaker-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-gamemaker.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-generator-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-generator.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-gh-workflows-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-gh-workflows.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-git-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-git.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-gitea-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-gitea.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-github-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-github.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-gitlab-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-gitlab.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-global-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-global.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-godot-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-godot.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-gradle-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-gradle.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-graphql-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-graphql.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-guard-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-guard.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-gulp-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-gulp.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-helm-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-helm.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-helper-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-helper.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-home-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-home.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-hook-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-hook.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-husky-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-husky.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-i18n-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-i18n.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-images-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-images.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-import-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-import.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-include-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-include.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-intellij-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-intellij-open_light.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-intellij.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-intellij_light.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-interceptor-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-interceptor.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-interface-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-interface.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-ios-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-ios.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-java-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-java.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-javascript-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-javascript.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-jinja-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-jinja-open_light.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-jinja.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-jinja_light.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-job-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-job.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-json-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-json.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-jupyter-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-jupyter.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-keys-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-keys.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-kubernetes-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-kubernetes.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-kusto-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-kusto.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-layout-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-layout.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-lefthook-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-lefthook.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-less-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-less.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-lib-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-lib.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-link-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-link.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-linux-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-linux.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-liquibase-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-liquibase.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-log-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-log.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-lottie-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-lottie.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-lua-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-lua.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-luau-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-luau.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-macos-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-macos.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-mail-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-mail.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-mappings-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-mappings.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-markdown-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-markdown.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-mercurial-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-mercurial.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-messages-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-messages.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-meta-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-meta.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-middleware-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-middleware.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-mjml-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-mjml.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-mobile-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-mobile.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-mock-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-mock.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-mojo-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-mojo.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-molecule-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-molecule.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-moon-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-moon.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-netlify-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-netlify.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-next-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-next.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-ngrx-store-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-ngrx-store.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-node-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-node.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-nuxt-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-nuxt.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-obsidian-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-obsidian.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-organism-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-organism.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-other-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-other.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-packages-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-packages.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-pdf-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-pdf.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-pdm-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-pdm.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-php-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-php.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-phpmailer-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-phpmailer.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-pipe-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-pipe.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-plastic-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-plastic.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-plugin-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-plugin.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-policy-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-policy.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-powershell-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-powershell.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-prisma-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-prisma.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-private-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-private.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-project-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-project.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-prompts-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-prompts.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-proto-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-proto.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-public-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-public.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-python-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-python.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-pytorch-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-pytorch.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-quasar-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-quasar.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-queue-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-queue.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-react-components-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-react-components.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-redux-reducer-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-redux-reducer.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-repository-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-repository.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-resolver-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-resolver.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-resource-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-resource.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-review-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-review.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-robot-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-robot.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-routes-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-routes.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-rules-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-rules.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-rust-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-rust.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-sandbox-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-sandbox.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-sass-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-sass.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-scala-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-scala.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-scons-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-scons.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-scripts-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-scripts.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-secure-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-secure.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-seeders-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-seeders.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-server-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-server.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-serverless-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-serverless.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-shader-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-shader.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-shared-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-shared.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-snapcraft-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-snapcraft.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-snippet-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-snippet.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-src-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-src-tauri-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-src-tauri.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-src.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-stack-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-stack.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-stencil-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-stencil.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-store-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-store.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-storybook-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-storybook.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-stylus-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-stylus.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-sublime-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-sublime.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-supabase-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-supabase.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-svelte-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-svelte.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-svg-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-svg.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-syntax-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-syntax.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-target-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-target.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-taskfile-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-taskfile.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-tasks-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-tasks.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-television-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-television.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-temp-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-temp.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-template-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-template.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-terraform-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-terraform.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-test-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-test.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-theme-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-theme.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-tools-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-tools.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-trash-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-trash.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-trigger-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-trigger.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-turborepo-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-turborepo.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-typescript-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-typescript.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-ui-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-ui.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-unity-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-unity.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-update-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-update.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-upload-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-upload.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-utils-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-utils.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-vercel-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-vercel.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-verdaccio-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-verdaccio.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-video-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-video.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-views-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-views.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-vm-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-vm.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-vscode-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-vscode.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-vue-directives-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-vue-directives.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-vue-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-vue.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-vuepress-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-vuepress.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-vuex-store-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-vuex-store.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-wakatime-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-wakatime.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-webpack-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-webpack.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-windows-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-windows.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-wordpress-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-wordpress.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-yarn-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-yarn.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-zeabur-open.svg
delete mode 100644 packages/app/src/assets/file-icons/folder-zeabur.svg
delete mode 100644 packages/app/src/assets/file-icons/folder.svg
delete mode 100644 packages/app/src/assets/file-icons/font.svg
delete mode 100644 packages/app/src/assets/file-icons/forth.svg
delete mode 100644 packages/app/src/assets/file-icons/fortran.svg
delete mode 100644 packages/app/src/assets/file-icons/foxpro.svg
delete mode 100644 packages/app/src/assets/file-icons/freemarker.svg
delete mode 100644 packages/app/src/assets/file-icons/fsharp.svg
delete mode 100644 packages/app/src/assets/file-icons/fusebox.svg
delete mode 100644 packages/app/src/assets/file-icons/gamemaker.svg
delete mode 100644 packages/app/src/assets/file-icons/garden.svg
delete mode 100644 packages/app/src/assets/file-icons/gatsby.svg
delete mode 100644 packages/app/src/assets/file-icons/gcp.svg
delete mode 100644 packages/app/src/assets/file-icons/gemfile.svg
delete mode 100644 packages/app/src/assets/file-icons/gemini-ai.svg
delete mode 100644 packages/app/src/assets/file-icons/gemini.svg
delete mode 100644 packages/app/src/assets/file-icons/git.svg
delete mode 100644 packages/app/src/assets/file-icons/github-actions-workflow.svg
delete mode 100644 packages/app/src/assets/file-icons/github-sponsors.svg
delete mode 100644 packages/app/src/assets/file-icons/gitlab.svg
delete mode 100644 packages/app/src/assets/file-icons/gitpod.svg
delete mode 100644 packages/app/src/assets/file-icons/gleam.svg
delete mode 100644 packages/app/src/assets/file-icons/gnuplot.svg
delete mode 100644 packages/app/src/assets/file-icons/go-mod.svg
delete mode 100644 packages/app/src/assets/file-icons/go.svg
delete mode 100644 packages/app/src/assets/file-icons/go_gopher.svg
delete mode 100644 packages/app/src/assets/file-icons/godot-assets.svg
delete mode 100644 packages/app/src/assets/file-icons/godot.svg
delete mode 100644 packages/app/src/assets/file-icons/gradle.svg
delete mode 100644 packages/app/src/assets/file-icons/grafana-alloy.svg
delete mode 100644 packages/app/src/assets/file-icons/grain.svg
delete mode 100644 packages/app/src/assets/file-icons/graphcool.svg
delete mode 100644 packages/app/src/assets/file-icons/graphql.svg
delete mode 100644 packages/app/src/assets/file-icons/gridsome.svg
delete mode 100644 packages/app/src/assets/file-icons/groovy.svg
delete mode 100644 packages/app/src/assets/file-icons/grunt.svg
delete mode 100644 packages/app/src/assets/file-icons/gulp.svg
delete mode 100644 packages/app/src/assets/file-icons/h.svg
delete mode 100644 packages/app/src/assets/file-icons/hack.svg
delete mode 100644 packages/app/src/assets/file-icons/hadolint.svg
delete mode 100644 packages/app/src/assets/file-icons/haml.svg
delete mode 100644 packages/app/src/assets/file-icons/handlebars.svg
delete mode 100644 packages/app/src/assets/file-icons/hardhat.svg
delete mode 100644 packages/app/src/assets/file-icons/harmonix.svg
delete mode 100644 packages/app/src/assets/file-icons/haskell.svg
delete mode 100644 packages/app/src/assets/file-icons/haxe.svg
delete mode 100644 packages/app/src/assets/file-icons/hcl.svg
delete mode 100644 packages/app/src/assets/file-icons/hcl_light.svg
delete mode 100644 packages/app/src/assets/file-icons/helm.svg
delete mode 100644 packages/app/src/assets/file-icons/heroku.svg
delete mode 100644 packages/app/src/assets/file-icons/hex.svg
delete mode 100644 packages/app/src/assets/file-icons/histoire.svg
delete mode 100644 packages/app/src/assets/file-icons/hjson.svg
delete mode 100644 packages/app/src/assets/file-icons/horusec.svg
delete mode 100644 packages/app/src/assets/file-icons/hosts.svg
delete mode 100644 packages/app/src/assets/file-icons/hosts_light.svg
delete mode 100644 packages/app/src/assets/file-icons/hpp.svg
delete mode 100644 packages/app/src/assets/file-icons/html.svg
delete mode 100644 packages/app/src/assets/file-icons/http.svg
delete mode 100644 packages/app/src/assets/file-icons/huff.svg
delete mode 100644 packages/app/src/assets/file-icons/huff_light.svg
delete mode 100644 packages/app/src/assets/file-icons/hurl.svg
delete mode 100644 packages/app/src/assets/file-icons/husky.svg
delete mode 100644 packages/app/src/assets/file-icons/i18n.svg
delete mode 100644 packages/app/src/assets/file-icons/idris.svg
delete mode 100644 packages/app/src/assets/file-icons/ifanr-cloud.svg
delete mode 100644 packages/app/src/assets/file-icons/image.svg
delete mode 100644 packages/app/src/assets/file-icons/imba.svg
delete mode 100644 packages/app/src/assets/file-icons/installation.svg
delete mode 100644 packages/app/src/assets/file-icons/ionic.svg
delete mode 100644 packages/app/src/assets/file-icons/istanbul.svg
delete mode 100644 packages/app/src/assets/file-icons/jar.svg
delete mode 100644 packages/app/src/assets/file-icons/java.svg
delete mode 100644 packages/app/src/assets/file-icons/javaclass.svg
delete mode 100644 packages/app/src/assets/file-icons/javascript-map.svg
delete mode 100644 packages/app/src/assets/file-icons/javascript.svg
delete mode 100644 packages/app/src/assets/file-icons/jenkins.svg
delete mode 100644 packages/app/src/assets/file-icons/jest.svg
delete mode 100644 packages/app/src/assets/file-icons/jinja.svg
delete mode 100644 packages/app/src/assets/file-icons/jinja_light.svg
delete mode 100644 packages/app/src/assets/file-icons/jsconfig.svg
delete mode 100644 packages/app/src/assets/file-icons/json.svg
delete mode 100644 packages/app/src/assets/file-icons/jsr.svg
delete mode 100644 packages/app/src/assets/file-icons/jsr_light.svg
delete mode 100644 packages/app/src/assets/file-icons/julia.svg
delete mode 100644 packages/app/src/assets/file-icons/jupyter.svg
delete mode 100644 packages/app/src/assets/file-icons/just.svg
delete mode 100644 packages/app/src/assets/file-icons/karma.svg
delete mode 100644 packages/app/src/assets/file-icons/kcl.svg
delete mode 100644 packages/app/src/assets/file-icons/key.svg
delete mode 100644 packages/app/src/assets/file-icons/keystatic.svg
delete mode 100644 packages/app/src/assets/file-icons/kivy.svg
delete mode 100644 packages/app/src/assets/file-icons/kl.svg
delete mode 100644 packages/app/src/assets/file-icons/knip.svg
delete mode 100644 packages/app/src/assets/file-icons/kotlin.svg
delete mode 100644 packages/app/src/assets/file-icons/kubernetes.svg
delete mode 100644 packages/app/src/assets/file-icons/kusto.svg
delete mode 100644 packages/app/src/assets/file-icons/label.svg
delete mode 100644 packages/app/src/assets/file-icons/laravel.svg
delete mode 100644 packages/app/src/assets/file-icons/latexmk.svg
delete mode 100644 packages/app/src/assets/file-icons/lbx.svg
delete mode 100644 packages/app/src/assets/file-icons/lefthook.svg
delete mode 100644 packages/app/src/assets/file-icons/lerna.svg
delete mode 100644 packages/app/src/assets/file-icons/less.svg
delete mode 100644 packages/app/src/assets/file-icons/liara.svg
delete mode 100644 packages/app/src/assets/file-icons/lib.svg
delete mode 100644 packages/app/src/assets/file-icons/lighthouse.svg
delete mode 100644 packages/app/src/assets/file-icons/lilypond.svg
delete mode 100644 packages/app/src/assets/file-icons/lintstaged.svg
delete mode 100644 packages/app/src/assets/file-icons/liquid.svg
delete mode 100644 packages/app/src/assets/file-icons/lisp.svg
delete mode 100644 packages/app/src/assets/file-icons/livescript.svg
delete mode 100644 packages/app/src/assets/file-icons/lock.svg
delete mode 100644 packages/app/src/assets/file-icons/log.svg
delete mode 100644 packages/app/src/assets/file-icons/lolcode.svg
delete mode 100644 packages/app/src/assets/file-icons/lottie.svg
delete mode 100644 packages/app/src/assets/file-icons/lua.svg
delete mode 100644 packages/app/src/assets/file-icons/luau.svg
delete mode 100644 packages/app/src/assets/file-icons/lyric.svg
delete mode 100644 packages/app/src/assets/file-icons/makefile.svg
delete mode 100644 packages/app/src/assets/file-icons/markdoc-config.svg
delete mode 100644 packages/app/src/assets/file-icons/markdoc.svg
delete mode 100644 packages/app/src/assets/file-icons/markdown.svg
delete mode 100644 packages/app/src/assets/file-icons/markdownlint.svg
delete mode 100644 packages/app/src/assets/file-icons/markojs.svg
delete mode 100644 packages/app/src/assets/file-icons/mathematica.svg
delete mode 100644 packages/app/src/assets/file-icons/matlab.svg
delete mode 100644 packages/app/src/assets/file-icons/maven.svg
delete mode 100644 packages/app/src/assets/file-icons/mdsvex.svg
delete mode 100644 packages/app/src/assets/file-icons/mdx.svg
delete mode 100644 packages/app/src/assets/file-icons/mercurial.svg
delete mode 100644 packages/app/src/assets/file-icons/merlin.svg
delete mode 100644 packages/app/src/assets/file-icons/mermaid.svg
delete mode 100644 packages/app/src/assets/file-icons/meson.svg
delete mode 100644 packages/app/src/assets/file-icons/minecraft-fabric.svg
delete mode 100644 packages/app/src/assets/file-icons/minecraft.svg
delete mode 100644 packages/app/src/assets/file-icons/mint.svg
delete mode 100644 packages/app/src/assets/file-icons/mjml.svg
delete mode 100644 packages/app/src/assets/file-icons/mocha.svg
delete mode 100644 packages/app/src/assets/file-icons/modernizr.svg
delete mode 100644 packages/app/src/assets/file-icons/mojo.svg
delete mode 100644 packages/app/src/assets/file-icons/moon.svg
delete mode 100644 packages/app/src/assets/file-icons/moonscript.svg
delete mode 100644 packages/app/src/assets/file-icons/mxml.svg
delete mode 100644 packages/app/src/assets/file-icons/nano-staged.svg
delete mode 100644 packages/app/src/assets/file-icons/nano-staged_light.svg
delete mode 100644 packages/app/src/assets/file-icons/ndst.svg
delete mode 100644 packages/app/src/assets/file-icons/nest.svg
delete mode 100644 packages/app/src/assets/file-icons/netlify.svg
delete mode 100644 packages/app/src/assets/file-icons/netlify_light.svg
delete mode 100644 packages/app/src/assets/file-icons/next.svg
delete mode 100644 packages/app/src/assets/file-icons/next_light.svg
delete mode 100644 packages/app/src/assets/file-icons/nginx.svg
delete mode 100644 packages/app/src/assets/file-icons/ngrx-actions.svg
delete mode 100644 packages/app/src/assets/file-icons/ngrx-effects.svg
delete mode 100644 packages/app/src/assets/file-icons/ngrx-entity.svg
delete mode 100644 packages/app/src/assets/file-icons/ngrx-reducer.svg
delete mode 100644 packages/app/src/assets/file-icons/ngrx-selectors.svg
delete mode 100644 packages/app/src/assets/file-icons/ngrx-state.svg
delete mode 100644 packages/app/src/assets/file-icons/nim.svg
delete mode 100644 packages/app/src/assets/file-icons/nix.svg
delete mode 100644 packages/app/src/assets/file-icons/nodejs.svg
delete mode 100644 packages/app/src/assets/file-icons/nodejs_alt.svg
delete mode 100644 packages/app/src/assets/file-icons/nodemon.svg
delete mode 100644 packages/app/src/assets/file-icons/npm.svg
delete mode 100644 packages/app/src/assets/file-icons/nuget.svg
delete mode 100644 packages/app/src/assets/file-icons/nunjucks.svg
delete mode 100644 packages/app/src/assets/file-icons/nuxt.svg
delete mode 100644 packages/app/src/assets/file-icons/nx.svg
delete mode 100644 packages/app/src/assets/file-icons/objective-c.svg
delete mode 100644 packages/app/src/assets/file-icons/objective-cpp.svg
delete mode 100644 packages/app/src/assets/file-icons/ocaml.svg
delete mode 100644 packages/app/src/assets/file-icons/odin.svg
delete mode 100644 packages/app/src/assets/file-icons/opa.svg
delete mode 100644 packages/app/src/assets/file-icons/opam.svg
delete mode 100644 packages/app/src/assets/file-icons/openapi.svg
delete mode 100644 packages/app/src/assets/file-icons/openapi_light.svg
delete mode 100644 packages/app/src/assets/file-icons/otne.svg
delete mode 100644 packages/app/src/assets/file-icons/oxlint.svg
delete mode 100644 packages/app/src/assets/file-icons/packship.svg
delete mode 100644 packages/app/src/assets/file-icons/palette.svg
delete mode 100644 packages/app/src/assets/file-icons/panda.svg
delete mode 100644 packages/app/src/assets/file-icons/parcel.svg
delete mode 100644 packages/app/src/assets/file-icons/pascal.svg
delete mode 100644 packages/app/src/assets/file-icons/pawn.svg
delete mode 100644 packages/app/src/assets/file-icons/payload.svg
delete mode 100644 packages/app/src/assets/file-icons/payload_light.svg
delete mode 100644 packages/app/src/assets/file-icons/pdf.svg
delete mode 100644 packages/app/src/assets/file-icons/pdm.svg
delete mode 100644 packages/app/src/assets/file-icons/percy.svg
delete mode 100644 packages/app/src/assets/file-icons/perl.svg
delete mode 100644 packages/app/src/assets/file-icons/php-cs-fixer.svg
delete mode 100644 packages/app/src/assets/file-icons/php.svg
delete mode 100644 packages/app/src/assets/file-icons/php_elephant.svg
delete mode 100644 packages/app/src/assets/file-icons/php_elephant_pink.svg
delete mode 100644 packages/app/src/assets/file-icons/phpstan.svg
delete mode 100644 packages/app/src/assets/file-icons/phpunit.svg
delete mode 100644 packages/app/src/assets/file-icons/pinejs.svg
delete mode 100644 packages/app/src/assets/file-icons/pipeline.svg
delete mode 100644 packages/app/src/assets/file-icons/pkl.svg
delete mode 100644 packages/app/src/assets/file-icons/plastic.svg
delete mode 100644 packages/app/src/assets/file-icons/playwright.svg
delete mode 100644 packages/app/src/assets/file-icons/plop.svg
delete mode 100644 packages/app/src/assets/file-icons/pm2-ecosystem.svg
delete mode 100644 packages/app/src/assets/file-icons/pnpm.svg
delete mode 100644 packages/app/src/assets/file-icons/pnpm_light.svg
delete mode 100644 packages/app/src/assets/file-icons/poetry.svg
delete mode 100644 packages/app/src/assets/file-icons/postcss.svg
delete mode 100644 packages/app/src/assets/file-icons/posthtml.svg
delete mode 100644 packages/app/src/assets/file-icons/powerpoint.svg
delete mode 100644 packages/app/src/assets/file-icons/powershell.svg
delete mode 100644 packages/app/src/assets/file-icons/pre-commit.svg
delete mode 100644 packages/app/src/assets/file-icons/prettier.svg
delete mode 100644 packages/app/src/assets/file-icons/prisma.svg
delete mode 100644 packages/app/src/assets/file-icons/processing.svg
delete mode 100644 packages/app/src/assets/file-icons/prolog.svg
delete mode 100644 packages/app/src/assets/file-icons/prompt.svg
delete mode 100644 packages/app/src/assets/file-icons/proto.svg
delete mode 100644 packages/app/src/assets/file-icons/protractor.svg
delete mode 100644 packages/app/src/assets/file-icons/pug.svg
delete mode 100644 packages/app/src/assets/file-icons/puppet.svg
delete mode 100644 packages/app/src/assets/file-icons/puppeteer.svg
delete mode 100644 packages/app/src/assets/file-icons/purescript.svg
delete mode 100644 packages/app/src/assets/file-icons/python-misc.svg
delete mode 100644 packages/app/src/assets/file-icons/python.svg
delete mode 100644 packages/app/src/assets/file-icons/pytorch.svg
delete mode 100644 packages/app/src/assets/file-icons/qsharp.svg
delete mode 100644 packages/app/src/assets/file-icons/quarto.svg
delete mode 100644 packages/app/src/assets/file-icons/quasar.svg
delete mode 100644 packages/app/src/assets/file-icons/quokka.svg
delete mode 100644 packages/app/src/assets/file-icons/qwik.svg
delete mode 100644 packages/app/src/assets/file-icons/r.svg
delete mode 100644 packages/app/src/assets/file-icons/racket.svg
delete mode 100644 packages/app/src/assets/file-icons/raml.svg
delete mode 100644 packages/app/src/assets/file-icons/razor.svg
delete mode 100644 packages/app/src/assets/file-icons/rbxmk.svg
delete mode 100644 packages/app/src/assets/file-icons/rc.svg
delete mode 100644 packages/app/src/assets/file-icons/react.svg
delete mode 100644 packages/app/src/assets/file-icons/react_ts.svg
delete mode 100644 packages/app/src/assets/file-icons/readme.svg
delete mode 100644 packages/app/src/assets/file-icons/reason.svg
delete mode 100644 packages/app/src/assets/file-icons/red.svg
delete mode 100644 packages/app/src/assets/file-icons/redux-action.svg
delete mode 100644 packages/app/src/assets/file-icons/redux-reducer.svg
delete mode 100644 packages/app/src/assets/file-icons/redux-selector.svg
delete mode 100644 packages/app/src/assets/file-icons/redux-store.svg
delete mode 100644 packages/app/src/assets/file-icons/regedit.svg
delete mode 100644 packages/app/src/assets/file-icons/remark.svg
delete mode 100644 packages/app/src/assets/file-icons/remix.svg
delete mode 100644 packages/app/src/assets/file-icons/remix_light.svg
delete mode 100644 packages/app/src/assets/file-icons/renovate.svg
delete mode 100644 packages/app/src/assets/file-icons/replit.svg
delete mode 100644 packages/app/src/assets/file-icons/rescript-interface.svg
delete mode 100644 packages/app/src/assets/file-icons/rescript.svg
delete mode 100644 packages/app/src/assets/file-icons/restql.svg
delete mode 100644 packages/app/src/assets/file-icons/riot.svg
delete mode 100644 packages/app/src/assets/file-icons/roadmap.svg
delete mode 100644 packages/app/src/assets/file-icons/roblox.svg
delete mode 100644 packages/app/src/assets/file-icons/robot.svg
delete mode 100644 packages/app/src/assets/file-icons/robots.svg
delete mode 100644 packages/app/src/assets/file-icons/rocket.svg
delete mode 100644 packages/app/src/assets/file-icons/rojo.svg
delete mode 100644 packages/app/src/assets/file-icons/rollup.svg
delete mode 100644 packages/app/src/assets/file-icons/rome.svg
delete mode 100644 packages/app/src/assets/file-icons/routing.svg
delete mode 100644 packages/app/src/assets/file-icons/rspec.svg
delete mode 100644 packages/app/src/assets/file-icons/rubocop.svg
delete mode 100644 packages/app/src/assets/file-icons/rubocop_light.svg
delete mode 100644 packages/app/src/assets/file-icons/ruby.svg
delete mode 100644 packages/app/src/assets/file-icons/ruff.svg
delete mode 100644 packages/app/src/assets/file-icons/rust.svg
delete mode 100644 packages/app/src/assets/file-icons/salesforce.svg
delete mode 100644 packages/app/src/assets/file-icons/san.svg
delete mode 100644 packages/app/src/assets/file-icons/sas.svg
delete mode 100644 packages/app/src/assets/file-icons/sass.svg
delete mode 100644 packages/app/src/assets/file-icons/sbt.svg
delete mode 100644 packages/app/src/assets/file-icons/scala.svg
delete mode 100644 packages/app/src/assets/file-icons/scheme.svg
delete mode 100644 packages/app/src/assets/file-icons/scons.svg
delete mode 100644 packages/app/src/assets/file-icons/scons_light.svg
delete mode 100644 packages/app/src/assets/file-icons/screwdriver.svg
delete mode 100644 packages/app/src/assets/file-icons/search.svg
delete mode 100644 packages/app/src/assets/file-icons/semantic-release.svg
delete mode 100644 packages/app/src/assets/file-icons/semantic-release_light.svg
delete mode 100644 packages/app/src/assets/file-icons/semgrep.svg
delete mode 100644 packages/app/src/assets/file-icons/sentry.svg
delete mode 100644 packages/app/src/assets/file-icons/sequelize.svg
delete mode 100644 packages/app/src/assets/file-icons/serverless.svg
delete mode 100644 packages/app/src/assets/file-icons/settings.svg
delete mode 100644 packages/app/src/assets/file-icons/shader.svg
delete mode 100644 packages/app/src/assets/file-icons/silverstripe.svg
delete mode 100644 packages/app/src/assets/file-icons/simulink.svg
delete mode 100644 packages/app/src/assets/file-icons/siyuan.svg
delete mode 100644 packages/app/src/assets/file-icons/sketch.svg
delete mode 100644 packages/app/src/assets/file-icons/slim.svg
delete mode 100644 packages/app/src/assets/file-icons/slint.svg
delete mode 100644 packages/app/src/assets/file-icons/slug.svg
delete mode 100644 packages/app/src/assets/file-icons/smarty.svg
delete mode 100644 packages/app/src/assets/file-icons/sml.svg
delete mode 100644 packages/app/src/assets/file-icons/snakemake.svg
delete mode 100644 packages/app/src/assets/file-icons/snapcraft.svg
delete mode 100644 packages/app/src/assets/file-icons/snowpack.svg
delete mode 100644 packages/app/src/assets/file-icons/snowpack_light.svg
delete mode 100644 packages/app/src/assets/file-icons/snyk.svg
delete mode 100644 packages/app/src/assets/file-icons/solidity.svg
delete mode 100644 packages/app/src/assets/file-icons/sonarcloud.svg
delete mode 100644 packages/app/src/assets/file-icons/spwn.svg
delete mode 100644 packages/app/src/assets/file-icons/stackblitz.svg
delete mode 100644 packages/app/src/assets/file-icons/stan.svg
delete mode 100644 packages/app/src/assets/file-icons/steadybit.svg
delete mode 100644 packages/app/src/assets/file-icons/stencil.svg
delete mode 100644 packages/app/src/assets/file-icons/stitches.svg
delete mode 100644 packages/app/src/assets/file-icons/stitches_light.svg
delete mode 100644 packages/app/src/assets/file-icons/storybook.svg
delete mode 100644 packages/app/src/assets/file-icons/stryker.svg
delete mode 100644 packages/app/src/assets/file-icons/stylable.svg
delete mode 100644 packages/app/src/assets/file-icons/stylelint.svg
delete mode 100644 packages/app/src/assets/file-icons/stylelint_light.svg
delete mode 100644 packages/app/src/assets/file-icons/stylus.svg
delete mode 100644 packages/app/src/assets/file-icons/sublime.svg
delete mode 100644 packages/app/src/assets/file-icons/subtitles.svg
delete mode 100644 packages/app/src/assets/file-icons/supabase.svg
delete mode 100644 packages/app/src/assets/file-icons/svelte.svg
delete mode 100644 packages/app/src/assets/file-icons/svg.svg
delete mode 100644 packages/app/src/assets/file-icons/svgo.svg
delete mode 100644 packages/app/src/assets/file-icons/svgr.svg
delete mode 100644 packages/app/src/assets/file-icons/swagger.svg
delete mode 100644 packages/app/src/assets/file-icons/sway.svg
delete mode 100644 packages/app/src/assets/file-icons/swc.svg
delete mode 100644 packages/app/src/assets/file-icons/swift.svg
delete mode 100644 packages/app/src/assets/file-icons/syncpack.svg
delete mode 100755 packages/app/src/assets/file-icons/systemd.svg
delete mode 100755 packages/app/src/assets/file-icons/systemd_light.svg
delete mode 100644 packages/app/src/assets/file-icons/table.svg
delete mode 100644 packages/app/src/assets/file-icons/tailwindcss.svg
delete mode 100644 packages/app/src/assets/file-icons/taskfile.svg
delete mode 100644 packages/app/src/assets/file-icons/tauri.svg
delete mode 100644 packages/app/src/assets/file-icons/taze.svg
delete mode 100644 packages/app/src/assets/file-icons/tcl.svg
delete mode 100644 packages/app/src/assets/file-icons/teal.svg
delete mode 100644 packages/app/src/assets/file-icons/templ.svg
delete mode 100644 packages/app/src/assets/file-icons/template.svg
delete mode 100644 packages/app/src/assets/file-icons/terraform.svg
delete mode 100644 packages/app/src/assets/file-icons/test-js.svg
delete mode 100644 packages/app/src/assets/file-icons/test-jsx.svg
delete mode 100644 packages/app/src/assets/file-icons/test-ts.svg
delete mode 100644 packages/app/src/assets/file-icons/tex.svg
delete mode 100644 packages/app/src/assets/file-icons/textlint.svg
delete mode 100644 packages/app/src/assets/file-icons/tilt.svg
delete mode 100644 packages/app/src/assets/file-icons/tldraw.svg
delete mode 100644 packages/app/src/assets/file-icons/tldraw_light.svg
delete mode 100644 packages/app/src/assets/file-icons/tobi.svg
delete mode 100644 packages/app/src/assets/file-icons/tobimake.svg
delete mode 100644 packages/app/src/assets/file-icons/todo.svg
delete mode 100644 packages/app/src/assets/file-icons/toml.svg
delete mode 100644 packages/app/src/assets/file-icons/toml_light.svg
delete mode 100644 packages/app/src/assets/file-icons/travis.svg
delete mode 100644 packages/app/src/assets/file-icons/tree.svg
delete mode 100644 packages/app/src/assets/file-icons/trigger.svg
delete mode 100644 packages/app/src/assets/file-icons/tsconfig.svg
delete mode 100644 packages/app/src/assets/file-icons/tsdoc.svg
delete mode 100644 packages/app/src/assets/file-icons/tsil.svg
delete mode 100644 packages/app/src/assets/file-icons/tune.svg
delete mode 100644 packages/app/src/assets/file-icons/turborepo.svg
delete mode 100644 packages/app/src/assets/file-icons/turborepo_light.svg
delete mode 100644 packages/app/src/assets/file-icons/twig.svg
delete mode 100644 packages/app/src/assets/file-icons/twine.svg
delete mode 100644 packages/app/src/assets/file-icons/typescript-def.svg
delete mode 100644 packages/app/src/assets/file-icons/typescript.svg
delete mode 100644 packages/app/src/assets/file-icons/typst.svg
delete mode 100644 packages/app/src/assets/file-icons/umi.svg
delete mode 100644 packages/app/src/assets/file-icons/uml.svg
delete mode 100644 packages/app/src/assets/file-icons/uml_light.svg
delete mode 100644 packages/app/src/assets/file-icons/unity.svg
delete mode 100644 packages/app/src/assets/file-icons/unocss.svg
delete mode 100644 packages/app/src/assets/file-icons/url.svg
delete mode 100644 packages/app/src/assets/file-icons/uv.svg
delete mode 100644 packages/app/src/assets/file-icons/vagrant.svg
delete mode 100644 packages/app/src/assets/file-icons/vala.svg
delete mode 100644 packages/app/src/assets/file-icons/vanilla-extract.svg
delete mode 100644 packages/app/src/assets/file-icons/varnish.svg
delete mode 100644 packages/app/src/assets/file-icons/vedic.svg
delete mode 100644 packages/app/src/assets/file-icons/velite.svg
delete mode 100644 packages/app/src/assets/file-icons/velocity.svg
delete mode 100644 packages/app/src/assets/file-icons/vercel.svg
delete mode 100644 packages/app/src/assets/file-icons/vercel_light.svg
delete mode 100644 packages/app/src/assets/file-icons/verdaccio.svg
delete mode 100644 packages/app/src/assets/file-icons/verified.svg
delete mode 100644 packages/app/src/assets/file-icons/verilog.svg
delete mode 100644 packages/app/src/assets/file-icons/vfl.svg
delete mode 100644 packages/app/src/assets/file-icons/video.svg
delete mode 100644 packages/app/src/assets/file-icons/vim.svg
delete mode 100644 packages/app/src/assets/file-icons/virtual.svg
delete mode 100644 packages/app/src/assets/file-icons/visualstudio.svg
delete mode 100644 packages/app/src/assets/file-icons/vite.svg
delete mode 100644 packages/app/src/assets/file-icons/vitest.svg
delete mode 100644 packages/app/src/assets/file-icons/vlang.svg
delete mode 100644 packages/app/src/assets/file-icons/vscode.svg
delete mode 100644 packages/app/src/assets/file-icons/vue-config.svg
delete mode 100644 packages/app/src/assets/file-icons/vue.svg
delete mode 100644 packages/app/src/assets/file-icons/vuex-store.svg
delete mode 100644 packages/app/src/assets/file-icons/wakatime.svg
delete mode 100644 packages/app/src/assets/file-icons/wakatime_light.svg
delete mode 100644 packages/app/src/assets/file-icons/wallaby.svg
delete mode 100644 packages/app/src/assets/file-icons/wally.svg
delete mode 100644 packages/app/src/assets/file-icons/watchman.svg
delete mode 100644 packages/app/src/assets/file-icons/webassembly.svg
delete mode 100644 packages/app/src/assets/file-icons/webhint.svg
delete mode 100644 packages/app/src/assets/file-icons/webpack.svg
delete mode 100644 packages/app/src/assets/file-icons/wepy.svg
delete mode 100644 packages/app/src/assets/file-icons/werf.svg
delete mode 100644 packages/app/src/assets/file-icons/windicss.svg
delete mode 100644 packages/app/src/assets/file-icons/wolframlanguage.svg
delete mode 100644 packages/app/src/assets/file-icons/word.svg
delete mode 100644 packages/app/src/assets/file-icons/wrangler.svg
delete mode 100644 packages/app/src/assets/file-icons/wxt.svg
delete mode 100644 packages/app/src/assets/file-icons/xaml.svg
delete mode 100644 packages/app/src/assets/file-icons/xmake.svg
delete mode 100644 packages/app/src/assets/file-icons/xml.svg
delete mode 100644 packages/app/src/assets/file-icons/yaml.svg
delete mode 100644 packages/app/src/assets/file-icons/yang.svg
delete mode 100644 packages/app/src/assets/file-icons/yarn.svg
delete mode 100644 packages/app/src/assets/file-icons/zeabur.svg
delete mode 100644 packages/app/src/assets/file-icons/zeabur_light.svg
delete mode 100644 packages/app/src/assets/file-icons/zig.svg
delete mode 100644 packages/app/src/assets/file-icons/zip.svg
delete mode 100644 packages/app/src/components/code.tsx
delete mode 100644 packages/app/src/components/editor-pane.tsx
delete mode 100644 packages/app/src/components/file-tree.tsx
delete mode 100644 packages/app/src/components/markdown.tsx
delete mode 100644 packages/app/src/components/prompt-form.tsx
delete mode 100644 packages/app/src/components/resizeable-pane.tsx
delete mode 100644 packages/app/src/components/select-dialog.tsx
delete mode 100644 packages/app/src/components/select.tsx
delete mode 100644 packages/app/src/components/session-list.tsx
delete mode 100644 packages/app/src/components/session-timeline.tsx
delete mode 100644 packages/app/src/components/sidebar-nav.tsx
delete mode 100644 packages/app/src/context/event.tsx
delete mode 100644 packages/app/src/context/index.ts
delete mode 100644 packages/app/src/context/local.tsx
delete mode 100644 packages/app/src/context/marked.tsx
delete mode 100644 packages/app/src/context/sdk.tsx
delete mode 100644 packages/app/src/context/shiki.tsx
delete mode 100644 packages/app/src/context/sync.tsx
delete mode 100644 packages/app/src/context/theme.tsx
delete mode 100644 packages/app/src/env.d.ts
delete mode 100644 packages/app/src/index.css
delete mode 100644 packages/app/src/index.tsx
delete mode 100644 packages/app/src/pages/index.tsx
delete mode 100644 packages/app/src/pages/layout.tsx
delete mode 100644 packages/app/src/sst-env.d.ts
delete mode 100644 packages/app/src/ui/button.tsx
delete mode 100644 packages/app/src/ui/collapsible.tsx
delete mode 100644 packages/app/src/ui/file-icon.tsx
delete mode 100644 packages/app/src/ui/file-icons/sprite.svg
delete mode 100644 packages/app/src/ui/file-icons/types.ts
delete mode 100644 packages/app/src/ui/icon-button.tsx
delete mode 100644 packages/app/src/ui/icon.tsx
delete mode 100644 packages/app/src/ui/index.ts
delete mode 100644 packages/app/src/ui/link.tsx
delete mode 100644 packages/app/src/ui/logo.tsx
delete mode 100644 packages/app/src/ui/tabs.tsx
delete mode 100644 packages/app/src/ui/tooltip.tsx
delete mode 100644 packages/app/src/utils/binary.ts
delete mode 100644 packages/app/src/utils/dom.ts
delete mode 100644 packages/app/src/utils/index.ts
delete mode 100644 packages/app/src/utils/path.ts
delete mode 100644 packages/app/src/utils/speech.ts
delete mode 100644 packages/app/sst-env.d.ts
delete mode 100644 packages/app/tsconfig.json
delete mode 100644 packages/app/vite.config.ts
create mode 100644 packages/desktop/.gitignore
create mode 100644 packages/desktop/AGENTS.md
create mode 100644 packages/desktop/README.md
create mode 100644 packages/desktop/index.html
create mode 100644 packages/desktop/package.json
create mode 100644 packages/desktop/scripts/vite-theme-plugin.ts
create mode 100644 packages/desktop/src/assets/favicon.svg
create mode 100644 packages/desktop/src/assets/file-icons/3d.svg
create mode 100644 packages/desktop/src/assets/file-icons/abap.svg
create mode 100644 packages/desktop/src/assets/file-icons/abc.svg
create mode 100644 packages/desktop/src/assets/file-icons/actionscript.svg
create mode 100644 packages/desktop/src/assets/file-icons/ada.svg
create mode 100644 packages/desktop/src/assets/file-icons/adobe-illustrator.svg
create mode 100644 packages/desktop/src/assets/file-icons/adobe-illustrator_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/adobe-photoshop.svg
create mode 100644 packages/desktop/src/assets/file-icons/adobe-photoshop_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/adobe-swc.svg
create mode 100644 packages/desktop/src/assets/file-icons/adonis.svg
create mode 100644 packages/desktop/src/assets/file-icons/advpl.svg
create mode 100644 packages/desktop/src/assets/file-icons/amplify.svg
create mode 100644 packages/desktop/src/assets/file-icons/android.svg
create mode 100644 packages/desktop/src/assets/file-icons/angular.svg
create mode 100644 packages/desktop/src/assets/file-icons/antlr.svg
create mode 100644 packages/desktop/src/assets/file-icons/apiblueprint.svg
create mode 100644 packages/desktop/src/assets/file-icons/apollo.svg
create mode 100644 packages/desktop/src/assets/file-icons/applescript.svg
create mode 100644 packages/desktop/src/assets/file-icons/apps-script.svg
create mode 100644 packages/desktop/src/assets/file-icons/appveyor.svg
create mode 100644 packages/desktop/src/assets/file-icons/architecture.svg
create mode 100644 packages/desktop/src/assets/file-icons/arduino.svg
create mode 100644 packages/desktop/src/assets/file-icons/asciidoc.svg
create mode 100644 packages/desktop/src/assets/file-icons/assembly.svg
create mode 100644 packages/desktop/src/assets/file-icons/astro-config.svg
create mode 100644 packages/desktop/src/assets/file-icons/astro.svg
create mode 100644 packages/desktop/src/assets/file-icons/astyle.svg
create mode 100644 packages/desktop/src/assets/file-icons/audio.svg
create mode 100644 packages/desktop/src/assets/file-icons/aurelia.svg
create mode 100644 packages/desktop/src/assets/file-icons/authors.svg
create mode 100644 packages/desktop/src/assets/file-icons/auto.svg
create mode 100644 packages/desktop/src/assets/file-icons/auto_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/autohotkey.svg
create mode 100644 packages/desktop/src/assets/file-icons/autoit.svg
create mode 100644 packages/desktop/src/assets/file-icons/azure-pipelines.svg
create mode 100644 packages/desktop/src/assets/file-icons/azure.svg
create mode 100644 packages/desktop/src/assets/file-icons/babel.svg
create mode 100644 packages/desktop/src/assets/file-icons/ballerina.svg
create mode 100644 packages/desktop/src/assets/file-icons/bazel.svg
create mode 100644 packages/desktop/src/assets/file-icons/bbx.svg
create mode 100644 packages/desktop/src/assets/file-icons/beancount.svg
create mode 100644 packages/desktop/src/assets/file-icons/bench-js.svg
create mode 100644 packages/desktop/src/assets/file-icons/bench-jsx.svg
create mode 100644 packages/desktop/src/assets/file-icons/bench-ts.svg
create mode 100644 packages/desktop/src/assets/file-icons/bibliography.svg
create mode 100644 packages/desktop/src/assets/file-icons/bibtex-style.svg
create mode 100644 packages/desktop/src/assets/file-icons/bicep.svg
create mode 100644 packages/desktop/src/assets/file-icons/biome.svg
create mode 100644 packages/desktop/src/assets/file-icons/bitbucket.svg
create mode 100644 packages/desktop/src/assets/file-icons/bithound.svg
create mode 100644 packages/desktop/src/assets/file-icons/blender.svg
create mode 100644 packages/desktop/src/assets/file-icons/blink.svg
create mode 100644 packages/desktop/src/assets/file-icons/blink_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/blitz.svg
create mode 100644 packages/desktop/src/assets/file-icons/bower.svg
create mode 100644 packages/desktop/src/assets/file-icons/brainfuck.svg
create mode 100644 packages/desktop/src/assets/file-icons/browserlist.svg
create mode 100644 packages/desktop/src/assets/file-icons/browserlist_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/bruno.svg
create mode 100644 packages/desktop/src/assets/file-icons/buck.svg
create mode 100644 packages/desktop/src/assets/file-icons/bucklescript.svg
create mode 100644 packages/desktop/src/assets/file-icons/buildkite.svg
create mode 100644 packages/desktop/src/assets/file-icons/bun.svg
create mode 100644 packages/desktop/src/assets/file-icons/bun_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/c.svg
create mode 100644 packages/desktop/src/assets/file-icons/c3.svg
create mode 100644 packages/desktop/src/assets/file-icons/cabal.svg
create mode 100644 packages/desktop/src/assets/file-icons/caddy.svg
create mode 100644 packages/desktop/src/assets/file-icons/cadence.svg
create mode 100644 packages/desktop/src/assets/file-icons/cairo.svg
create mode 100644 packages/desktop/src/assets/file-icons/cake.svg
create mode 100644 packages/desktop/src/assets/file-icons/capacitor.svg
create mode 100644 packages/desktop/src/assets/file-icons/capnp.svg
create mode 100644 packages/desktop/src/assets/file-icons/cbx.svg
create mode 100644 packages/desktop/src/assets/file-icons/cds.svg
create mode 100644 packages/desktop/src/assets/file-icons/certificate.svg
create mode 100644 packages/desktop/src/assets/file-icons/changelog.svg
create mode 100644 packages/desktop/src/assets/file-icons/chess.svg
create mode 100644 packages/desktop/src/assets/file-icons/chess_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/chrome.svg
create mode 100644 packages/desktop/src/assets/file-icons/circleci.svg
create mode 100644 packages/desktop/src/assets/file-icons/circleci_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/citation.svg
create mode 100644 packages/desktop/src/assets/file-icons/clangd.svg
create mode 100644 packages/desktop/src/assets/file-icons/claude.svg
create mode 100644 packages/desktop/src/assets/file-icons/cline.svg
create mode 100644 packages/desktop/src/assets/file-icons/clojure.svg
create mode 100644 packages/desktop/src/assets/file-icons/cloudfoundry.svg
create mode 100644 packages/desktop/src/assets/file-icons/cmake.svg
create mode 100644 packages/desktop/src/assets/file-icons/coala.svg
create mode 100644 packages/desktop/src/assets/file-icons/cobol.svg
create mode 100644 packages/desktop/src/assets/file-icons/coconut.svg
create mode 100644 packages/desktop/src/assets/file-icons/code-climate.svg
create mode 100644 packages/desktop/src/assets/file-icons/code-climate_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/codecov.svg
create mode 100644 packages/desktop/src/assets/file-icons/codeowners.svg
create mode 100644 packages/desktop/src/assets/file-icons/coderabbit-ai.svg
create mode 100644 packages/desktop/src/assets/file-icons/coffee.svg
create mode 100644 packages/desktop/src/assets/file-icons/coldfusion.svg
create mode 100644 packages/desktop/src/assets/file-icons/coloredpetrinets.svg
create mode 100644 packages/desktop/src/assets/file-icons/command.svg
create mode 100644 packages/desktop/src/assets/file-icons/commitizen.svg
create mode 100644 packages/desktop/src/assets/file-icons/commitlint.svg
create mode 100644 packages/desktop/src/assets/file-icons/concourse.svg
create mode 100644 packages/desktop/src/assets/file-icons/conduct.svg
create mode 100644 packages/desktop/src/assets/file-icons/console.svg
create mode 100644 packages/desktop/src/assets/file-icons/contentlayer.svg
create mode 100644 packages/desktop/src/assets/file-icons/context.svg
create mode 100644 packages/desktop/src/assets/file-icons/contributing.svg
create mode 100644 packages/desktop/src/assets/file-icons/controller.svg
create mode 100644 packages/desktop/src/assets/file-icons/copilot.svg
create mode 100644 packages/desktop/src/assets/file-icons/copilot_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/cpp.svg
create mode 100644 packages/desktop/src/assets/file-icons/craco.svg
create mode 100644 packages/desktop/src/assets/file-icons/credits.svg
create mode 100644 packages/desktop/src/assets/file-icons/crystal.svg
create mode 100644 packages/desktop/src/assets/file-icons/crystal_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/csharp.svg
create mode 100644 packages/desktop/src/assets/file-icons/css-map.svg
create mode 100644 packages/desktop/src/assets/file-icons/css.svg
create mode 100644 packages/desktop/src/assets/file-icons/cucumber.svg
create mode 100644 packages/desktop/src/assets/file-icons/cuda.svg
create mode 100644 packages/desktop/src/assets/file-icons/cursor.svg
create mode 100644 packages/desktop/src/assets/file-icons/cursor_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/cypress.svg
create mode 100644 packages/desktop/src/assets/file-icons/d.svg
create mode 100644 packages/desktop/src/assets/file-icons/dart.svg
create mode 100644 packages/desktop/src/assets/file-icons/dart_generated.svg
create mode 100644 packages/desktop/src/assets/file-icons/database.svg
create mode 100644 packages/desktop/src/assets/file-icons/deepsource.svg
create mode 100644 packages/desktop/src/assets/file-icons/denizenscript.svg
create mode 100644 packages/desktop/src/assets/file-icons/deno.svg
create mode 100644 packages/desktop/src/assets/file-icons/deno_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/dependabot.svg
create mode 100644 packages/desktop/src/assets/file-icons/dependencies-update.svg
create mode 100644 packages/desktop/src/assets/file-icons/dhall.svg
create mode 100644 packages/desktop/src/assets/file-icons/diff.svg
create mode 100644 packages/desktop/src/assets/file-icons/dinophp.svg
create mode 100644 packages/desktop/src/assets/file-icons/disc.svg
create mode 100644 packages/desktop/src/assets/file-icons/django.svg
create mode 100644 packages/desktop/src/assets/file-icons/dll.svg
create mode 100644 packages/desktop/src/assets/file-icons/docker.svg
create mode 100644 packages/desktop/src/assets/file-icons/doctex-installer.svg
create mode 100644 packages/desktop/src/assets/file-icons/document.svg
create mode 100644 packages/desktop/src/assets/file-icons/dotjs.svg
create mode 100644 packages/desktop/src/assets/file-icons/drawio.svg
create mode 100644 packages/desktop/src/assets/file-icons/drizzle.svg
create mode 100644 packages/desktop/src/assets/file-icons/drone.svg
create mode 100644 packages/desktop/src/assets/file-icons/drone_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/duc.svg
create mode 100644 packages/desktop/src/assets/file-icons/dune.svg
create mode 100644 packages/desktop/src/assets/file-icons/edge.svg
create mode 100644 packages/desktop/src/assets/file-icons/editorconfig.svg
create mode 100644 packages/desktop/src/assets/file-icons/ejs.svg
create mode 100644 packages/desktop/src/assets/file-icons/elixir.svg
create mode 100644 packages/desktop/src/assets/file-icons/elm.svg
create mode 100644 packages/desktop/src/assets/file-icons/email.svg
create mode 100644 packages/desktop/src/assets/file-icons/ember.svg
create mode 100644 packages/desktop/src/assets/file-icons/epub.svg
create mode 100644 packages/desktop/src/assets/file-icons/erlang.svg
create mode 100644 packages/desktop/src/assets/file-icons/esbuild.svg
create mode 100644 packages/desktop/src/assets/file-icons/eslint.svg
create mode 100644 packages/desktop/src/assets/file-icons/excalidraw.svg
create mode 100644 packages/desktop/src/assets/file-icons/exe.svg
create mode 100644 packages/desktop/src/assets/file-icons/fastlane.svg
create mode 100644 packages/desktop/src/assets/file-icons/favicon.svg
create mode 100644 packages/desktop/src/assets/file-icons/figma.svg
create mode 100644 packages/desktop/src/assets/file-icons/firebase.svg
create mode 100644 packages/desktop/src/assets/file-icons/flash.svg
create mode 100644 packages/desktop/src/assets/file-icons/flow.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-admin-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-admin.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-android-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-android.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-angular-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-angular.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-animation-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-animation.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-ansible-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-ansible.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-api-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-api.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-apollo-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-apollo.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-app-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-app.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-archive-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-archive.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-astro-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-astro.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-atom-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-atom.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-attachment-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-attachment.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-audio-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-audio.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-aurelia-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-aurelia.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-aws-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-aws.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-azure-pipelines-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-azure-pipelines.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-backup-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-backup.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-base-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-base.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-batch-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-batch.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-benchmark-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-benchmark.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-bibliography-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-bibliography.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-bicep-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-bicep.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-blender-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-blender.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-bloc-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-bloc.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-bower-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-bower.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-buildkite-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-buildkite.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cart-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cart.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-changesets-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-changesets.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-ci-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-ci.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-circleci-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-circleci.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-class-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-class.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-claude-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-claude.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-client-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-client.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cline-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cline.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cloud-functions-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cloud-functions.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cloudflare-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cloudflare.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cluster-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cluster.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cobol-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cobol.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-command-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-command.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-components-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-components.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-config-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-config.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-connection-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-connection.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-console-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-console.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-constant-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-constant.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-container-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-container.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-content-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-content.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-context-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-context.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-contract-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-contract.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-controller-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-controller.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-core-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-core.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-coverage-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-coverage.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-css-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-css.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cursor-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cursor-open_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cursor.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cursor_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-custom-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-custom.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cypress-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-cypress.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-dart-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-dart.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-database-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-database.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-debug-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-debug.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-decorators-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-decorators.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-delta-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-delta.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-desktop-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-desktop.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-directive-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-directive.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-dist-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-dist.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-docker-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-docker.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-docs-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-docs.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-download-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-download.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-drizzle-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-drizzle.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-dump-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-dump.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-element-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-element.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-enum-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-enum.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-environment-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-environment.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-error-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-error.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-event-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-event.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-examples-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-examples.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-expo-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-expo.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-export-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-export.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-fastlane-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-fastlane.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-favicon-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-favicon.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-firebase-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-firebase.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-firestore-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-firestore.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-flow-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-flow.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-flutter-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-flutter.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-font-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-font.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-forgejo-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-forgejo.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-functions-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-functions.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-gamemaker-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-gamemaker.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-generator-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-generator.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-gh-workflows-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-gh-workflows.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-git-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-git.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-gitea-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-gitea.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-github-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-github.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-gitlab-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-gitlab.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-global-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-global.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-godot-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-godot.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-gradle-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-gradle.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-graphql-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-graphql.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-guard-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-guard.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-gulp-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-gulp.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-helm-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-helm.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-helper-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-helper.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-home-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-home.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-hook-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-hook.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-husky-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-husky.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-i18n-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-i18n.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-images-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-images.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-import-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-import.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-include-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-include.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-intellij-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-intellij-open_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-intellij.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-intellij_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-interceptor-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-interceptor.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-interface-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-interface.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-ios-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-ios.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-java-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-java.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-javascript-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-javascript.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-jinja-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-jinja-open_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-jinja.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-jinja_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-job-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-job.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-json-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-json.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-jupyter-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-jupyter.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-keys-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-keys.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-kubernetes-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-kubernetes.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-kusto-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-kusto.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-layout-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-layout.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-lefthook-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-lefthook.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-less-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-less.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-lib-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-lib.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-link-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-link.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-linux-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-linux.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-liquibase-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-liquibase.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-log-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-log.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-lottie-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-lottie.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-lua-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-lua.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-luau-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-luau.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-macos-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-macos.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-mail-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-mail.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-mappings-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-mappings.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-markdown-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-markdown.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-mercurial-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-mercurial.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-messages-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-messages.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-meta-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-meta.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-middleware-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-middleware.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-mjml-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-mjml.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-mobile-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-mobile.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-mock-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-mock.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-mojo-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-mojo.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-molecule-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-molecule.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-moon-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-moon.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-netlify-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-netlify.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-next-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-next.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-ngrx-store-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-ngrx-store.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-node-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-node.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-nuxt-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-nuxt.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-obsidian-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-obsidian.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-organism-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-organism.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-other-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-other.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-packages-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-packages.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-pdf-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-pdf.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-pdm-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-pdm.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-php-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-php.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-phpmailer-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-phpmailer.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-pipe-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-pipe.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-plastic-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-plastic.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-plugin-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-plugin.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-policy-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-policy.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-powershell-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-powershell.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-prisma-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-prisma.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-private-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-private.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-project-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-project.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-prompts-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-prompts.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-proto-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-proto.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-public-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-public.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-python-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-python.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-pytorch-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-pytorch.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-quasar-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-quasar.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-queue-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-queue.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-react-components-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-react-components.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-redux-reducer-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-redux-reducer.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-repository-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-repository.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-resolver-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-resolver.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-resource-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-resource.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-review-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-review.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-robot-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-robot.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-routes-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-routes.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-rules-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-rules.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-rust-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-rust.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-sandbox-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-sandbox.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-sass-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-sass.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-scala-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-scala.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-scons-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-scons.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-scripts-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-scripts.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-secure-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-secure.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-seeders-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-seeders.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-server-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-server.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-serverless-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-serverless.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-shader-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-shader.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-shared-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-shared.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-snapcraft-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-snapcraft.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-snippet-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-snippet.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-src-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-src-tauri-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-src-tauri.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-src.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-stack-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-stack.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-stencil-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-stencil.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-store-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-store.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-storybook-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-storybook.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-stylus-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-stylus.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-sublime-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-sublime.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-supabase-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-supabase.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-svelte-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-svelte.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-svg-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-svg.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-syntax-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-syntax.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-target-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-target.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-taskfile-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-taskfile.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-tasks-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-tasks.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-television-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-television.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-temp-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-temp.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-template-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-template.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-terraform-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-terraform.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-test-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-test.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-theme-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-theme.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-tools-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-tools.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-trash-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-trash.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-trigger-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-trigger.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-turborepo-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-turborepo.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-typescript-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-typescript.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-ui-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-ui.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-unity-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-unity.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-update-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-update.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-upload-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-upload.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-utils-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-utils.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-vercel-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-vercel.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-verdaccio-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-verdaccio.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-video-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-video.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-views-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-views.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-vm-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-vm.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-vscode-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-vscode.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-vue-directives-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-vue-directives.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-vue-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-vue.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-vuepress-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-vuepress.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-vuex-store-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-vuex-store.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-wakatime-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-wakatime.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-webpack-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-webpack.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-windows-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-windows.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-wordpress-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-wordpress.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-yarn-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-yarn.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-zeabur-open.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder-zeabur.svg
create mode 100644 packages/desktop/src/assets/file-icons/folder.svg
create mode 100644 packages/desktop/src/assets/file-icons/font.svg
create mode 100644 packages/desktop/src/assets/file-icons/forth.svg
create mode 100644 packages/desktop/src/assets/file-icons/fortran.svg
create mode 100644 packages/desktop/src/assets/file-icons/foxpro.svg
create mode 100644 packages/desktop/src/assets/file-icons/freemarker.svg
create mode 100644 packages/desktop/src/assets/file-icons/fsharp.svg
create mode 100644 packages/desktop/src/assets/file-icons/fusebox.svg
create mode 100644 packages/desktop/src/assets/file-icons/gamemaker.svg
create mode 100644 packages/desktop/src/assets/file-icons/garden.svg
create mode 100644 packages/desktop/src/assets/file-icons/gatsby.svg
create mode 100644 packages/desktop/src/assets/file-icons/gcp.svg
create mode 100644 packages/desktop/src/assets/file-icons/gemfile.svg
create mode 100644 packages/desktop/src/assets/file-icons/gemini-ai.svg
create mode 100644 packages/desktop/src/assets/file-icons/gemini.svg
create mode 100644 packages/desktop/src/assets/file-icons/git.svg
create mode 100644 packages/desktop/src/assets/file-icons/github-actions-workflow.svg
create mode 100644 packages/desktop/src/assets/file-icons/github-sponsors.svg
create mode 100644 packages/desktop/src/assets/file-icons/gitlab.svg
create mode 100644 packages/desktop/src/assets/file-icons/gitpod.svg
create mode 100644 packages/desktop/src/assets/file-icons/gleam.svg
create mode 100644 packages/desktop/src/assets/file-icons/gnuplot.svg
create mode 100644 packages/desktop/src/assets/file-icons/go-mod.svg
create mode 100644 packages/desktop/src/assets/file-icons/go.svg
create mode 100644 packages/desktop/src/assets/file-icons/go_gopher.svg
create mode 100644 packages/desktop/src/assets/file-icons/godot-assets.svg
create mode 100644 packages/desktop/src/assets/file-icons/godot.svg
create mode 100644 packages/desktop/src/assets/file-icons/gradle.svg
create mode 100644 packages/desktop/src/assets/file-icons/grafana-alloy.svg
create mode 100644 packages/desktop/src/assets/file-icons/grain.svg
create mode 100644 packages/desktop/src/assets/file-icons/graphcool.svg
create mode 100644 packages/desktop/src/assets/file-icons/graphql.svg
create mode 100644 packages/desktop/src/assets/file-icons/gridsome.svg
create mode 100644 packages/desktop/src/assets/file-icons/groovy.svg
create mode 100644 packages/desktop/src/assets/file-icons/grunt.svg
create mode 100644 packages/desktop/src/assets/file-icons/gulp.svg
create mode 100644 packages/desktop/src/assets/file-icons/h.svg
create mode 100644 packages/desktop/src/assets/file-icons/hack.svg
create mode 100644 packages/desktop/src/assets/file-icons/hadolint.svg
create mode 100644 packages/desktop/src/assets/file-icons/haml.svg
create mode 100644 packages/desktop/src/assets/file-icons/handlebars.svg
create mode 100644 packages/desktop/src/assets/file-icons/hardhat.svg
create mode 100644 packages/desktop/src/assets/file-icons/harmonix.svg
create mode 100644 packages/desktop/src/assets/file-icons/haskell.svg
create mode 100644 packages/desktop/src/assets/file-icons/haxe.svg
create mode 100644 packages/desktop/src/assets/file-icons/hcl.svg
create mode 100644 packages/desktop/src/assets/file-icons/hcl_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/helm.svg
create mode 100644 packages/desktop/src/assets/file-icons/heroku.svg
create mode 100644 packages/desktop/src/assets/file-icons/hex.svg
create mode 100644 packages/desktop/src/assets/file-icons/histoire.svg
create mode 100644 packages/desktop/src/assets/file-icons/hjson.svg
create mode 100644 packages/desktop/src/assets/file-icons/horusec.svg
create mode 100644 packages/desktop/src/assets/file-icons/hosts.svg
create mode 100644 packages/desktop/src/assets/file-icons/hosts_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/hpp.svg
create mode 100644 packages/desktop/src/assets/file-icons/html.svg
create mode 100644 packages/desktop/src/assets/file-icons/http.svg
create mode 100644 packages/desktop/src/assets/file-icons/huff.svg
create mode 100644 packages/desktop/src/assets/file-icons/huff_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/hurl.svg
create mode 100644 packages/desktop/src/assets/file-icons/husky.svg
create mode 100644 packages/desktop/src/assets/file-icons/i18n.svg
create mode 100644 packages/desktop/src/assets/file-icons/idris.svg
create mode 100644 packages/desktop/src/assets/file-icons/ifanr-cloud.svg
create mode 100644 packages/desktop/src/assets/file-icons/image.svg
create mode 100644 packages/desktop/src/assets/file-icons/imba.svg
create mode 100644 packages/desktop/src/assets/file-icons/installation.svg
create mode 100644 packages/desktop/src/assets/file-icons/ionic.svg
create mode 100644 packages/desktop/src/assets/file-icons/istanbul.svg
create mode 100644 packages/desktop/src/assets/file-icons/jar.svg
create mode 100644 packages/desktop/src/assets/file-icons/java.svg
create mode 100644 packages/desktop/src/assets/file-icons/javaclass.svg
create mode 100644 packages/desktop/src/assets/file-icons/javascript-map.svg
create mode 100644 packages/desktop/src/assets/file-icons/javascript.svg
create mode 100644 packages/desktop/src/assets/file-icons/jenkins.svg
create mode 100644 packages/desktop/src/assets/file-icons/jest.svg
create mode 100644 packages/desktop/src/assets/file-icons/jinja.svg
create mode 100644 packages/desktop/src/assets/file-icons/jinja_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/jsconfig.svg
create mode 100644 packages/desktop/src/assets/file-icons/json.svg
create mode 100644 packages/desktop/src/assets/file-icons/jsr.svg
create mode 100644 packages/desktop/src/assets/file-icons/jsr_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/julia.svg
create mode 100644 packages/desktop/src/assets/file-icons/jupyter.svg
create mode 100644 packages/desktop/src/assets/file-icons/just.svg
create mode 100644 packages/desktop/src/assets/file-icons/karma.svg
create mode 100644 packages/desktop/src/assets/file-icons/kcl.svg
create mode 100644 packages/desktop/src/assets/file-icons/key.svg
create mode 100644 packages/desktop/src/assets/file-icons/keystatic.svg
create mode 100644 packages/desktop/src/assets/file-icons/kivy.svg
create mode 100644 packages/desktop/src/assets/file-icons/kl.svg
create mode 100644 packages/desktop/src/assets/file-icons/knip.svg
create mode 100644 packages/desktop/src/assets/file-icons/kotlin.svg
create mode 100644 packages/desktop/src/assets/file-icons/kubernetes.svg
create mode 100644 packages/desktop/src/assets/file-icons/kusto.svg
create mode 100644 packages/desktop/src/assets/file-icons/label.svg
create mode 100644 packages/desktop/src/assets/file-icons/laravel.svg
create mode 100644 packages/desktop/src/assets/file-icons/latexmk.svg
create mode 100644 packages/desktop/src/assets/file-icons/lbx.svg
create mode 100644 packages/desktop/src/assets/file-icons/lefthook.svg
create mode 100644 packages/desktop/src/assets/file-icons/lerna.svg
create mode 100644 packages/desktop/src/assets/file-icons/less.svg
create mode 100644 packages/desktop/src/assets/file-icons/liara.svg
create mode 100644 packages/desktop/src/assets/file-icons/lib.svg
create mode 100644 packages/desktop/src/assets/file-icons/lighthouse.svg
create mode 100644 packages/desktop/src/assets/file-icons/lilypond.svg
create mode 100644 packages/desktop/src/assets/file-icons/lintstaged.svg
create mode 100644 packages/desktop/src/assets/file-icons/liquid.svg
create mode 100644 packages/desktop/src/assets/file-icons/lisp.svg
create mode 100644 packages/desktop/src/assets/file-icons/livescript.svg
create mode 100644 packages/desktop/src/assets/file-icons/lock.svg
create mode 100644 packages/desktop/src/assets/file-icons/log.svg
create mode 100644 packages/desktop/src/assets/file-icons/lolcode.svg
create mode 100644 packages/desktop/src/assets/file-icons/lottie.svg
create mode 100644 packages/desktop/src/assets/file-icons/lua.svg
create mode 100644 packages/desktop/src/assets/file-icons/luau.svg
create mode 100644 packages/desktop/src/assets/file-icons/lyric.svg
create mode 100644 packages/desktop/src/assets/file-icons/makefile.svg
create mode 100644 packages/desktop/src/assets/file-icons/markdoc-config.svg
create mode 100644 packages/desktop/src/assets/file-icons/markdoc.svg
create mode 100644 packages/desktop/src/assets/file-icons/markdown.svg
create mode 100644 packages/desktop/src/assets/file-icons/markdownlint.svg
create mode 100644 packages/desktop/src/assets/file-icons/markojs.svg
create mode 100644 packages/desktop/src/assets/file-icons/mathematica.svg
create mode 100644 packages/desktop/src/assets/file-icons/matlab.svg
create mode 100644 packages/desktop/src/assets/file-icons/maven.svg
create mode 100644 packages/desktop/src/assets/file-icons/mdsvex.svg
create mode 100644 packages/desktop/src/assets/file-icons/mdx.svg
create mode 100644 packages/desktop/src/assets/file-icons/mercurial.svg
create mode 100644 packages/desktop/src/assets/file-icons/merlin.svg
create mode 100644 packages/desktop/src/assets/file-icons/mermaid.svg
create mode 100644 packages/desktop/src/assets/file-icons/meson.svg
create mode 100644 packages/desktop/src/assets/file-icons/minecraft-fabric.svg
create mode 100644 packages/desktop/src/assets/file-icons/minecraft.svg
create mode 100644 packages/desktop/src/assets/file-icons/mint.svg
create mode 100644 packages/desktop/src/assets/file-icons/mjml.svg
create mode 100644 packages/desktop/src/assets/file-icons/mocha.svg
create mode 100644 packages/desktop/src/assets/file-icons/modernizr.svg
create mode 100644 packages/desktop/src/assets/file-icons/mojo.svg
create mode 100644 packages/desktop/src/assets/file-icons/moon.svg
create mode 100644 packages/desktop/src/assets/file-icons/moonscript.svg
create mode 100644 packages/desktop/src/assets/file-icons/mxml.svg
create mode 100644 packages/desktop/src/assets/file-icons/nano-staged.svg
create mode 100644 packages/desktop/src/assets/file-icons/nano-staged_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/ndst.svg
create mode 100644 packages/desktop/src/assets/file-icons/nest.svg
create mode 100644 packages/desktop/src/assets/file-icons/netlify.svg
create mode 100644 packages/desktop/src/assets/file-icons/netlify_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/next.svg
create mode 100644 packages/desktop/src/assets/file-icons/next_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/nginx.svg
create mode 100644 packages/desktop/src/assets/file-icons/ngrx-actions.svg
create mode 100644 packages/desktop/src/assets/file-icons/ngrx-effects.svg
create mode 100644 packages/desktop/src/assets/file-icons/ngrx-entity.svg
create mode 100644 packages/desktop/src/assets/file-icons/ngrx-reducer.svg
create mode 100644 packages/desktop/src/assets/file-icons/ngrx-selectors.svg
create mode 100644 packages/desktop/src/assets/file-icons/ngrx-state.svg
create mode 100644 packages/desktop/src/assets/file-icons/nim.svg
create mode 100644 packages/desktop/src/assets/file-icons/nix.svg
create mode 100644 packages/desktop/src/assets/file-icons/nodejs.svg
create mode 100644 packages/desktop/src/assets/file-icons/nodejs_alt.svg
create mode 100644 packages/desktop/src/assets/file-icons/nodemon.svg
create mode 100644 packages/desktop/src/assets/file-icons/npm.svg
create mode 100644 packages/desktop/src/assets/file-icons/nuget.svg
create mode 100644 packages/desktop/src/assets/file-icons/nunjucks.svg
create mode 100644 packages/desktop/src/assets/file-icons/nuxt.svg
create mode 100644 packages/desktop/src/assets/file-icons/nx.svg
create mode 100644 packages/desktop/src/assets/file-icons/objective-c.svg
create mode 100644 packages/desktop/src/assets/file-icons/objective-cpp.svg
create mode 100644 packages/desktop/src/assets/file-icons/ocaml.svg
create mode 100644 packages/desktop/src/assets/file-icons/odin.svg
create mode 100644 packages/desktop/src/assets/file-icons/opa.svg
create mode 100644 packages/desktop/src/assets/file-icons/opam.svg
create mode 100644 packages/desktop/src/assets/file-icons/openapi.svg
create mode 100644 packages/desktop/src/assets/file-icons/openapi_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/otne.svg
create mode 100644 packages/desktop/src/assets/file-icons/oxlint.svg
create mode 100644 packages/desktop/src/assets/file-icons/packship.svg
create mode 100644 packages/desktop/src/assets/file-icons/palette.svg
create mode 100644 packages/desktop/src/assets/file-icons/panda.svg
create mode 100644 packages/desktop/src/assets/file-icons/parcel.svg
create mode 100644 packages/desktop/src/assets/file-icons/pascal.svg
create mode 100644 packages/desktop/src/assets/file-icons/pawn.svg
create mode 100644 packages/desktop/src/assets/file-icons/payload.svg
create mode 100644 packages/desktop/src/assets/file-icons/payload_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/pdf.svg
create mode 100644 packages/desktop/src/assets/file-icons/pdm.svg
create mode 100644 packages/desktop/src/assets/file-icons/percy.svg
create mode 100644 packages/desktop/src/assets/file-icons/perl.svg
create mode 100644 packages/desktop/src/assets/file-icons/php-cs-fixer.svg
create mode 100644 packages/desktop/src/assets/file-icons/php.svg
create mode 100644 packages/desktop/src/assets/file-icons/php_elephant.svg
create mode 100644 packages/desktop/src/assets/file-icons/php_elephant_pink.svg
create mode 100644 packages/desktop/src/assets/file-icons/phpstan.svg
create mode 100644 packages/desktop/src/assets/file-icons/phpunit.svg
create mode 100644 packages/desktop/src/assets/file-icons/pinejs.svg
create mode 100644 packages/desktop/src/assets/file-icons/pipeline.svg
create mode 100644 packages/desktop/src/assets/file-icons/pkl.svg
create mode 100644 packages/desktop/src/assets/file-icons/plastic.svg
create mode 100644 packages/desktop/src/assets/file-icons/playwright.svg
create mode 100644 packages/desktop/src/assets/file-icons/plop.svg
create mode 100644 packages/desktop/src/assets/file-icons/pm2-ecosystem.svg
create mode 100644 packages/desktop/src/assets/file-icons/pnpm.svg
create mode 100644 packages/desktop/src/assets/file-icons/pnpm_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/poetry.svg
create mode 100644 packages/desktop/src/assets/file-icons/postcss.svg
create mode 100644 packages/desktop/src/assets/file-icons/posthtml.svg
create mode 100644 packages/desktop/src/assets/file-icons/powerpoint.svg
create mode 100644 packages/desktop/src/assets/file-icons/powershell.svg
create mode 100644 packages/desktop/src/assets/file-icons/pre-commit.svg
create mode 100644 packages/desktop/src/assets/file-icons/prettier.svg
create mode 100644 packages/desktop/src/assets/file-icons/prisma.svg
create mode 100644 packages/desktop/src/assets/file-icons/processing.svg
create mode 100644 packages/desktop/src/assets/file-icons/prolog.svg
create mode 100644 packages/desktop/src/assets/file-icons/prompt.svg
create mode 100644 packages/desktop/src/assets/file-icons/proto.svg
create mode 100644 packages/desktop/src/assets/file-icons/protractor.svg
create mode 100644 packages/desktop/src/assets/file-icons/pug.svg
create mode 100644 packages/desktop/src/assets/file-icons/puppet.svg
create mode 100644 packages/desktop/src/assets/file-icons/puppeteer.svg
create mode 100644 packages/desktop/src/assets/file-icons/purescript.svg
create mode 100644 packages/desktop/src/assets/file-icons/python-misc.svg
create mode 100644 packages/desktop/src/assets/file-icons/python.svg
create mode 100644 packages/desktop/src/assets/file-icons/pytorch.svg
create mode 100644 packages/desktop/src/assets/file-icons/qsharp.svg
create mode 100644 packages/desktop/src/assets/file-icons/quarto.svg
create mode 100644 packages/desktop/src/assets/file-icons/quasar.svg
create mode 100644 packages/desktop/src/assets/file-icons/quokka.svg
create mode 100644 packages/desktop/src/assets/file-icons/qwik.svg
create mode 100644 packages/desktop/src/assets/file-icons/r.svg
create mode 100644 packages/desktop/src/assets/file-icons/racket.svg
create mode 100644 packages/desktop/src/assets/file-icons/raml.svg
create mode 100644 packages/desktop/src/assets/file-icons/razor.svg
create mode 100644 packages/desktop/src/assets/file-icons/rbxmk.svg
create mode 100644 packages/desktop/src/assets/file-icons/rc.svg
create mode 100644 packages/desktop/src/assets/file-icons/react.svg
create mode 100644 packages/desktop/src/assets/file-icons/react_ts.svg
create mode 100644 packages/desktop/src/assets/file-icons/readme.svg
create mode 100644 packages/desktop/src/assets/file-icons/reason.svg
create mode 100644 packages/desktop/src/assets/file-icons/red.svg
create mode 100644 packages/desktop/src/assets/file-icons/redux-action.svg
create mode 100644 packages/desktop/src/assets/file-icons/redux-reducer.svg
create mode 100644 packages/desktop/src/assets/file-icons/redux-selector.svg
create mode 100644 packages/desktop/src/assets/file-icons/redux-store.svg
create mode 100644 packages/desktop/src/assets/file-icons/regedit.svg
create mode 100644 packages/desktop/src/assets/file-icons/remark.svg
create mode 100644 packages/desktop/src/assets/file-icons/remix.svg
create mode 100644 packages/desktop/src/assets/file-icons/remix_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/renovate.svg
create mode 100644 packages/desktop/src/assets/file-icons/replit.svg
create mode 100644 packages/desktop/src/assets/file-icons/rescript-interface.svg
create mode 100644 packages/desktop/src/assets/file-icons/rescript.svg
create mode 100644 packages/desktop/src/assets/file-icons/restql.svg
create mode 100644 packages/desktop/src/assets/file-icons/riot.svg
create mode 100644 packages/desktop/src/assets/file-icons/roadmap.svg
create mode 100644 packages/desktop/src/assets/file-icons/roblox.svg
create mode 100644 packages/desktop/src/assets/file-icons/robot.svg
create mode 100644 packages/desktop/src/assets/file-icons/robots.svg
create mode 100644 packages/desktop/src/assets/file-icons/rocket.svg
create mode 100644 packages/desktop/src/assets/file-icons/rojo.svg
create mode 100644 packages/desktop/src/assets/file-icons/rollup.svg
create mode 100644 packages/desktop/src/assets/file-icons/rome.svg
create mode 100644 packages/desktop/src/assets/file-icons/routing.svg
create mode 100644 packages/desktop/src/assets/file-icons/rspec.svg
create mode 100644 packages/desktop/src/assets/file-icons/rubocop.svg
create mode 100644 packages/desktop/src/assets/file-icons/rubocop_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/ruby.svg
create mode 100644 packages/desktop/src/assets/file-icons/ruff.svg
create mode 100644 packages/desktop/src/assets/file-icons/rust.svg
create mode 100644 packages/desktop/src/assets/file-icons/salesforce.svg
create mode 100644 packages/desktop/src/assets/file-icons/san.svg
create mode 100644 packages/desktop/src/assets/file-icons/sas.svg
create mode 100644 packages/desktop/src/assets/file-icons/sass.svg
create mode 100644 packages/desktop/src/assets/file-icons/sbt.svg
create mode 100644 packages/desktop/src/assets/file-icons/scala.svg
create mode 100644 packages/desktop/src/assets/file-icons/scheme.svg
create mode 100644 packages/desktop/src/assets/file-icons/scons.svg
create mode 100644 packages/desktop/src/assets/file-icons/scons_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/screwdriver.svg
create mode 100644 packages/desktop/src/assets/file-icons/search.svg
create mode 100644 packages/desktop/src/assets/file-icons/semantic-release.svg
create mode 100644 packages/desktop/src/assets/file-icons/semantic-release_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/semgrep.svg
create mode 100644 packages/desktop/src/assets/file-icons/sentry.svg
create mode 100644 packages/desktop/src/assets/file-icons/sequelize.svg
create mode 100644 packages/desktop/src/assets/file-icons/serverless.svg
create mode 100644 packages/desktop/src/assets/file-icons/settings.svg
create mode 100644 packages/desktop/src/assets/file-icons/shader.svg
create mode 100644 packages/desktop/src/assets/file-icons/silverstripe.svg
create mode 100644 packages/desktop/src/assets/file-icons/simulink.svg
create mode 100644 packages/desktop/src/assets/file-icons/siyuan.svg
create mode 100644 packages/desktop/src/assets/file-icons/sketch.svg
create mode 100644 packages/desktop/src/assets/file-icons/slim.svg
create mode 100644 packages/desktop/src/assets/file-icons/slint.svg
create mode 100644 packages/desktop/src/assets/file-icons/slug.svg
create mode 100644 packages/desktop/src/assets/file-icons/smarty.svg
create mode 100644 packages/desktop/src/assets/file-icons/sml.svg
create mode 100644 packages/desktop/src/assets/file-icons/snakemake.svg
create mode 100644 packages/desktop/src/assets/file-icons/snapcraft.svg
create mode 100644 packages/desktop/src/assets/file-icons/snowpack.svg
create mode 100644 packages/desktop/src/assets/file-icons/snowpack_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/snyk.svg
create mode 100644 packages/desktop/src/assets/file-icons/solidity.svg
create mode 100644 packages/desktop/src/assets/file-icons/sonarcloud.svg
create mode 100644 packages/desktop/src/assets/file-icons/spwn.svg
create mode 100644 packages/desktop/src/assets/file-icons/stackblitz.svg
create mode 100644 packages/desktop/src/assets/file-icons/stan.svg
create mode 100644 packages/desktop/src/assets/file-icons/steadybit.svg
create mode 100644 packages/desktop/src/assets/file-icons/stencil.svg
create mode 100644 packages/desktop/src/assets/file-icons/stitches.svg
create mode 100644 packages/desktop/src/assets/file-icons/stitches_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/storybook.svg
create mode 100644 packages/desktop/src/assets/file-icons/stryker.svg
create mode 100644 packages/desktop/src/assets/file-icons/stylable.svg
create mode 100644 packages/desktop/src/assets/file-icons/stylelint.svg
create mode 100644 packages/desktop/src/assets/file-icons/stylelint_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/stylus.svg
create mode 100644 packages/desktop/src/assets/file-icons/sublime.svg
create mode 100644 packages/desktop/src/assets/file-icons/subtitles.svg
create mode 100644 packages/desktop/src/assets/file-icons/supabase.svg
create mode 100644 packages/desktop/src/assets/file-icons/svelte.svg
create mode 100644 packages/desktop/src/assets/file-icons/svg.svg
create mode 100644 packages/desktop/src/assets/file-icons/svgo.svg
create mode 100644 packages/desktop/src/assets/file-icons/svgr.svg
create mode 100644 packages/desktop/src/assets/file-icons/swagger.svg
create mode 100644 packages/desktop/src/assets/file-icons/sway.svg
create mode 100644 packages/desktop/src/assets/file-icons/swc.svg
create mode 100644 packages/desktop/src/assets/file-icons/swift.svg
create mode 100644 packages/desktop/src/assets/file-icons/syncpack.svg
create mode 100755 packages/desktop/src/assets/file-icons/systemd.svg
create mode 100755 packages/desktop/src/assets/file-icons/systemd_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/table.svg
create mode 100644 packages/desktop/src/assets/file-icons/tailwindcss.svg
create mode 100644 packages/desktop/src/assets/file-icons/taskfile.svg
create mode 100644 packages/desktop/src/assets/file-icons/tauri.svg
create mode 100644 packages/desktop/src/assets/file-icons/taze.svg
create mode 100644 packages/desktop/src/assets/file-icons/tcl.svg
create mode 100644 packages/desktop/src/assets/file-icons/teal.svg
create mode 100644 packages/desktop/src/assets/file-icons/templ.svg
create mode 100644 packages/desktop/src/assets/file-icons/template.svg
create mode 100644 packages/desktop/src/assets/file-icons/terraform.svg
create mode 100644 packages/desktop/src/assets/file-icons/test-js.svg
create mode 100644 packages/desktop/src/assets/file-icons/test-jsx.svg
create mode 100644 packages/desktop/src/assets/file-icons/test-ts.svg
create mode 100644 packages/desktop/src/assets/file-icons/tex.svg
create mode 100644 packages/desktop/src/assets/file-icons/textlint.svg
create mode 100644 packages/desktop/src/assets/file-icons/tilt.svg
create mode 100644 packages/desktop/src/assets/file-icons/tldraw.svg
create mode 100644 packages/desktop/src/assets/file-icons/tldraw_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/tobi.svg
create mode 100644 packages/desktop/src/assets/file-icons/tobimake.svg
create mode 100644 packages/desktop/src/assets/file-icons/todo.svg
create mode 100644 packages/desktop/src/assets/file-icons/toml.svg
create mode 100644 packages/desktop/src/assets/file-icons/toml_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/travis.svg
create mode 100644 packages/desktop/src/assets/file-icons/tree.svg
create mode 100644 packages/desktop/src/assets/file-icons/trigger.svg
create mode 100644 packages/desktop/src/assets/file-icons/tsconfig.svg
create mode 100644 packages/desktop/src/assets/file-icons/tsdoc.svg
create mode 100644 packages/desktop/src/assets/file-icons/tsil.svg
create mode 100644 packages/desktop/src/assets/file-icons/tune.svg
create mode 100644 packages/desktop/src/assets/file-icons/turborepo.svg
create mode 100644 packages/desktop/src/assets/file-icons/turborepo_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/twig.svg
create mode 100644 packages/desktop/src/assets/file-icons/twine.svg
create mode 100644 packages/desktop/src/assets/file-icons/typescript-def.svg
create mode 100644 packages/desktop/src/assets/file-icons/typescript.svg
create mode 100644 packages/desktop/src/assets/file-icons/typst.svg
create mode 100644 packages/desktop/src/assets/file-icons/umi.svg
create mode 100644 packages/desktop/src/assets/file-icons/uml.svg
create mode 100644 packages/desktop/src/assets/file-icons/uml_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/unity.svg
create mode 100644 packages/desktop/src/assets/file-icons/unocss.svg
create mode 100644 packages/desktop/src/assets/file-icons/url.svg
create mode 100644 packages/desktop/src/assets/file-icons/uv.svg
create mode 100644 packages/desktop/src/assets/file-icons/vagrant.svg
create mode 100644 packages/desktop/src/assets/file-icons/vala.svg
create mode 100644 packages/desktop/src/assets/file-icons/vanilla-extract.svg
create mode 100644 packages/desktop/src/assets/file-icons/varnish.svg
create mode 100644 packages/desktop/src/assets/file-icons/vedic.svg
create mode 100644 packages/desktop/src/assets/file-icons/velite.svg
create mode 100644 packages/desktop/src/assets/file-icons/velocity.svg
create mode 100644 packages/desktop/src/assets/file-icons/vercel.svg
create mode 100644 packages/desktop/src/assets/file-icons/vercel_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/verdaccio.svg
create mode 100644 packages/desktop/src/assets/file-icons/verified.svg
create mode 100644 packages/desktop/src/assets/file-icons/verilog.svg
create mode 100644 packages/desktop/src/assets/file-icons/vfl.svg
create mode 100644 packages/desktop/src/assets/file-icons/video.svg
create mode 100644 packages/desktop/src/assets/file-icons/vim.svg
create mode 100644 packages/desktop/src/assets/file-icons/virtual.svg
create mode 100644 packages/desktop/src/assets/file-icons/visualstudio.svg
create mode 100644 packages/desktop/src/assets/file-icons/vite.svg
create mode 100644 packages/desktop/src/assets/file-icons/vitest.svg
create mode 100644 packages/desktop/src/assets/file-icons/vlang.svg
create mode 100644 packages/desktop/src/assets/file-icons/vscode.svg
create mode 100644 packages/desktop/src/assets/file-icons/vue-config.svg
create mode 100644 packages/desktop/src/assets/file-icons/vue.svg
create mode 100644 packages/desktop/src/assets/file-icons/vuex-store.svg
create mode 100644 packages/desktop/src/assets/file-icons/wakatime.svg
create mode 100644 packages/desktop/src/assets/file-icons/wakatime_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/wallaby.svg
create mode 100644 packages/desktop/src/assets/file-icons/wally.svg
create mode 100644 packages/desktop/src/assets/file-icons/watchman.svg
create mode 100644 packages/desktop/src/assets/file-icons/webassembly.svg
create mode 100644 packages/desktop/src/assets/file-icons/webhint.svg
create mode 100644 packages/desktop/src/assets/file-icons/webpack.svg
create mode 100644 packages/desktop/src/assets/file-icons/wepy.svg
create mode 100644 packages/desktop/src/assets/file-icons/werf.svg
create mode 100644 packages/desktop/src/assets/file-icons/windicss.svg
create mode 100644 packages/desktop/src/assets/file-icons/wolframlanguage.svg
create mode 100644 packages/desktop/src/assets/file-icons/word.svg
create mode 100644 packages/desktop/src/assets/file-icons/wrangler.svg
create mode 100644 packages/desktop/src/assets/file-icons/wxt.svg
create mode 100644 packages/desktop/src/assets/file-icons/xaml.svg
create mode 100644 packages/desktop/src/assets/file-icons/xmake.svg
create mode 100644 packages/desktop/src/assets/file-icons/xml.svg
create mode 100644 packages/desktop/src/assets/file-icons/yaml.svg
create mode 100644 packages/desktop/src/assets/file-icons/yang.svg
create mode 100644 packages/desktop/src/assets/file-icons/yarn.svg
create mode 100644 packages/desktop/src/assets/file-icons/zeabur.svg
create mode 100644 packages/desktop/src/assets/file-icons/zeabur_light.svg
create mode 100644 packages/desktop/src/assets/file-icons/zig.svg
create mode 100644 packages/desktop/src/assets/file-icons/zip.svg
create mode 100644 packages/desktop/src/components/code.tsx
create mode 100644 packages/desktop/src/components/editor-pane.tsx
create mode 100644 packages/desktop/src/components/file-tree.tsx
create mode 100644 packages/desktop/src/components/markdown.tsx
create mode 100644 packages/desktop/src/components/prompt-form.tsx
create mode 100644 packages/desktop/src/components/resizeable-pane.tsx
create mode 100644 packages/desktop/src/components/select-dialog.tsx
create mode 100644 packages/desktop/src/components/select.tsx
create mode 100644 packages/desktop/src/components/session-list.tsx
create mode 100644 packages/desktop/src/components/session-timeline.tsx
create mode 100644 packages/desktop/src/components/sidebar-nav.tsx
create mode 100644 packages/desktop/src/context/event.tsx
create mode 100644 packages/desktop/src/context/index.ts
create mode 100644 packages/desktop/src/context/local.tsx
create mode 100644 packages/desktop/src/context/marked.tsx
create mode 100644 packages/desktop/src/context/sdk.tsx
create mode 100644 packages/desktop/src/context/shiki.tsx
create mode 100644 packages/desktop/src/context/sync.tsx
create mode 100644 packages/desktop/src/context/theme.tsx
create mode 100644 packages/desktop/src/env.d.ts
create mode 100644 packages/desktop/src/index.css
create mode 100644 packages/desktop/src/index.tsx
create mode 100644 packages/desktop/src/pages/index.tsx
create mode 100644 packages/desktop/src/pages/layout.tsx
create mode 100644 packages/desktop/src/sst-env.d.ts
create mode 100644 packages/desktop/src/ui/button.tsx
create mode 100644 packages/desktop/src/ui/collapsible.tsx
create mode 100644 packages/desktop/src/ui/file-icon.tsx
create mode 100644 packages/desktop/src/ui/file-icons/sprite.svg
create mode 100644 packages/desktop/src/ui/file-icons/types.ts
create mode 100644 packages/desktop/src/ui/icon-button.tsx
create mode 100644 packages/desktop/src/ui/icon.tsx
create mode 100644 packages/desktop/src/ui/index.ts
create mode 100644 packages/desktop/src/ui/link.tsx
create mode 100644 packages/desktop/src/ui/logo.tsx
create mode 100644 packages/desktop/src/ui/tabs.tsx
create mode 100644 packages/desktop/src/ui/tooltip.tsx
create mode 100644 packages/desktop/src/utils/binary.ts
create mode 100644 packages/desktop/src/utils/dom.ts
create mode 100644 packages/desktop/src/utils/index.ts
create mode 100644 packages/desktop/src/utils/path.ts
create mode 100644 packages/desktop/src/utils/speech.ts
create mode 100644 packages/desktop/sst-env.d.ts
create mode 100644 packages/desktop/tsconfig.json
create mode 100644 packages/desktop/vite.config.ts
diff --git a/bun.lock b/bun.lock
index 1a0c12129..068a37caa 100644
--- a/bun.lock
+++ b/bun.lock
@@ -10,40 +10,6 @@
"turbo": "2.5.6",
},
},
- "packages/app": {
- "name": "@opencode/app",
- "version": "0.14.1",
- "dependencies": {
- "@kobalte/core": "catalog:",
- "@opencode-ai/sdk": "workspace:*",
- "@shikijs/transformers": "3.9.2",
- "@solid-primitives/event-bus": "1.1.2",
- "@solid-primitives/resize-observer": "2.1.3",
- "@solid-primitives/scroll": "2.1.3",
- "@solidjs/router": "0.15.3",
- "@thisbeyond/solid-dnd": "0.7.5",
- "diff": "8.0.2",
- "fuzzysort": "catalog:",
- "luxon": "catalog:",
- "marked": "16.2.0",
- "marked-shiki": "1.2.1",
- "remeda": "catalog:",
- "shiki": "3.9.2",
- "solid-js": "catalog:",
- "solid-list": "0.3.0",
- "tailwindcss": "4.1.11",
- "virtua": "0.42.3",
- },
- "devDependencies": {
- "@tailwindcss/vite": "4.1.11",
- "@types/luxon": "3.7.1",
- "@types/node": "catalog:",
- "typescript": "catalog:",
- "vite": "^6.0.0",
- "vite-plugin-icons-spritesheet": "3.0.1",
- "vite-plugin-solid": "^2.11.6",
- },
- },
"packages/console/app": {
"name": "@opencode/console-app",
"dependencies": {
@@ -127,6 +93,40 @@
"typescript": "catalog:",
},
},
+ "packages/desktop": {
+ "name": "@opencode/desktop",
+ "version": "0.14.1",
+ "dependencies": {
+ "@kobalte/core": "catalog:",
+ "@opencode-ai/sdk": "workspace:*",
+ "@shikijs/transformers": "3.9.2",
+ "@solid-primitives/event-bus": "1.1.2",
+ "@solid-primitives/resize-observer": "2.1.3",
+ "@solid-primitives/scroll": "2.1.3",
+ "@solidjs/router": "0.15.3",
+ "@thisbeyond/solid-dnd": "0.7.5",
+ "diff": "8.0.2",
+ "fuzzysort": "catalog:",
+ "luxon": "catalog:",
+ "marked": "16.2.0",
+ "marked-shiki": "1.2.1",
+ "remeda": "catalog:",
+ "shiki": "3.9.2",
+ "solid-js": "catalog:",
+ "solid-list": "0.3.0",
+ "tailwindcss": "4.1.11",
+ "virtua": "0.42.3",
+ },
+ "devDependencies": {
+ "@tailwindcss/vite": "4.1.11",
+ "@types/luxon": "3.7.1",
+ "@types/node": "catalog:",
+ "typescript": "catalog:",
+ "vite": "^6.0.0",
+ "vite-plugin-icons-spritesheet": "3.0.1",
+ "vite-plugin-solid": "^2.11.6",
+ },
+ },
"packages/function": {
"name": "@opencode/function",
"version": "0.14.1",
@@ -370,7 +370,7 @@
"@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.782.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.782.0", "@aws-sdk/types": "3.775.0", "@smithy/node-config-provider": "^4.0.2", "@smithy/types": "^4.2.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-dMFkUBgh2Bxuw8fYZQoH/u3H4afQ12VSkzEi//qFiDTwbKYq+u+RYjc8GLDM6JSK1BShMu5AVR7HD4ap1TYUnA=="],
- "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="],
+ "@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="],
"@babel/compat-data": ["@babel/compat-data@7.28.4", "", {}, "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw=="],
@@ -746,8 +746,6 @@
"@opencode-ai/sdk": ["@opencode-ai/sdk@workspace:packages/sdk/js"],
- "@opencode/app": ["@opencode/app@workspace:packages/app"],
-
"@opencode/console-app": ["@opencode/console-app@workspace:packages/console/app"],
"@opencode/console-core": ["@opencode/console-core@workspace:packages/console/core"],
@@ -760,6 +758,8 @@
"@opencode/console-scripts": ["@opencode/console-scripts@workspace:packages/console/scripts"],
+ "@opencode/desktop": ["@opencode/desktop@workspace:packages/desktop"],
+
"@opencode/function": ["@opencode/function@workspace:packages/function"],
"@opencode/web": ["@opencode/web@workspace:packages/web"],
@@ -1388,7 +1388,7 @@
"ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="],
- "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
+ "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
"character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="],
@@ -3028,6 +3028,8 @@
"@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="],
+ "@babel/core/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="],
+
"@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
"@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="],
@@ -3036,14 +3038,16 @@
"@babel/helper-create-class-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
+ "@babel/template/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="],
+
+ "@babel/traverse/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="],
+
"@cloudflare/kv-asset-handler/mime": ["mime@3.0.0", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="],
"@cloudflare/unenv-preset/unenv": ["unenv@2.0.0-rc.21", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.7", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A=="],
"@cspotcode/source-map-support/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="],
- "@dot/log/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
-
"@esbuild-kit/core-utils/esbuild": ["esbuild@0.18.20", "", { "optionalDependencies": { "@esbuild/android-arm": "0.18.20", "@esbuild/android-arm64": "0.18.20", "@esbuild/android-x64": "0.18.20", "@esbuild/darwin-arm64": "0.18.20", "@esbuild/darwin-x64": "0.18.20", "@esbuild/freebsd-arm64": "0.18.20", "@esbuild/freebsd-x64": "0.18.20", "@esbuild/linux-arm": "0.18.20", "@esbuild/linux-arm64": "0.18.20", "@esbuild/linux-ia32": "0.18.20", "@esbuild/linux-loong64": "0.18.20", "@esbuild/linux-mips64el": "0.18.20", "@esbuild/linux-ppc64": "0.18.20", "@esbuild/linux-riscv64": "0.18.20", "@esbuild/linux-s390x": "0.18.20", "@esbuild/linux-x64": "0.18.20", "@esbuild/netbsd-x64": "0.18.20", "@esbuild/openbsd-x64": "0.18.20", "@esbuild/sunos-x64": "0.18.20", "@esbuild/win32-arm64": "0.18.20", "@esbuild/win32-ia32": "0.18.20", "@esbuild/win32-x64": "0.18.20" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA=="],
"@expressive-code/plugin-shiki/shiki": ["shiki@3.13.0", "", { "dependencies": { "@shikijs/core": "3.13.0", "@shikijs/engine-javascript": "3.13.0", "@shikijs/engine-oniguruma": "3.13.0", "@shikijs/langs": "3.13.0", "@shikijs/themes": "3.13.0", "@shikijs/types": "3.13.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-aZW4l8Og16CokuCLf8CF8kq+KK2yOygapU5m3+hoGw0Mdosc6fPitjM+ujYarppj5ZIKGyPDPP1vqmQhr+5/0g=="],
@@ -3054,8 +3058,6 @@
"@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="],
- "@jsx-email/cli/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
-
"@jsx-email/cli/esbuild": ["esbuild@0.19.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.19.12", "@esbuild/android-arm": "0.19.12", "@esbuild/android-arm64": "0.19.12", "@esbuild/android-x64": "0.19.12", "@esbuild/darwin-arm64": "0.19.12", "@esbuild/darwin-x64": "0.19.12", "@esbuild/freebsd-arm64": "0.19.12", "@esbuild/freebsd-x64": "0.19.12", "@esbuild/linux-arm": "0.19.12", "@esbuild/linux-arm64": "0.19.12", "@esbuild/linux-ia32": "0.19.12", "@esbuild/linux-loong64": "0.19.12", "@esbuild/linux-mips64el": "0.19.12", "@esbuild/linux-ppc64": "0.19.12", "@esbuild/linux-riscv64": "0.19.12", "@esbuild/linux-s390x": "0.19.12", "@esbuild/linux-x64": "0.19.12", "@esbuild/netbsd-x64": "0.19.12", "@esbuild/openbsd-x64": "0.19.12", "@esbuild/sunos-x64": "0.19.12", "@esbuild/win32-arm64": "0.19.12", "@esbuild/win32-ia32": "0.19.12", "@esbuild/win32-x64": "0.19.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg=="],
"@jsx-email/cli/tailwindcss": ["tailwindcss@3.3.3", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.5.3", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.2.12", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.18.2", "lilconfig": "^2.1.0", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.0.0", "postcss": "^8.4.23", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.1", "postcss-nested": "^6.0.1", "postcss-selector-parser": "^6.0.11", "resolve": "^1.22.2", "sucrase": "^3.32.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w=="],
@@ -3140,12 +3142,8 @@
"@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
- "@tanstack/directive-functions-plugin/@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="],
-
"@tanstack/router-utils/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
- "@tanstack/server-functions-plugin/@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="],
-
"@vercel/nft/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
"@vercel/nft/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="],
@@ -3182,6 +3180,8 @@
"body-parser/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
+ "boxen/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
+
"compress-commons/is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="],
"condense-newlines/kind-of": ["kind-of@3.2.2", "", { "dependencies": { "is-buffer": "^1.1.5" } }, "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ=="],
@@ -3198,8 +3198,6 @@
"editorconfig/minimatch": ["minimatch@9.0.1", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w=="],
- "esbuild-plugin-copy/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
-
"esbuild-plugin-copy/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="],
"estree-util-to-js/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="],
@@ -3394,6 +3392,8 @@
"vinxi/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
+ "vite-plugin-icons-spritesheet/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
+
"wrangler/esbuild": ["esbuild@0.25.4", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.4", "@esbuild/android-arm": "0.25.4", "@esbuild/android-arm64": "0.25.4", "@esbuild/android-x64": "0.25.4", "@esbuild/darwin-arm64": "0.25.4", "@esbuild/darwin-x64": "0.25.4", "@esbuild/freebsd-arm64": "0.25.4", "@esbuild/freebsd-x64": "0.25.4", "@esbuild/linux-arm": "0.25.4", "@esbuild/linux-arm64": "0.25.4", "@esbuild/linux-ia32": "0.25.4", "@esbuild/linux-loong64": "0.25.4", "@esbuild/linux-mips64el": "0.25.4", "@esbuild/linux-ppc64": "0.25.4", "@esbuild/linux-riscv64": "0.25.4", "@esbuild/linux-s390x": "0.25.4", "@esbuild/linux-x64": "0.25.4", "@esbuild/netbsd-arm64": "0.25.4", "@esbuild/netbsd-x64": "0.25.4", "@esbuild/openbsd-arm64": "0.25.4", "@esbuild/openbsd-x64": "0.25.4", "@esbuild/sunos-x64": "0.25.4", "@esbuild/win32-arm64": "0.25.4", "@esbuild/win32-ia32": "0.25.4", "@esbuild/win32-x64": "0.25.4" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q=="],
"wrangler/unenv": ["unenv@2.0.0-rc.21", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.7", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A=="],
diff --git a/infra/desktop.ts b/infra/desktop.ts
index 5c4155cc9..d4e32c65d 100644
--- a/infra/desktop.ts
+++ b/infra/desktop.ts
@@ -2,7 +2,7 @@ import { domain } from "./stage"
new sst.cloudflare.StaticSite("Desktop", {
domain: "desktop." + domain,
- path: "packages/app",
+ path: "packages/desktop",
build: {
command: "bun turbo build",
output: "./dist",
diff --git a/packages/app/.gitignore b/packages/app/.gitignore
deleted file mode 100644
index 4a20d55a7..000000000
--- a/packages/app/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-src/assets/theme.css
diff --git a/packages/app/AGENTS.md b/packages/app/AGENTS.md
deleted file mode 100644
index 3137bddc2..000000000
--- a/packages/app/AGENTS.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# Agent Guidelines for @opencode/app
-
-## Build/Test Commands
-
-- **Development**: `bun run dev` (starts Vite dev server on port 3000)
-- **Build**: `bun run build` (production build)
-- **Preview**: `bun run serve` (preview production build)
-- **Validation**: Use `bun run typecheck` only - do not build or run project for validation
-- **Testing**: Do not create or run automated tests
-
-## Code Style
-
-- **Framework**: SolidJS with TypeScript
-- **Imports**: Use `@/` alias for src/ directory (e.g., `import Button from "@/ui/button"`)
-- **Formatting**: Prettier configured with semicolons disabled, 120 character line width
-- **Components**: Use function declarations, splitProps for component props
-- **Types**: Define interfaces for component props, avoid `any` type
-- **CSS**: TailwindCSS with custom CSS variables theme system
-- **Naming**: PascalCase for components, camelCase for variables/functions, snake_case for file names
-- **File Structure**: UI primitives in `/ui/`, higher-level components in `/components/`, pages in `/pages/`, providers in `/providers/`
-
-## Key Dependencies
-
-- SolidJS, @solidjs/router, @kobalte/core (UI primitives)
-- TailwindCSS 4.x with @tailwindcss/vite
-- Custom theme system with CSS variables
-
-No special rules files found.
diff --git a/packages/app/README.md b/packages/app/README.md
deleted file mode 100644
index 6a1764536..000000000
--- a/packages/app/README.md
+++ /dev/null
@@ -1,34 +0,0 @@
-## Usage
-
-Those templates dependencies are maintained via [pnpm](https://pnpm.io) via `pnpm up -Lri`.
-
-This is the reason you see a `pnpm-lock.yaml`. That being said, any package manager will work. This file can be safely be removed once you clone a template.
-
-```bash
-$ npm install # or pnpm install or yarn install
-```
-
-### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs)
-
-## Available Scripts
-
-In the project directory, you can run:
-
-### `npm run dev` or `npm start`
-
-Runs the app in the development mode.
-Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
-
-The page will reload if you make edits.
-
-### `npm run build`
-
-Builds the app for production to the `dist` folder.
-It correctly bundles Solid in production mode and optimizes the build for the best performance.
-
-The build is minified and the filenames include the hashes.
-Your app is ready to be deployed!
-
-## Deployment
-
-You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.)
diff --git a/packages/app/index.html b/packages/app/index.html
deleted file mode 100644
index 1ee727ff4..000000000
--- a/packages/app/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
- opencode
-
-
-
-
-
-
-
-
diff --git a/packages/app/package.json b/packages/app/package.json
deleted file mode 100644
index 1cc84cc30..000000000
--- a/packages/app/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "@opencode/app",
- "version": "0.14.1",
- "description": "",
- "type": "module",
- "scripts": {
- "start": "vite",
- "dev": "vite",
- "build": "vite build",
- "serve": "vite preview",
- "typecheck": "tsc --noEmit"
- },
- "license": "MIT",
- "devDependencies": {
- "@tailwindcss/vite": "4.1.11",
- "@types/luxon": "3.7.1",
- "@types/node": "catalog:",
- "typescript": "catalog:",
- "vite": "^6.0.0",
- "vite-plugin-icons-spritesheet": "3.0.1",
- "vite-plugin-solid": "^2.11.6"
- },
- "dependencies": {
- "@kobalte/core": "catalog:",
- "@opencode-ai/sdk": "workspace:*",
- "@shikijs/transformers": "3.9.2",
- "@solid-primitives/event-bus": "1.1.2",
- "@solid-primitives/resize-observer": "2.1.3",
- "@solid-primitives/scroll": "2.1.3",
- "@solidjs/router": "0.15.3",
- "@thisbeyond/solid-dnd": "0.7.5",
- "diff": "8.0.2",
- "fuzzysort": "catalog:",
- "luxon": "catalog:",
- "marked": "16.2.0",
- "marked-shiki": "1.2.1",
- "remeda": "catalog:",
- "shiki": "3.9.2",
- "solid-js": "catalog:",
- "solid-list": "0.3.0",
- "tailwindcss": "4.1.11",
- "virtua": "0.42.3"
- },
- "prettier": {
- "semi": false,
- "printWidth": 120
- }
-}
diff --git a/packages/app/scripts/vite-theme-plugin.ts b/packages/app/scripts/vite-theme-plugin.ts
deleted file mode 100644
index 1241ffcd7..000000000
--- a/packages/app/scripts/vite-theme-plugin.ts
+++ /dev/null
@@ -1,163 +0,0 @@
-import type { Plugin } from "vite"
-import { readdir, readFile, writeFile } from "fs/promises"
-import { join, resolve } from "path"
-
-interface ThemeDefinition {
- $schema?: string
- defs?: Record
- theme: Record
-}
-
-interface ResolvedThemeColor {
- dark: string
- light: string
-}
-
-class ColorResolver {
- private colors: Map = new Map()
- private visited: Set = new Set()
-
- constructor(defs: Record = {}, theme: Record = {}) {
- Object.entries(defs).forEach(([key, value]) => {
- this.colors.set(key, value)
- })
- Object.entries(theme).forEach(([key, value]) => {
- this.colors.set(key, value)
- })
- }
-
- resolveColor(key: string, value: any): ResolvedThemeColor {
- if (this.visited.has(key)) {
- throw new Error(`Circular reference detected for color ${key}`)
- }
-
- this.visited.add(key)
-
- try {
- if (typeof value === "string") {
- if (value === "none") return { dark: value, light: value }
- if (value.startsWith("#")) {
- return { dark: value.toLowerCase(), light: value.toLowerCase() }
- }
- const resolved = this.resolveReference(value)
- return { dark: resolved, light: resolved }
- }
- if (typeof value === "object" && value !== null) {
- const dark = this.resolveColorValue(value.dark || value.light || "#000000")
- const light = this.resolveColorValue(value.light || value.dark || "#FFFFFF")
- return { dark, light }
- }
- return { dark: "#000000", light: "#FFFFFF" }
- } finally {
- this.visited.delete(key)
- }
- }
-
- private resolveColorValue(value: any): string {
- if (typeof value === "string") {
- if (value === "none") return value
- if (value.startsWith("#")) {
- return value.toLowerCase()
- }
- return this.resolveReference(value)
- }
- return value
- }
-
- private resolveReference(ref: string): string {
- const colorValue = this.colors.get(ref)
- if (colorValue === undefined) {
- throw new Error(`Color reference '${ref}' not found`)
- }
- if (typeof colorValue === "string") {
- if (colorValue === "none") return colorValue
- if (colorValue.startsWith("#")) {
- return colorValue.toLowerCase()
- }
- return this.resolveReference(colorValue)
- }
- return colorValue
- }
-}
-
-function kebabCase(str: string): string {
- return str.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase()
-}
-
-function parseTheme(themeData: ThemeDefinition): Record {
- const resolver = new ColorResolver(themeData.defs, themeData.theme)
- const colors: Record = {}
- Object.entries(themeData.theme).forEach(([key, value]) => {
- colors[key] = resolver.resolveColor(key, value)
- })
- return colors
-}
-
-async function loadThemes(): Promise>> {
- const themesDir = resolve(__dirname, "../../tui/internal/theme/themes")
- const files = await readdir(themesDir)
- const themes: Record> = {}
-
- for (const file of files) {
- if (!file.endsWith(".json")) continue
-
- const themeName = file.replace(".json", "")
- const themeData: ThemeDefinition = JSON.parse(await readFile(join(themesDir, file), "utf-8"))
-
- themes[themeName] = parseTheme(themeData)
- }
-
- return themes
-}
-
-function generateCSS(themes: Record>): string {
- let css = `/* Auto-generated theme CSS - Do not edit manually */\n:root {\n`
-
- const defaultTheme = themes["opencode"] || Object.values(themes)[0]
- if (defaultTheme) {
- Object.entries(defaultTheme).forEach(([key, color]) => {
- const cssVar = `--theme-${kebabCase(key)}`
- css += ` ${cssVar}: ${color.light};\n`
- })
- }
- css += `}\n\n`
-
- Object.entries(themes).forEach(([themeName, colors]) => {
- css += `[data-theme="${themeName}"][data-dark="false"] {\n`
- Object.entries(colors).forEach(([key, color]) => {
- const cssVar = `--theme-${kebabCase(key)}`
- css += ` ${cssVar}: ${color.light};\n`
- })
- css += `}\n\n`
-
- css += `[data-theme="${themeName}"][data-dark="true"] {\n`
- Object.entries(colors).forEach(([key, color]) => {
- const cssVar = `--theme-${kebabCase(key)}`
- css += ` ${cssVar}: ${color.dark};\n`
- })
- css += `}\n\n`
- })
-
- return css
-}
-
-export function generateThemeCSS(): Plugin {
- return {
- name: "generate-theme-css",
- async buildStart() {
- try {
- console.log("Generating theme CSS...")
- const themes = await loadThemes()
- const css = generateCSS(themes)
-
- const outputPath = resolve(__dirname, "../src/assets/theme.css")
- await writeFile(outputPath, css)
-
- console.log(`✅ Generated theme CSS with ${Object.keys(themes).length} themes`)
- console.log(` Output: ${outputPath}`)
- } catch (error) {
- throw new Error(`Theme CSS generation failed: ${error}`)
- }
- },
- }
-}
diff --git a/packages/app/src/assets/favicon.svg b/packages/app/src/assets/favicon.svg
deleted file mode 100644
index 3c81bbdb4..000000000
--- a/packages/app/src/assets/favicon.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/3d.svg b/packages/app/src/assets/file-icons/3d.svg
deleted file mode 100644
index 0fdb93497..000000000
--- a/packages/app/src/assets/file-icons/3d.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/abap.svg b/packages/app/src/assets/file-icons/abap.svg
deleted file mode 100644
index 0a9b08390..000000000
--- a/packages/app/src/assets/file-icons/abap.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/abc.svg b/packages/app/src/assets/file-icons/abc.svg
deleted file mode 100644
index 7c7cb534c..000000000
--- a/packages/app/src/assets/file-icons/abc.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/actionscript.svg b/packages/app/src/assets/file-icons/actionscript.svg
deleted file mode 100644
index 31d91f2db..000000000
--- a/packages/app/src/assets/file-icons/actionscript.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ada.svg b/packages/app/src/assets/file-icons/ada.svg
deleted file mode 100644
index 613646fa1..000000000
--- a/packages/app/src/assets/file-icons/ada.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/adobe-illustrator.svg b/packages/app/src/assets/file-icons/adobe-illustrator.svg
deleted file mode 100644
index e0a334bb4..000000000
--- a/packages/app/src/assets/file-icons/adobe-illustrator.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/adobe-illustrator_light.svg b/packages/app/src/assets/file-icons/adobe-illustrator_light.svg
deleted file mode 100644
index 326d2315a..000000000
--- a/packages/app/src/assets/file-icons/adobe-illustrator_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/adobe-photoshop.svg b/packages/app/src/assets/file-icons/adobe-photoshop.svg
deleted file mode 100644
index 27033d9af..000000000
--- a/packages/app/src/assets/file-icons/adobe-photoshop.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/adobe-photoshop_light.svg b/packages/app/src/assets/file-icons/adobe-photoshop_light.svg
deleted file mode 100644
index d2bfb4d25..000000000
--- a/packages/app/src/assets/file-icons/adobe-photoshop_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/adobe-swc.svg b/packages/app/src/assets/file-icons/adobe-swc.svg
deleted file mode 100644
index fda5c181a..000000000
--- a/packages/app/src/assets/file-icons/adobe-swc.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/adonis.svg b/packages/app/src/assets/file-icons/adonis.svg
deleted file mode 100644
index f854f018e..000000000
--- a/packages/app/src/assets/file-icons/adonis.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/advpl.svg b/packages/app/src/assets/file-icons/advpl.svg
deleted file mode 100644
index 54e493b0f..000000000
--- a/packages/app/src/assets/file-icons/advpl.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/amplify.svg b/packages/app/src/assets/file-icons/amplify.svg
deleted file mode 100644
index 89f42120b..000000000
--- a/packages/app/src/assets/file-icons/amplify.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/android.svg b/packages/app/src/assets/file-icons/android.svg
deleted file mode 100644
index c44608d4b..000000000
--- a/packages/app/src/assets/file-icons/android.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/angular.svg b/packages/app/src/assets/file-icons/angular.svg
deleted file mode 100644
index a28075e93..000000000
--- a/packages/app/src/assets/file-icons/angular.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/antlr.svg b/packages/app/src/assets/file-icons/antlr.svg
deleted file mode 100644
index 42f43bb30..000000000
--- a/packages/app/src/assets/file-icons/antlr.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/apiblueprint.svg b/packages/app/src/assets/file-icons/apiblueprint.svg
deleted file mode 100644
index 08462673a..000000000
--- a/packages/app/src/assets/file-icons/apiblueprint.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/apollo.svg b/packages/app/src/assets/file-icons/apollo.svg
deleted file mode 100644
index 6de6aa26b..000000000
--- a/packages/app/src/assets/file-icons/apollo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/applescript.svg b/packages/app/src/assets/file-icons/applescript.svg
deleted file mode 100644
index d883e90da..000000000
--- a/packages/app/src/assets/file-icons/applescript.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/apps-script.svg b/packages/app/src/assets/file-icons/apps-script.svg
deleted file mode 100644
index ed20f1f13..000000000
--- a/packages/app/src/assets/file-icons/apps-script.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/appveyor.svg b/packages/app/src/assets/file-icons/appveyor.svg
deleted file mode 100644
index 0dd0a5cb0..000000000
--- a/packages/app/src/assets/file-icons/appveyor.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/architecture.svg b/packages/app/src/assets/file-icons/architecture.svg
deleted file mode 100644
index ee7de1823..000000000
--- a/packages/app/src/assets/file-icons/architecture.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/arduino.svg b/packages/app/src/assets/file-icons/arduino.svg
deleted file mode 100644
index 053dc1267..000000000
--- a/packages/app/src/assets/file-icons/arduino.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/asciidoc.svg b/packages/app/src/assets/file-icons/asciidoc.svg
deleted file mode 100644
index 82215c7d4..000000000
--- a/packages/app/src/assets/file-icons/asciidoc.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/assembly.svg b/packages/app/src/assets/file-icons/assembly.svg
deleted file mode 100644
index 33a056643..000000000
--- a/packages/app/src/assets/file-icons/assembly.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/astro-config.svg b/packages/app/src/assets/file-icons/astro-config.svg
deleted file mode 100644
index 1c12c5e8b..000000000
--- a/packages/app/src/assets/file-icons/astro-config.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/astro.svg b/packages/app/src/assets/file-icons/astro.svg
deleted file mode 100644
index fa67feeff..000000000
--- a/packages/app/src/assets/file-icons/astro.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/astyle.svg b/packages/app/src/assets/file-icons/astyle.svg
deleted file mode 100644
index 6643432b5..000000000
--- a/packages/app/src/assets/file-icons/astyle.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/audio.svg b/packages/app/src/assets/file-icons/audio.svg
deleted file mode 100644
index 74f43c461..000000000
--- a/packages/app/src/assets/file-icons/audio.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/aurelia.svg b/packages/app/src/assets/file-icons/aurelia.svg
deleted file mode 100644
index f7b67f023..000000000
--- a/packages/app/src/assets/file-icons/aurelia.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/authors.svg b/packages/app/src/assets/file-icons/authors.svg
deleted file mode 100644
index 88618a701..000000000
--- a/packages/app/src/assets/file-icons/authors.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/auto.svg b/packages/app/src/assets/file-icons/auto.svg
deleted file mode 100644
index 41bd15de4..000000000
--- a/packages/app/src/assets/file-icons/auto.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/auto_light.svg b/packages/app/src/assets/file-icons/auto_light.svg
deleted file mode 100644
index 5f2451b23..000000000
--- a/packages/app/src/assets/file-icons/auto_light.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/autohotkey.svg b/packages/app/src/assets/file-icons/autohotkey.svg
deleted file mode 100644
index 4ecd7a3ef..000000000
--- a/packages/app/src/assets/file-icons/autohotkey.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/autoit.svg b/packages/app/src/assets/file-icons/autoit.svg
deleted file mode 100644
index 350519f25..000000000
--- a/packages/app/src/assets/file-icons/autoit.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/azure-pipelines.svg b/packages/app/src/assets/file-icons/azure-pipelines.svg
deleted file mode 100644
index f460d2079..000000000
--- a/packages/app/src/assets/file-icons/azure-pipelines.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/azure.svg b/packages/app/src/assets/file-icons/azure.svg
deleted file mode 100644
index 2330f87bb..000000000
--- a/packages/app/src/assets/file-icons/azure.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/babel.svg b/packages/app/src/assets/file-icons/babel.svg
deleted file mode 100644
index 244ae36a1..000000000
--- a/packages/app/src/assets/file-icons/babel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ballerina.svg b/packages/app/src/assets/file-icons/ballerina.svg
deleted file mode 100644
index 3c1341d77..000000000
--- a/packages/app/src/assets/file-icons/ballerina.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bazel.svg b/packages/app/src/assets/file-icons/bazel.svg
deleted file mode 100644
index b38a90c59..000000000
--- a/packages/app/src/assets/file-icons/bazel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bbx.svg b/packages/app/src/assets/file-icons/bbx.svg
deleted file mode 100644
index 002d26047..000000000
--- a/packages/app/src/assets/file-icons/bbx.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/beancount.svg b/packages/app/src/assets/file-icons/beancount.svg
deleted file mode 100644
index 905ff22b0..000000000
--- a/packages/app/src/assets/file-icons/beancount.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bench-js.svg b/packages/app/src/assets/file-icons/bench-js.svg
deleted file mode 100644
index c2ba0ca6e..000000000
--- a/packages/app/src/assets/file-icons/bench-js.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bench-jsx.svg b/packages/app/src/assets/file-icons/bench-jsx.svg
deleted file mode 100644
index ed2b9d434..000000000
--- a/packages/app/src/assets/file-icons/bench-jsx.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bench-ts.svg b/packages/app/src/assets/file-icons/bench-ts.svg
deleted file mode 100644
index f9c2af9e0..000000000
--- a/packages/app/src/assets/file-icons/bench-ts.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bibliography.svg b/packages/app/src/assets/file-icons/bibliography.svg
deleted file mode 100644
index ad6baa6ef..000000000
--- a/packages/app/src/assets/file-icons/bibliography.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bibtex-style.svg b/packages/app/src/assets/file-icons/bibtex-style.svg
deleted file mode 100644
index 24d121d72..000000000
--- a/packages/app/src/assets/file-icons/bibtex-style.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bicep.svg b/packages/app/src/assets/file-icons/bicep.svg
deleted file mode 100644
index dc959e7be..000000000
--- a/packages/app/src/assets/file-icons/bicep.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/biome.svg b/packages/app/src/assets/file-icons/biome.svg
deleted file mode 100644
index 2f255fc2b..000000000
--- a/packages/app/src/assets/file-icons/biome.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bitbucket.svg b/packages/app/src/assets/file-icons/bitbucket.svg
deleted file mode 100644
index ba572f09f..000000000
--- a/packages/app/src/assets/file-icons/bitbucket.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bithound.svg b/packages/app/src/assets/file-icons/bithound.svg
deleted file mode 100644
index 1eea4deae..000000000
--- a/packages/app/src/assets/file-icons/bithound.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/blender.svg b/packages/app/src/assets/file-icons/blender.svg
deleted file mode 100644
index f55d6bc7d..000000000
--- a/packages/app/src/assets/file-icons/blender.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/blink.svg b/packages/app/src/assets/file-icons/blink.svg
deleted file mode 100644
index 441228857..000000000
--- a/packages/app/src/assets/file-icons/blink.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/blink_light.svg b/packages/app/src/assets/file-icons/blink_light.svg
deleted file mode 100644
index 380d8c762..000000000
--- a/packages/app/src/assets/file-icons/blink_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/blitz.svg b/packages/app/src/assets/file-icons/blitz.svg
deleted file mode 100644
index 147ccc1a7..000000000
--- a/packages/app/src/assets/file-icons/blitz.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bower.svg b/packages/app/src/assets/file-icons/bower.svg
deleted file mode 100644
index 9ffb06acc..000000000
--- a/packages/app/src/assets/file-icons/bower.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/brainfuck.svg b/packages/app/src/assets/file-icons/brainfuck.svg
deleted file mode 100644
index 6a2422c9b..000000000
--- a/packages/app/src/assets/file-icons/brainfuck.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/browserlist.svg b/packages/app/src/assets/file-icons/browserlist.svg
deleted file mode 100644
index d2e0d0a38..000000000
--- a/packages/app/src/assets/file-icons/browserlist.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/browserlist_light.svg b/packages/app/src/assets/file-icons/browserlist_light.svg
deleted file mode 100644
index fa34de6a1..000000000
--- a/packages/app/src/assets/file-icons/browserlist_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bruno.svg b/packages/app/src/assets/file-icons/bruno.svg
deleted file mode 100644
index 88bebeae4..000000000
--- a/packages/app/src/assets/file-icons/bruno.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/buck.svg b/packages/app/src/assets/file-icons/buck.svg
deleted file mode 100644
index a5a31bc46..000000000
--- a/packages/app/src/assets/file-icons/buck.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bucklescript.svg b/packages/app/src/assets/file-icons/bucklescript.svg
deleted file mode 100644
index d67a7843d..000000000
--- a/packages/app/src/assets/file-icons/bucklescript.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/buildkite.svg b/packages/app/src/assets/file-icons/buildkite.svg
deleted file mode 100644
index 32a499555..000000000
--- a/packages/app/src/assets/file-icons/buildkite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bun.svg b/packages/app/src/assets/file-icons/bun.svg
deleted file mode 100644
index cc3620479..000000000
--- a/packages/app/src/assets/file-icons/bun.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/bun_light.svg b/packages/app/src/assets/file-icons/bun_light.svg
deleted file mode 100644
index d49bac7b2..000000000
--- a/packages/app/src/assets/file-icons/bun_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/c.svg b/packages/app/src/assets/file-icons/c.svg
deleted file mode 100644
index 5bb84b6a9..000000000
--- a/packages/app/src/assets/file-icons/c.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/c3.svg b/packages/app/src/assets/file-icons/c3.svg
deleted file mode 100644
index ff30caab2..000000000
--- a/packages/app/src/assets/file-icons/c3.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cabal.svg b/packages/app/src/assets/file-icons/cabal.svg
deleted file mode 100644
index 014335bf7..000000000
--- a/packages/app/src/assets/file-icons/cabal.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/caddy.svg b/packages/app/src/assets/file-icons/caddy.svg
deleted file mode 100644
index 997c11962..000000000
--- a/packages/app/src/assets/file-icons/caddy.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cadence.svg b/packages/app/src/assets/file-icons/cadence.svg
deleted file mode 100644
index 25338baae..000000000
--- a/packages/app/src/assets/file-icons/cadence.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cairo.svg b/packages/app/src/assets/file-icons/cairo.svg
deleted file mode 100644
index 591b2328a..000000000
--- a/packages/app/src/assets/file-icons/cairo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cake.svg b/packages/app/src/assets/file-icons/cake.svg
deleted file mode 100644
index ed6b09f4d..000000000
--- a/packages/app/src/assets/file-icons/cake.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/capacitor.svg b/packages/app/src/assets/file-icons/capacitor.svg
deleted file mode 100644
index 2a48c5843..000000000
--- a/packages/app/src/assets/file-icons/capacitor.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/capnp.svg b/packages/app/src/assets/file-icons/capnp.svg
deleted file mode 100644
index c74aa9f01..000000000
--- a/packages/app/src/assets/file-icons/capnp.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cbx.svg b/packages/app/src/assets/file-icons/cbx.svg
deleted file mode 100644
index 716426ad7..000000000
--- a/packages/app/src/assets/file-icons/cbx.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cds.svg b/packages/app/src/assets/file-icons/cds.svg
deleted file mode 100644
index 3c7fed81e..000000000
--- a/packages/app/src/assets/file-icons/cds.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/certificate.svg b/packages/app/src/assets/file-icons/certificate.svg
deleted file mode 100644
index 64ddcf3b6..000000000
--- a/packages/app/src/assets/file-icons/certificate.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/changelog.svg b/packages/app/src/assets/file-icons/changelog.svg
deleted file mode 100644
index b4b1a0717..000000000
--- a/packages/app/src/assets/file-icons/changelog.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/chess.svg b/packages/app/src/assets/file-icons/chess.svg
deleted file mode 100644
index 85bede301..000000000
--- a/packages/app/src/assets/file-icons/chess.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/chess_light.svg b/packages/app/src/assets/file-icons/chess_light.svg
deleted file mode 100644
index 250fb8cbf..000000000
--- a/packages/app/src/assets/file-icons/chess_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/chrome.svg b/packages/app/src/assets/file-icons/chrome.svg
deleted file mode 100644
index 0208e2704..000000000
--- a/packages/app/src/assets/file-icons/chrome.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/circleci.svg b/packages/app/src/assets/file-icons/circleci.svg
deleted file mode 100644
index 464dace08..000000000
--- a/packages/app/src/assets/file-icons/circleci.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/circleci_light.svg b/packages/app/src/assets/file-icons/circleci_light.svg
deleted file mode 100644
index cd45d352c..000000000
--- a/packages/app/src/assets/file-icons/circleci_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/citation.svg b/packages/app/src/assets/file-icons/citation.svg
deleted file mode 100644
index eb7fcaa92..000000000
--- a/packages/app/src/assets/file-icons/citation.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/clangd.svg b/packages/app/src/assets/file-icons/clangd.svg
deleted file mode 100644
index f6742e9ae..000000000
--- a/packages/app/src/assets/file-icons/clangd.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/claude.svg b/packages/app/src/assets/file-icons/claude.svg
deleted file mode 100644
index fa01860fd..000000000
--- a/packages/app/src/assets/file-icons/claude.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cline.svg b/packages/app/src/assets/file-icons/cline.svg
deleted file mode 100644
index c41f59d83..000000000
--- a/packages/app/src/assets/file-icons/cline.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/clojure.svg b/packages/app/src/assets/file-icons/clojure.svg
deleted file mode 100644
index 1b22aed22..000000000
--- a/packages/app/src/assets/file-icons/clojure.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cloudfoundry.svg b/packages/app/src/assets/file-icons/cloudfoundry.svg
deleted file mode 100644
index 3251ca469..000000000
--- a/packages/app/src/assets/file-icons/cloudfoundry.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cmake.svg b/packages/app/src/assets/file-icons/cmake.svg
deleted file mode 100644
index aa217964f..000000000
--- a/packages/app/src/assets/file-icons/cmake.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/coala.svg b/packages/app/src/assets/file-icons/coala.svg
deleted file mode 100644
index 1e84b8f5e..000000000
--- a/packages/app/src/assets/file-icons/coala.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cobol.svg b/packages/app/src/assets/file-icons/cobol.svg
deleted file mode 100644
index 220b0ab48..000000000
--- a/packages/app/src/assets/file-icons/cobol.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/coconut.svg b/packages/app/src/assets/file-icons/coconut.svg
deleted file mode 100644
index 98355a662..000000000
--- a/packages/app/src/assets/file-icons/coconut.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/code-climate.svg b/packages/app/src/assets/file-icons/code-climate.svg
deleted file mode 100644
index 97cbb4e8f..000000000
--- a/packages/app/src/assets/file-icons/code-climate.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/code-climate_light.svg b/packages/app/src/assets/file-icons/code-climate_light.svg
deleted file mode 100644
index dd18ba52b..000000000
--- a/packages/app/src/assets/file-icons/code-climate_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/codecov.svg b/packages/app/src/assets/file-icons/codecov.svg
deleted file mode 100644
index 9a8d4eb7b..000000000
--- a/packages/app/src/assets/file-icons/codecov.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/codeowners.svg b/packages/app/src/assets/file-icons/codeowners.svg
deleted file mode 100644
index 553c60f5a..000000000
--- a/packages/app/src/assets/file-icons/codeowners.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/coderabbit-ai.svg b/packages/app/src/assets/file-icons/coderabbit-ai.svg
deleted file mode 100644
index 5d1b6c9c2..000000000
--- a/packages/app/src/assets/file-icons/coderabbit-ai.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/coffee.svg b/packages/app/src/assets/file-icons/coffee.svg
deleted file mode 100644
index f81b65c79..000000000
--- a/packages/app/src/assets/file-icons/coffee.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/coldfusion.svg b/packages/app/src/assets/file-icons/coldfusion.svg
deleted file mode 100644
index d018b6652..000000000
--- a/packages/app/src/assets/file-icons/coldfusion.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/coloredpetrinets.svg b/packages/app/src/assets/file-icons/coloredpetrinets.svg
deleted file mode 100644
index bd612618e..000000000
--- a/packages/app/src/assets/file-icons/coloredpetrinets.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/command.svg b/packages/app/src/assets/file-icons/command.svg
deleted file mode 100644
index b5a7913d2..000000000
--- a/packages/app/src/assets/file-icons/command.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/commitizen.svg b/packages/app/src/assets/file-icons/commitizen.svg
deleted file mode 100644
index 2467d2c71..000000000
--- a/packages/app/src/assets/file-icons/commitizen.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/commitlint.svg b/packages/app/src/assets/file-icons/commitlint.svg
deleted file mode 100644
index c42144a42..000000000
--- a/packages/app/src/assets/file-icons/commitlint.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/concourse.svg b/packages/app/src/assets/file-icons/concourse.svg
deleted file mode 100644
index c34f23eb8..000000000
--- a/packages/app/src/assets/file-icons/concourse.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/conduct.svg b/packages/app/src/assets/file-icons/conduct.svg
deleted file mode 100644
index 97eb6fc54..000000000
--- a/packages/app/src/assets/file-icons/conduct.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/console.svg b/packages/app/src/assets/file-icons/console.svg
deleted file mode 100644
index 75f90b733..000000000
--- a/packages/app/src/assets/file-icons/console.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/contentlayer.svg b/packages/app/src/assets/file-icons/contentlayer.svg
deleted file mode 100644
index 441f6904e..000000000
--- a/packages/app/src/assets/file-icons/contentlayer.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/context.svg b/packages/app/src/assets/file-icons/context.svg
deleted file mode 100644
index 1b8200ed4..000000000
--- a/packages/app/src/assets/file-icons/context.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/contributing.svg b/packages/app/src/assets/file-icons/contributing.svg
deleted file mode 100644
index 13666a020..000000000
--- a/packages/app/src/assets/file-icons/contributing.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/controller.svg b/packages/app/src/assets/file-icons/controller.svg
deleted file mode 100644
index 9f99264b9..000000000
--- a/packages/app/src/assets/file-icons/controller.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/copilot.svg b/packages/app/src/assets/file-icons/copilot.svg
deleted file mode 100644
index 24e89af0b..000000000
--- a/packages/app/src/assets/file-icons/copilot.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/copilot_light.svg b/packages/app/src/assets/file-icons/copilot_light.svg
deleted file mode 100644
index 9bc56ea84..000000000
--- a/packages/app/src/assets/file-icons/copilot_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cpp.svg b/packages/app/src/assets/file-icons/cpp.svg
deleted file mode 100644
index 16534acac..000000000
--- a/packages/app/src/assets/file-icons/cpp.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/craco.svg b/packages/app/src/assets/file-icons/craco.svg
deleted file mode 100644
index 96ba45846..000000000
--- a/packages/app/src/assets/file-icons/craco.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/credits.svg b/packages/app/src/assets/file-icons/credits.svg
deleted file mode 100644
index b67c55a8c..000000000
--- a/packages/app/src/assets/file-icons/credits.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/crystal.svg b/packages/app/src/assets/file-icons/crystal.svg
deleted file mode 100644
index e3796bfa5..000000000
--- a/packages/app/src/assets/file-icons/crystal.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/crystal_light.svg b/packages/app/src/assets/file-icons/crystal_light.svg
deleted file mode 100644
index ca387f4e9..000000000
--- a/packages/app/src/assets/file-icons/crystal_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/csharp.svg b/packages/app/src/assets/file-icons/csharp.svg
deleted file mode 100644
index 02b1be3e1..000000000
--- a/packages/app/src/assets/file-icons/csharp.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/css-map.svg b/packages/app/src/assets/file-icons/css-map.svg
deleted file mode 100644
index 55b74c088..000000000
--- a/packages/app/src/assets/file-icons/css-map.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/css.svg b/packages/app/src/assets/file-icons/css.svg
deleted file mode 100644
index 1acad1be2..000000000
--- a/packages/app/src/assets/file-icons/css.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cucumber.svg b/packages/app/src/assets/file-icons/cucumber.svg
deleted file mode 100644
index 052fd2955..000000000
--- a/packages/app/src/assets/file-icons/cucumber.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cuda.svg b/packages/app/src/assets/file-icons/cuda.svg
deleted file mode 100644
index cc57a60fc..000000000
--- a/packages/app/src/assets/file-icons/cuda.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/cursor.svg b/packages/app/src/assets/file-icons/cursor.svg
deleted file mode 100644
index b754147ff..000000000
--- a/packages/app/src/assets/file-icons/cursor.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/cursor_light.svg b/packages/app/src/assets/file-icons/cursor_light.svg
deleted file mode 100644
index f65b6461a..000000000
--- a/packages/app/src/assets/file-icons/cursor_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/cypress.svg b/packages/app/src/assets/file-icons/cypress.svg
deleted file mode 100644
index 35274d3a0..000000000
--- a/packages/app/src/assets/file-icons/cypress.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/d.svg b/packages/app/src/assets/file-icons/d.svg
deleted file mode 100644
index 3207725da..000000000
--- a/packages/app/src/assets/file-icons/d.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dart.svg b/packages/app/src/assets/file-icons/dart.svg
deleted file mode 100644
index 04b22d09c..000000000
--- a/packages/app/src/assets/file-icons/dart.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dart_generated.svg b/packages/app/src/assets/file-icons/dart_generated.svg
deleted file mode 100644
index 8f64f5f02..000000000
--- a/packages/app/src/assets/file-icons/dart_generated.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/database.svg b/packages/app/src/assets/file-icons/database.svg
deleted file mode 100644
index b10723460..000000000
--- a/packages/app/src/assets/file-icons/database.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/deepsource.svg b/packages/app/src/assets/file-icons/deepsource.svg
deleted file mode 100644
index d70fd467c..000000000
--- a/packages/app/src/assets/file-icons/deepsource.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/denizenscript.svg b/packages/app/src/assets/file-icons/denizenscript.svg
deleted file mode 100644
index 2debb9da2..000000000
--- a/packages/app/src/assets/file-icons/denizenscript.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/deno.svg b/packages/app/src/assets/file-icons/deno.svg
deleted file mode 100644
index 344a12e40..000000000
--- a/packages/app/src/assets/file-icons/deno.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/deno_light.svg b/packages/app/src/assets/file-icons/deno_light.svg
deleted file mode 100644
index ee82ea7c7..000000000
--- a/packages/app/src/assets/file-icons/deno_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dependabot.svg b/packages/app/src/assets/file-icons/dependabot.svg
deleted file mode 100644
index 3b101a12f..000000000
--- a/packages/app/src/assets/file-icons/dependabot.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dependencies-update.svg b/packages/app/src/assets/file-icons/dependencies-update.svg
deleted file mode 100644
index b85ad9e5f..000000000
--- a/packages/app/src/assets/file-icons/dependencies-update.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dhall.svg b/packages/app/src/assets/file-icons/dhall.svg
deleted file mode 100644
index 0be94119d..000000000
--- a/packages/app/src/assets/file-icons/dhall.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/diff.svg b/packages/app/src/assets/file-icons/diff.svg
deleted file mode 100644
index ea3068c60..000000000
--- a/packages/app/src/assets/file-icons/diff.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dinophp.svg b/packages/app/src/assets/file-icons/dinophp.svg
deleted file mode 100644
index 8e6ef29af..000000000
--- a/packages/app/src/assets/file-icons/dinophp.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/disc.svg b/packages/app/src/assets/file-icons/disc.svg
deleted file mode 100644
index b0d74dc25..000000000
--- a/packages/app/src/assets/file-icons/disc.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/django.svg b/packages/app/src/assets/file-icons/django.svg
deleted file mode 100644
index 64c9ee339..000000000
--- a/packages/app/src/assets/file-icons/django.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dll.svg b/packages/app/src/assets/file-icons/dll.svg
deleted file mode 100644
index 0646cbb03..000000000
--- a/packages/app/src/assets/file-icons/dll.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/docker.svg b/packages/app/src/assets/file-icons/docker.svg
deleted file mode 100644
index 7d6a1a525..000000000
--- a/packages/app/src/assets/file-icons/docker.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/doctex-installer.svg b/packages/app/src/assets/file-icons/doctex-installer.svg
deleted file mode 100644
index 5bdb4439f..000000000
--- a/packages/app/src/assets/file-icons/doctex-installer.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/document.svg b/packages/app/src/assets/file-icons/document.svg
deleted file mode 100644
index a717956b7..000000000
--- a/packages/app/src/assets/file-icons/document.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dotjs.svg b/packages/app/src/assets/file-icons/dotjs.svg
deleted file mode 100644
index 5ac893c6a..000000000
--- a/packages/app/src/assets/file-icons/dotjs.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/drawio.svg b/packages/app/src/assets/file-icons/drawio.svg
deleted file mode 100644
index 8ef1bcb72..000000000
--- a/packages/app/src/assets/file-icons/drawio.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/drizzle.svg b/packages/app/src/assets/file-icons/drizzle.svg
deleted file mode 100644
index 72f1b21aa..000000000
--- a/packages/app/src/assets/file-icons/drizzle.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/drone.svg b/packages/app/src/assets/file-icons/drone.svg
deleted file mode 100644
index 5e3082d31..000000000
--- a/packages/app/src/assets/file-icons/drone.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/drone_light.svg b/packages/app/src/assets/file-icons/drone_light.svg
deleted file mode 100644
index ce3ad253b..000000000
--- a/packages/app/src/assets/file-icons/drone_light.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/duc.svg b/packages/app/src/assets/file-icons/duc.svg
deleted file mode 100644
index 1d85b34ad..000000000
--- a/packages/app/src/assets/file-icons/duc.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/dune.svg b/packages/app/src/assets/file-icons/dune.svg
deleted file mode 100644
index 1a35e7001..000000000
--- a/packages/app/src/assets/file-icons/dune.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/edge.svg b/packages/app/src/assets/file-icons/edge.svg
deleted file mode 100644
index 298b55890..000000000
--- a/packages/app/src/assets/file-icons/edge.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/editorconfig.svg b/packages/app/src/assets/file-icons/editorconfig.svg
deleted file mode 100644
index ba528993d..000000000
--- a/packages/app/src/assets/file-icons/editorconfig.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ejs.svg b/packages/app/src/assets/file-icons/ejs.svg
deleted file mode 100644
index 6ead40eba..000000000
--- a/packages/app/src/assets/file-icons/ejs.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/elixir.svg b/packages/app/src/assets/file-icons/elixir.svg
deleted file mode 100644
index d40f90b47..000000000
--- a/packages/app/src/assets/file-icons/elixir.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/elm.svg b/packages/app/src/assets/file-icons/elm.svg
deleted file mode 100644
index c17b74d7d..000000000
--- a/packages/app/src/assets/file-icons/elm.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/email.svg b/packages/app/src/assets/file-icons/email.svg
deleted file mode 100644
index a603e1477..000000000
--- a/packages/app/src/assets/file-icons/email.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ember.svg b/packages/app/src/assets/file-icons/ember.svg
deleted file mode 100644
index c16cef13c..000000000
--- a/packages/app/src/assets/file-icons/ember.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/epub.svg b/packages/app/src/assets/file-icons/epub.svg
deleted file mode 100644
index 98f11d490..000000000
--- a/packages/app/src/assets/file-icons/epub.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/erlang.svg b/packages/app/src/assets/file-icons/erlang.svg
deleted file mode 100644
index 41025d6dc..000000000
--- a/packages/app/src/assets/file-icons/erlang.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/esbuild.svg b/packages/app/src/assets/file-icons/esbuild.svg
deleted file mode 100644
index e682d6b10..000000000
--- a/packages/app/src/assets/file-icons/esbuild.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/eslint.svg b/packages/app/src/assets/file-icons/eslint.svg
deleted file mode 100644
index 54fe8cc22..000000000
--- a/packages/app/src/assets/file-icons/eslint.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/excalidraw.svg b/packages/app/src/assets/file-icons/excalidraw.svg
deleted file mode 100644
index c1e1bca9c..000000000
--- a/packages/app/src/assets/file-icons/excalidraw.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/exe.svg b/packages/app/src/assets/file-icons/exe.svg
deleted file mode 100644
index dde947d80..000000000
--- a/packages/app/src/assets/file-icons/exe.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/fastlane.svg b/packages/app/src/assets/file-icons/fastlane.svg
deleted file mode 100644
index 44d042fbd..000000000
--- a/packages/app/src/assets/file-icons/fastlane.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/favicon.svg b/packages/app/src/assets/file-icons/favicon.svg
deleted file mode 100644
index 21abf661b..000000000
--- a/packages/app/src/assets/file-icons/favicon.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/figma.svg b/packages/app/src/assets/file-icons/figma.svg
deleted file mode 100644
index db4522bec..000000000
--- a/packages/app/src/assets/file-icons/figma.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/firebase.svg b/packages/app/src/assets/file-icons/firebase.svg
deleted file mode 100644
index bb3b63cb8..000000000
--- a/packages/app/src/assets/file-icons/firebase.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/flash.svg b/packages/app/src/assets/file-icons/flash.svg
deleted file mode 100644
index abd6e01e9..000000000
--- a/packages/app/src/assets/file-icons/flash.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/flow.svg b/packages/app/src/assets/file-icons/flow.svg
deleted file mode 100644
index 05919810f..000000000
--- a/packages/app/src/assets/file-icons/flow.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-admin-open.svg b/packages/app/src/assets/file-icons/folder-admin-open.svg
deleted file mode 100644
index 5e77464ff..000000000
--- a/packages/app/src/assets/file-icons/folder-admin-open.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-admin.svg b/packages/app/src/assets/file-icons/folder-admin.svg
deleted file mode 100644
index f8d1ea13c..000000000
--- a/packages/app/src/assets/file-icons/folder-admin.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-android-open.svg b/packages/app/src/assets/file-icons/folder-android-open.svg
deleted file mode 100644
index cdd8376ff..000000000
--- a/packages/app/src/assets/file-icons/folder-android-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-android.svg b/packages/app/src/assets/file-icons/folder-android.svg
deleted file mode 100644
index 7ee8a4679..000000000
--- a/packages/app/src/assets/file-icons/folder-android.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-angular-open.svg b/packages/app/src/assets/file-icons/folder-angular-open.svg
deleted file mode 100644
index 60c604e84..000000000
--- a/packages/app/src/assets/file-icons/folder-angular-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-angular.svg b/packages/app/src/assets/file-icons/folder-angular.svg
deleted file mode 100644
index 3d8c87d32..000000000
--- a/packages/app/src/assets/file-icons/folder-angular.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-animation-open.svg b/packages/app/src/assets/file-icons/folder-animation-open.svg
deleted file mode 100644
index 637a3af6b..000000000
--- a/packages/app/src/assets/file-icons/folder-animation-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-animation.svg b/packages/app/src/assets/file-icons/folder-animation.svg
deleted file mode 100644
index 6b5bb691f..000000000
--- a/packages/app/src/assets/file-icons/folder-animation.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ansible-open.svg b/packages/app/src/assets/file-icons/folder-ansible-open.svg
deleted file mode 100644
index 96df458dd..000000000
--- a/packages/app/src/assets/file-icons/folder-ansible-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ansible.svg b/packages/app/src/assets/file-icons/folder-ansible.svg
deleted file mode 100644
index f4303155b..000000000
--- a/packages/app/src/assets/file-icons/folder-ansible.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-api-open.svg b/packages/app/src/assets/file-icons/folder-api-open.svg
deleted file mode 100644
index ac3edb976..000000000
--- a/packages/app/src/assets/file-icons/folder-api-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-api.svg b/packages/app/src/assets/file-icons/folder-api.svg
deleted file mode 100644
index bf1d64c54..000000000
--- a/packages/app/src/assets/file-icons/folder-api.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-apollo-open.svg b/packages/app/src/assets/file-icons/folder-apollo-open.svg
deleted file mode 100644
index f0febaf95..000000000
--- a/packages/app/src/assets/file-icons/folder-apollo-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-apollo.svg b/packages/app/src/assets/file-icons/folder-apollo.svg
deleted file mode 100644
index 7eb610781..000000000
--- a/packages/app/src/assets/file-icons/folder-apollo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-app-open.svg b/packages/app/src/assets/file-icons/folder-app-open.svg
deleted file mode 100644
index c9da6a7bb..000000000
--- a/packages/app/src/assets/file-icons/folder-app-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-app.svg b/packages/app/src/assets/file-icons/folder-app.svg
deleted file mode 100644
index d0e37f19d..000000000
--- a/packages/app/src/assets/file-icons/folder-app.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-archive-open.svg b/packages/app/src/assets/file-icons/folder-archive-open.svg
deleted file mode 100644
index 6af2a9f0a..000000000
--- a/packages/app/src/assets/file-icons/folder-archive-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-archive.svg b/packages/app/src/assets/file-icons/folder-archive.svg
deleted file mode 100644
index b018654b2..000000000
--- a/packages/app/src/assets/file-icons/folder-archive.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-astro-open.svg b/packages/app/src/assets/file-icons/folder-astro-open.svg
deleted file mode 100644
index 282a3ce0a..000000000
--- a/packages/app/src/assets/file-icons/folder-astro-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-astro.svg b/packages/app/src/assets/file-icons/folder-astro.svg
deleted file mode 100644
index b324019e7..000000000
--- a/packages/app/src/assets/file-icons/folder-astro.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-atom-open.svg b/packages/app/src/assets/file-icons/folder-atom-open.svg
deleted file mode 100644
index 5558d1841..000000000
--- a/packages/app/src/assets/file-icons/folder-atom-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-atom.svg b/packages/app/src/assets/file-icons/folder-atom.svg
deleted file mode 100644
index c272f6ecd..000000000
--- a/packages/app/src/assets/file-icons/folder-atom.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-attachment-open.svg b/packages/app/src/assets/file-icons/folder-attachment-open.svg
deleted file mode 100644
index 7a9af66f1..000000000
--- a/packages/app/src/assets/file-icons/folder-attachment-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-attachment.svg b/packages/app/src/assets/file-icons/folder-attachment.svg
deleted file mode 100644
index 3b9992e31..000000000
--- a/packages/app/src/assets/file-icons/folder-attachment.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-audio-open.svg b/packages/app/src/assets/file-icons/folder-audio-open.svg
deleted file mode 100644
index 6d9b23836..000000000
--- a/packages/app/src/assets/file-icons/folder-audio-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-audio.svg b/packages/app/src/assets/file-icons/folder-audio.svg
deleted file mode 100644
index e3d0db3d0..000000000
--- a/packages/app/src/assets/file-icons/folder-audio.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-aurelia-open.svg b/packages/app/src/assets/file-icons/folder-aurelia-open.svg
deleted file mode 100644
index bacae248a..000000000
--- a/packages/app/src/assets/file-icons/folder-aurelia-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-aurelia.svg b/packages/app/src/assets/file-icons/folder-aurelia.svg
deleted file mode 100644
index 61ee59ed3..000000000
--- a/packages/app/src/assets/file-icons/folder-aurelia.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-aws-open.svg b/packages/app/src/assets/file-icons/folder-aws-open.svg
deleted file mode 100644
index 9e530d4cf..000000000
--- a/packages/app/src/assets/file-icons/folder-aws-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-aws.svg b/packages/app/src/assets/file-icons/folder-aws.svg
deleted file mode 100644
index 769755d14..000000000
--- a/packages/app/src/assets/file-icons/folder-aws.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-azure-pipelines-open.svg b/packages/app/src/assets/file-icons/folder-azure-pipelines-open.svg
deleted file mode 100644
index 9253cd5a6..000000000
--- a/packages/app/src/assets/file-icons/folder-azure-pipelines-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-azure-pipelines.svg b/packages/app/src/assets/file-icons/folder-azure-pipelines.svg
deleted file mode 100644
index a0fef25f9..000000000
--- a/packages/app/src/assets/file-icons/folder-azure-pipelines.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-backup-open.svg b/packages/app/src/assets/file-icons/folder-backup-open.svg
deleted file mode 100644
index c2914ee22..000000000
--- a/packages/app/src/assets/file-icons/folder-backup-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-backup.svg b/packages/app/src/assets/file-icons/folder-backup.svg
deleted file mode 100644
index aa9a6c942..000000000
--- a/packages/app/src/assets/file-icons/folder-backup.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-base-open.svg b/packages/app/src/assets/file-icons/folder-base-open.svg
deleted file mode 100644
index e84bc36c1..000000000
--- a/packages/app/src/assets/file-icons/folder-base-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-base.svg b/packages/app/src/assets/file-icons/folder-base.svg
deleted file mode 100644
index 194410083..000000000
--- a/packages/app/src/assets/file-icons/folder-base.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-batch-open.svg b/packages/app/src/assets/file-icons/folder-batch-open.svg
deleted file mode 100644
index 1db45e181..000000000
--- a/packages/app/src/assets/file-icons/folder-batch-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-batch.svg b/packages/app/src/assets/file-icons/folder-batch.svg
deleted file mode 100644
index c44a66bc2..000000000
--- a/packages/app/src/assets/file-icons/folder-batch.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-benchmark-open.svg b/packages/app/src/assets/file-icons/folder-benchmark-open.svg
deleted file mode 100644
index fa7b3ea60..000000000
--- a/packages/app/src/assets/file-icons/folder-benchmark-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-benchmark.svg b/packages/app/src/assets/file-icons/folder-benchmark.svg
deleted file mode 100644
index 8291d6847..000000000
--- a/packages/app/src/assets/file-icons/folder-benchmark.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bibliography-open.svg b/packages/app/src/assets/file-icons/folder-bibliography-open.svg
deleted file mode 100644
index 81b6cde63..000000000
--- a/packages/app/src/assets/file-icons/folder-bibliography-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bibliography.svg b/packages/app/src/assets/file-icons/folder-bibliography.svg
deleted file mode 100644
index aa1e92a91..000000000
--- a/packages/app/src/assets/file-icons/folder-bibliography.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bicep-open.svg b/packages/app/src/assets/file-icons/folder-bicep-open.svg
deleted file mode 100644
index 72519ce9d..000000000
--- a/packages/app/src/assets/file-icons/folder-bicep-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bicep.svg b/packages/app/src/assets/file-icons/folder-bicep.svg
deleted file mode 100644
index b336ff5be..000000000
--- a/packages/app/src/assets/file-icons/folder-bicep.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-blender-open.svg b/packages/app/src/assets/file-icons/folder-blender-open.svg
deleted file mode 100644
index 1c80d73a6..000000000
--- a/packages/app/src/assets/file-icons/folder-blender-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-blender.svg b/packages/app/src/assets/file-icons/folder-blender.svg
deleted file mode 100644
index 6f56dce4d..000000000
--- a/packages/app/src/assets/file-icons/folder-blender.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bloc-open.svg b/packages/app/src/assets/file-icons/folder-bloc-open.svg
deleted file mode 100644
index 8833e5f3c..000000000
--- a/packages/app/src/assets/file-icons/folder-bloc-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bloc.svg b/packages/app/src/assets/file-icons/folder-bloc.svg
deleted file mode 100644
index cf08363c2..000000000
--- a/packages/app/src/assets/file-icons/folder-bloc.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bower-open.svg b/packages/app/src/assets/file-icons/folder-bower-open.svg
deleted file mode 100644
index 659f87c98..000000000
--- a/packages/app/src/assets/file-icons/folder-bower-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-bower.svg b/packages/app/src/assets/file-icons/folder-bower.svg
deleted file mode 100644
index 6bfd65491..000000000
--- a/packages/app/src/assets/file-icons/folder-bower.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-buildkite-open.svg b/packages/app/src/assets/file-icons/folder-buildkite-open.svg
deleted file mode 100644
index 872db6445..000000000
--- a/packages/app/src/assets/file-icons/folder-buildkite-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-buildkite.svg b/packages/app/src/assets/file-icons/folder-buildkite.svg
deleted file mode 100644
index 9512b40a8..000000000
--- a/packages/app/src/assets/file-icons/folder-buildkite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cart-open.svg b/packages/app/src/assets/file-icons/folder-cart-open.svg
deleted file mode 100644
index 4471a778e..000000000
--- a/packages/app/src/assets/file-icons/folder-cart-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cart.svg b/packages/app/src/assets/file-icons/folder-cart.svg
deleted file mode 100644
index d19a62790..000000000
--- a/packages/app/src/assets/file-icons/folder-cart.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-changesets-open.svg b/packages/app/src/assets/file-icons/folder-changesets-open.svg
deleted file mode 100644
index c38923331..000000000
--- a/packages/app/src/assets/file-icons/folder-changesets-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-changesets.svg b/packages/app/src/assets/file-icons/folder-changesets.svg
deleted file mode 100644
index fc071f48d..000000000
--- a/packages/app/src/assets/file-icons/folder-changesets.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ci-open.svg b/packages/app/src/assets/file-icons/folder-ci-open.svg
deleted file mode 100644
index 57ac1ba8f..000000000
--- a/packages/app/src/assets/file-icons/folder-ci-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ci.svg b/packages/app/src/assets/file-icons/folder-ci.svg
deleted file mode 100644
index 4fdc2edea..000000000
--- a/packages/app/src/assets/file-icons/folder-ci.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-circleci-open.svg b/packages/app/src/assets/file-icons/folder-circleci-open.svg
deleted file mode 100644
index 9e323ff9c..000000000
--- a/packages/app/src/assets/file-icons/folder-circleci-open.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-circleci.svg b/packages/app/src/assets/file-icons/folder-circleci.svg
deleted file mode 100644
index ef3251857..000000000
--- a/packages/app/src/assets/file-icons/folder-circleci.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-class-open.svg b/packages/app/src/assets/file-icons/folder-class-open.svg
deleted file mode 100644
index 9c5b1017a..000000000
--- a/packages/app/src/assets/file-icons/folder-class-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-class.svg b/packages/app/src/assets/file-icons/folder-class.svg
deleted file mode 100644
index 8225cf14b..000000000
--- a/packages/app/src/assets/file-icons/folder-class.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-claude-open.svg b/packages/app/src/assets/file-icons/folder-claude-open.svg
deleted file mode 100644
index 1a52afdcc..000000000
--- a/packages/app/src/assets/file-icons/folder-claude-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-claude.svg b/packages/app/src/assets/file-icons/folder-claude.svg
deleted file mode 100644
index 0c85a134a..000000000
--- a/packages/app/src/assets/file-icons/folder-claude.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-client-open.svg b/packages/app/src/assets/file-icons/folder-client-open.svg
deleted file mode 100644
index ceec8f1e2..000000000
--- a/packages/app/src/assets/file-icons/folder-client-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-client.svg b/packages/app/src/assets/file-icons/folder-client.svg
deleted file mode 100644
index fbfaee77b..000000000
--- a/packages/app/src/assets/file-icons/folder-client.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cline-open.svg b/packages/app/src/assets/file-icons/folder-cline-open.svg
deleted file mode 100644
index 67ef7a261..000000000
--- a/packages/app/src/assets/file-icons/folder-cline-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cline.svg b/packages/app/src/assets/file-icons/folder-cline.svg
deleted file mode 100644
index 8fec96d74..000000000
--- a/packages/app/src/assets/file-icons/folder-cline.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cloud-functions-open.svg b/packages/app/src/assets/file-icons/folder-cloud-functions-open.svg
deleted file mode 100644
index b3ce0e4c6..000000000
--- a/packages/app/src/assets/file-icons/folder-cloud-functions-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cloud-functions.svg b/packages/app/src/assets/file-icons/folder-cloud-functions.svg
deleted file mode 100644
index 8dac84a48..000000000
--- a/packages/app/src/assets/file-icons/folder-cloud-functions.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cloudflare-open.svg b/packages/app/src/assets/file-icons/folder-cloudflare-open.svg
deleted file mode 100644
index d7022abf8..000000000
--- a/packages/app/src/assets/file-icons/folder-cloudflare-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cloudflare.svg b/packages/app/src/assets/file-icons/folder-cloudflare.svg
deleted file mode 100644
index 0cc444ea8..000000000
--- a/packages/app/src/assets/file-icons/folder-cloudflare.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cluster-open.svg b/packages/app/src/assets/file-icons/folder-cluster-open.svg
deleted file mode 100644
index 368843309..000000000
--- a/packages/app/src/assets/file-icons/folder-cluster-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cluster.svg b/packages/app/src/assets/file-icons/folder-cluster.svg
deleted file mode 100644
index 77f5b8a39..000000000
--- a/packages/app/src/assets/file-icons/folder-cluster.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cobol-open.svg b/packages/app/src/assets/file-icons/folder-cobol-open.svg
deleted file mode 100644
index 0f5e31528..000000000
--- a/packages/app/src/assets/file-icons/folder-cobol-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cobol.svg b/packages/app/src/assets/file-icons/folder-cobol.svg
deleted file mode 100644
index ea0f54d13..000000000
--- a/packages/app/src/assets/file-icons/folder-cobol.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-command-open.svg b/packages/app/src/assets/file-icons/folder-command-open.svg
deleted file mode 100644
index ca9d4dff0..000000000
--- a/packages/app/src/assets/file-icons/folder-command-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-command.svg b/packages/app/src/assets/file-icons/folder-command.svg
deleted file mode 100644
index 4015207b5..000000000
--- a/packages/app/src/assets/file-icons/folder-command.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-components-open.svg b/packages/app/src/assets/file-icons/folder-components-open.svg
deleted file mode 100644
index 2f55b72fe..000000000
--- a/packages/app/src/assets/file-icons/folder-components-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-components.svg b/packages/app/src/assets/file-icons/folder-components.svg
deleted file mode 100644
index 983833e56..000000000
--- a/packages/app/src/assets/file-icons/folder-components.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-config-open.svg b/packages/app/src/assets/file-icons/folder-config-open.svg
deleted file mode 100644
index 3b4ec5ae0..000000000
--- a/packages/app/src/assets/file-icons/folder-config-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-config.svg b/packages/app/src/assets/file-icons/folder-config.svg
deleted file mode 100644
index 8519910c2..000000000
--- a/packages/app/src/assets/file-icons/folder-config.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-connection-open.svg b/packages/app/src/assets/file-icons/folder-connection-open.svg
deleted file mode 100644
index 4d14f0962..000000000
--- a/packages/app/src/assets/file-icons/folder-connection-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-connection.svg b/packages/app/src/assets/file-icons/folder-connection.svg
deleted file mode 100644
index f46d5264c..000000000
--- a/packages/app/src/assets/file-icons/folder-connection.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-console-open.svg b/packages/app/src/assets/file-icons/folder-console-open.svg
deleted file mode 100644
index 99384a809..000000000
--- a/packages/app/src/assets/file-icons/folder-console-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-console.svg b/packages/app/src/assets/file-icons/folder-console.svg
deleted file mode 100644
index 301b10d73..000000000
--- a/packages/app/src/assets/file-icons/folder-console.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-constant-open.svg b/packages/app/src/assets/file-icons/folder-constant-open.svg
deleted file mode 100644
index 9e8791d45..000000000
--- a/packages/app/src/assets/file-icons/folder-constant-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-constant.svg b/packages/app/src/assets/file-icons/folder-constant.svg
deleted file mode 100644
index 99a22917a..000000000
--- a/packages/app/src/assets/file-icons/folder-constant.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-container-open.svg b/packages/app/src/assets/file-icons/folder-container-open.svg
deleted file mode 100644
index 9db833471..000000000
--- a/packages/app/src/assets/file-icons/folder-container-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-container.svg b/packages/app/src/assets/file-icons/folder-container.svg
deleted file mode 100644
index 3ea03c165..000000000
--- a/packages/app/src/assets/file-icons/folder-container.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-content-open.svg b/packages/app/src/assets/file-icons/folder-content-open.svg
deleted file mode 100644
index a924b27aa..000000000
--- a/packages/app/src/assets/file-icons/folder-content-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-content.svg b/packages/app/src/assets/file-icons/folder-content.svg
deleted file mode 100644
index 23f57d243..000000000
--- a/packages/app/src/assets/file-icons/folder-content.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-context-open.svg b/packages/app/src/assets/file-icons/folder-context-open.svg
deleted file mode 100644
index a631e02e9..000000000
--- a/packages/app/src/assets/file-icons/folder-context-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-context.svg b/packages/app/src/assets/file-icons/folder-context.svg
deleted file mode 100644
index bee74c196..000000000
--- a/packages/app/src/assets/file-icons/folder-context.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-contract-open.svg b/packages/app/src/assets/file-icons/folder-contract-open.svg
deleted file mode 100644
index 6878c76f6..000000000
--- a/packages/app/src/assets/file-icons/folder-contract-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-contract.svg b/packages/app/src/assets/file-icons/folder-contract.svg
deleted file mode 100644
index 2ea0abb11..000000000
--- a/packages/app/src/assets/file-icons/folder-contract.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-controller-open.svg b/packages/app/src/assets/file-icons/folder-controller-open.svg
deleted file mode 100644
index a732ed1a0..000000000
--- a/packages/app/src/assets/file-icons/folder-controller-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-controller.svg b/packages/app/src/assets/file-icons/folder-controller.svg
deleted file mode 100644
index f98cd6fea..000000000
--- a/packages/app/src/assets/file-icons/folder-controller.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-core-open.svg b/packages/app/src/assets/file-icons/folder-core-open.svg
deleted file mode 100644
index 34e7a82d2..000000000
--- a/packages/app/src/assets/file-icons/folder-core-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-core.svg b/packages/app/src/assets/file-icons/folder-core.svg
deleted file mode 100644
index f7cfae6ef..000000000
--- a/packages/app/src/assets/file-icons/folder-core.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-coverage-open.svg b/packages/app/src/assets/file-icons/folder-coverage-open.svg
deleted file mode 100644
index 5d47b2f0b..000000000
--- a/packages/app/src/assets/file-icons/folder-coverage-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-coverage.svg b/packages/app/src/assets/file-icons/folder-coverage.svg
deleted file mode 100644
index 7a75f7166..000000000
--- a/packages/app/src/assets/file-icons/folder-coverage.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-css-open.svg b/packages/app/src/assets/file-icons/folder-css-open.svg
deleted file mode 100644
index ef79791fc..000000000
--- a/packages/app/src/assets/file-icons/folder-css-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-css.svg b/packages/app/src/assets/file-icons/folder-css.svg
deleted file mode 100644
index 4ff433e92..000000000
--- a/packages/app/src/assets/file-icons/folder-css.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cursor-open.svg b/packages/app/src/assets/file-icons/folder-cursor-open.svg
deleted file mode 100644
index b6e106848..000000000
--- a/packages/app/src/assets/file-icons/folder-cursor-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cursor-open_light.svg b/packages/app/src/assets/file-icons/folder-cursor-open_light.svg
deleted file mode 100644
index c960112de..000000000
--- a/packages/app/src/assets/file-icons/folder-cursor-open_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cursor.svg b/packages/app/src/assets/file-icons/folder-cursor.svg
deleted file mode 100644
index 46726088c..000000000
--- a/packages/app/src/assets/file-icons/folder-cursor.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cursor_light.svg b/packages/app/src/assets/file-icons/folder-cursor_light.svg
deleted file mode 100644
index 391be56af..000000000
--- a/packages/app/src/assets/file-icons/folder-cursor_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-custom-open.svg b/packages/app/src/assets/file-icons/folder-custom-open.svg
deleted file mode 100644
index fe747d217..000000000
--- a/packages/app/src/assets/file-icons/folder-custom-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-custom.svg b/packages/app/src/assets/file-icons/folder-custom.svg
deleted file mode 100644
index 02ac61100..000000000
--- a/packages/app/src/assets/file-icons/folder-custom.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cypress-open.svg b/packages/app/src/assets/file-icons/folder-cypress-open.svg
deleted file mode 100644
index 2a18521a2..000000000
--- a/packages/app/src/assets/file-icons/folder-cypress-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-cypress.svg b/packages/app/src/assets/file-icons/folder-cypress.svg
deleted file mode 100644
index 39460e229..000000000
--- a/packages/app/src/assets/file-icons/folder-cypress.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-dart-open.svg b/packages/app/src/assets/file-icons/folder-dart-open.svg
deleted file mode 100644
index 8eadca02e..000000000
--- a/packages/app/src/assets/file-icons/folder-dart-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-dart.svg b/packages/app/src/assets/file-icons/folder-dart.svg
deleted file mode 100644
index 0de15182d..000000000
--- a/packages/app/src/assets/file-icons/folder-dart.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-database-open.svg b/packages/app/src/assets/file-icons/folder-database-open.svg
deleted file mode 100644
index 5bde14607..000000000
--- a/packages/app/src/assets/file-icons/folder-database-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-database.svg b/packages/app/src/assets/file-icons/folder-database.svg
deleted file mode 100644
index b256e645c..000000000
--- a/packages/app/src/assets/file-icons/folder-database.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-debug-open.svg b/packages/app/src/assets/file-icons/folder-debug-open.svg
deleted file mode 100644
index a0c16a741..000000000
--- a/packages/app/src/assets/file-icons/folder-debug-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-debug.svg b/packages/app/src/assets/file-icons/folder-debug.svg
deleted file mode 100644
index 1099873ff..000000000
--- a/packages/app/src/assets/file-icons/folder-debug.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-decorators-open.svg b/packages/app/src/assets/file-icons/folder-decorators-open.svg
deleted file mode 100644
index ff42ddeec..000000000
--- a/packages/app/src/assets/file-icons/folder-decorators-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-decorators.svg b/packages/app/src/assets/file-icons/folder-decorators.svg
deleted file mode 100644
index fcc746dc5..000000000
--- a/packages/app/src/assets/file-icons/folder-decorators.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-delta-open.svg b/packages/app/src/assets/file-icons/folder-delta-open.svg
deleted file mode 100644
index c2b56636e..000000000
--- a/packages/app/src/assets/file-icons/folder-delta-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-delta.svg b/packages/app/src/assets/file-icons/folder-delta.svg
deleted file mode 100644
index cdda479a1..000000000
--- a/packages/app/src/assets/file-icons/folder-delta.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-desktop-open.svg b/packages/app/src/assets/file-icons/folder-desktop-open.svg
deleted file mode 100644
index 880ca769b..000000000
--- a/packages/app/src/assets/file-icons/folder-desktop-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-desktop.svg b/packages/app/src/assets/file-icons/folder-desktop.svg
deleted file mode 100644
index 5a20b4960..000000000
--- a/packages/app/src/assets/file-icons/folder-desktop.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-directive-open.svg b/packages/app/src/assets/file-icons/folder-directive-open.svg
deleted file mode 100644
index 71946e510..000000000
--- a/packages/app/src/assets/file-icons/folder-directive-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-directive.svg b/packages/app/src/assets/file-icons/folder-directive.svg
deleted file mode 100644
index 4197c6803..000000000
--- a/packages/app/src/assets/file-icons/folder-directive.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-dist-open.svg b/packages/app/src/assets/file-icons/folder-dist-open.svg
deleted file mode 100644
index 553cef1cb..000000000
--- a/packages/app/src/assets/file-icons/folder-dist-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-dist.svg b/packages/app/src/assets/file-icons/folder-dist.svg
deleted file mode 100644
index 995580fda..000000000
--- a/packages/app/src/assets/file-icons/folder-dist.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-docker-open.svg b/packages/app/src/assets/file-icons/folder-docker-open.svg
deleted file mode 100644
index a76e97b94..000000000
--- a/packages/app/src/assets/file-icons/folder-docker-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-docker.svg b/packages/app/src/assets/file-icons/folder-docker.svg
deleted file mode 100644
index c5b094999..000000000
--- a/packages/app/src/assets/file-icons/folder-docker.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-docs-open.svg b/packages/app/src/assets/file-icons/folder-docs-open.svg
deleted file mode 100644
index 357776702..000000000
--- a/packages/app/src/assets/file-icons/folder-docs-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-docs.svg b/packages/app/src/assets/file-icons/folder-docs.svg
deleted file mode 100644
index 246a05d2e..000000000
--- a/packages/app/src/assets/file-icons/folder-docs.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-download-open.svg b/packages/app/src/assets/file-icons/folder-download-open.svg
deleted file mode 100644
index ddb9c2416..000000000
--- a/packages/app/src/assets/file-icons/folder-download-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-download.svg b/packages/app/src/assets/file-icons/folder-download.svg
deleted file mode 100644
index 34105b932..000000000
--- a/packages/app/src/assets/file-icons/folder-download.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-drizzle-open.svg b/packages/app/src/assets/file-icons/folder-drizzle-open.svg
deleted file mode 100644
index 5f0cd591a..000000000
--- a/packages/app/src/assets/file-icons/folder-drizzle-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-drizzle.svg b/packages/app/src/assets/file-icons/folder-drizzle.svg
deleted file mode 100644
index d01a18618..000000000
--- a/packages/app/src/assets/file-icons/folder-drizzle.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-dump-open.svg b/packages/app/src/assets/file-icons/folder-dump-open.svg
deleted file mode 100644
index b4de7f861..000000000
--- a/packages/app/src/assets/file-icons/folder-dump-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-dump.svg b/packages/app/src/assets/file-icons/folder-dump.svg
deleted file mode 100644
index 8178fcc03..000000000
--- a/packages/app/src/assets/file-icons/folder-dump.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-element-open.svg b/packages/app/src/assets/file-icons/folder-element-open.svg
deleted file mode 100644
index 32dc7cd87..000000000
--- a/packages/app/src/assets/file-icons/folder-element-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-element.svg b/packages/app/src/assets/file-icons/folder-element.svg
deleted file mode 100644
index d67a85ade..000000000
--- a/packages/app/src/assets/file-icons/folder-element.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-enum-open.svg b/packages/app/src/assets/file-icons/folder-enum-open.svg
deleted file mode 100644
index 92782b157..000000000
--- a/packages/app/src/assets/file-icons/folder-enum-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-enum.svg b/packages/app/src/assets/file-icons/folder-enum.svg
deleted file mode 100644
index fa852efd8..000000000
--- a/packages/app/src/assets/file-icons/folder-enum.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-environment-open.svg b/packages/app/src/assets/file-icons/folder-environment-open.svg
deleted file mode 100644
index 3b56abb18..000000000
--- a/packages/app/src/assets/file-icons/folder-environment-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-environment.svg b/packages/app/src/assets/file-icons/folder-environment.svg
deleted file mode 100644
index 9cc1f2e00..000000000
--- a/packages/app/src/assets/file-icons/folder-environment.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-error-open.svg b/packages/app/src/assets/file-icons/folder-error-open.svg
deleted file mode 100644
index 81f0ffc20..000000000
--- a/packages/app/src/assets/file-icons/folder-error-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-error.svg b/packages/app/src/assets/file-icons/folder-error.svg
deleted file mode 100644
index 3bd1d85d6..000000000
--- a/packages/app/src/assets/file-icons/folder-error.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-event-open.svg b/packages/app/src/assets/file-icons/folder-event-open.svg
deleted file mode 100644
index 28c018d44..000000000
--- a/packages/app/src/assets/file-icons/folder-event-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-event.svg b/packages/app/src/assets/file-icons/folder-event.svg
deleted file mode 100644
index f54dea6d8..000000000
--- a/packages/app/src/assets/file-icons/folder-event.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-examples-open.svg b/packages/app/src/assets/file-icons/folder-examples-open.svg
deleted file mode 100644
index 78c77a918..000000000
--- a/packages/app/src/assets/file-icons/folder-examples-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-examples.svg b/packages/app/src/assets/file-icons/folder-examples.svg
deleted file mode 100644
index fba8885ab..000000000
--- a/packages/app/src/assets/file-icons/folder-examples.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-expo-open.svg b/packages/app/src/assets/file-icons/folder-expo-open.svg
deleted file mode 100644
index 614435aba..000000000
--- a/packages/app/src/assets/file-icons/folder-expo-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-expo.svg b/packages/app/src/assets/file-icons/folder-expo.svg
deleted file mode 100644
index 820a998b6..000000000
--- a/packages/app/src/assets/file-icons/folder-expo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-export-open.svg b/packages/app/src/assets/file-icons/folder-export-open.svg
deleted file mode 100644
index f03eb1bba..000000000
--- a/packages/app/src/assets/file-icons/folder-export-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-export.svg b/packages/app/src/assets/file-icons/folder-export.svg
deleted file mode 100644
index 1b3e3abe7..000000000
--- a/packages/app/src/assets/file-icons/folder-export.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-fastlane-open.svg b/packages/app/src/assets/file-icons/folder-fastlane-open.svg
deleted file mode 100644
index 5efb2acad..000000000
--- a/packages/app/src/assets/file-icons/folder-fastlane-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-fastlane.svg b/packages/app/src/assets/file-icons/folder-fastlane.svg
deleted file mode 100644
index eb9056694..000000000
--- a/packages/app/src/assets/file-icons/folder-fastlane.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-favicon-open.svg b/packages/app/src/assets/file-icons/folder-favicon-open.svg
deleted file mode 100644
index b716525ab..000000000
--- a/packages/app/src/assets/file-icons/folder-favicon-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-favicon.svg b/packages/app/src/assets/file-icons/folder-favicon.svg
deleted file mode 100644
index 6ef90d91c..000000000
--- a/packages/app/src/assets/file-icons/folder-favicon.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-firebase-open.svg b/packages/app/src/assets/file-icons/folder-firebase-open.svg
deleted file mode 100644
index 7149b48f6..000000000
--- a/packages/app/src/assets/file-icons/folder-firebase-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-firebase.svg b/packages/app/src/assets/file-icons/folder-firebase.svg
deleted file mode 100644
index 9eeac86b9..000000000
--- a/packages/app/src/assets/file-icons/folder-firebase.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-firestore-open.svg b/packages/app/src/assets/file-icons/folder-firestore-open.svg
deleted file mode 100644
index a3e6edac7..000000000
--- a/packages/app/src/assets/file-icons/folder-firestore-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-firestore.svg b/packages/app/src/assets/file-icons/folder-firestore.svg
deleted file mode 100644
index cb1249af0..000000000
--- a/packages/app/src/assets/file-icons/folder-firestore.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-flow-open.svg b/packages/app/src/assets/file-icons/folder-flow-open.svg
deleted file mode 100644
index a72dd76b7..000000000
--- a/packages/app/src/assets/file-icons/folder-flow-open.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-flow.svg b/packages/app/src/assets/file-icons/folder-flow.svg
deleted file mode 100644
index 015518922..000000000
--- a/packages/app/src/assets/file-icons/folder-flow.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-flutter-open.svg b/packages/app/src/assets/file-icons/folder-flutter-open.svg
deleted file mode 100644
index b95a8cee7..000000000
--- a/packages/app/src/assets/file-icons/folder-flutter-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-flutter.svg b/packages/app/src/assets/file-icons/folder-flutter.svg
deleted file mode 100644
index e5ffced14..000000000
--- a/packages/app/src/assets/file-icons/folder-flutter.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-font-open.svg b/packages/app/src/assets/file-icons/folder-font-open.svg
deleted file mode 100644
index 1a91f0b19..000000000
--- a/packages/app/src/assets/file-icons/folder-font-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-font.svg b/packages/app/src/assets/file-icons/folder-font.svg
deleted file mode 100644
index 0115b7301..000000000
--- a/packages/app/src/assets/file-icons/folder-font.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-forgejo-open.svg b/packages/app/src/assets/file-icons/folder-forgejo-open.svg
deleted file mode 100644
index a9762228e..000000000
--- a/packages/app/src/assets/file-icons/folder-forgejo-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-forgejo.svg b/packages/app/src/assets/file-icons/folder-forgejo.svg
deleted file mode 100644
index 0eaccff60..000000000
--- a/packages/app/src/assets/file-icons/folder-forgejo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-functions-open.svg b/packages/app/src/assets/file-icons/folder-functions-open.svg
deleted file mode 100644
index 00d6dc442..000000000
--- a/packages/app/src/assets/file-icons/folder-functions-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-functions.svg b/packages/app/src/assets/file-icons/folder-functions.svg
deleted file mode 100644
index 01a938514..000000000
--- a/packages/app/src/assets/file-icons/folder-functions.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gamemaker-open.svg b/packages/app/src/assets/file-icons/folder-gamemaker-open.svg
deleted file mode 100644
index caf9a82ea..000000000
--- a/packages/app/src/assets/file-icons/folder-gamemaker-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gamemaker.svg b/packages/app/src/assets/file-icons/folder-gamemaker.svg
deleted file mode 100644
index 625feb382..000000000
--- a/packages/app/src/assets/file-icons/folder-gamemaker.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-generator-open.svg b/packages/app/src/assets/file-icons/folder-generator-open.svg
deleted file mode 100644
index 43b504732..000000000
--- a/packages/app/src/assets/file-icons/folder-generator-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-generator.svg b/packages/app/src/assets/file-icons/folder-generator.svg
deleted file mode 100644
index 5446582e9..000000000
--- a/packages/app/src/assets/file-icons/folder-generator.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gh-workflows-open.svg b/packages/app/src/assets/file-icons/folder-gh-workflows-open.svg
deleted file mode 100644
index 3ae400ed9..000000000
--- a/packages/app/src/assets/file-icons/folder-gh-workflows-open.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-gh-workflows.svg b/packages/app/src/assets/file-icons/folder-gh-workflows.svg
deleted file mode 100644
index 3a868cca9..000000000
--- a/packages/app/src/assets/file-icons/folder-gh-workflows.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-git-open.svg b/packages/app/src/assets/file-icons/folder-git-open.svg
deleted file mode 100644
index 90be1c118..000000000
--- a/packages/app/src/assets/file-icons/folder-git-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-git.svg b/packages/app/src/assets/file-icons/folder-git.svg
deleted file mode 100644
index 2ca4db551..000000000
--- a/packages/app/src/assets/file-icons/folder-git.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gitea-open.svg b/packages/app/src/assets/file-icons/folder-gitea-open.svg
deleted file mode 100644
index 239800c47..000000000
--- a/packages/app/src/assets/file-icons/folder-gitea-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gitea.svg b/packages/app/src/assets/file-icons/folder-gitea.svg
deleted file mode 100644
index ac041b325..000000000
--- a/packages/app/src/assets/file-icons/folder-gitea.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-github-open.svg b/packages/app/src/assets/file-icons/folder-github-open.svg
deleted file mode 100644
index 84e5bee84..000000000
--- a/packages/app/src/assets/file-icons/folder-github-open.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-github.svg b/packages/app/src/assets/file-icons/folder-github.svg
deleted file mode 100644
index 374bcae0b..000000000
--- a/packages/app/src/assets/file-icons/folder-github.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-gitlab-open.svg b/packages/app/src/assets/file-icons/folder-gitlab-open.svg
deleted file mode 100644
index fc4deb295..000000000
--- a/packages/app/src/assets/file-icons/folder-gitlab-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gitlab.svg b/packages/app/src/assets/file-icons/folder-gitlab.svg
deleted file mode 100644
index 55db99e0d..000000000
--- a/packages/app/src/assets/file-icons/folder-gitlab.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-global-open.svg b/packages/app/src/assets/file-icons/folder-global-open.svg
deleted file mode 100644
index 13e72e070..000000000
--- a/packages/app/src/assets/file-icons/folder-global-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-global.svg b/packages/app/src/assets/file-icons/folder-global.svg
deleted file mode 100644
index 8ada6a6dd..000000000
--- a/packages/app/src/assets/file-icons/folder-global.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-godot-open.svg b/packages/app/src/assets/file-icons/folder-godot-open.svg
deleted file mode 100644
index fd785504a..000000000
--- a/packages/app/src/assets/file-icons/folder-godot-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-godot.svg b/packages/app/src/assets/file-icons/folder-godot.svg
deleted file mode 100644
index dc4b5d10b..000000000
--- a/packages/app/src/assets/file-icons/folder-godot.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gradle-open.svg b/packages/app/src/assets/file-icons/folder-gradle-open.svg
deleted file mode 100644
index 51725e722..000000000
--- a/packages/app/src/assets/file-icons/folder-gradle-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gradle.svg b/packages/app/src/assets/file-icons/folder-gradle.svg
deleted file mode 100644
index 93e843d2b..000000000
--- a/packages/app/src/assets/file-icons/folder-gradle.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-graphql-open.svg b/packages/app/src/assets/file-icons/folder-graphql-open.svg
deleted file mode 100644
index ac2365092..000000000
--- a/packages/app/src/assets/file-icons/folder-graphql-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-graphql.svg b/packages/app/src/assets/file-icons/folder-graphql.svg
deleted file mode 100644
index 1d7b1cc68..000000000
--- a/packages/app/src/assets/file-icons/folder-graphql.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-guard-open.svg b/packages/app/src/assets/file-icons/folder-guard-open.svg
deleted file mode 100644
index f7031e257..000000000
--- a/packages/app/src/assets/file-icons/folder-guard-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-guard.svg b/packages/app/src/assets/file-icons/folder-guard.svg
deleted file mode 100644
index b4269ed22..000000000
--- a/packages/app/src/assets/file-icons/folder-guard.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gulp-open.svg b/packages/app/src/assets/file-icons/folder-gulp-open.svg
deleted file mode 100644
index 556e7399a..000000000
--- a/packages/app/src/assets/file-icons/folder-gulp-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-gulp.svg b/packages/app/src/assets/file-icons/folder-gulp.svg
deleted file mode 100644
index 339523138..000000000
--- a/packages/app/src/assets/file-icons/folder-gulp.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-helm-open.svg b/packages/app/src/assets/file-icons/folder-helm-open.svg
deleted file mode 100644
index 6bbf0cc6d..000000000
--- a/packages/app/src/assets/file-icons/folder-helm-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-helm.svg b/packages/app/src/assets/file-icons/folder-helm.svg
deleted file mode 100644
index 7b7d7a7a4..000000000
--- a/packages/app/src/assets/file-icons/folder-helm.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-helper-open.svg b/packages/app/src/assets/file-icons/folder-helper-open.svg
deleted file mode 100644
index 6fca39118..000000000
--- a/packages/app/src/assets/file-icons/folder-helper-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-helper.svg b/packages/app/src/assets/file-icons/folder-helper.svg
deleted file mode 100644
index 27a20d43c..000000000
--- a/packages/app/src/assets/file-icons/folder-helper.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-home-open.svg b/packages/app/src/assets/file-icons/folder-home-open.svg
deleted file mode 100644
index 8b0f0ca01..000000000
--- a/packages/app/src/assets/file-icons/folder-home-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-home.svg b/packages/app/src/assets/file-icons/folder-home.svg
deleted file mode 100644
index a4deeef4a..000000000
--- a/packages/app/src/assets/file-icons/folder-home.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-hook-open.svg b/packages/app/src/assets/file-icons/folder-hook-open.svg
deleted file mode 100644
index 17d62310d..000000000
--- a/packages/app/src/assets/file-icons/folder-hook-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-hook.svg b/packages/app/src/assets/file-icons/folder-hook.svg
deleted file mode 100644
index 2105709e2..000000000
--- a/packages/app/src/assets/file-icons/folder-hook.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-husky-open.svg b/packages/app/src/assets/file-icons/folder-husky-open.svg
deleted file mode 100644
index 88c19e895..000000000
--- a/packages/app/src/assets/file-icons/folder-husky-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-husky.svg b/packages/app/src/assets/file-icons/folder-husky.svg
deleted file mode 100644
index 1bbdc4c37..000000000
--- a/packages/app/src/assets/file-icons/folder-husky.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-i18n-open.svg b/packages/app/src/assets/file-icons/folder-i18n-open.svg
deleted file mode 100644
index bc1a53c0f..000000000
--- a/packages/app/src/assets/file-icons/folder-i18n-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-i18n.svg b/packages/app/src/assets/file-icons/folder-i18n.svg
deleted file mode 100644
index 6ef028377..000000000
--- a/packages/app/src/assets/file-icons/folder-i18n.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-images-open.svg b/packages/app/src/assets/file-icons/folder-images-open.svg
deleted file mode 100644
index 44a673b14..000000000
--- a/packages/app/src/assets/file-icons/folder-images-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-images.svg b/packages/app/src/assets/file-icons/folder-images.svg
deleted file mode 100644
index 5b63a6c3a..000000000
--- a/packages/app/src/assets/file-icons/folder-images.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-import-open.svg b/packages/app/src/assets/file-icons/folder-import-open.svg
deleted file mode 100644
index a58a7e64f..000000000
--- a/packages/app/src/assets/file-icons/folder-import-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-import.svg b/packages/app/src/assets/file-icons/folder-import.svg
deleted file mode 100644
index 0c0f42e57..000000000
--- a/packages/app/src/assets/file-icons/folder-import.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-include-open.svg b/packages/app/src/assets/file-icons/folder-include-open.svg
deleted file mode 100644
index fc2c011ba..000000000
--- a/packages/app/src/assets/file-icons/folder-include-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-include.svg b/packages/app/src/assets/file-icons/folder-include.svg
deleted file mode 100644
index 117b91a2c..000000000
--- a/packages/app/src/assets/file-icons/folder-include.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-intellij-open.svg b/packages/app/src/assets/file-icons/folder-intellij-open.svg
deleted file mode 100644
index 5839a2b1c..000000000
--- a/packages/app/src/assets/file-icons/folder-intellij-open.svg
+++ /dev/null
@@ -1,39 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-intellij-open_light.svg b/packages/app/src/assets/file-icons/folder-intellij-open_light.svg
deleted file mode 100644
index ccb6046bb..000000000
--- a/packages/app/src/assets/file-icons/folder-intellij-open_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-intellij.svg b/packages/app/src/assets/file-icons/folder-intellij.svg
deleted file mode 100644
index c655f37ef..000000000
--- a/packages/app/src/assets/file-icons/folder-intellij.svg
+++ /dev/null
@@ -1,39 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-intellij_light.svg b/packages/app/src/assets/file-icons/folder-intellij_light.svg
deleted file mode 100644
index 97bc8c7bd..000000000
--- a/packages/app/src/assets/file-icons/folder-intellij_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-interceptor-open.svg b/packages/app/src/assets/file-icons/folder-interceptor-open.svg
deleted file mode 100644
index c91c42ad9..000000000
--- a/packages/app/src/assets/file-icons/folder-interceptor-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-interceptor.svg b/packages/app/src/assets/file-icons/folder-interceptor.svg
deleted file mode 100644
index e6cbf9f5c..000000000
--- a/packages/app/src/assets/file-icons/folder-interceptor.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-interface-open.svg b/packages/app/src/assets/file-icons/folder-interface-open.svg
deleted file mode 100644
index ba54b0ec8..000000000
--- a/packages/app/src/assets/file-icons/folder-interface-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-interface.svg b/packages/app/src/assets/file-icons/folder-interface.svg
deleted file mode 100644
index 993ce7258..000000000
--- a/packages/app/src/assets/file-icons/folder-interface.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ios-open.svg b/packages/app/src/assets/file-icons/folder-ios-open.svg
deleted file mode 100644
index 112fee6a4..000000000
--- a/packages/app/src/assets/file-icons/folder-ios-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ios.svg b/packages/app/src/assets/file-icons/folder-ios.svg
deleted file mode 100644
index 7af3b85da..000000000
--- a/packages/app/src/assets/file-icons/folder-ios.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-java-open.svg b/packages/app/src/assets/file-icons/folder-java-open.svg
deleted file mode 100644
index eb59229cd..000000000
--- a/packages/app/src/assets/file-icons/folder-java-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-java.svg b/packages/app/src/assets/file-icons/folder-java.svg
deleted file mode 100644
index 58fdd3db5..000000000
--- a/packages/app/src/assets/file-icons/folder-java.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-javascript-open.svg b/packages/app/src/assets/file-icons/folder-javascript-open.svg
deleted file mode 100644
index 581f3a273..000000000
--- a/packages/app/src/assets/file-icons/folder-javascript-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-javascript.svg b/packages/app/src/assets/file-icons/folder-javascript.svg
deleted file mode 100644
index 97cf04cc2..000000000
--- a/packages/app/src/assets/file-icons/folder-javascript.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-jinja-open.svg b/packages/app/src/assets/file-icons/folder-jinja-open.svg
deleted file mode 100644
index 9c0b2b6eb..000000000
--- a/packages/app/src/assets/file-icons/folder-jinja-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-jinja-open_light.svg b/packages/app/src/assets/file-icons/folder-jinja-open_light.svg
deleted file mode 100644
index ffc940faa..000000000
--- a/packages/app/src/assets/file-icons/folder-jinja-open_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-jinja.svg b/packages/app/src/assets/file-icons/folder-jinja.svg
deleted file mode 100644
index 687efe3d2..000000000
--- a/packages/app/src/assets/file-icons/folder-jinja.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-jinja_light.svg b/packages/app/src/assets/file-icons/folder-jinja_light.svg
deleted file mode 100644
index c2b08bb7f..000000000
--- a/packages/app/src/assets/file-icons/folder-jinja_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-job-open.svg b/packages/app/src/assets/file-icons/folder-job-open.svg
deleted file mode 100644
index efd7cdfbf..000000000
--- a/packages/app/src/assets/file-icons/folder-job-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-job.svg b/packages/app/src/assets/file-icons/folder-job.svg
deleted file mode 100644
index 9135aff33..000000000
--- a/packages/app/src/assets/file-icons/folder-job.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-json-open.svg b/packages/app/src/assets/file-icons/folder-json-open.svg
deleted file mode 100644
index 29cdf2f66..000000000
--- a/packages/app/src/assets/file-icons/folder-json-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-json.svg b/packages/app/src/assets/file-icons/folder-json.svg
deleted file mode 100644
index 34085f6a9..000000000
--- a/packages/app/src/assets/file-icons/folder-json.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-jupyter-open.svg b/packages/app/src/assets/file-icons/folder-jupyter-open.svg
deleted file mode 100644
index d431953fc..000000000
--- a/packages/app/src/assets/file-icons/folder-jupyter-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-jupyter.svg b/packages/app/src/assets/file-icons/folder-jupyter.svg
deleted file mode 100644
index d4d3eb35e..000000000
--- a/packages/app/src/assets/file-icons/folder-jupyter.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-keys-open.svg b/packages/app/src/assets/file-icons/folder-keys-open.svg
deleted file mode 100644
index 783b16e98..000000000
--- a/packages/app/src/assets/file-icons/folder-keys-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-keys.svg b/packages/app/src/assets/file-icons/folder-keys.svg
deleted file mode 100644
index 3527f6220..000000000
--- a/packages/app/src/assets/file-icons/folder-keys.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-kubernetes-open.svg b/packages/app/src/assets/file-icons/folder-kubernetes-open.svg
deleted file mode 100644
index 022be4de7..000000000
--- a/packages/app/src/assets/file-icons/folder-kubernetes-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-kubernetes.svg b/packages/app/src/assets/file-icons/folder-kubernetes.svg
deleted file mode 100644
index b60d83d85..000000000
--- a/packages/app/src/assets/file-icons/folder-kubernetes.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-kusto-open.svg b/packages/app/src/assets/file-icons/folder-kusto-open.svg
deleted file mode 100644
index 4ea80cac0..000000000
--- a/packages/app/src/assets/file-icons/folder-kusto-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-kusto.svg b/packages/app/src/assets/file-icons/folder-kusto.svg
deleted file mode 100644
index fa71096a4..000000000
--- a/packages/app/src/assets/file-icons/folder-kusto.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-layout-open.svg b/packages/app/src/assets/file-icons/folder-layout-open.svg
deleted file mode 100644
index f8f1def9c..000000000
--- a/packages/app/src/assets/file-icons/folder-layout-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-layout.svg b/packages/app/src/assets/file-icons/folder-layout.svg
deleted file mode 100644
index 3d773bc4f..000000000
--- a/packages/app/src/assets/file-icons/folder-layout.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lefthook-open.svg b/packages/app/src/assets/file-icons/folder-lefthook-open.svg
deleted file mode 100644
index a2694ba69..000000000
--- a/packages/app/src/assets/file-icons/folder-lefthook-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lefthook.svg b/packages/app/src/assets/file-icons/folder-lefthook.svg
deleted file mode 100644
index 0c7eb274c..000000000
--- a/packages/app/src/assets/file-icons/folder-lefthook.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-less-open.svg b/packages/app/src/assets/file-icons/folder-less-open.svg
deleted file mode 100644
index 3419b0a9d..000000000
--- a/packages/app/src/assets/file-icons/folder-less-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-less.svg b/packages/app/src/assets/file-icons/folder-less.svg
deleted file mode 100644
index b6abc5ecd..000000000
--- a/packages/app/src/assets/file-icons/folder-less.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lib-open.svg b/packages/app/src/assets/file-icons/folder-lib-open.svg
deleted file mode 100644
index 8c4443168..000000000
--- a/packages/app/src/assets/file-icons/folder-lib-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lib.svg b/packages/app/src/assets/file-icons/folder-lib.svg
deleted file mode 100644
index 4e752857a..000000000
--- a/packages/app/src/assets/file-icons/folder-lib.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-link-open.svg b/packages/app/src/assets/file-icons/folder-link-open.svg
deleted file mode 100644
index 817d0d588..000000000
--- a/packages/app/src/assets/file-icons/folder-link-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-link.svg b/packages/app/src/assets/file-icons/folder-link.svg
deleted file mode 100644
index 48a8bbe84..000000000
--- a/packages/app/src/assets/file-icons/folder-link.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-linux-open.svg b/packages/app/src/assets/file-icons/folder-linux-open.svg
deleted file mode 100644
index 8517b35df..000000000
--- a/packages/app/src/assets/file-icons/folder-linux-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-linux.svg b/packages/app/src/assets/file-icons/folder-linux.svg
deleted file mode 100644
index df4d2293e..000000000
--- a/packages/app/src/assets/file-icons/folder-linux.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-liquibase-open.svg b/packages/app/src/assets/file-icons/folder-liquibase-open.svg
deleted file mode 100644
index 2fe7ba65f..000000000
--- a/packages/app/src/assets/file-icons/folder-liquibase-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-liquibase.svg b/packages/app/src/assets/file-icons/folder-liquibase.svg
deleted file mode 100644
index aea076ac1..000000000
--- a/packages/app/src/assets/file-icons/folder-liquibase.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-log-open.svg b/packages/app/src/assets/file-icons/folder-log-open.svg
deleted file mode 100644
index a78771ea1..000000000
--- a/packages/app/src/assets/file-icons/folder-log-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-log.svg b/packages/app/src/assets/file-icons/folder-log.svg
deleted file mode 100644
index b2ba6a582..000000000
--- a/packages/app/src/assets/file-icons/folder-log.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lottie-open.svg b/packages/app/src/assets/file-icons/folder-lottie-open.svg
deleted file mode 100644
index adca02541..000000000
--- a/packages/app/src/assets/file-icons/folder-lottie-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lottie.svg b/packages/app/src/assets/file-icons/folder-lottie.svg
deleted file mode 100644
index 4d7fe341d..000000000
--- a/packages/app/src/assets/file-icons/folder-lottie.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lua-open.svg b/packages/app/src/assets/file-icons/folder-lua-open.svg
deleted file mode 100644
index cb2ea6efb..000000000
--- a/packages/app/src/assets/file-icons/folder-lua-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-lua.svg b/packages/app/src/assets/file-icons/folder-lua.svg
deleted file mode 100644
index e32819b9f..000000000
--- a/packages/app/src/assets/file-icons/folder-lua.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-luau-open.svg b/packages/app/src/assets/file-icons/folder-luau-open.svg
deleted file mode 100644
index 2b113b473..000000000
--- a/packages/app/src/assets/file-icons/folder-luau-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-luau.svg b/packages/app/src/assets/file-icons/folder-luau.svg
deleted file mode 100644
index a6b455176..000000000
--- a/packages/app/src/assets/file-icons/folder-luau.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-macos-open.svg b/packages/app/src/assets/file-icons/folder-macos-open.svg
deleted file mode 100644
index 8d0280ae9..000000000
--- a/packages/app/src/assets/file-icons/folder-macos-open.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-macos.svg b/packages/app/src/assets/file-icons/folder-macos.svg
deleted file mode 100644
index 6afe2ed2a..000000000
--- a/packages/app/src/assets/file-icons/folder-macos.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-mail-open.svg b/packages/app/src/assets/file-icons/folder-mail-open.svg
deleted file mode 100644
index 27774cf1d..000000000
--- a/packages/app/src/assets/file-icons/folder-mail-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mail.svg b/packages/app/src/assets/file-icons/folder-mail.svg
deleted file mode 100644
index 513e4b1be..000000000
--- a/packages/app/src/assets/file-icons/folder-mail.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mappings-open.svg b/packages/app/src/assets/file-icons/folder-mappings-open.svg
deleted file mode 100644
index 510d06b76..000000000
--- a/packages/app/src/assets/file-icons/folder-mappings-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mappings.svg b/packages/app/src/assets/file-icons/folder-mappings.svg
deleted file mode 100644
index 53b58e05f..000000000
--- a/packages/app/src/assets/file-icons/folder-mappings.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-markdown-open.svg b/packages/app/src/assets/file-icons/folder-markdown-open.svg
deleted file mode 100644
index 75ef9044e..000000000
--- a/packages/app/src/assets/file-icons/folder-markdown-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-markdown.svg b/packages/app/src/assets/file-icons/folder-markdown.svg
deleted file mode 100644
index 5df5d0a59..000000000
--- a/packages/app/src/assets/file-icons/folder-markdown.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mercurial-open.svg b/packages/app/src/assets/file-icons/folder-mercurial-open.svg
deleted file mode 100644
index 74bbb9da1..000000000
--- a/packages/app/src/assets/file-icons/folder-mercurial-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mercurial.svg b/packages/app/src/assets/file-icons/folder-mercurial.svg
deleted file mode 100644
index 5175b8ea6..000000000
--- a/packages/app/src/assets/file-icons/folder-mercurial.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-messages-open.svg b/packages/app/src/assets/file-icons/folder-messages-open.svg
deleted file mode 100644
index 2701529cf..000000000
--- a/packages/app/src/assets/file-icons/folder-messages-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-messages.svg b/packages/app/src/assets/file-icons/folder-messages.svg
deleted file mode 100644
index ab3e2f8c1..000000000
--- a/packages/app/src/assets/file-icons/folder-messages.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-meta-open.svg b/packages/app/src/assets/file-icons/folder-meta-open.svg
deleted file mode 100644
index de1fd82ad..000000000
--- a/packages/app/src/assets/file-icons/folder-meta-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-meta.svg b/packages/app/src/assets/file-icons/folder-meta.svg
deleted file mode 100644
index 3a1b90add..000000000
--- a/packages/app/src/assets/file-icons/folder-meta.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-middleware-open.svg b/packages/app/src/assets/file-icons/folder-middleware-open.svg
deleted file mode 100644
index 346954c3b..000000000
--- a/packages/app/src/assets/file-icons/folder-middleware-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-middleware.svg b/packages/app/src/assets/file-icons/folder-middleware.svg
deleted file mode 100644
index f12c99de2..000000000
--- a/packages/app/src/assets/file-icons/folder-middleware.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mjml-open.svg b/packages/app/src/assets/file-icons/folder-mjml-open.svg
deleted file mode 100644
index 81843f0e5..000000000
--- a/packages/app/src/assets/file-icons/folder-mjml-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mjml.svg b/packages/app/src/assets/file-icons/folder-mjml.svg
deleted file mode 100644
index 8d7f06703..000000000
--- a/packages/app/src/assets/file-icons/folder-mjml.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mobile-open.svg b/packages/app/src/assets/file-icons/folder-mobile-open.svg
deleted file mode 100644
index 6a5a39b6b..000000000
--- a/packages/app/src/assets/file-icons/folder-mobile-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mobile.svg b/packages/app/src/assets/file-icons/folder-mobile.svg
deleted file mode 100644
index 03aab1333..000000000
--- a/packages/app/src/assets/file-icons/folder-mobile.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mock-open.svg b/packages/app/src/assets/file-icons/folder-mock-open.svg
deleted file mode 100644
index c92929c6a..000000000
--- a/packages/app/src/assets/file-icons/folder-mock-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mock.svg b/packages/app/src/assets/file-icons/folder-mock.svg
deleted file mode 100644
index 22f88e55a..000000000
--- a/packages/app/src/assets/file-icons/folder-mock.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mojo-open.svg b/packages/app/src/assets/file-icons/folder-mojo-open.svg
deleted file mode 100644
index ce5b9be2d..000000000
--- a/packages/app/src/assets/file-icons/folder-mojo-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-mojo.svg b/packages/app/src/assets/file-icons/folder-mojo.svg
deleted file mode 100644
index 67f753755..000000000
--- a/packages/app/src/assets/file-icons/folder-mojo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-molecule-open.svg b/packages/app/src/assets/file-icons/folder-molecule-open.svg
deleted file mode 100644
index 846e2f9de..000000000
--- a/packages/app/src/assets/file-icons/folder-molecule-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-molecule.svg b/packages/app/src/assets/file-icons/folder-molecule.svg
deleted file mode 100644
index 9c7905eca..000000000
--- a/packages/app/src/assets/file-icons/folder-molecule.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-moon-open.svg b/packages/app/src/assets/file-icons/folder-moon-open.svg
deleted file mode 100644
index f2da8ddd0..000000000
--- a/packages/app/src/assets/file-icons/folder-moon-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-moon.svg b/packages/app/src/assets/file-icons/folder-moon.svg
deleted file mode 100644
index 06613deb5..000000000
--- a/packages/app/src/assets/file-icons/folder-moon.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-netlify-open.svg b/packages/app/src/assets/file-icons/folder-netlify-open.svg
deleted file mode 100644
index d6f63b776..000000000
--- a/packages/app/src/assets/file-icons/folder-netlify-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-netlify.svg b/packages/app/src/assets/file-icons/folder-netlify.svg
deleted file mode 100644
index 5473f42cd..000000000
--- a/packages/app/src/assets/file-icons/folder-netlify.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-next-open.svg b/packages/app/src/assets/file-icons/folder-next-open.svg
deleted file mode 100644
index c8709cac3..000000000
--- a/packages/app/src/assets/file-icons/folder-next-open.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-next.svg b/packages/app/src/assets/file-icons/folder-next.svg
deleted file mode 100644
index cab1e8fca..000000000
--- a/packages/app/src/assets/file-icons/folder-next.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-ngrx-store-open.svg b/packages/app/src/assets/file-icons/folder-ngrx-store-open.svg
deleted file mode 100644
index 2c8514ef2..000000000
--- a/packages/app/src/assets/file-icons/folder-ngrx-store-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ngrx-store.svg b/packages/app/src/assets/file-icons/folder-ngrx-store.svg
deleted file mode 100644
index 1f9cb2d59..000000000
--- a/packages/app/src/assets/file-icons/folder-ngrx-store.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-node-open.svg b/packages/app/src/assets/file-icons/folder-node-open.svg
deleted file mode 100644
index a785ed3d6..000000000
--- a/packages/app/src/assets/file-icons/folder-node-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-node.svg b/packages/app/src/assets/file-icons/folder-node.svg
deleted file mode 100644
index fb47492b9..000000000
--- a/packages/app/src/assets/file-icons/folder-node.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-nuxt-open.svg b/packages/app/src/assets/file-icons/folder-nuxt-open.svg
deleted file mode 100644
index c49ff8d21..000000000
--- a/packages/app/src/assets/file-icons/folder-nuxt-open.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-nuxt.svg b/packages/app/src/assets/file-icons/folder-nuxt.svg
deleted file mode 100644
index a0a52b06e..000000000
--- a/packages/app/src/assets/file-icons/folder-nuxt.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-obsidian-open.svg b/packages/app/src/assets/file-icons/folder-obsidian-open.svg
deleted file mode 100644
index f7d1305ea..000000000
--- a/packages/app/src/assets/file-icons/folder-obsidian-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-obsidian.svg b/packages/app/src/assets/file-icons/folder-obsidian.svg
deleted file mode 100644
index cd16a528a..000000000
--- a/packages/app/src/assets/file-icons/folder-obsidian.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-open.svg b/packages/app/src/assets/file-icons/folder-open.svg
deleted file mode 100644
index eac89185e..000000000
--- a/packages/app/src/assets/file-icons/folder-open.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-organism-open.svg b/packages/app/src/assets/file-icons/folder-organism-open.svg
deleted file mode 100644
index 6be44d2b0..000000000
--- a/packages/app/src/assets/file-icons/folder-organism-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-organism.svg b/packages/app/src/assets/file-icons/folder-organism.svg
deleted file mode 100644
index 50092a098..000000000
--- a/packages/app/src/assets/file-icons/folder-organism.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-other-open.svg b/packages/app/src/assets/file-icons/folder-other-open.svg
deleted file mode 100644
index ea4144f48..000000000
--- a/packages/app/src/assets/file-icons/folder-other-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-other.svg b/packages/app/src/assets/file-icons/folder-other.svg
deleted file mode 100644
index df3d27f26..000000000
--- a/packages/app/src/assets/file-icons/folder-other.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-packages-open.svg b/packages/app/src/assets/file-icons/folder-packages-open.svg
deleted file mode 100644
index 7ac6075e6..000000000
--- a/packages/app/src/assets/file-icons/folder-packages-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-packages.svg b/packages/app/src/assets/file-icons/folder-packages.svg
deleted file mode 100644
index 9ba67cb9a..000000000
--- a/packages/app/src/assets/file-icons/folder-packages.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pdf-open.svg b/packages/app/src/assets/file-icons/folder-pdf-open.svg
deleted file mode 100644
index fdeccb04b..000000000
--- a/packages/app/src/assets/file-icons/folder-pdf-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pdf.svg b/packages/app/src/assets/file-icons/folder-pdf.svg
deleted file mode 100644
index db0ace7e2..000000000
--- a/packages/app/src/assets/file-icons/folder-pdf.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pdm-open.svg b/packages/app/src/assets/file-icons/folder-pdm-open.svg
deleted file mode 100644
index 6145f798b..000000000
--- a/packages/app/src/assets/file-icons/folder-pdm-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pdm.svg b/packages/app/src/assets/file-icons/folder-pdm.svg
deleted file mode 100644
index 9508547ff..000000000
--- a/packages/app/src/assets/file-icons/folder-pdm.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-php-open.svg b/packages/app/src/assets/file-icons/folder-php-open.svg
deleted file mode 100644
index 2059a9b90..000000000
--- a/packages/app/src/assets/file-icons/folder-php-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-php.svg b/packages/app/src/assets/file-icons/folder-php.svg
deleted file mode 100644
index 4304e179d..000000000
--- a/packages/app/src/assets/file-icons/folder-php.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-phpmailer-open.svg b/packages/app/src/assets/file-icons/folder-phpmailer-open.svg
deleted file mode 100644
index 26388bb3f..000000000
--- a/packages/app/src/assets/file-icons/folder-phpmailer-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-phpmailer.svg b/packages/app/src/assets/file-icons/folder-phpmailer.svg
deleted file mode 100644
index 18f696c1c..000000000
--- a/packages/app/src/assets/file-icons/folder-phpmailer.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pipe-open.svg b/packages/app/src/assets/file-icons/folder-pipe-open.svg
deleted file mode 100644
index 8aacef08d..000000000
--- a/packages/app/src/assets/file-icons/folder-pipe-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pipe.svg b/packages/app/src/assets/file-icons/folder-pipe.svg
deleted file mode 100644
index 9ba5d0adb..000000000
--- a/packages/app/src/assets/file-icons/folder-pipe.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-plastic-open.svg b/packages/app/src/assets/file-icons/folder-plastic-open.svg
deleted file mode 100644
index b93a541f1..000000000
--- a/packages/app/src/assets/file-icons/folder-plastic-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-plastic.svg b/packages/app/src/assets/file-icons/folder-plastic.svg
deleted file mode 100644
index 5e595f320..000000000
--- a/packages/app/src/assets/file-icons/folder-plastic.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-plugin-open.svg b/packages/app/src/assets/file-icons/folder-plugin-open.svg
deleted file mode 100644
index 5a7f03a4d..000000000
--- a/packages/app/src/assets/file-icons/folder-plugin-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-plugin.svg b/packages/app/src/assets/file-icons/folder-plugin.svg
deleted file mode 100644
index 14a315457..000000000
--- a/packages/app/src/assets/file-icons/folder-plugin.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-policy-open.svg b/packages/app/src/assets/file-icons/folder-policy-open.svg
deleted file mode 100644
index c2b51d459..000000000
--- a/packages/app/src/assets/file-icons/folder-policy-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-policy.svg b/packages/app/src/assets/file-icons/folder-policy.svg
deleted file mode 100644
index 1b1781d59..000000000
--- a/packages/app/src/assets/file-icons/folder-policy.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-powershell-open.svg b/packages/app/src/assets/file-icons/folder-powershell-open.svg
deleted file mode 100644
index be4b458be..000000000
--- a/packages/app/src/assets/file-icons/folder-powershell-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-powershell.svg b/packages/app/src/assets/file-icons/folder-powershell.svg
deleted file mode 100644
index 6f28098de..000000000
--- a/packages/app/src/assets/file-icons/folder-powershell.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-prisma-open.svg b/packages/app/src/assets/file-icons/folder-prisma-open.svg
deleted file mode 100644
index 95df8ba0e..000000000
--- a/packages/app/src/assets/file-icons/folder-prisma-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-prisma.svg b/packages/app/src/assets/file-icons/folder-prisma.svg
deleted file mode 100644
index a166ebd1e..000000000
--- a/packages/app/src/assets/file-icons/folder-prisma.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-private-open.svg b/packages/app/src/assets/file-icons/folder-private-open.svg
deleted file mode 100644
index 19094be89..000000000
--- a/packages/app/src/assets/file-icons/folder-private-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-private.svg b/packages/app/src/assets/file-icons/folder-private.svg
deleted file mode 100644
index da95ecec4..000000000
--- a/packages/app/src/assets/file-icons/folder-private.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-project-open.svg b/packages/app/src/assets/file-icons/folder-project-open.svg
deleted file mode 100644
index 9da28620e..000000000
--- a/packages/app/src/assets/file-icons/folder-project-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-project.svg b/packages/app/src/assets/file-icons/folder-project.svg
deleted file mode 100644
index f575aa014..000000000
--- a/packages/app/src/assets/file-icons/folder-project.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-prompts-open.svg b/packages/app/src/assets/file-icons/folder-prompts-open.svg
deleted file mode 100644
index 5ed3346fb..000000000
--- a/packages/app/src/assets/file-icons/folder-prompts-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-prompts.svg b/packages/app/src/assets/file-icons/folder-prompts.svg
deleted file mode 100644
index 969535bf5..000000000
--- a/packages/app/src/assets/file-icons/folder-prompts.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-proto-open.svg b/packages/app/src/assets/file-icons/folder-proto-open.svg
deleted file mode 100644
index 710de39b5..000000000
--- a/packages/app/src/assets/file-icons/folder-proto-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-proto.svg b/packages/app/src/assets/file-icons/folder-proto.svg
deleted file mode 100644
index 935fcbc5d..000000000
--- a/packages/app/src/assets/file-icons/folder-proto.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-public-open.svg b/packages/app/src/assets/file-icons/folder-public-open.svg
deleted file mode 100644
index 04449ed55..000000000
--- a/packages/app/src/assets/file-icons/folder-public-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-public.svg b/packages/app/src/assets/file-icons/folder-public.svg
deleted file mode 100644
index ea599391d..000000000
--- a/packages/app/src/assets/file-icons/folder-public.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-python-open.svg b/packages/app/src/assets/file-icons/folder-python-open.svg
deleted file mode 100644
index dbfc367aa..000000000
--- a/packages/app/src/assets/file-icons/folder-python-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-python.svg b/packages/app/src/assets/file-icons/folder-python.svg
deleted file mode 100644
index aae07362e..000000000
--- a/packages/app/src/assets/file-icons/folder-python.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pytorch-open.svg b/packages/app/src/assets/file-icons/folder-pytorch-open.svg
deleted file mode 100644
index 46f664f59..000000000
--- a/packages/app/src/assets/file-icons/folder-pytorch-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-pytorch.svg b/packages/app/src/assets/file-icons/folder-pytorch.svg
deleted file mode 100644
index 2616b6bc0..000000000
--- a/packages/app/src/assets/file-icons/folder-pytorch.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-quasar-open.svg b/packages/app/src/assets/file-icons/folder-quasar-open.svg
deleted file mode 100644
index 5fb6b9288..000000000
--- a/packages/app/src/assets/file-icons/folder-quasar-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-quasar.svg b/packages/app/src/assets/file-icons/folder-quasar.svg
deleted file mode 100644
index b098014e8..000000000
--- a/packages/app/src/assets/file-icons/folder-quasar.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-queue-open.svg b/packages/app/src/assets/file-icons/folder-queue-open.svg
deleted file mode 100644
index 5afa82181..000000000
--- a/packages/app/src/assets/file-icons/folder-queue-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-queue.svg b/packages/app/src/assets/file-icons/folder-queue.svg
deleted file mode 100644
index 244530406..000000000
--- a/packages/app/src/assets/file-icons/folder-queue.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-react-components-open.svg b/packages/app/src/assets/file-icons/folder-react-components-open.svg
deleted file mode 100644
index 05af544b2..000000000
--- a/packages/app/src/assets/file-icons/folder-react-components-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-react-components.svg b/packages/app/src/assets/file-icons/folder-react-components.svg
deleted file mode 100644
index 5f117a705..000000000
--- a/packages/app/src/assets/file-icons/folder-react-components.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-redux-reducer-open.svg b/packages/app/src/assets/file-icons/folder-redux-reducer-open.svg
deleted file mode 100644
index 838bf52a2..000000000
--- a/packages/app/src/assets/file-icons/folder-redux-reducer-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-redux-reducer.svg b/packages/app/src/assets/file-icons/folder-redux-reducer.svg
deleted file mode 100644
index a3b441f01..000000000
--- a/packages/app/src/assets/file-icons/folder-redux-reducer.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-repository-open.svg b/packages/app/src/assets/file-icons/folder-repository-open.svg
deleted file mode 100644
index 9c6275dbb..000000000
--- a/packages/app/src/assets/file-icons/folder-repository-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-repository.svg b/packages/app/src/assets/file-icons/folder-repository.svg
deleted file mode 100644
index 4f7520651..000000000
--- a/packages/app/src/assets/file-icons/folder-repository.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-resolver-open.svg b/packages/app/src/assets/file-icons/folder-resolver-open.svg
deleted file mode 100644
index 5a4b752e0..000000000
--- a/packages/app/src/assets/file-icons/folder-resolver-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-resolver.svg b/packages/app/src/assets/file-icons/folder-resolver.svg
deleted file mode 100644
index c59a6b41f..000000000
--- a/packages/app/src/assets/file-icons/folder-resolver.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-resource-open.svg b/packages/app/src/assets/file-icons/folder-resource-open.svg
deleted file mode 100644
index 0f534e10d..000000000
--- a/packages/app/src/assets/file-icons/folder-resource-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-resource.svg b/packages/app/src/assets/file-icons/folder-resource.svg
deleted file mode 100644
index 24a053af6..000000000
--- a/packages/app/src/assets/file-icons/folder-resource.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-review-open.svg b/packages/app/src/assets/file-icons/folder-review-open.svg
deleted file mode 100644
index 2384601dc..000000000
--- a/packages/app/src/assets/file-icons/folder-review-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-review.svg b/packages/app/src/assets/file-icons/folder-review.svg
deleted file mode 100644
index c7b138caa..000000000
--- a/packages/app/src/assets/file-icons/folder-review.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-robot-open.svg b/packages/app/src/assets/file-icons/folder-robot-open.svg
deleted file mode 100644
index cd501c411..000000000
--- a/packages/app/src/assets/file-icons/folder-robot-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-robot.svg b/packages/app/src/assets/file-icons/folder-robot.svg
deleted file mode 100644
index fa582f494..000000000
--- a/packages/app/src/assets/file-icons/folder-robot.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-routes-open.svg b/packages/app/src/assets/file-icons/folder-routes-open.svg
deleted file mode 100644
index c9c875e44..000000000
--- a/packages/app/src/assets/file-icons/folder-routes-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-routes.svg b/packages/app/src/assets/file-icons/folder-routes.svg
deleted file mode 100644
index 2fb204dda..000000000
--- a/packages/app/src/assets/file-icons/folder-routes.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-rules-open.svg b/packages/app/src/assets/file-icons/folder-rules-open.svg
deleted file mode 100644
index 1f9c01f25..000000000
--- a/packages/app/src/assets/file-icons/folder-rules-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-rules.svg b/packages/app/src/assets/file-icons/folder-rules.svg
deleted file mode 100644
index baa5b615e..000000000
--- a/packages/app/src/assets/file-icons/folder-rules.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-rust-open.svg b/packages/app/src/assets/file-icons/folder-rust-open.svg
deleted file mode 100644
index 65be154ef..000000000
--- a/packages/app/src/assets/file-icons/folder-rust-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-rust.svg b/packages/app/src/assets/file-icons/folder-rust.svg
deleted file mode 100644
index afe65f6c4..000000000
--- a/packages/app/src/assets/file-icons/folder-rust.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-sandbox-open.svg b/packages/app/src/assets/file-icons/folder-sandbox-open.svg
deleted file mode 100644
index e0c7a064f..000000000
--- a/packages/app/src/assets/file-icons/folder-sandbox-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-sandbox.svg b/packages/app/src/assets/file-icons/folder-sandbox.svg
deleted file mode 100644
index 4339173ff..000000000
--- a/packages/app/src/assets/file-icons/folder-sandbox.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-sass-open.svg b/packages/app/src/assets/file-icons/folder-sass-open.svg
deleted file mode 100644
index 0a2a82e94..000000000
--- a/packages/app/src/assets/file-icons/folder-sass-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-sass.svg b/packages/app/src/assets/file-icons/folder-sass.svg
deleted file mode 100644
index 6f2873163..000000000
--- a/packages/app/src/assets/file-icons/folder-sass.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-scala-open.svg b/packages/app/src/assets/file-icons/folder-scala-open.svg
deleted file mode 100644
index fb4aee7f6..000000000
--- a/packages/app/src/assets/file-icons/folder-scala-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-scala.svg b/packages/app/src/assets/file-icons/folder-scala.svg
deleted file mode 100644
index d78a07420..000000000
--- a/packages/app/src/assets/file-icons/folder-scala.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-scons-open.svg b/packages/app/src/assets/file-icons/folder-scons-open.svg
deleted file mode 100644
index db8961210..000000000
--- a/packages/app/src/assets/file-icons/folder-scons-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-scons.svg b/packages/app/src/assets/file-icons/folder-scons.svg
deleted file mode 100644
index aae02b46c..000000000
--- a/packages/app/src/assets/file-icons/folder-scons.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-scripts-open.svg b/packages/app/src/assets/file-icons/folder-scripts-open.svg
deleted file mode 100644
index 981a43f78..000000000
--- a/packages/app/src/assets/file-icons/folder-scripts-open.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-scripts.svg b/packages/app/src/assets/file-icons/folder-scripts.svg
deleted file mode 100644
index 4b755acb9..000000000
--- a/packages/app/src/assets/file-icons/folder-scripts.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-secure-open.svg b/packages/app/src/assets/file-icons/folder-secure-open.svg
deleted file mode 100644
index 163f7da40..000000000
--- a/packages/app/src/assets/file-icons/folder-secure-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-secure.svg b/packages/app/src/assets/file-icons/folder-secure.svg
deleted file mode 100644
index 110093fb9..000000000
--- a/packages/app/src/assets/file-icons/folder-secure.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-seeders-open.svg b/packages/app/src/assets/file-icons/folder-seeders-open.svg
deleted file mode 100644
index b93194091..000000000
--- a/packages/app/src/assets/file-icons/folder-seeders-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-seeders.svg b/packages/app/src/assets/file-icons/folder-seeders.svg
deleted file mode 100644
index cd59776ad..000000000
--- a/packages/app/src/assets/file-icons/folder-seeders.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-server-open.svg b/packages/app/src/assets/file-icons/folder-server-open.svg
deleted file mode 100644
index 706b8af36..000000000
--- a/packages/app/src/assets/file-icons/folder-server-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-server.svg b/packages/app/src/assets/file-icons/folder-server.svg
deleted file mode 100644
index 4f03f4726..000000000
--- a/packages/app/src/assets/file-icons/folder-server.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-serverless-open.svg b/packages/app/src/assets/file-icons/folder-serverless-open.svg
deleted file mode 100644
index 113f73c9d..000000000
--- a/packages/app/src/assets/file-icons/folder-serverless-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-serverless.svg b/packages/app/src/assets/file-icons/folder-serverless.svg
deleted file mode 100644
index 226f89d41..000000000
--- a/packages/app/src/assets/file-icons/folder-serverless.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-shader-open.svg b/packages/app/src/assets/file-icons/folder-shader-open.svg
deleted file mode 100644
index 03e00ed5f..000000000
--- a/packages/app/src/assets/file-icons/folder-shader-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-shader.svg b/packages/app/src/assets/file-icons/folder-shader.svg
deleted file mode 100644
index 57772b323..000000000
--- a/packages/app/src/assets/file-icons/folder-shader.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-shared-open.svg b/packages/app/src/assets/file-icons/folder-shared-open.svg
deleted file mode 100644
index 6542e7fe0..000000000
--- a/packages/app/src/assets/file-icons/folder-shared-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-shared.svg b/packages/app/src/assets/file-icons/folder-shared.svg
deleted file mode 100644
index 01e7a17dd..000000000
--- a/packages/app/src/assets/file-icons/folder-shared.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-snapcraft-open.svg b/packages/app/src/assets/file-icons/folder-snapcraft-open.svg
deleted file mode 100644
index 1a0306828..000000000
--- a/packages/app/src/assets/file-icons/folder-snapcraft-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-snapcraft.svg b/packages/app/src/assets/file-icons/folder-snapcraft.svg
deleted file mode 100644
index fc77b789a..000000000
--- a/packages/app/src/assets/file-icons/folder-snapcraft.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-snippet-open.svg b/packages/app/src/assets/file-icons/folder-snippet-open.svg
deleted file mode 100644
index 451c291f8..000000000
--- a/packages/app/src/assets/file-icons/folder-snippet-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-snippet.svg b/packages/app/src/assets/file-icons/folder-snippet.svg
deleted file mode 100644
index 991f5c444..000000000
--- a/packages/app/src/assets/file-icons/folder-snippet.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-src-open.svg b/packages/app/src/assets/file-icons/folder-src-open.svg
deleted file mode 100644
index 8cd9ee3c1..000000000
--- a/packages/app/src/assets/file-icons/folder-src-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-src-tauri-open.svg b/packages/app/src/assets/file-icons/folder-src-tauri-open.svg
deleted file mode 100644
index 969c5778d..000000000
--- a/packages/app/src/assets/file-icons/folder-src-tauri-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-src-tauri.svg b/packages/app/src/assets/file-icons/folder-src-tauri.svg
deleted file mode 100644
index 727790c81..000000000
--- a/packages/app/src/assets/file-icons/folder-src-tauri.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-src.svg b/packages/app/src/assets/file-icons/folder-src.svg
deleted file mode 100644
index 8d45da992..000000000
--- a/packages/app/src/assets/file-icons/folder-src.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-stack-open.svg b/packages/app/src/assets/file-icons/folder-stack-open.svg
deleted file mode 100644
index cfd8bd057..000000000
--- a/packages/app/src/assets/file-icons/folder-stack-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-stack.svg b/packages/app/src/assets/file-icons/folder-stack.svg
deleted file mode 100644
index 9c0b10d52..000000000
--- a/packages/app/src/assets/file-icons/folder-stack.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-stencil-open.svg b/packages/app/src/assets/file-icons/folder-stencil-open.svg
deleted file mode 100644
index 6dea078a7..000000000
--- a/packages/app/src/assets/file-icons/folder-stencil-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-stencil.svg b/packages/app/src/assets/file-icons/folder-stencil.svg
deleted file mode 100644
index c0443c98a..000000000
--- a/packages/app/src/assets/file-icons/folder-stencil.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-store-open.svg b/packages/app/src/assets/file-icons/folder-store-open.svg
deleted file mode 100644
index 13e415bc5..000000000
--- a/packages/app/src/assets/file-icons/folder-store-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-store.svg b/packages/app/src/assets/file-icons/folder-store.svg
deleted file mode 100644
index ae29c03de..000000000
--- a/packages/app/src/assets/file-icons/folder-store.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-storybook-open.svg b/packages/app/src/assets/file-icons/folder-storybook-open.svg
deleted file mode 100644
index 9be24b2e1..000000000
--- a/packages/app/src/assets/file-icons/folder-storybook-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-storybook.svg b/packages/app/src/assets/file-icons/folder-storybook.svg
deleted file mode 100644
index 26e6246f0..000000000
--- a/packages/app/src/assets/file-icons/folder-storybook.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-stylus-open.svg b/packages/app/src/assets/file-icons/folder-stylus-open.svg
deleted file mode 100644
index 9615173c5..000000000
--- a/packages/app/src/assets/file-icons/folder-stylus-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-stylus.svg b/packages/app/src/assets/file-icons/folder-stylus.svg
deleted file mode 100644
index 68ae158fb..000000000
--- a/packages/app/src/assets/file-icons/folder-stylus.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-sublime-open.svg b/packages/app/src/assets/file-icons/folder-sublime-open.svg
deleted file mode 100644
index 5066f3a14..000000000
--- a/packages/app/src/assets/file-icons/folder-sublime-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-sublime.svg b/packages/app/src/assets/file-icons/folder-sublime.svg
deleted file mode 100644
index 1361eda5f..000000000
--- a/packages/app/src/assets/file-icons/folder-sublime.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-supabase-open.svg b/packages/app/src/assets/file-icons/folder-supabase-open.svg
deleted file mode 100644
index d58a6924e..000000000
--- a/packages/app/src/assets/file-icons/folder-supabase-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-supabase.svg b/packages/app/src/assets/file-icons/folder-supabase.svg
deleted file mode 100644
index c0c8189fe..000000000
--- a/packages/app/src/assets/file-icons/folder-supabase.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-svelte-open.svg b/packages/app/src/assets/file-icons/folder-svelte-open.svg
deleted file mode 100644
index f72ae2f7e..000000000
--- a/packages/app/src/assets/file-icons/folder-svelte-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-svelte.svg b/packages/app/src/assets/file-icons/folder-svelte.svg
deleted file mode 100644
index 61bf1d4db..000000000
--- a/packages/app/src/assets/file-icons/folder-svelte.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-svg-open.svg b/packages/app/src/assets/file-icons/folder-svg-open.svg
deleted file mode 100644
index f8ef72bad..000000000
--- a/packages/app/src/assets/file-icons/folder-svg-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-svg.svg b/packages/app/src/assets/file-icons/folder-svg.svg
deleted file mode 100644
index 320b9eb59..000000000
--- a/packages/app/src/assets/file-icons/folder-svg.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-syntax-open.svg b/packages/app/src/assets/file-icons/folder-syntax-open.svg
deleted file mode 100644
index fd9d972b3..000000000
--- a/packages/app/src/assets/file-icons/folder-syntax-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-syntax.svg b/packages/app/src/assets/file-icons/folder-syntax.svg
deleted file mode 100644
index be4ab1619..000000000
--- a/packages/app/src/assets/file-icons/folder-syntax.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-target-open.svg b/packages/app/src/assets/file-icons/folder-target-open.svg
deleted file mode 100644
index 0004bf866..000000000
--- a/packages/app/src/assets/file-icons/folder-target-open.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-target.svg b/packages/app/src/assets/file-icons/folder-target.svg
deleted file mode 100644
index 5872750bd..000000000
--- a/packages/app/src/assets/file-icons/folder-target.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-taskfile-open.svg b/packages/app/src/assets/file-icons/folder-taskfile-open.svg
deleted file mode 100644
index fc2c50148..000000000
--- a/packages/app/src/assets/file-icons/folder-taskfile-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-taskfile.svg b/packages/app/src/assets/file-icons/folder-taskfile.svg
deleted file mode 100644
index 1a3cac7ad..000000000
--- a/packages/app/src/assets/file-icons/folder-taskfile.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-tasks-open.svg b/packages/app/src/assets/file-icons/folder-tasks-open.svg
deleted file mode 100644
index ed0e67f26..000000000
--- a/packages/app/src/assets/file-icons/folder-tasks-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-tasks.svg b/packages/app/src/assets/file-icons/folder-tasks.svg
deleted file mode 100644
index 1a9ef8ad6..000000000
--- a/packages/app/src/assets/file-icons/folder-tasks.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-television-open.svg b/packages/app/src/assets/file-icons/folder-television-open.svg
deleted file mode 100644
index 33c21d8bc..000000000
--- a/packages/app/src/assets/file-icons/folder-television-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-television.svg b/packages/app/src/assets/file-icons/folder-television.svg
deleted file mode 100644
index dc1029496..000000000
--- a/packages/app/src/assets/file-icons/folder-television.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-temp-open.svg b/packages/app/src/assets/file-icons/folder-temp-open.svg
deleted file mode 100644
index ec798b1e2..000000000
--- a/packages/app/src/assets/file-icons/folder-temp-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-temp.svg b/packages/app/src/assets/file-icons/folder-temp.svg
deleted file mode 100644
index 3002a86c2..000000000
--- a/packages/app/src/assets/file-icons/folder-temp.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-template-open.svg b/packages/app/src/assets/file-icons/folder-template-open.svg
deleted file mode 100644
index e3f822b71..000000000
--- a/packages/app/src/assets/file-icons/folder-template-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-template.svg b/packages/app/src/assets/file-icons/folder-template.svg
deleted file mode 100644
index 1d1583704..000000000
--- a/packages/app/src/assets/file-icons/folder-template.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-terraform-open.svg b/packages/app/src/assets/file-icons/folder-terraform-open.svg
deleted file mode 100644
index fff197bb0..000000000
--- a/packages/app/src/assets/file-icons/folder-terraform-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-terraform.svg b/packages/app/src/assets/file-icons/folder-terraform.svg
deleted file mode 100644
index e71fba8dc..000000000
--- a/packages/app/src/assets/file-icons/folder-terraform.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-test-open.svg b/packages/app/src/assets/file-icons/folder-test-open.svg
deleted file mode 100644
index f3fefb357..000000000
--- a/packages/app/src/assets/file-icons/folder-test-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-test.svg b/packages/app/src/assets/file-icons/folder-test.svg
deleted file mode 100644
index 92bee1623..000000000
--- a/packages/app/src/assets/file-icons/folder-test.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-theme-open.svg b/packages/app/src/assets/file-icons/folder-theme-open.svg
deleted file mode 100644
index 5e79f991e..000000000
--- a/packages/app/src/assets/file-icons/folder-theme-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-theme.svg b/packages/app/src/assets/file-icons/folder-theme.svg
deleted file mode 100644
index 88efa9551..000000000
--- a/packages/app/src/assets/file-icons/folder-theme.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-tools-open.svg b/packages/app/src/assets/file-icons/folder-tools-open.svg
deleted file mode 100644
index 77ecaa886..000000000
--- a/packages/app/src/assets/file-icons/folder-tools-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-tools.svg b/packages/app/src/assets/file-icons/folder-tools.svg
deleted file mode 100644
index d591a1f38..000000000
--- a/packages/app/src/assets/file-icons/folder-tools.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-trash-open.svg b/packages/app/src/assets/file-icons/folder-trash-open.svg
deleted file mode 100644
index add51b82d..000000000
--- a/packages/app/src/assets/file-icons/folder-trash-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-trash.svg b/packages/app/src/assets/file-icons/folder-trash.svg
deleted file mode 100644
index 1e81d28f9..000000000
--- a/packages/app/src/assets/file-icons/folder-trash.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-trigger-open.svg b/packages/app/src/assets/file-icons/folder-trigger-open.svg
deleted file mode 100644
index ecd80d37c..000000000
--- a/packages/app/src/assets/file-icons/folder-trigger-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-trigger.svg b/packages/app/src/assets/file-icons/folder-trigger.svg
deleted file mode 100644
index cfe23c1bf..000000000
--- a/packages/app/src/assets/file-icons/folder-trigger.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-turborepo-open.svg b/packages/app/src/assets/file-icons/folder-turborepo-open.svg
deleted file mode 100644
index e0d7c35cf..000000000
--- a/packages/app/src/assets/file-icons/folder-turborepo-open.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-turborepo.svg b/packages/app/src/assets/file-icons/folder-turborepo.svg
deleted file mode 100644
index ea203360b..000000000
--- a/packages/app/src/assets/file-icons/folder-turborepo.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-typescript-open.svg b/packages/app/src/assets/file-icons/folder-typescript-open.svg
deleted file mode 100644
index 87c8e2fa1..000000000
--- a/packages/app/src/assets/file-icons/folder-typescript-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-typescript.svg b/packages/app/src/assets/file-icons/folder-typescript.svg
deleted file mode 100644
index df26f8937..000000000
--- a/packages/app/src/assets/file-icons/folder-typescript.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ui-open.svg b/packages/app/src/assets/file-icons/folder-ui-open.svg
deleted file mode 100644
index 304491698..000000000
--- a/packages/app/src/assets/file-icons/folder-ui-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-ui.svg b/packages/app/src/assets/file-icons/folder-ui.svg
deleted file mode 100644
index fa320d101..000000000
--- a/packages/app/src/assets/file-icons/folder-ui.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-unity-open.svg b/packages/app/src/assets/file-icons/folder-unity-open.svg
deleted file mode 100644
index cb036d5d1..000000000
--- a/packages/app/src/assets/file-icons/folder-unity-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-unity.svg b/packages/app/src/assets/file-icons/folder-unity.svg
deleted file mode 100644
index c751de29c..000000000
--- a/packages/app/src/assets/file-icons/folder-unity.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-update-open.svg b/packages/app/src/assets/file-icons/folder-update-open.svg
deleted file mode 100644
index a6d18a9a7..000000000
--- a/packages/app/src/assets/file-icons/folder-update-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-update.svg b/packages/app/src/assets/file-icons/folder-update.svg
deleted file mode 100644
index 65eaf57d7..000000000
--- a/packages/app/src/assets/file-icons/folder-update.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-upload-open.svg b/packages/app/src/assets/file-icons/folder-upload-open.svg
deleted file mode 100644
index 24fc35931..000000000
--- a/packages/app/src/assets/file-icons/folder-upload-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-upload.svg b/packages/app/src/assets/file-icons/folder-upload.svg
deleted file mode 100644
index 423c6c117..000000000
--- a/packages/app/src/assets/file-icons/folder-upload.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-utils-open.svg b/packages/app/src/assets/file-icons/folder-utils-open.svg
deleted file mode 100644
index b894eff0b..000000000
--- a/packages/app/src/assets/file-icons/folder-utils-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-utils.svg b/packages/app/src/assets/file-icons/folder-utils.svg
deleted file mode 100644
index fcc799948..000000000
--- a/packages/app/src/assets/file-icons/folder-utils.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vercel-open.svg b/packages/app/src/assets/file-icons/folder-vercel-open.svg
deleted file mode 100644
index c571c63f3..000000000
--- a/packages/app/src/assets/file-icons/folder-vercel-open.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-vercel.svg b/packages/app/src/assets/file-icons/folder-vercel.svg
deleted file mode 100644
index 513848130..000000000
--- a/packages/app/src/assets/file-icons/folder-vercel.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/folder-verdaccio-open.svg b/packages/app/src/assets/file-icons/folder-verdaccio-open.svg
deleted file mode 100644
index 24beac52b..000000000
--- a/packages/app/src/assets/file-icons/folder-verdaccio-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-verdaccio.svg b/packages/app/src/assets/file-icons/folder-verdaccio.svg
deleted file mode 100644
index 8e78ba798..000000000
--- a/packages/app/src/assets/file-icons/folder-verdaccio.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-video-open.svg b/packages/app/src/assets/file-icons/folder-video-open.svg
deleted file mode 100644
index ea60cd047..000000000
--- a/packages/app/src/assets/file-icons/folder-video-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-video.svg b/packages/app/src/assets/file-icons/folder-video.svg
deleted file mode 100644
index d1385545a..000000000
--- a/packages/app/src/assets/file-icons/folder-video.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-views-open.svg b/packages/app/src/assets/file-icons/folder-views-open.svg
deleted file mode 100644
index 1c785e4ce..000000000
--- a/packages/app/src/assets/file-icons/folder-views-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-views.svg b/packages/app/src/assets/file-icons/folder-views.svg
deleted file mode 100644
index 5d41f10b0..000000000
--- a/packages/app/src/assets/file-icons/folder-views.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vm-open.svg b/packages/app/src/assets/file-icons/folder-vm-open.svg
deleted file mode 100644
index e1a2b54cf..000000000
--- a/packages/app/src/assets/file-icons/folder-vm-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vm.svg b/packages/app/src/assets/file-icons/folder-vm.svg
deleted file mode 100644
index 1ee3a95dd..000000000
--- a/packages/app/src/assets/file-icons/folder-vm.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vscode-open.svg b/packages/app/src/assets/file-icons/folder-vscode-open.svg
deleted file mode 100644
index 82e3a21e0..000000000
--- a/packages/app/src/assets/file-icons/folder-vscode-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vscode.svg b/packages/app/src/assets/file-icons/folder-vscode.svg
deleted file mode 100644
index 07ccbd6e7..000000000
--- a/packages/app/src/assets/file-icons/folder-vscode.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vue-directives-open.svg b/packages/app/src/assets/file-icons/folder-vue-directives-open.svg
deleted file mode 100644
index 341354bbc..000000000
--- a/packages/app/src/assets/file-icons/folder-vue-directives-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vue-directives.svg b/packages/app/src/assets/file-icons/folder-vue-directives.svg
deleted file mode 100644
index fc28ccb85..000000000
--- a/packages/app/src/assets/file-icons/folder-vue-directives.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vue-open.svg b/packages/app/src/assets/file-icons/folder-vue-open.svg
deleted file mode 100644
index 03abcafab..000000000
--- a/packages/app/src/assets/file-icons/folder-vue-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vue.svg b/packages/app/src/assets/file-icons/folder-vue.svg
deleted file mode 100644
index c7cf38e8a..000000000
--- a/packages/app/src/assets/file-icons/folder-vue.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vuepress-open.svg b/packages/app/src/assets/file-icons/folder-vuepress-open.svg
deleted file mode 100644
index af2b09b39..000000000
--- a/packages/app/src/assets/file-icons/folder-vuepress-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vuepress.svg b/packages/app/src/assets/file-icons/folder-vuepress.svg
deleted file mode 100644
index 42fb0dc4b..000000000
--- a/packages/app/src/assets/file-icons/folder-vuepress.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vuex-store-open.svg b/packages/app/src/assets/file-icons/folder-vuex-store-open.svg
deleted file mode 100644
index 77c3c4681..000000000
--- a/packages/app/src/assets/file-icons/folder-vuex-store-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-vuex-store.svg b/packages/app/src/assets/file-icons/folder-vuex-store.svg
deleted file mode 100644
index 5c6793e6d..000000000
--- a/packages/app/src/assets/file-icons/folder-vuex-store.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-wakatime-open.svg b/packages/app/src/assets/file-icons/folder-wakatime-open.svg
deleted file mode 100644
index d1dbc3845..000000000
--- a/packages/app/src/assets/file-icons/folder-wakatime-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-wakatime.svg b/packages/app/src/assets/file-icons/folder-wakatime.svg
deleted file mode 100644
index 860a661ee..000000000
--- a/packages/app/src/assets/file-icons/folder-wakatime.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-webpack-open.svg b/packages/app/src/assets/file-icons/folder-webpack-open.svg
deleted file mode 100644
index acd1e1919..000000000
--- a/packages/app/src/assets/file-icons/folder-webpack-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-webpack.svg b/packages/app/src/assets/file-icons/folder-webpack.svg
deleted file mode 100644
index 3ac887a2a..000000000
--- a/packages/app/src/assets/file-icons/folder-webpack.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-windows-open.svg b/packages/app/src/assets/file-icons/folder-windows-open.svg
deleted file mode 100644
index 9173ff9cb..000000000
--- a/packages/app/src/assets/file-icons/folder-windows-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-windows.svg b/packages/app/src/assets/file-icons/folder-windows.svg
deleted file mode 100644
index 184de3100..000000000
--- a/packages/app/src/assets/file-icons/folder-windows.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-wordpress-open.svg b/packages/app/src/assets/file-icons/folder-wordpress-open.svg
deleted file mode 100644
index 8cb4006db..000000000
--- a/packages/app/src/assets/file-icons/folder-wordpress-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-wordpress.svg b/packages/app/src/assets/file-icons/folder-wordpress.svg
deleted file mode 100644
index a954a2b99..000000000
--- a/packages/app/src/assets/file-icons/folder-wordpress.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-yarn-open.svg b/packages/app/src/assets/file-icons/folder-yarn-open.svg
deleted file mode 100644
index ddbb98894..000000000
--- a/packages/app/src/assets/file-icons/folder-yarn-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-yarn.svg b/packages/app/src/assets/file-icons/folder-yarn.svg
deleted file mode 100644
index 58aee64b8..000000000
--- a/packages/app/src/assets/file-icons/folder-yarn.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-zeabur-open.svg b/packages/app/src/assets/file-icons/folder-zeabur-open.svg
deleted file mode 100644
index ac2a31a3e..000000000
--- a/packages/app/src/assets/file-icons/folder-zeabur-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder-zeabur.svg b/packages/app/src/assets/file-icons/folder-zeabur.svg
deleted file mode 100644
index b0b842136..000000000
--- a/packages/app/src/assets/file-icons/folder-zeabur.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/folder.svg b/packages/app/src/assets/file-icons/folder.svg
deleted file mode 100644
index 97ee81ca4..000000000
--- a/packages/app/src/assets/file-icons/folder.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/font.svg b/packages/app/src/assets/file-icons/font.svg
deleted file mode 100644
index 961586d9d..000000000
--- a/packages/app/src/assets/file-icons/font.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/forth.svg b/packages/app/src/assets/file-icons/forth.svg
deleted file mode 100644
index 50b66af6e..000000000
--- a/packages/app/src/assets/file-icons/forth.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/fortran.svg b/packages/app/src/assets/file-icons/fortran.svg
deleted file mode 100644
index 235db1a06..000000000
--- a/packages/app/src/assets/file-icons/fortran.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/foxpro.svg b/packages/app/src/assets/file-icons/foxpro.svg
deleted file mode 100644
index e2d5eb00b..000000000
--- a/packages/app/src/assets/file-icons/foxpro.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/freemarker.svg b/packages/app/src/assets/file-icons/freemarker.svg
deleted file mode 100644
index edf98f6df..000000000
--- a/packages/app/src/assets/file-icons/freemarker.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/fsharp.svg b/packages/app/src/assets/file-icons/fsharp.svg
deleted file mode 100644
index 1e5b7cfdc..000000000
--- a/packages/app/src/assets/file-icons/fsharp.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/fusebox.svg b/packages/app/src/assets/file-icons/fusebox.svg
deleted file mode 100644
index a4ad3d666..000000000
--- a/packages/app/src/assets/file-icons/fusebox.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gamemaker.svg b/packages/app/src/assets/file-icons/gamemaker.svg
deleted file mode 100644
index 4097cdd7f..000000000
--- a/packages/app/src/assets/file-icons/gamemaker.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/garden.svg b/packages/app/src/assets/file-icons/garden.svg
deleted file mode 100644
index a96386d60..000000000
--- a/packages/app/src/assets/file-icons/garden.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gatsby.svg b/packages/app/src/assets/file-icons/gatsby.svg
deleted file mode 100644
index c2674692e..000000000
--- a/packages/app/src/assets/file-icons/gatsby.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gcp.svg b/packages/app/src/assets/file-icons/gcp.svg
deleted file mode 100644
index 62be90414..000000000
--- a/packages/app/src/assets/file-icons/gcp.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gemfile.svg b/packages/app/src/assets/file-icons/gemfile.svg
deleted file mode 100644
index 757c89d16..000000000
--- a/packages/app/src/assets/file-icons/gemfile.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gemini-ai.svg b/packages/app/src/assets/file-icons/gemini-ai.svg
deleted file mode 100644
index 0911694b1..000000000
--- a/packages/app/src/assets/file-icons/gemini-ai.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gemini.svg b/packages/app/src/assets/file-icons/gemini.svg
deleted file mode 100644
index 79ad4bf5f..000000000
--- a/packages/app/src/assets/file-icons/gemini.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/git.svg b/packages/app/src/assets/file-icons/git.svg
deleted file mode 100644
index c1e08fd4e..000000000
--- a/packages/app/src/assets/file-icons/git.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/github-actions-workflow.svg b/packages/app/src/assets/file-icons/github-actions-workflow.svg
deleted file mode 100644
index 1c724c5ff..000000000
--- a/packages/app/src/assets/file-icons/github-actions-workflow.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/github-sponsors.svg b/packages/app/src/assets/file-icons/github-sponsors.svg
deleted file mode 100644
index 72fb66811..000000000
--- a/packages/app/src/assets/file-icons/github-sponsors.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gitlab.svg b/packages/app/src/assets/file-icons/gitlab.svg
deleted file mode 100644
index ceeabaf9a..000000000
--- a/packages/app/src/assets/file-icons/gitlab.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gitpod.svg b/packages/app/src/assets/file-icons/gitpod.svg
deleted file mode 100644
index a992017ec..000000000
--- a/packages/app/src/assets/file-icons/gitpod.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gleam.svg b/packages/app/src/assets/file-icons/gleam.svg
deleted file mode 100644
index 76e0d0c5e..000000000
--- a/packages/app/src/assets/file-icons/gleam.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gnuplot.svg b/packages/app/src/assets/file-icons/gnuplot.svg
deleted file mode 100644
index 8cc510b53..000000000
--- a/packages/app/src/assets/file-icons/gnuplot.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/go-mod.svg b/packages/app/src/assets/file-icons/go-mod.svg
deleted file mode 100644
index 1689116be..000000000
--- a/packages/app/src/assets/file-icons/go-mod.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/go.svg b/packages/app/src/assets/file-icons/go.svg
deleted file mode 100644
index d874e329e..000000000
--- a/packages/app/src/assets/file-icons/go.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/go_gopher.svg b/packages/app/src/assets/file-icons/go_gopher.svg
deleted file mode 100644
index e465f7456..000000000
--- a/packages/app/src/assets/file-icons/go_gopher.svg
+++ /dev/null
@@ -1,35 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/godot-assets.svg b/packages/app/src/assets/file-icons/godot-assets.svg
deleted file mode 100644
index 19e193da4..000000000
--- a/packages/app/src/assets/file-icons/godot-assets.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/godot.svg b/packages/app/src/assets/file-icons/godot.svg
deleted file mode 100644
index 4b1dd7fc2..000000000
--- a/packages/app/src/assets/file-icons/godot.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gradle.svg b/packages/app/src/assets/file-icons/gradle.svg
deleted file mode 100644
index 72d88fdbb..000000000
--- a/packages/app/src/assets/file-icons/gradle.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/grafana-alloy.svg b/packages/app/src/assets/file-icons/grafana-alloy.svg
deleted file mode 100644
index cf0003126..000000000
--- a/packages/app/src/assets/file-icons/grafana-alloy.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/grain.svg b/packages/app/src/assets/file-icons/grain.svg
deleted file mode 100644
index f96d46ba7..000000000
--- a/packages/app/src/assets/file-icons/grain.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/graphcool.svg b/packages/app/src/assets/file-icons/graphcool.svg
deleted file mode 100644
index bdaedb9d5..000000000
--- a/packages/app/src/assets/file-icons/graphcool.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/graphql.svg b/packages/app/src/assets/file-icons/graphql.svg
deleted file mode 100644
index 252b0f734..000000000
--- a/packages/app/src/assets/file-icons/graphql.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gridsome.svg b/packages/app/src/assets/file-icons/gridsome.svg
deleted file mode 100644
index 872774100..000000000
--- a/packages/app/src/assets/file-icons/gridsome.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/groovy.svg b/packages/app/src/assets/file-icons/groovy.svg
deleted file mode 100644
index 9af0c08f4..000000000
--- a/packages/app/src/assets/file-icons/groovy.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/grunt.svg b/packages/app/src/assets/file-icons/grunt.svg
deleted file mode 100644
index 2b1499453..000000000
--- a/packages/app/src/assets/file-icons/grunt.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/gulp.svg b/packages/app/src/assets/file-icons/gulp.svg
deleted file mode 100644
index bc6a77ffd..000000000
--- a/packages/app/src/assets/file-icons/gulp.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/h.svg b/packages/app/src/assets/file-icons/h.svg
deleted file mode 100644
index 08db8fe48..000000000
--- a/packages/app/src/assets/file-icons/h.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hack.svg b/packages/app/src/assets/file-icons/hack.svg
deleted file mode 100644
index 921cd7359..000000000
--- a/packages/app/src/assets/file-icons/hack.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hadolint.svg b/packages/app/src/assets/file-icons/hadolint.svg
deleted file mode 100644
index 26195f506..000000000
--- a/packages/app/src/assets/file-icons/hadolint.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/haml.svg b/packages/app/src/assets/file-icons/haml.svg
deleted file mode 100644
index bf08db53a..000000000
--- a/packages/app/src/assets/file-icons/haml.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/handlebars.svg b/packages/app/src/assets/file-icons/handlebars.svg
deleted file mode 100644
index cf8993005..000000000
--- a/packages/app/src/assets/file-icons/handlebars.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hardhat.svg b/packages/app/src/assets/file-icons/hardhat.svg
deleted file mode 100644
index dad8d4503..000000000
--- a/packages/app/src/assets/file-icons/hardhat.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/harmonix.svg b/packages/app/src/assets/file-icons/harmonix.svg
deleted file mode 100644
index 299fa478c..000000000
--- a/packages/app/src/assets/file-icons/harmonix.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/haskell.svg b/packages/app/src/assets/file-icons/haskell.svg
deleted file mode 100644
index ae44927a9..000000000
--- a/packages/app/src/assets/file-icons/haskell.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/haxe.svg b/packages/app/src/assets/file-icons/haxe.svg
deleted file mode 100644
index cb28364f3..000000000
--- a/packages/app/src/assets/file-icons/haxe.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hcl.svg b/packages/app/src/assets/file-icons/hcl.svg
deleted file mode 100644
index 71edfb4af..000000000
--- a/packages/app/src/assets/file-icons/hcl.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hcl_light.svg b/packages/app/src/assets/file-icons/hcl_light.svg
deleted file mode 100644
index 019691460..000000000
--- a/packages/app/src/assets/file-icons/hcl_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/helm.svg b/packages/app/src/assets/file-icons/helm.svg
deleted file mode 100644
index 58aa4a82d..000000000
--- a/packages/app/src/assets/file-icons/helm.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/heroku.svg b/packages/app/src/assets/file-icons/heroku.svg
deleted file mode 100644
index d9d1ab03d..000000000
--- a/packages/app/src/assets/file-icons/heroku.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hex.svg b/packages/app/src/assets/file-icons/hex.svg
deleted file mode 100644
index e50c6771c..000000000
--- a/packages/app/src/assets/file-icons/hex.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/histoire.svg b/packages/app/src/assets/file-icons/histoire.svg
deleted file mode 100644
index 5619c16da..000000000
--- a/packages/app/src/assets/file-icons/histoire.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hjson.svg b/packages/app/src/assets/file-icons/hjson.svg
deleted file mode 100644
index 7725feb78..000000000
--- a/packages/app/src/assets/file-icons/hjson.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/horusec.svg b/packages/app/src/assets/file-icons/horusec.svg
deleted file mode 100644
index 9ea1155e4..000000000
--- a/packages/app/src/assets/file-icons/horusec.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hosts.svg b/packages/app/src/assets/file-icons/hosts.svg
deleted file mode 100644
index f88e7c6c8..000000000
--- a/packages/app/src/assets/file-icons/hosts.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hosts_light.svg b/packages/app/src/assets/file-icons/hosts_light.svg
deleted file mode 100644
index 613a25e39..000000000
--- a/packages/app/src/assets/file-icons/hosts_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hpp.svg b/packages/app/src/assets/file-icons/hpp.svg
deleted file mode 100644
index 3e6872d2e..000000000
--- a/packages/app/src/assets/file-icons/hpp.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/html.svg b/packages/app/src/assets/file-icons/html.svg
deleted file mode 100644
index 71caf32b6..000000000
--- a/packages/app/src/assets/file-icons/html.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/http.svg b/packages/app/src/assets/file-icons/http.svg
deleted file mode 100644
index 94574d4a5..000000000
--- a/packages/app/src/assets/file-icons/http.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/huff.svg b/packages/app/src/assets/file-icons/huff.svg
deleted file mode 100644
index 223291415..000000000
--- a/packages/app/src/assets/file-icons/huff.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/huff_light.svg b/packages/app/src/assets/file-icons/huff_light.svg
deleted file mode 100644
index 43889e036..000000000
--- a/packages/app/src/assets/file-icons/huff_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/hurl.svg b/packages/app/src/assets/file-icons/hurl.svg
deleted file mode 100644
index 227045b5e..000000000
--- a/packages/app/src/assets/file-icons/hurl.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/husky.svg b/packages/app/src/assets/file-icons/husky.svg
deleted file mode 100644
index b48f06a69..000000000
--- a/packages/app/src/assets/file-icons/husky.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/i18n.svg b/packages/app/src/assets/file-icons/i18n.svg
deleted file mode 100644
index 4f678de31..000000000
--- a/packages/app/src/assets/file-icons/i18n.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/idris.svg b/packages/app/src/assets/file-icons/idris.svg
deleted file mode 100644
index 445745b68..000000000
--- a/packages/app/src/assets/file-icons/idris.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ifanr-cloud.svg b/packages/app/src/assets/file-icons/ifanr-cloud.svg
deleted file mode 100644
index c356b1691..000000000
--- a/packages/app/src/assets/file-icons/ifanr-cloud.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/image.svg b/packages/app/src/assets/file-icons/image.svg
deleted file mode 100644
index 0ca446bb9..000000000
--- a/packages/app/src/assets/file-icons/image.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/imba.svg b/packages/app/src/assets/file-icons/imba.svg
deleted file mode 100644
index 60b06154c..000000000
--- a/packages/app/src/assets/file-icons/imba.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/installation.svg b/packages/app/src/assets/file-icons/installation.svg
deleted file mode 100644
index 36fa21cf0..000000000
--- a/packages/app/src/assets/file-icons/installation.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ionic.svg b/packages/app/src/assets/file-icons/ionic.svg
deleted file mode 100644
index 2ce630d01..000000000
--- a/packages/app/src/assets/file-icons/ionic.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/istanbul.svg b/packages/app/src/assets/file-icons/istanbul.svg
deleted file mode 100644
index 9508a981a..000000000
--- a/packages/app/src/assets/file-icons/istanbul.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jar.svg b/packages/app/src/assets/file-icons/jar.svg
deleted file mode 100644
index 1c81c48c5..000000000
--- a/packages/app/src/assets/file-icons/jar.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/java.svg b/packages/app/src/assets/file-icons/java.svg
deleted file mode 100644
index 0950bc402..000000000
--- a/packages/app/src/assets/file-icons/java.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/javaclass.svg b/packages/app/src/assets/file-icons/javaclass.svg
deleted file mode 100644
index 9abe7ad80..000000000
--- a/packages/app/src/assets/file-icons/javaclass.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/javascript-map.svg b/packages/app/src/assets/file-icons/javascript-map.svg
deleted file mode 100644
index a1fcc2273..000000000
--- a/packages/app/src/assets/file-icons/javascript-map.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/javascript.svg b/packages/app/src/assets/file-icons/javascript.svg
deleted file mode 100644
index 254704ab7..000000000
--- a/packages/app/src/assets/file-icons/javascript.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jenkins.svg b/packages/app/src/assets/file-icons/jenkins.svg
deleted file mode 100644
index 1517b746e..000000000
--- a/packages/app/src/assets/file-icons/jenkins.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jest.svg b/packages/app/src/assets/file-icons/jest.svg
deleted file mode 100644
index fb40ecb37..000000000
--- a/packages/app/src/assets/file-icons/jest.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jinja.svg b/packages/app/src/assets/file-icons/jinja.svg
deleted file mode 100644
index 8163f2a1b..000000000
--- a/packages/app/src/assets/file-icons/jinja.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jinja_light.svg b/packages/app/src/assets/file-icons/jinja_light.svg
deleted file mode 100644
index 22333982c..000000000
--- a/packages/app/src/assets/file-icons/jinja_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jsconfig.svg b/packages/app/src/assets/file-icons/jsconfig.svg
deleted file mode 100644
index 5aef48128..000000000
--- a/packages/app/src/assets/file-icons/jsconfig.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/json.svg b/packages/app/src/assets/file-icons/json.svg
deleted file mode 100644
index 2590b943f..000000000
--- a/packages/app/src/assets/file-icons/json.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jsr.svg b/packages/app/src/assets/file-icons/jsr.svg
deleted file mode 100644
index 739f6574e..000000000
--- a/packages/app/src/assets/file-icons/jsr.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jsr_light.svg b/packages/app/src/assets/file-icons/jsr_light.svg
deleted file mode 100644
index c93d45224..000000000
--- a/packages/app/src/assets/file-icons/jsr_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/julia.svg b/packages/app/src/assets/file-icons/julia.svg
deleted file mode 100644
index 39fca6351..000000000
--- a/packages/app/src/assets/file-icons/julia.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/jupyter.svg b/packages/app/src/assets/file-icons/jupyter.svg
deleted file mode 100644
index 770bffbc6..000000000
--- a/packages/app/src/assets/file-icons/jupyter.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/just.svg b/packages/app/src/assets/file-icons/just.svg
deleted file mode 100644
index 7fc754314..000000000
--- a/packages/app/src/assets/file-icons/just.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/karma.svg b/packages/app/src/assets/file-icons/karma.svg
deleted file mode 100644
index 0db4ab60b..000000000
--- a/packages/app/src/assets/file-icons/karma.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/kcl.svg b/packages/app/src/assets/file-icons/kcl.svg
deleted file mode 100644
index 4f10c602e..000000000
--- a/packages/app/src/assets/file-icons/kcl.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/key.svg b/packages/app/src/assets/file-icons/key.svg
deleted file mode 100644
index 08f67af4c..000000000
--- a/packages/app/src/assets/file-icons/key.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/keystatic.svg b/packages/app/src/assets/file-icons/keystatic.svg
deleted file mode 100644
index 087b65872..000000000
--- a/packages/app/src/assets/file-icons/keystatic.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/kivy.svg b/packages/app/src/assets/file-icons/kivy.svg
deleted file mode 100644
index 2a1a35c4a..000000000
--- a/packages/app/src/assets/file-icons/kivy.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/kl.svg b/packages/app/src/assets/file-icons/kl.svg
deleted file mode 100644
index 967ef09e9..000000000
--- a/packages/app/src/assets/file-icons/kl.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/knip.svg b/packages/app/src/assets/file-icons/knip.svg
deleted file mode 100644
index c71d0a20d..000000000
--- a/packages/app/src/assets/file-icons/knip.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/kotlin.svg b/packages/app/src/assets/file-icons/kotlin.svg
deleted file mode 100644
index 740505c19..000000000
--- a/packages/app/src/assets/file-icons/kotlin.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/kubernetes.svg b/packages/app/src/assets/file-icons/kubernetes.svg
deleted file mode 100644
index 6726dcc86..000000000
--- a/packages/app/src/assets/file-icons/kubernetes.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/kusto.svg b/packages/app/src/assets/file-icons/kusto.svg
deleted file mode 100644
index 46087e83c..000000000
--- a/packages/app/src/assets/file-icons/kusto.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/label.svg b/packages/app/src/assets/file-icons/label.svg
deleted file mode 100644
index 28abeacd7..000000000
--- a/packages/app/src/assets/file-icons/label.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/laravel.svg b/packages/app/src/assets/file-icons/laravel.svg
deleted file mode 100644
index 95ee92351..000000000
--- a/packages/app/src/assets/file-icons/laravel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/latexmk.svg b/packages/app/src/assets/file-icons/latexmk.svg
deleted file mode 100644
index 484318aaf..000000000
--- a/packages/app/src/assets/file-icons/latexmk.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lbx.svg b/packages/app/src/assets/file-icons/lbx.svg
deleted file mode 100644
index c66f15715..000000000
--- a/packages/app/src/assets/file-icons/lbx.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lefthook.svg b/packages/app/src/assets/file-icons/lefthook.svg
deleted file mode 100644
index 93f6f81b6..000000000
--- a/packages/app/src/assets/file-icons/lefthook.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lerna.svg b/packages/app/src/assets/file-icons/lerna.svg
deleted file mode 100644
index 4128d6b9d..000000000
--- a/packages/app/src/assets/file-icons/lerna.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/less.svg b/packages/app/src/assets/file-icons/less.svg
deleted file mode 100644
index 2e13a3c5e..000000000
--- a/packages/app/src/assets/file-icons/less.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/liara.svg b/packages/app/src/assets/file-icons/liara.svg
deleted file mode 100644
index 2fd408c6e..000000000
--- a/packages/app/src/assets/file-icons/liara.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lib.svg b/packages/app/src/assets/file-icons/lib.svg
deleted file mode 100644
index 7c8fda3e0..000000000
--- a/packages/app/src/assets/file-icons/lib.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lighthouse.svg b/packages/app/src/assets/file-icons/lighthouse.svg
deleted file mode 100644
index 022924410..000000000
--- a/packages/app/src/assets/file-icons/lighthouse.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lilypond.svg b/packages/app/src/assets/file-icons/lilypond.svg
deleted file mode 100644
index a12aa2cc2..000000000
--- a/packages/app/src/assets/file-icons/lilypond.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lintstaged.svg b/packages/app/src/assets/file-icons/lintstaged.svg
deleted file mode 100644
index fbf94678e..000000000
--- a/packages/app/src/assets/file-icons/lintstaged.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/liquid.svg b/packages/app/src/assets/file-icons/liquid.svg
deleted file mode 100644
index 5111ab67f..000000000
--- a/packages/app/src/assets/file-icons/liquid.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lisp.svg b/packages/app/src/assets/file-icons/lisp.svg
deleted file mode 100644
index 76e4f465b..000000000
--- a/packages/app/src/assets/file-icons/lisp.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/livescript.svg b/packages/app/src/assets/file-icons/livescript.svg
deleted file mode 100644
index d7dcb37c3..000000000
--- a/packages/app/src/assets/file-icons/livescript.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lock.svg b/packages/app/src/assets/file-icons/lock.svg
deleted file mode 100644
index ca49d02c3..000000000
--- a/packages/app/src/assets/file-icons/lock.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/log.svg b/packages/app/src/assets/file-icons/log.svg
deleted file mode 100644
index 389f51d32..000000000
--- a/packages/app/src/assets/file-icons/log.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lolcode.svg b/packages/app/src/assets/file-icons/lolcode.svg
deleted file mode 100644
index f9c759581..000000000
--- a/packages/app/src/assets/file-icons/lolcode.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lottie.svg b/packages/app/src/assets/file-icons/lottie.svg
deleted file mode 100644
index 29981d323..000000000
--- a/packages/app/src/assets/file-icons/lottie.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lua.svg b/packages/app/src/assets/file-icons/lua.svg
deleted file mode 100644
index ca7a3d5dd..000000000
--- a/packages/app/src/assets/file-icons/lua.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/luau.svg b/packages/app/src/assets/file-icons/luau.svg
deleted file mode 100644
index 7f9ad5768..000000000
--- a/packages/app/src/assets/file-icons/luau.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/lyric.svg b/packages/app/src/assets/file-icons/lyric.svg
deleted file mode 100644
index 06bb43e4d..000000000
--- a/packages/app/src/assets/file-icons/lyric.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/makefile.svg b/packages/app/src/assets/file-icons/makefile.svg
deleted file mode 100644
index e211671c5..000000000
--- a/packages/app/src/assets/file-icons/makefile.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/markdoc-config.svg b/packages/app/src/assets/file-icons/markdoc-config.svg
deleted file mode 100644
index 13913c38c..000000000
--- a/packages/app/src/assets/file-icons/markdoc-config.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/markdoc.svg b/packages/app/src/assets/file-icons/markdoc.svg
deleted file mode 100644
index 3ed2c54b7..000000000
--- a/packages/app/src/assets/file-icons/markdoc.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/markdown.svg b/packages/app/src/assets/file-icons/markdown.svg
deleted file mode 100644
index 4c224341c..000000000
--- a/packages/app/src/assets/file-icons/markdown.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/markdownlint.svg b/packages/app/src/assets/file-icons/markdownlint.svg
deleted file mode 100644
index 37daf0d27..000000000
--- a/packages/app/src/assets/file-icons/markdownlint.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/markojs.svg b/packages/app/src/assets/file-icons/markojs.svg
deleted file mode 100644
index 938b6fee8..000000000
--- a/packages/app/src/assets/file-icons/markojs.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mathematica.svg b/packages/app/src/assets/file-icons/mathematica.svg
deleted file mode 100644
index 08c25084b..000000000
--- a/packages/app/src/assets/file-icons/mathematica.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/matlab.svg b/packages/app/src/assets/file-icons/matlab.svg
deleted file mode 100644
index a2166f81e..000000000
--- a/packages/app/src/assets/file-icons/matlab.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/maven.svg b/packages/app/src/assets/file-icons/maven.svg
deleted file mode 100644
index 7a8874502..000000000
--- a/packages/app/src/assets/file-icons/maven.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mdsvex.svg b/packages/app/src/assets/file-icons/mdsvex.svg
deleted file mode 100644
index 34b252af1..000000000
--- a/packages/app/src/assets/file-icons/mdsvex.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mdx.svg b/packages/app/src/assets/file-icons/mdx.svg
deleted file mode 100644
index b2ab5611a..000000000
--- a/packages/app/src/assets/file-icons/mdx.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mercurial.svg b/packages/app/src/assets/file-icons/mercurial.svg
deleted file mode 100644
index 41f701e23..000000000
--- a/packages/app/src/assets/file-icons/mercurial.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/merlin.svg b/packages/app/src/assets/file-icons/merlin.svg
deleted file mode 100644
index 96b29d3fd..000000000
--- a/packages/app/src/assets/file-icons/merlin.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mermaid.svg b/packages/app/src/assets/file-icons/mermaid.svg
deleted file mode 100644
index b1f520d81..000000000
--- a/packages/app/src/assets/file-icons/mermaid.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/meson.svg b/packages/app/src/assets/file-icons/meson.svg
deleted file mode 100644
index f9d3bef4a..000000000
--- a/packages/app/src/assets/file-icons/meson.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/minecraft-fabric.svg b/packages/app/src/assets/file-icons/minecraft-fabric.svg
deleted file mode 100644
index 4c0985b9c..000000000
--- a/packages/app/src/assets/file-icons/minecraft-fabric.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/minecraft.svg b/packages/app/src/assets/file-icons/minecraft.svg
deleted file mode 100644
index 219af8ae4..000000000
--- a/packages/app/src/assets/file-icons/minecraft.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mint.svg b/packages/app/src/assets/file-icons/mint.svg
deleted file mode 100644
index 659340a8c..000000000
--- a/packages/app/src/assets/file-icons/mint.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mjml.svg b/packages/app/src/assets/file-icons/mjml.svg
deleted file mode 100644
index 5580ca096..000000000
--- a/packages/app/src/assets/file-icons/mjml.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mocha.svg b/packages/app/src/assets/file-icons/mocha.svg
deleted file mode 100644
index bce8ac3b5..000000000
--- a/packages/app/src/assets/file-icons/mocha.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/modernizr.svg b/packages/app/src/assets/file-icons/modernizr.svg
deleted file mode 100644
index b340bec1b..000000000
--- a/packages/app/src/assets/file-icons/modernizr.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mojo.svg b/packages/app/src/assets/file-icons/mojo.svg
deleted file mode 100644
index 505a8f529..000000000
--- a/packages/app/src/assets/file-icons/mojo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/moon.svg b/packages/app/src/assets/file-icons/moon.svg
deleted file mode 100644
index c428ebb0e..000000000
--- a/packages/app/src/assets/file-icons/moon.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/moonscript.svg b/packages/app/src/assets/file-icons/moonscript.svg
deleted file mode 100644
index 1d7f7ee9f..000000000
--- a/packages/app/src/assets/file-icons/moonscript.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/mxml.svg b/packages/app/src/assets/file-icons/mxml.svg
deleted file mode 100644
index c5b84ddbd..000000000
--- a/packages/app/src/assets/file-icons/mxml.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nano-staged.svg b/packages/app/src/assets/file-icons/nano-staged.svg
deleted file mode 100644
index 6e6cd0751..000000000
--- a/packages/app/src/assets/file-icons/nano-staged.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nano-staged_light.svg b/packages/app/src/assets/file-icons/nano-staged_light.svg
deleted file mode 100644
index 698232f0c..000000000
--- a/packages/app/src/assets/file-icons/nano-staged_light.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/ndst.svg b/packages/app/src/assets/file-icons/ndst.svg
deleted file mode 100644
index 194131385..000000000
--- a/packages/app/src/assets/file-icons/ndst.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nest.svg b/packages/app/src/assets/file-icons/nest.svg
deleted file mode 100644
index 259dc538b..000000000
--- a/packages/app/src/assets/file-icons/nest.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/netlify.svg b/packages/app/src/assets/file-icons/netlify.svg
deleted file mode 100644
index 27c837fcc..000000000
--- a/packages/app/src/assets/file-icons/netlify.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/netlify_light.svg b/packages/app/src/assets/file-icons/netlify_light.svg
deleted file mode 100644
index b142c486f..000000000
--- a/packages/app/src/assets/file-icons/netlify_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/next.svg b/packages/app/src/assets/file-icons/next.svg
deleted file mode 100644
index 83fee37c1..000000000
--- a/packages/app/src/assets/file-icons/next.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/next_light.svg b/packages/app/src/assets/file-icons/next_light.svg
deleted file mode 100644
index 6e5fb272e..000000000
--- a/packages/app/src/assets/file-icons/next_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nginx.svg b/packages/app/src/assets/file-icons/nginx.svg
deleted file mode 100644
index 658ad228f..000000000
--- a/packages/app/src/assets/file-icons/nginx.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ngrx-actions.svg b/packages/app/src/assets/file-icons/ngrx-actions.svg
deleted file mode 100644
index de418d48d..000000000
--- a/packages/app/src/assets/file-icons/ngrx-actions.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ngrx-effects.svg b/packages/app/src/assets/file-icons/ngrx-effects.svg
deleted file mode 100644
index 8f7dc89dd..000000000
--- a/packages/app/src/assets/file-icons/ngrx-effects.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ngrx-entity.svg b/packages/app/src/assets/file-icons/ngrx-entity.svg
deleted file mode 100644
index af0dd0563..000000000
--- a/packages/app/src/assets/file-icons/ngrx-entity.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ngrx-reducer.svg b/packages/app/src/assets/file-icons/ngrx-reducer.svg
deleted file mode 100644
index db7a5534a..000000000
--- a/packages/app/src/assets/file-icons/ngrx-reducer.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ngrx-selectors.svg b/packages/app/src/assets/file-icons/ngrx-selectors.svg
deleted file mode 100644
index af03c40ff..000000000
--- a/packages/app/src/assets/file-icons/ngrx-selectors.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ngrx-state.svg b/packages/app/src/assets/file-icons/ngrx-state.svg
deleted file mode 100644
index 258c0ac87..000000000
--- a/packages/app/src/assets/file-icons/ngrx-state.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nim.svg b/packages/app/src/assets/file-icons/nim.svg
deleted file mode 100644
index d985bb40e..000000000
--- a/packages/app/src/assets/file-icons/nim.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nix.svg b/packages/app/src/assets/file-icons/nix.svg
deleted file mode 100644
index a50760969..000000000
--- a/packages/app/src/assets/file-icons/nix.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nodejs.svg b/packages/app/src/assets/file-icons/nodejs.svg
deleted file mode 100644
index ba7390153..000000000
--- a/packages/app/src/assets/file-icons/nodejs.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nodejs_alt.svg b/packages/app/src/assets/file-icons/nodejs_alt.svg
deleted file mode 100644
index 5b70be2d0..000000000
--- a/packages/app/src/assets/file-icons/nodejs_alt.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nodemon.svg b/packages/app/src/assets/file-icons/nodemon.svg
deleted file mode 100644
index 2bd35d1c2..000000000
--- a/packages/app/src/assets/file-icons/nodemon.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/npm.svg b/packages/app/src/assets/file-icons/npm.svg
deleted file mode 100644
index 87aa58368..000000000
--- a/packages/app/src/assets/file-icons/npm.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nuget.svg b/packages/app/src/assets/file-icons/nuget.svg
deleted file mode 100644
index 82e298f50..000000000
--- a/packages/app/src/assets/file-icons/nuget.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nunjucks.svg b/packages/app/src/assets/file-icons/nunjucks.svg
deleted file mode 100644
index 9fb8890e2..000000000
--- a/packages/app/src/assets/file-icons/nunjucks.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nuxt.svg b/packages/app/src/assets/file-icons/nuxt.svg
deleted file mode 100644
index babf91945..000000000
--- a/packages/app/src/assets/file-icons/nuxt.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/nx.svg b/packages/app/src/assets/file-icons/nx.svg
deleted file mode 100644
index 8db832302..000000000
--- a/packages/app/src/assets/file-icons/nx.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/objective-c.svg b/packages/app/src/assets/file-icons/objective-c.svg
deleted file mode 100644
index 7a69f91d6..000000000
--- a/packages/app/src/assets/file-icons/objective-c.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/objective-cpp.svg b/packages/app/src/assets/file-icons/objective-cpp.svg
deleted file mode 100644
index cd55d1ea5..000000000
--- a/packages/app/src/assets/file-icons/objective-cpp.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ocaml.svg b/packages/app/src/assets/file-icons/ocaml.svg
deleted file mode 100644
index cb6eb6b94..000000000
--- a/packages/app/src/assets/file-icons/ocaml.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/odin.svg b/packages/app/src/assets/file-icons/odin.svg
deleted file mode 100644
index 1877a6cfc..000000000
--- a/packages/app/src/assets/file-icons/odin.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/opa.svg b/packages/app/src/assets/file-icons/opa.svg
deleted file mode 100644
index 3afc1c6bf..000000000
--- a/packages/app/src/assets/file-icons/opa.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/opam.svg b/packages/app/src/assets/file-icons/opam.svg
deleted file mode 100644
index 70f1b7f02..000000000
--- a/packages/app/src/assets/file-icons/opam.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/openapi.svg b/packages/app/src/assets/file-icons/openapi.svg
deleted file mode 100644
index 5b367a168..000000000
--- a/packages/app/src/assets/file-icons/openapi.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/openapi_light.svg b/packages/app/src/assets/file-icons/openapi_light.svg
deleted file mode 100644
index 179006db8..000000000
--- a/packages/app/src/assets/file-icons/openapi_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/otne.svg b/packages/app/src/assets/file-icons/otne.svg
deleted file mode 100644
index 8670a615b..000000000
--- a/packages/app/src/assets/file-icons/otne.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/oxlint.svg b/packages/app/src/assets/file-icons/oxlint.svg
deleted file mode 100644
index 2ffad92d9..000000000
--- a/packages/app/src/assets/file-icons/oxlint.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/packship.svg b/packages/app/src/assets/file-icons/packship.svg
deleted file mode 100644
index e03b35d66..000000000
--- a/packages/app/src/assets/file-icons/packship.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/palette.svg b/packages/app/src/assets/file-icons/palette.svg
deleted file mode 100644
index cc27f66ae..000000000
--- a/packages/app/src/assets/file-icons/palette.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/panda.svg b/packages/app/src/assets/file-icons/panda.svg
deleted file mode 100644
index dde4122bb..000000000
--- a/packages/app/src/assets/file-icons/panda.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/parcel.svg b/packages/app/src/assets/file-icons/parcel.svg
deleted file mode 100644
index 39a1835f1..000000000
--- a/packages/app/src/assets/file-icons/parcel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pascal.svg b/packages/app/src/assets/file-icons/pascal.svg
deleted file mode 100644
index b0a2993eb..000000000
--- a/packages/app/src/assets/file-icons/pascal.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pawn.svg b/packages/app/src/assets/file-icons/pawn.svg
deleted file mode 100644
index b615d75d1..000000000
--- a/packages/app/src/assets/file-icons/pawn.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/payload.svg b/packages/app/src/assets/file-icons/payload.svg
deleted file mode 100644
index 8e1e82abd..000000000
--- a/packages/app/src/assets/file-icons/payload.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/payload_light.svg b/packages/app/src/assets/file-icons/payload_light.svg
deleted file mode 100644
index 7a4e9c7d3..000000000
--- a/packages/app/src/assets/file-icons/payload_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pdf.svg b/packages/app/src/assets/file-icons/pdf.svg
deleted file mode 100644
index 1c84fe82d..000000000
--- a/packages/app/src/assets/file-icons/pdf.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pdm.svg b/packages/app/src/assets/file-icons/pdm.svg
deleted file mode 100644
index dd23bb343..000000000
--- a/packages/app/src/assets/file-icons/pdm.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/percy.svg b/packages/app/src/assets/file-icons/percy.svg
deleted file mode 100644
index 6d0f8973b..000000000
--- a/packages/app/src/assets/file-icons/percy.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/perl.svg b/packages/app/src/assets/file-icons/perl.svg
deleted file mode 100644
index 0534cade2..000000000
--- a/packages/app/src/assets/file-icons/perl.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/php-cs-fixer.svg b/packages/app/src/assets/file-icons/php-cs-fixer.svg
deleted file mode 100644
index 398c2145b..000000000
--- a/packages/app/src/assets/file-icons/php-cs-fixer.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/php.svg b/packages/app/src/assets/file-icons/php.svg
deleted file mode 100644
index 1d7e3365e..000000000
--- a/packages/app/src/assets/file-icons/php.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/php_elephant.svg b/packages/app/src/assets/file-icons/php_elephant.svg
deleted file mode 100644
index d2c2995b6..000000000
--- a/packages/app/src/assets/file-icons/php_elephant.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/php_elephant_pink.svg b/packages/app/src/assets/file-icons/php_elephant_pink.svg
deleted file mode 100644
index a7cad7493..000000000
--- a/packages/app/src/assets/file-icons/php_elephant_pink.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/phpstan.svg b/packages/app/src/assets/file-icons/phpstan.svg
deleted file mode 100644
index 34b612fe9..000000000
--- a/packages/app/src/assets/file-icons/phpstan.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/phpunit.svg b/packages/app/src/assets/file-icons/phpunit.svg
deleted file mode 100644
index 21322005e..000000000
--- a/packages/app/src/assets/file-icons/phpunit.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pinejs.svg b/packages/app/src/assets/file-icons/pinejs.svg
deleted file mode 100644
index 44c0020b2..000000000
--- a/packages/app/src/assets/file-icons/pinejs.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pipeline.svg b/packages/app/src/assets/file-icons/pipeline.svg
deleted file mode 100644
index a3a5e6688..000000000
--- a/packages/app/src/assets/file-icons/pipeline.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pkl.svg b/packages/app/src/assets/file-icons/pkl.svg
deleted file mode 100644
index 3f31ead5d..000000000
--- a/packages/app/src/assets/file-icons/pkl.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/plastic.svg b/packages/app/src/assets/file-icons/plastic.svg
deleted file mode 100644
index cc00e5a70..000000000
--- a/packages/app/src/assets/file-icons/plastic.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/playwright.svg b/packages/app/src/assets/file-icons/playwright.svg
deleted file mode 100644
index cae0b24aa..000000000
--- a/packages/app/src/assets/file-icons/playwright.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/plop.svg b/packages/app/src/assets/file-icons/plop.svg
deleted file mode 100644
index 85e3bd2f0..000000000
--- a/packages/app/src/assets/file-icons/plop.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pm2-ecosystem.svg b/packages/app/src/assets/file-icons/pm2-ecosystem.svg
deleted file mode 100644
index a99d5f2a6..000000000
--- a/packages/app/src/assets/file-icons/pm2-ecosystem.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pnpm.svg b/packages/app/src/assets/file-icons/pnpm.svg
deleted file mode 100644
index fc52c6ed9..000000000
--- a/packages/app/src/assets/file-icons/pnpm.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pnpm_light.svg b/packages/app/src/assets/file-icons/pnpm_light.svg
deleted file mode 100644
index 4236956cc..000000000
--- a/packages/app/src/assets/file-icons/pnpm_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/poetry.svg b/packages/app/src/assets/file-icons/poetry.svg
deleted file mode 100644
index 4a355a7ef..000000000
--- a/packages/app/src/assets/file-icons/poetry.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/postcss.svg b/packages/app/src/assets/file-icons/postcss.svg
deleted file mode 100644
index 799edebc9..000000000
--- a/packages/app/src/assets/file-icons/postcss.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/posthtml.svg b/packages/app/src/assets/file-icons/posthtml.svg
deleted file mode 100644
index 54dda3c6a..000000000
--- a/packages/app/src/assets/file-icons/posthtml.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/powerpoint.svg b/packages/app/src/assets/file-icons/powerpoint.svg
deleted file mode 100644
index eaba916fb..000000000
--- a/packages/app/src/assets/file-icons/powerpoint.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/powershell.svg b/packages/app/src/assets/file-icons/powershell.svg
deleted file mode 100644
index a2663936d..000000000
--- a/packages/app/src/assets/file-icons/powershell.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pre-commit.svg b/packages/app/src/assets/file-icons/pre-commit.svg
deleted file mode 100644
index 399826bff..000000000
--- a/packages/app/src/assets/file-icons/pre-commit.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/prettier.svg b/packages/app/src/assets/file-icons/prettier.svg
deleted file mode 100644
index a6cda341b..000000000
--- a/packages/app/src/assets/file-icons/prettier.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/prisma.svg b/packages/app/src/assets/file-icons/prisma.svg
deleted file mode 100644
index 121abea22..000000000
--- a/packages/app/src/assets/file-icons/prisma.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/processing.svg b/packages/app/src/assets/file-icons/processing.svg
deleted file mode 100644
index 8a960abd8..000000000
--- a/packages/app/src/assets/file-icons/processing.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/prolog.svg b/packages/app/src/assets/file-icons/prolog.svg
deleted file mode 100644
index 7eda09071..000000000
--- a/packages/app/src/assets/file-icons/prolog.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/prompt.svg b/packages/app/src/assets/file-icons/prompt.svg
deleted file mode 100644
index aa37366b7..000000000
--- a/packages/app/src/assets/file-icons/prompt.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/proto.svg b/packages/app/src/assets/file-icons/proto.svg
deleted file mode 100644
index 7757c0e5f..000000000
--- a/packages/app/src/assets/file-icons/proto.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/protractor.svg b/packages/app/src/assets/file-icons/protractor.svg
deleted file mode 100644
index 50f464394..000000000
--- a/packages/app/src/assets/file-icons/protractor.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pug.svg b/packages/app/src/assets/file-icons/pug.svg
deleted file mode 100644
index 62a36027c..000000000
--- a/packages/app/src/assets/file-icons/pug.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/puppet.svg b/packages/app/src/assets/file-icons/puppet.svg
deleted file mode 100644
index 3e1e9c12b..000000000
--- a/packages/app/src/assets/file-icons/puppet.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/puppeteer.svg b/packages/app/src/assets/file-icons/puppeteer.svg
deleted file mode 100644
index b553df392..000000000
--- a/packages/app/src/assets/file-icons/puppeteer.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/purescript.svg b/packages/app/src/assets/file-icons/purescript.svg
deleted file mode 100644
index d82c8f9d8..000000000
--- a/packages/app/src/assets/file-icons/purescript.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/python-misc.svg b/packages/app/src/assets/file-icons/python-misc.svg
deleted file mode 100644
index 44fb730e5..000000000
--- a/packages/app/src/assets/file-icons/python-misc.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/python.svg b/packages/app/src/assets/file-icons/python.svg
deleted file mode 100644
index 20c2508a2..000000000
--- a/packages/app/src/assets/file-icons/python.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/pytorch.svg b/packages/app/src/assets/file-icons/pytorch.svg
deleted file mode 100644
index 4cb85d012..000000000
--- a/packages/app/src/assets/file-icons/pytorch.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/qsharp.svg b/packages/app/src/assets/file-icons/qsharp.svg
deleted file mode 100644
index de9838d60..000000000
--- a/packages/app/src/assets/file-icons/qsharp.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/quarto.svg b/packages/app/src/assets/file-icons/quarto.svg
deleted file mode 100644
index 3bb8ef7c7..000000000
--- a/packages/app/src/assets/file-icons/quarto.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/quasar.svg b/packages/app/src/assets/file-icons/quasar.svg
deleted file mode 100644
index fa02ff081..000000000
--- a/packages/app/src/assets/file-icons/quasar.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/quokka.svg b/packages/app/src/assets/file-icons/quokka.svg
deleted file mode 100644
index bf368de32..000000000
--- a/packages/app/src/assets/file-icons/quokka.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/qwik.svg b/packages/app/src/assets/file-icons/qwik.svg
deleted file mode 100644
index 555511694..000000000
--- a/packages/app/src/assets/file-icons/qwik.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/r.svg b/packages/app/src/assets/file-icons/r.svg
deleted file mode 100644
index 5703dd0f9..000000000
--- a/packages/app/src/assets/file-icons/r.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/racket.svg b/packages/app/src/assets/file-icons/racket.svg
deleted file mode 100644
index 04ca144ba..000000000
--- a/packages/app/src/assets/file-icons/racket.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/raml.svg b/packages/app/src/assets/file-icons/raml.svg
deleted file mode 100644
index d35d561b9..000000000
--- a/packages/app/src/assets/file-icons/raml.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/razor.svg b/packages/app/src/assets/file-icons/razor.svg
deleted file mode 100644
index 4e99091f1..000000000
--- a/packages/app/src/assets/file-icons/razor.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rbxmk.svg b/packages/app/src/assets/file-icons/rbxmk.svg
deleted file mode 100644
index e7d495376..000000000
--- a/packages/app/src/assets/file-icons/rbxmk.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rc.svg b/packages/app/src/assets/file-icons/rc.svg
deleted file mode 100644
index 83040dbc9..000000000
--- a/packages/app/src/assets/file-icons/rc.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/react.svg b/packages/app/src/assets/file-icons/react.svg
deleted file mode 100644
index ced90db1a..000000000
--- a/packages/app/src/assets/file-icons/react.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/react_ts.svg b/packages/app/src/assets/file-icons/react_ts.svg
deleted file mode 100644
index 887f72ca1..000000000
--- a/packages/app/src/assets/file-icons/react_ts.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/readme.svg b/packages/app/src/assets/file-icons/readme.svg
deleted file mode 100644
index 943d08f3c..000000000
--- a/packages/app/src/assets/file-icons/readme.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/reason.svg b/packages/app/src/assets/file-icons/reason.svg
deleted file mode 100644
index 0f4b3e1f6..000000000
--- a/packages/app/src/assets/file-icons/reason.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/red.svg b/packages/app/src/assets/file-icons/red.svg
deleted file mode 100644
index 608423166..000000000
--- a/packages/app/src/assets/file-icons/red.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/redux-action.svg b/packages/app/src/assets/file-icons/redux-action.svg
deleted file mode 100644
index a4872e7db..000000000
--- a/packages/app/src/assets/file-icons/redux-action.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/redux-reducer.svg b/packages/app/src/assets/file-icons/redux-reducer.svg
deleted file mode 100644
index cfcca98a1..000000000
--- a/packages/app/src/assets/file-icons/redux-reducer.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/redux-selector.svg b/packages/app/src/assets/file-icons/redux-selector.svg
deleted file mode 100644
index 073c286df..000000000
--- a/packages/app/src/assets/file-icons/redux-selector.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/redux-store.svg b/packages/app/src/assets/file-icons/redux-store.svg
deleted file mode 100644
index 8e644e771..000000000
--- a/packages/app/src/assets/file-icons/redux-store.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/regedit.svg b/packages/app/src/assets/file-icons/regedit.svg
deleted file mode 100644
index 3d6320607..000000000
--- a/packages/app/src/assets/file-icons/regedit.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/remark.svg b/packages/app/src/assets/file-icons/remark.svg
deleted file mode 100644
index 9d6a91831..000000000
--- a/packages/app/src/assets/file-icons/remark.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/remix.svg b/packages/app/src/assets/file-icons/remix.svg
deleted file mode 100644
index 763f57ff4..000000000
--- a/packages/app/src/assets/file-icons/remix.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/remix_light.svg b/packages/app/src/assets/file-icons/remix_light.svg
deleted file mode 100644
index 748b77928..000000000
--- a/packages/app/src/assets/file-icons/remix_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/renovate.svg b/packages/app/src/assets/file-icons/renovate.svg
deleted file mode 100644
index bc63cbb0c..000000000
--- a/packages/app/src/assets/file-icons/renovate.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/replit.svg b/packages/app/src/assets/file-icons/replit.svg
deleted file mode 100644
index f1478a503..000000000
--- a/packages/app/src/assets/file-icons/replit.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rescript-interface.svg b/packages/app/src/assets/file-icons/rescript-interface.svg
deleted file mode 100644
index db3055365..000000000
--- a/packages/app/src/assets/file-icons/rescript-interface.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rescript.svg b/packages/app/src/assets/file-icons/rescript.svg
deleted file mode 100644
index 8f40a3a96..000000000
--- a/packages/app/src/assets/file-icons/rescript.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/restql.svg b/packages/app/src/assets/file-icons/restql.svg
deleted file mode 100644
index a056fe910..000000000
--- a/packages/app/src/assets/file-icons/restql.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/riot.svg b/packages/app/src/assets/file-icons/riot.svg
deleted file mode 100644
index 587e50dfc..000000000
--- a/packages/app/src/assets/file-icons/riot.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/roadmap.svg b/packages/app/src/assets/file-icons/roadmap.svg
deleted file mode 100644
index 2279eadd0..000000000
--- a/packages/app/src/assets/file-icons/roadmap.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/roblox.svg b/packages/app/src/assets/file-icons/roblox.svg
deleted file mode 100644
index 56cc37847..000000000
--- a/packages/app/src/assets/file-icons/roblox.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/robot.svg b/packages/app/src/assets/file-icons/robot.svg
deleted file mode 100644
index 36c722518..000000000
--- a/packages/app/src/assets/file-icons/robot.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/robots.svg b/packages/app/src/assets/file-icons/robots.svg
deleted file mode 100644
index 11fdaaea4..000000000
--- a/packages/app/src/assets/file-icons/robots.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rocket.svg b/packages/app/src/assets/file-icons/rocket.svg
deleted file mode 100644
index 5f62f322c..000000000
--- a/packages/app/src/assets/file-icons/rocket.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rojo.svg b/packages/app/src/assets/file-icons/rojo.svg
deleted file mode 100644
index 37c46ea0e..000000000
--- a/packages/app/src/assets/file-icons/rojo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rollup.svg b/packages/app/src/assets/file-icons/rollup.svg
deleted file mode 100644
index 7fa015324..000000000
--- a/packages/app/src/assets/file-icons/rollup.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rome.svg b/packages/app/src/assets/file-icons/rome.svg
deleted file mode 100644
index 8f5de92d2..000000000
--- a/packages/app/src/assets/file-icons/rome.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/routing.svg b/packages/app/src/assets/file-icons/routing.svg
deleted file mode 100644
index ea02c9054..000000000
--- a/packages/app/src/assets/file-icons/routing.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rspec.svg b/packages/app/src/assets/file-icons/rspec.svg
deleted file mode 100644
index c1bf424d6..000000000
--- a/packages/app/src/assets/file-icons/rspec.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rubocop.svg b/packages/app/src/assets/file-icons/rubocop.svg
deleted file mode 100644
index e6a24a235..000000000
--- a/packages/app/src/assets/file-icons/rubocop.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rubocop_light.svg b/packages/app/src/assets/file-icons/rubocop_light.svg
deleted file mode 100644
index 689c023b5..000000000
--- a/packages/app/src/assets/file-icons/rubocop_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ruby.svg b/packages/app/src/assets/file-icons/ruby.svg
deleted file mode 100644
index 2e3215d75..000000000
--- a/packages/app/src/assets/file-icons/ruby.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/ruff.svg b/packages/app/src/assets/file-icons/ruff.svg
deleted file mode 100644
index a526788a8..000000000
--- a/packages/app/src/assets/file-icons/ruff.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/rust.svg b/packages/app/src/assets/file-icons/rust.svg
deleted file mode 100644
index b382aa4b1..000000000
--- a/packages/app/src/assets/file-icons/rust.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/salesforce.svg b/packages/app/src/assets/file-icons/salesforce.svg
deleted file mode 100644
index 80e1aa99e..000000000
--- a/packages/app/src/assets/file-icons/salesforce.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/san.svg b/packages/app/src/assets/file-icons/san.svg
deleted file mode 100644
index d17b9faf6..000000000
--- a/packages/app/src/assets/file-icons/san.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sas.svg b/packages/app/src/assets/file-icons/sas.svg
deleted file mode 100644
index d47c8bdef..000000000
--- a/packages/app/src/assets/file-icons/sas.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sass.svg b/packages/app/src/assets/file-icons/sass.svg
deleted file mode 100644
index 6f39acb02..000000000
--- a/packages/app/src/assets/file-icons/sass.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sbt.svg b/packages/app/src/assets/file-icons/sbt.svg
deleted file mode 100644
index 37587c5ca..000000000
--- a/packages/app/src/assets/file-icons/sbt.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/scala.svg b/packages/app/src/assets/file-icons/scala.svg
deleted file mode 100644
index 08e0c2d34..000000000
--- a/packages/app/src/assets/file-icons/scala.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/scheme.svg b/packages/app/src/assets/file-icons/scheme.svg
deleted file mode 100644
index c8f986e86..000000000
--- a/packages/app/src/assets/file-icons/scheme.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/scons.svg b/packages/app/src/assets/file-icons/scons.svg
deleted file mode 100644
index d584ea832..000000000
--- a/packages/app/src/assets/file-icons/scons.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/scons_light.svg b/packages/app/src/assets/file-icons/scons_light.svg
deleted file mode 100644
index 31f88d565..000000000
--- a/packages/app/src/assets/file-icons/scons_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/screwdriver.svg b/packages/app/src/assets/file-icons/screwdriver.svg
deleted file mode 100644
index cac820631..000000000
--- a/packages/app/src/assets/file-icons/screwdriver.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/search.svg b/packages/app/src/assets/file-icons/search.svg
deleted file mode 100644
index 3d35c8e24..000000000
--- a/packages/app/src/assets/file-icons/search.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/semantic-release.svg b/packages/app/src/assets/file-icons/semantic-release.svg
deleted file mode 100644
index 17187e89a..000000000
--- a/packages/app/src/assets/file-icons/semantic-release.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/semantic-release_light.svg b/packages/app/src/assets/file-icons/semantic-release_light.svg
deleted file mode 100644
index 21e42a095..000000000
--- a/packages/app/src/assets/file-icons/semantic-release_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/semgrep.svg b/packages/app/src/assets/file-icons/semgrep.svg
deleted file mode 100644
index 73a8abc66..000000000
--- a/packages/app/src/assets/file-icons/semgrep.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sentry.svg b/packages/app/src/assets/file-icons/sentry.svg
deleted file mode 100644
index 319e60a74..000000000
--- a/packages/app/src/assets/file-icons/sentry.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sequelize.svg b/packages/app/src/assets/file-icons/sequelize.svg
deleted file mode 100644
index 0e4c7888f..000000000
--- a/packages/app/src/assets/file-icons/sequelize.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/serverless.svg b/packages/app/src/assets/file-icons/serverless.svg
deleted file mode 100644
index 92ccca84a..000000000
--- a/packages/app/src/assets/file-icons/serverless.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/settings.svg b/packages/app/src/assets/file-icons/settings.svg
deleted file mode 100644
index dc701ae87..000000000
--- a/packages/app/src/assets/file-icons/settings.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/shader.svg b/packages/app/src/assets/file-icons/shader.svg
deleted file mode 100644
index f42156ed8..000000000
--- a/packages/app/src/assets/file-icons/shader.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/silverstripe.svg b/packages/app/src/assets/file-icons/silverstripe.svg
deleted file mode 100644
index 46cdb7ee1..000000000
--- a/packages/app/src/assets/file-icons/silverstripe.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/simulink.svg b/packages/app/src/assets/file-icons/simulink.svg
deleted file mode 100644
index 33e97fe42..000000000
--- a/packages/app/src/assets/file-icons/simulink.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/siyuan.svg b/packages/app/src/assets/file-icons/siyuan.svg
deleted file mode 100644
index 7a7488dd2..000000000
--- a/packages/app/src/assets/file-icons/siyuan.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sketch.svg b/packages/app/src/assets/file-icons/sketch.svg
deleted file mode 100644
index 0d7540690..000000000
--- a/packages/app/src/assets/file-icons/sketch.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/slim.svg b/packages/app/src/assets/file-icons/slim.svg
deleted file mode 100644
index edc724173..000000000
--- a/packages/app/src/assets/file-icons/slim.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/slint.svg b/packages/app/src/assets/file-icons/slint.svg
deleted file mode 100644
index b6434ec97..000000000
--- a/packages/app/src/assets/file-icons/slint.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/slug.svg b/packages/app/src/assets/file-icons/slug.svg
deleted file mode 100644
index da1dcc7b0..000000000
--- a/packages/app/src/assets/file-icons/slug.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/smarty.svg b/packages/app/src/assets/file-icons/smarty.svg
deleted file mode 100644
index 4572a5879..000000000
--- a/packages/app/src/assets/file-icons/smarty.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sml.svg b/packages/app/src/assets/file-icons/sml.svg
deleted file mode 100644
index 8f92a33ba..000000000
--- a/packages/app/src/assets/file-icons/sml.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/snakemake.svg b/packages/app/src/assets/file-icons/snakemake.svg
deleted file mode 100644
index 6dd08c958..000000000
--- a/packages/app/src/assets/file-icons/snakemake.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/snapcraft.svg b/packages/app/src/assets/file-icons/snapcraft.svg
deleted file mode 100644
index 17bf8d8d9..000000000
--- a/packages/app/src/assets/file-icons/snapcraft.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/snowpack.svg b/packages/app/src/assets/file-icons/snowpack.svg
deleted file mode 100644
index 7941faefb..000000000
--- a/packages/app/src/assets/file-icons/snowpack.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/snowpack_light.svg b/packages/app/src/assets/file-icons/snowpack_light.svg
deleted file mode 100644
index 70389d20f..000000000
--- a/packages/app/src/assets/file-icons/snowpack_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/snyk.svg b/packages/app/src/assets/file-icons/snyk.svg
deleted file mode 100644
index 90791eeec..000000000
--- a/packages/app/src/assets/file-icons/snyk.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/solidity.svg b/packages/app/src/assets/file-icons/solidity.svg
deleted file mode 100644
index 6ae9873d8..000000000
--- a/packages/app/src/assets/file-icons/solidity.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sonarcloud.svg b/packages/app/src/assets/file-icons/sonarcloud.svg
deleted file mode 100644
index ee9896161..000000000
--- a/packages/app/src/assets/file-icons/sonarcloud.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/spwn.svg b/packages/app/src/assets/file-icons/spwn.svg
deleted file mode 100644
index 8a8bf4347..000000000
--- a/packages/app/src/assets/file-icons/spwn.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stackblitz.svg b/packages/app/src/assets/file-icons/stackblitz.svg
deleted file mode 100644
index f1806a8b2..000000000
--- a/packages/app/src/assets/file-icons/stackblitz.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stan.svg b/packages/app/src/assets/file-icons/stan.svg
deleted file mode 100644
index bb5cf6723..000000000
--- a/packages/app/src/assets/file-icons/stan.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/steadybit.svg b/packages/app/src/assets/file-icons/steadybit.svg
deleted file mode 100644
index 4871bbd76..000000000
--- a/packages/app/src/assets/file-icons/steadybit.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stencil.svg b/packages/app/src/assets/file-icons/stencil.svg
deleted file mode 100644
index bf8f3ea19..000000000
--- a/packages/app/src/assets/file-icons/stencil.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stitches.svg b/packages/app/src/assets/file-icons/stitches.svg
deleted file mode 100644
index a597fbcce..000000000
--- a/packages/app/src/assets/file-icons/stitches.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stitches_light.svg b/packages/app/src/assets/file-icons/stitches_light.svg
deleted file mode 100644
index 8001d9dfc..000000000
--- a/packages/app/src/assets/file-icons/stitches_light.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/storybook.svg b/packages/app/src/assets/file-icons/storybook.svg
deleted file mode 100644
index 8a4bdeaa7..000000000
--- a/packages/app/src/assets/file-icons/storybook.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stryker.svg b/packages/app/src/assets/file-icons/stryker.svg
deleted file mode 100644
index 05d45e614..000000000
--- a/packages/app/src/assets/file-icons/stryker.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stylable.svg b/packages/app/src/assets/file-icons/stylable.svg
deleted file mode 100644
index be5522619..000000000
--- a/packages/app/src/assets/file-icons/stylable.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stylelint.svg b/packages/app/src/assets/file-icons/stylelint.svg
deleted file mode 100644
index eb6452438..000000000
--- a/packages/app/src/assets/file-icons/stylelint.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/stylelint_light.svg b/packages/app/src/assets/file-icons/stylelint_light.svg
deleted file mode 100644
index 502fec33f..000000000
--- a/packages/app/src/assets/file-icons/stylelint_light.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/stylus.svg b/packages/app/src/assets/file-icons/stylus.svg
deleted file mode 100644
index ae61b48dd..000000000
--- a/packages/app/src/assets/file-icons/stylus.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sublime.svg b/packages/app/src/assets/file-icons/sublime.svg
deleted file mode 100644
index 5c99fb9be..000000000
--- a/packages/app/src/assets/file-icons/sublime.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/subtitles.svg b/packages/app/src/assets/file-icons/subtitles.svg
deleted file mode 100644
index 15eebd61f..000000000
--- a/packages/app/src/assets/file-icons/subtitles.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/supabase.svg b/packages/app/src/assets/file-icons/supabase.svg
deleted file mode 100644
index 78bfef7d9..000000000
--- a/packages/app/src/assets/file-icons/supabase.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/svelte.svg b/packages/app/src/assets/file-icons/svelte.svg
deleted file mode 100644
index 4b14a6f71..000000000
--- a/packages/app/src/assets/file-icons/svelte.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/svg.svg b/packages/app/src/assets/file-icons/svg.svg
deleted file mode 100644
index fbaf9e59b..000000000
--- a/packages/app/src/assets/file-icons/svg.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/svgo.svg b/packages/app/src/assets/file-icons/svgo.svg
deleted file mode 100644
index 4b9cb8904..000000000
--- a/packages/app/src/assets/file-icons/svgo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/svgr.svg b/packages/app/src/assets/file-icons/svgr.svg
deleted file mode 100644
index 01443226e..000000000
--- a/packages/app/src/assets/file-icons/svgr.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/swagger.svg b/packages/app/src/assets/file-icons/swagger.svg
deleted file mode 100644
index 1f79152d1..000000000
--- a/packages/app/src/assets/file-icons/swagger.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/sway.svg b/packages/app/src/assets/file-icons/sway.svg
deleted file mode 100644
index adca3282b..000000000
--- a/packages/app/src/assets/file-icons/sway.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/swc.svg b/packages/app/src/assets/file-icons/swc.svg
deleted file mode 100644
index 5931bd3a1..000000000
--- a/packages/app/src/assets/file-icons/swc.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/swift.svg b/packages/app/src/assets/file-icons/swift.svg
deleted file mode 100644
index df413c843..000000000
--- a/packages/app/src/assets/file-icons/swift.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/syncpack.svg b/packages/app/src/assets/file-icons/syncpack.svg
deleted file mode 100644
index 9c64e3184..000000000
--- a/packages/app/src/assets/file-icons/syncpack.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/systemd.svg b/packages/app/src/assets/file-icons/systemd.svg
deleted file mode 100755
index 943b77f26..000000000
--- a/packages/app/src/assets/file-icons/systemd.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/systemd_light.svg b/packages/app/src/assets/file-icons/systemd_light.svg
deleted file mode 100755
index 39e81f63b..000000000
--- a/packages/app/src/assets/file-icons/systemd_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/table.svg b/packages/app/src/assets/file-icons/table.svg
deleted file mode 100644
index 040b3839e..000000000
--- a/packages/app/src/assets/file-icons/table.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tailwindcss.svg b/packages/app/src/assets/file-icons/tailwindcss.svg
deleted file mode 100644
index a55450d0b..000000000
--- a/packages/app/src/assets/file-icons/tailwindcss.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/taskfile.svg b/packages/app/src/assets/file-icons/taskfile.svg
deleted file mode 100644
index 99a775f69..000000000
--- a/packages/app/src/assets/file-icons/taskfile.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tauri.svg b/packages/app/src/assets/file-icons/tauri.svg
deleted file mode 100644
index 2c7aa2656..000000000
--- a/packages/app/src/assets/file-icons/tauri.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/taze.svg b/packages/app/src/assets/file-icons/taze.svg
deleted file mode 100644
index c6e3a3fc8..000000000
--- a/packages/app/src/assets/file-icons/taze.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tcl.svg b/packages/app/src/assets/file-icons/tcl.svg
deleted file mode 100644
index 3c196a696..000000000
--- a/packages/app/src/assets/file-icons/tcl.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/teal.svg b/packages/app/src/assets/file-icons/teal.svg
deleted file mode 100644
index 770b63d7b..000000000
--- a/packages/app/src/assets/file-icons/teal.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/templ.svg b/packages/app/src/assets/file-icons/templ.svg
deleted file mode 100644
index 5b79cfe99..000000000
--- a/packages/app/src/assets/file-icons/templ.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/template.svg b/packages/app/src/assets/file-icons/template.svg
deleted file mode 100644
index 604a6f86e..000000000
--- a/packages/app/src/assets/file-icons/template.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/terraform.svg b/packages/app/src/assets/file-icons/terraform.svg
deleted file mode 100644
index d072809bf..000000000
--- a/packages/app/src/assets/file-icons/terraform.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/test-js.svg b/packages/app/src/assets/file-icons/test-js.svg
deleted file mode 100644
index d6ea99491..000000000
--- a/packages/app/src/assets/file-icons/test-js.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/test-jsx.svg b/packages/app/src/assets/file-icons/test-jsx.svg
deleted file mode 100644
index ea2d4da46..000000000
--- a/packages/app/src/assets/file-icons/test-jsx.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/test-ts.svg b/packages/app/src/assets/file-icons/test-ts.svg
deleted file mode 100644
index 0b4ec71be..000000000
--- a/packages/app/src/assets/file-icons/test-ts.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tex.svg b/packages/app/src/assets/file-icons/tex.svg
deleted file mode 100644
index 83fc24ad0..000000000
--- a/packages/app/src/assets/file-icons/tex.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/textlint.svg b/packages/app/src/assets/file-icons/textlint.svg
deleted file mode 100644
index a619bf04d..000000000
--- a/packages/app/src/assets/file-icons/textlint.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tilt.svg b/packages/app/src/assets/file-icons/tilt.svg
deleted file mode 100644
index 0ab842851..000000000
--- a/packages/app/src/assets/file-icons/tilt.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tldraw.svg b/packages/app/src/assets/file-icons/tldraw.svg
deleted file mode 100644
index c4e6d6b8f..000000000
--- a/packages/app/src/assets/file-icons/tldraw.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tldraw_light.svg b/packages/app/src/assets/file-icons/tldraw_light.svg
deleted file mode 100644
index 41faab3f0..000000000
--- a/packages/app/src/assets/file-icons/tldraw_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tobi.svg b/packages/app/src/assets/file-icons/tobi.svg
deleted file mode 100644
index 1a576a1c3..000000000
--- a/packages/app/src/assets/file-icons/tobi.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tobimake.svg b/packages/app/src/assets/file-icons/tobimake.svg
deleted file mode 100644
index 0ba3b3e7f..000000000
--- a/packages/app/src/assets/file-icons/tobimake.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/todo.svg b/packages/app/src/assets/file-icons/todo.svg
deleted file mode 100644
index 281ed6599..000000000
--- a/packages/app/src/assets/file-icons/todo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/toml.svg b/packages/app/src/assets/file-icons/toml.svg
deleted file mode 100644
index aa4f24c3b..000000000
--- a/packages/app/src/assets/file-icons/toml.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/toml_light.svg b/packages/app/src/assets/file-icons/toml_light.svg
deleted file mode 100644
index a85712bf8..000000000
--- a/packages/app/src/assets/file-icons/toml_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/travis.svg b/packages/app/src/assets/file-icons/travis.svg
deleted file mode 100644
index 37a69a8d3..000000000
--- a/packages/app/src/assets/file-icons/travis.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tree.svg b/packages/app/src/assets/file-icons/tree.svg
deleted file mode 100644
index a3b6d57e1..000000000
--- a/packages/app/src/assets/file-icons/tree.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/trigger.svg b/packages/app/src/assets/file-icons/trigger.svg
deleted file mode 100644
index 7a4f63a07..000000000
--- a/packages/app/src/assets/file-icons/trigger.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tsconfig.svg b/packages/app/src/assets/file-icons/tsconfig.svg
deleted file mode 100644
index 817fb8dbe..000000000
--- a/packages/app/src/assets/file-icons/tsconfig.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tsdoc.svg b/packages/app/src/assets/file-icons/tsdoc.svg
deleted file mode 100644
index e7e04d0e1..000000000
--- a/packages/app/src/assets/file-icons/tsdoc.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tsil.svg b/packages/app/src/assets/file-icons/tsil.svg
deleted file mode 100644
index 261d7cdfe..000000000
--- a/packages/app/src/assets/file-icons/tsil.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/tune.svg b/packages/app/src/assets/file-icons/tune.svg
deleted file mode 100644
index ecbde06c6..000000000
--- a/packages/app/src/assets/file-icons/tune.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/turborepo.svg b/packages/app/src/assets/file-icons/turborepo.svg
deleted file mode 100644
index f0e544985..000000000
--- a/packages/app/src/assets/file-icons/turborepo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/turborepo_light.svg b/packages/app/src/assets/file-icons/turborepo_light.svg
deleted file mode 100644
index b020a358d..000000000
--- a/packages/app/src/assets/file-icons/turborepo_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/twig.svg b/packages/app/src/assets/file-icons/twig.svg
deleted file mode 100644
index 01f9a5dba..000000000
--- a/packages/app/src/assets/file-icons/twig.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/twine.svg b/packages/app/src/assets/file-icons/twine.svg
deleted file mode 100644
index ac1bc553b..000000000
--- a/packages/app/src/assets/file-icons/twine.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/typescript-def.svg b/packages/app/src/assets/file-icons/typescript-def.svg
deleted file mode 100644
index a9ef95879..000000000
--- a/packages/app/src/assets/file-icons/typescript-def.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/typescript.svg b/packages/app/src/assets/file-icons/typescript.svg
deleted file mode 100644
index acaf0ddb7..000000000
--- a/packages/app/src/assets/file-icons/typescript.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/typst.svg b/packages/app/src/assets/file-icons/typst.svg
deleted file mode 100644
index a36473450..000000000
--- a/packages/app/src/assets/file-icons/typst.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/umi.svg b/packages/app/src/assets/file-icons/umi.svg
deleted file mode 100644
index 7479a4bbb..000000000
--- a/packages/app/src/assets/file-icons/umi.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/uml.svg b/packages/app/src/assets/file-icons/uml.svg
deleted file mode 100644
index 5f70f1e42..000000000
--- a/packages/app/src/assets/file-icons/uml.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/uml_light.svg b/packages/app/src/assets/file-icons/uml_light.svg
deleted file mode 100644
index c296fac5a..000000000
--- a/packages/app/src/assets/file-icons/uml_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/unity.svg b/packages/app/src/assets/file-icons/unity.svg
deleted file mode 100644
index f495772f9..000000000
--- a/packages/app/src/assets/file-icons/unity.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/unocss.svg b/packages/app/src/assets/file-icons/unocss.svg
deleted file mode 100644
index eab05c437..000000000
--- a/packages/app/src/assets/file-icons/unocss.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/packages/app/src/assets/file-icons/url.svg b/packages/app/src/assets/file-icons/url.svg
deleted file mode 100644
index f065589a6..000000000
--- a/packages/app/src/assets/file-icons/url.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/uv.svg b/packages/app/src/assets/file-icons/uv.svg
deleted file mode 100644
index 1549270fb..000000000
--- a/packages/app/src/assets/file-icons/uv.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vagrant.svg b/packages/app/src/assets/file-icons/vagrant.svg
deleted file mode 100644
index 78c19f9e7..000000000
--- a/packages/app/src/assets/file-icons/vagrant.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vala.svg b/packages/app/src/assets/file-icons/vala.svg
deleted file mode 100644
index 114aff27c..000000000
--- a/packages/app/src/assets/file-icons/vala.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vanilla-extract.svg b/packages/app/src/assets/file-icons/vanilla-extract.svg
deleted file mode 100644
index c1f1e5946..000000000
--- a/packages/app/src/assets/file-icons/vanilla-extract.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/varnish.svg b/packages/app/src/assets/file-icons/varnish.svg
deleted file mode 100644
index 6b504af71..000000000
--- a/packages/app/src/assets/file-icons/varnish.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vedic.svg b/packages/app/src/assets/file-icons/vedic.svg
deleted file mode 100644
index 3dccbeb01..000000000
--- a/packages/app/src/assets/file-icons/vedic.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/velite.svg b/packages/app/src/assets/file-icons/velite.svg
deleted file mode 100644
index ca50cfa4f..000000000
--- a/packages/app/src/assets/file-icons/velite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/velocity.svg b/packages/app/src/assets/file-icons/velocity.svg
deleted file mode 100644
index f5fb988a2..000000000
--- a/packages/app/src/assets/file-icons/velocity.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vercel.svg b/packages/app/src/assets/file-icons/vercel.svg
deleted file mode 100644
index 8ff6e492e..000000000
--- a/packages/app/src/assets/file-icons/vercel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vercel_light.svg b/packages/app/src/assets/file-icons/vercel_light.svg
deleted file mode 100644
index 314b78cd6..000000000
--- a/packages/app/src/assets/file-icons/vercel_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/verdaccio.svg b/packages/app/src/assets/file-icons/verdaccio.svg
deleted file mode 100644
index 3b5f1d412..000000000
--- a/packages/app/src/assets/file-icons/verdaccio.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/verified.svg b/packages/app/src/assets/file-icons/verified.svg
deleted file mode 100644
index 0c861c559..000000000
--- a/packages/app/src/assets/file-icons/verified.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/verilog.svg b/packages/app/src/assets/file-icons/verilog.svg
deleted file mode 100644
index c546ea874..000000000
--- a/packages/app/src/assets/file-icons/verilog.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vfl.svg b/packages/app/src/assets/file-icons/vfl.svg
deleted file mode 100644
index 3c371b4ad..000000000
--- a/packages/app/src/assets/file-icons/vfl.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/video.svg b/packages/app/src/assets/file-icons/video.svg
deleted file mode 100644
index 2ade126f8..000000000
--- a/packages/app/src/assets/file-icons/video.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vim.svg b/packages/app/src/assets/file-icons/vim.svg
deleted file mode 100644
index 1fc655d96..000000000
--- a/packages/app/src/assets/file-icons/vim.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/virtual.svg b/packages/app/src/assets/file-icons/virtual.svg
deleted file mode 100644
index 0fdb620da..000000000
--- a/packages/app/src/assets/file-icons/virtual.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/visualstudio.svg b/packages/app/src/assets/file-icons/visualstudio.svg
deleted file mode 100644
index 15328de80..000000000
--- a/packages/app/src/assets/file-icons/visualstudio.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vite.svg b/packages/app/src/assets/file-icons/vite.svg
deleted file mode 100644
index d66cd5e7b..000000000
--- a/packages/app/src/assets/file-icons/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vitest.svg b/packages/app/src/assets/file-icons/vitest.svg
deleted file mode 100644
index 0a634e997..000000000
--- a/packages/app/src/assets/file-icons/vitest.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vlang.svg b/packages/app/src/assets/file-icons/vlang.svg
deleted file mode 100644
index 17bf0e049..000000000
--- a/packages/app/src/assets/file-icons/vlang.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
diff --git a/packages/app/src/assets/file-icons/vscode.svg b/packages/app/src/assets/file-icons/vscode.svg
deleted file mode 100644
index bb3772afd..000000000
--- a/packages/app/src/assets/file-icons/vscode.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vue-config.svg b/packages/app/src/assets/file-icons/vue-config.svg
deleted file mode 100644
index bfe01c23c..000000000
--- a/packages/app/src/assets/file-icons/vue-config.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vue.svg b/packages/app/src/assets/file-icons/vue.svg
deleted file mode 100644
index 359f899f2..000000000
--- a/packages/app/src/assets/file-icons/vue.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/vuex-store.svg b/packages/app/src/assets/file-icons/vuex-store.svg
deleted file mode 100644
index c98a851cc..000000000
--- a/packages/app/src/assets/file-icons/vuex-store.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wakatime.svg b/packages/app/src/assets/file-icons/wakatime.svg
deleted file mode 100644
index 66b8a6f71..000000000
--- a/packages/app/src/assets/file-icons/wakatime.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wakatime_light.svg b/packages/app/src/assets/file-icons/wakatime_light.svg
deleted file mode 100644
index 2b94c5611..000000000
--- a/packages/app/src/assets/file-icons/wakatime_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wallaby.svg b/packages/app/src/assets/file-icons/wallaby.svg
deleted file mode 100644
index 0e7ce6ef0..000000000
--- a/packages/app/src/assets/file-icons/wallaby.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wally.svg b/packages/app/src/assets/file-icons/wally.svg
deleted file mode 100644
index a5c1f24fa..000000000
--- a/packages/app/src/assets/file-icons/wally.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/watchman.svg b/packages/app/src/assets/file-icons/watchman.svg
deleted file mode 100644
index 74773cd14..000000000
--- a/packages/app/src/assets/file-icons/watchman.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/webassembly.svg b/packages/app/src/assets/file-icons/webassembly.svg
deleted file mode 100644
index 69a43aa35..000000000
--- a/packages/app/src/assets/file-icons/webassembly.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/webhint.svg b/packages/app/src/assets/file-icons/webhint.svg
deleted file mode 100644
index fdaa668db..000000000
--- a/packages/app/src/assets/file-icons/webhint.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/webpack.svg b/packages/app/src/assets/file-icons/webpack.svg
deleted file mode 100644
index 68233d9e9..000000000
--- a/packages/app/src/assets/file-icons/webpack.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wepy.svg b/packages/app/src/assets/file-icons/wepy.svg
deleted file mode 100644
index bed1ad034..000000000
--- a/packages/app/src/assets/file-icons/wepy.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/werf.svg b/packages/app/src/assets/file-icons/werf.svg
deleted file mode 100644
index 7a89a1fb1..000000000
--- a/packages/app/src/assets/file-icons/werf.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/windicss.svg b/packages/app/src/assets/file-icons/windicss.svg
deleted file mode 100644
index 4f31c55fa..000000000
--- a/packages/app/src/assets/file-icons/windicss.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wolframlanguage.svg b/packages/app/src/assets/file-icons/wolframlanguage.svg
deleted file mode 100644
index 77e880995..000000000
--- a/packages/app/src/assets/file-icons/wolframlanguage.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/word.svg b/packages/app/src/assets/file-icons/word.svg
deleted file mode 100644
index a90b88f9c..000000000
--- a/packages/app/src/assets/file-icons/word.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wrangler.svg b/packages/app/src/assets/file-icons/wrangler.svg
deleted file mode 100644
index 51a7983a0..000000000
--- a/packages/app/src/assets/file-icons/wrangler.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/wxt.svg b/packages/app/src/assets/file-icons/wxt.svg
deleted file mode 100644
index d43b74283..000000000
--- a/packages/app/src/assets/file-icons/wxt.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/xaml.svg b/packages/app/src/assets/file-icons/xaml.svg
deleted file mode 100644
index 0b7e865a7..000000000
--- a/packages/app/src/assets/file-icons/xaml.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/xmake.svg b/packages/app/src/assets/file-icons/xmake.svg
deleted file mode 100644
index 47b3ce8ae..000000000
--- a/packages/app/src/assets/file-icons/xmake.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/xml.svg b/packages/app/src/assets/file-icons/xml.svg
deleted file mode 100644
index c3a1eaf45..000000000
--- a/packages/app/src/assets/file-icons/xml.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/yaml.svg b/packages/app/src/assets/file-icons/yaml.svg
deleted file mode 100644
index 1f1cc7cb0..000000000
--- a/packages/app/src/assets/file-icons/yaml.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/yang.svg b/packages/app/src/assets/file-icons/yang.svg
deleted file mode 100644
index fba4bbfa4..000000000
--- a/packages/app/src/assets/file-icons/yang.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/yarn.svg b/packages/app/src/assets/file-icons/yarn.svg
deleted file mode 100644
index 9af575c11..000000000
--- a/packages/app/src/assets/file-icons/yarn.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/zeabur.svg b/packages/app/src/assets/file-icons/zeabur.svg
deleted file mode 100644
index 37b0ea8b7..000000000
--- a/packages/app/src/assets/file-icons/zeabur.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/zeabur_light.svg b/packages/app/src/assets/file-icons/zeabur_light.svg
deleted file mode 100644
index 0d01f2b1c..000000000
--- a/packages/app/src/assets/file-icons/zeabur_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/zig.svg b/packages/app/src/assets/file-icons/zig.svg
deleted file mode 100644
index b5604dfe7..000000000
--- a/packages/app/src/assets/file-icons/zig.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/assets/file-icons/zip.svg b/packages/app/src/assets/file-icons/zip.svg
deleted file mode 100644
index 1056c60bd..000000000
--- a/packages/app/src/assets/file-icons/zip.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/app/src/components/code.tsx b/packages/app/src/components/code.tsx
deleted file mode 100644
index 40a40aa9a..000000000
--- a/packages/app/src/components/code.tsx
+++ /dev/null
@@ -1,846 +0,0 @@
-import { bundledLanguages, type BundledLanguage, type ShikiTransformer } from "shiki"
-import { splitProps, type ComponentProps, createEffect, onMount, onCleanup, createMemo, createResource } from "solid-js"
-import { useLocal, useShiki } from "@/context"
-import type { TextSelection } from "@/context/local"
-import { getFileExtension, getNodeOffsetInLine, getSelectionInContainer } from "@/utils"
-
-type DefinedSelection = Exclude
-
-interface Props extends ComponentProps<"div"> {
- code: string
- path: string
-}
-
-export function Code(props: Props) {
- const ctx = useLocal()
- const highlighter = useShiki()
- const [local, others] = splitProps(props, ["class", "classList", "code", "path"])
- const lang = createMemo(() => {
- const ext = getFileExtension(local.path)
- if (ext in bundledLanguages) return ext
- return "text"
- })
-
- let container: HTMLDivElement | undefined
- let isProgrammaticSelection = false
-
- const ranges = createMemo(() => {
- const items = ctx.context.all() as Array<{ type: "file"; path: string; selection?: DefinedSelection }>
- const result: DefinedSelection[] = []
- for (const item of items) {
- if (item.path !== local.path) continue
- const selection = item.selection
- if (!selection) continue
- result.push(selection)
- }
- return result
- })
-
- const createLineNumberTransformer = (selections: DefinedSelection[]): ShikiTransformer => {
- const highlighted = new Set()
- for (const selection of selections) {
- const startLine = selection.startLine
- const endLine = selection.endLine
- const start = Math.max(1, Math.min(startLine, endLine))
- const end = Math.max(start, Math.max(startLine, endLine))
- const count = end - start + 1
- if (count <= 0) continue
- const values = Array.from({ length: count }, (_, index) => start + index)
- for (const value of values) highlighted.add(value)
- }
- return {
- name: "line-number-highlight",
- line(node, index) {
- if (!highlighted.has(index)) return
- this.addClassToHast(node, "line-number-highlight")
- const children = node.children
- if (!Array.isArray(children)) return
- for (const child of children) {
- if (!child || typeof child !== "object") continue
- const element = child as { type?: string; properties?: { className?: string[] } }
- if (element.type !== "element") continue
- const className = element.properties?.className
- if (!Array.isArray(className)) continue
- const matches = className.includes("diff-oldln") || className.includes("diff-newln")
- if (!matches) continue
- if (className.includes("line-number-highlight")) continue
- className.push("line-number-highlight")
- }
- },
- }
- }
-
- const [html] = createResource(
- () => ranges(),
- async (activeRanges) => {
- if (!highlighter.getLoadedLanguages().includes(lang())) {
- await highlighter.loadLanguage(lang() as BundledLanguage)
- }
- return highlighter.codeToHtml(local.code || "", {
- lang: lang() && lang() in bundledLanguages ? lang() : "text",
- theme: "opencode",
- transformers: [transformerUnifiedDiff(), transformerDiffGroups(), createLineNumberTransformer(activeRanges)],
- }) as string
- },
- )
-
- onMount(() => {
- if (!container) return
-
- let ticking = false
- const onScroll = () => {
- if (!container) return
- if (ctx.file.active()?.path !== local.path) return
- if (ticking) return
- ticking = true
- requestAnimationFrame(() => {
- ticking = false
- ctx.file.scroll(local.path, container!.scrollTop)
- })
- }
-
- const onSelectionChange = () => {
- if (!container) return
- if (isProgrammaticSelection) return
- if (ctx.file.active()?.path !== local.path) return
- const d = getSelectionInContainer(container)
- if (!d) return
- const p = ctx.file.node(local.path)?.selection
- if (p && p.startLine === d.sl && p.endLine === d.el && p.startChar === d.sch && p.endChar === d.ech) return
- ctx.file.select(local.path, { startLine: d.sl, startChar: d.sch, endLine: d.el, endChar: d.ech })
- }
-
- const MOD = typeof navigator === "object" && /(Mac|iPod|iPhone|iPad)/.test(navigator.platform) ? "Meta" : "Control"
- const onKeyDown = (e: KeyboardEvent) => {
- if (ctx.file.active()?.path !== local.path) return
- const ae = document.activeElement as HTMLElement | undefined
- const tag = (ae?.tagName || "").toLowerCase()
- const inputFocused = !!ae && (tag === "input" || tag === "textarea" || ae.isContentEditable)
- if (inputFocused) return
- if (e.getModifierState(MOD) && e.key.toLowerCase() === "a") {
- e.preventDefault()
- if (!container) return
- const element = container.querySelector("code") as HTMLElement | undefined
- if (!element) return
- const lines = Array.from(element.querySelectorAll(".line"))
- if (!lines.length) return
- const r = document.createRange()
- const last = lines[lines.length - 1]
- r.selectNodeContents(last)
- const lastLen = r.toString().length
- ctx.file.select(local.path, { startLine: 1, startChar: 0, endLine: lines.length, endChar: lastLen })
- }
- }
-
- container.addEventListener("scroll", onScroll)
- document.addEventListener("selectionchange", onSelectionChange)
- document.addEventListener("keydown", onKeyDown)
-
- onCleanup(() => {
- container?.removeEventListener("scroll", onScroll)
- document.removeEventListener("selectionchange", onSelectionChange)
- document.removeEventListener("keydown", onKeyDown)
- })
- })
-
- // Restore scroll position from store when content is ready
- createEffect(() => {
- const content = html()
- if (!container || !content) return
- const top = ctx.file.node(local.path)?.scrollTop
- if (top !== undefined && container.scrollTop !== top) container.scrollTop = top
- })
-
- // Sync selection from store -> DOM
- createEffect(() => {
- const content = html()
- if (!container || !content) return
- if (ctx.file.active()?.path !== local.path) return
- const codeEl = container.querySelector("code") as HTMLElement | undefined
- if (!codeEl) return
- const target = ctx.file.node(local.path)?.selection
- const current = getSelectionInContainer(container)
- const sel = window.getSelection()
- if (!sel) return
- if (!target) {
- if (current) {
- isProgrammaticSelection = true
- sel.removeAllRanges()
- queueMicrotask(() => {
- isProgrammaticSelection = false
- })
- }
- return
- }
- const matches = !!(
- current &&
- current.sl === target.startLine &&
- current.sch === target.startChar &&
- current.el === target.endLine &&
- current.ech === target.endChar
- )
- if (matches) return
- const lines = Array.from(codeEl.querySelectorAll(".line"))
- if (lines.length === 0) return
- let sIdx = Math.max(0, target.startLine - 1)
- let eIdx = Math.max(0, target.endLine - 1)
- let sChar = Math.max(0, target.startChar || 0)
- let eChar = Math.max(0, target.endChar || 0)
- if (sIdx > eIdx || (sIdx === eIdx && sChar > eChar)) {
- const ti = sIdx
- sIdx = eIdx
- eIdx = ti
- const tc = sChar
- sChar = eChar
- eChar = tc
- }
- if (eChar === 0 && eIdx > sIdx) {
- eIdx = eIdx - 1
- eChar = Number.POSITIVE_INFINITY
- }
- if (sIdx >= lines.length) return
- if (eIdx >= lines.length) eIdx = lines.length - 1
- const s = getNodeOffsetInLine(lines[sIdx], sChar) ?? { node: lines[sIdx], offset: 0 }
- const e = getNodeOffsetInLine(lines[eIdx], eChar) ?? { node: lines[eIdx], offset: lines[eIdx].childNodes.length }
- const range = document.createRange()
- range.setStart(s.node, s.offset)
- range.setEnd(e.node, e.offset)
- isProgrammaticSelection = true
- sel.removeAllRanges()
- sel.addRange(range)
- queueMicrotask(() => {
- isProgrammaticSelection = false
- })
- })
-
- // Build/toggle split layout and apply folding (both unified and split)
- createEffect(() => {
- const content = html()
- if (!container || !content) return
- const view = ctx.file.view(local.path)
-
- const pres = Array.from(container.querySelectorAll("pre"))
- if (pres.length === 0) return
- const originalPre = pres[0]
-
- const split = container.querySelector(".diff-split")
- if (view === "diff-split") {
- applySplitDiff(container)
- const next = container.querySelector(".diff-split")
- if (next) next.style.display = ""
- originalPre.style.display = "none"
- } else {
- if (split) split.style.display = "none"
- originalPre.style.display = ""
- }
-
- const expanded = ctx.file.folded(local.path)
- if (view === "diff-split") {
- const left = container.querySelector(".diff-split pre:nth-child(1) code")
- const right = container.querySelector(".diff-split pre:nth-child(2) code")
- if (left)
- applyDiffFolding(left, 3, { expanded, onExpand: (key) => ctx.file.unfold(local.path, key), side: "left" })
- if (right)
- applyDiffFolding(right, 3, { expanded, onExpand: (key) => ctx.file.unfold(local.path, key), side: "right" })
- } else {
- const code = container.querySelector("pre code")
- if (code)
- applyDiffFolding(code, 3, {
- expanded,
- onExpand: (key) => ctx.file.unfold(local.path, key),
- })
- }
- })
-
- // Highlight groups + scroll coupling
- const clearHighlights = () => {
- if (!container) return
- container.querySelectorAll(".diff-selected").forEach((el) => el.classList.remove("diff-selected"))
- }
-
- const applyHighlight = (idx: number, scroll?: boolean) => {
- if (!container) return
- const view = ctx.file.view(local.path)
- if (view === "raw") return
-
- clearHighlights()
-
- const nodes: HTMLElement[] = []
- if (view === "diff-split") {
- const left = container.querySelector(".diff-split pre:nth-child(1) code")
- const right = container.querySelector(".diff-split pre:nth-child(2) code")
- if (left)
- nodes.push(...Array.from(left.querySelectorAll(`[data-chgrp="${idx}"][data-diff="remove"]`)))
- if (right)
- nodes.push(...Array.from(right.querySelectorAll(`[data-chgrp="${idx}"][data-diff="add"]`)))
- } else {
- const code = container.querySelector("pre code")
- if (code) nodes.push(...Array.from(code.querySelectorAll(`[data-chgrp="${idx}"]`)))
- }
-
- for (const n of nodes) n.classList.add("diff-selected")
- if (scroll && nodes.length) nodes[0].scrollIntoView({ block: "center", behavior: "smooth" })
- }
-
- const countGroups = () => {
- if (!container) return 0
- const code = container.querySelector("pre code")
- if (!code) return 0
- const set = new Set()
- for (const el of Array.from(code.querySelectorAll(".diff-line[data-chgrp]"))) {
- const v = el.getAttribute("data-chgrp")
- if (v != undefined) set.add(v)
- }
- return set.size
- }
-
- let lastIdx: number | undefined = undefined
- let lastView: string | undefined
- let lastContent: string | undefined
- let lastRawIdx: number | undefined = undefined
- createEffect(() => {
- const content = html()
- if (!container || !content) return
- const view = ctx.file.view(local.path)
- const raw = ctx.file.changeIndex(local.path)
- if (raw === undefined) return
- const total = countGroups()
- if (total <= 0) return
- const next = ((raw % total) + total) % total
-
- const navigated = lastRawIdx !== undefined && lastRawIdx !== raw
-
- if (next !== raw) {
- ctx.file.setChangeIndex(local.path, next)
- applyHighlight(next, true)
- } else {
- if (lastView !== view || lastContent !== content) applyHighlight(next)
- if ((lastIdx !== undefined && lastIdx !== next) || navigated) applyHighlight(next, true)
- }
-
- lastRawIdx = raw
- lastIdx = next
- lastView = view
- lastContent = content
- })
-
- return (
- {
- container = el
- }}
- innerHTML={html()}
- class="
- font-mono text-xs tracking-wide overflow-y-auto h-full
- [&]:[counter-reset:line]
- [&_pre]:focus-visible:outline-none
- [&_pre]:overflow-x-auto [&_pre]:no-scrollbar
- [&_code]:min-w-full [&_code]:inline-block
- [&_.tab]:relative
- [&_.tab::before]:content['⇥']
- [&_.tab::before]:absolute
- [&_.tab::before]:opacity-0
- [&_.space]:relative
- [&_.space::before]:content-['·']
- [&_.space::before]:absolute
- [&_.space::before]:opacity-0
- [&_.line]:inline-block [&_.line]:w-full
- [&_.line]:hover:bg-background-element
- [&_.line::before]:sticky [&_.line::before]:left-0
- [&_.line::before]:w-12 [&_.line::before]:pr-4
- [&_.line::before]:z-10
- [&_.line::before]:bg-background-panel
- [&_.line::before]:text-text-muted/60
- [&_.line::before]:text-right [&_.line::before]:inline-block
- [&_.line::before]:select-none
- [&_.line::before]:[counter-increment:line]
- [&_.line::before]:content-[counter(line)]
- [&_.line-number-highlight]:bg-accent/20
- [&_.line-number-highlight::before]:bg-accent/40!
- [&_.line-number-highlight::before]:text-background-panel!
- [&_code.code-diff_.line::before]:content-['']
- [&_code.code-diff_.line::before]:w-0
- [&_code.code-diff_.line::before]:pr-0
- [&_.diff-split_code.code-diff::before]:w-10
- [&_.diff-split_.diff-newln]:left-0
- [&_.diff-oldln]:sticky [&_.diff-oldln]:left-0
- [&_.diff-oldln]:w-10 [&_.diff-oldln]:pr-2
- [&_.diff-oldln]:z-40
- [&_.diff-oldln]:text-text-muted/60
- [&_.diff-oldln]:text-right [&_.diff-oldln]:inline-block
- [&_.diff-oldln]:select-none
- [&_.diff-oldln]:bg-background-panel
- [&_.diff-newln]:sticky [&_.diff-newln]:left-10
- [&_.diff-newln]:w-10 [&_.diff-newln]:pr-2
- [&_.diff-newln]:z-40
- [&_.diff-newln]:text-text-muted/60
- [&_.diff-newln]:text-right [&_.diff-newln]:inline-block
- [&_.diff-newln]:select-none
- [&_.diff-newln]:bg-background-panel
- [&_.diff-add]:bg-success/20!
- [&_.diff-add.diff-selected]:bg-success/50!
- [&_.diff-add_.diff-oldln]:bg-success!
- [&_.diff-add_.diff-oldln]:text-background-panel!
- [&_.diff-add_.diff-newln]:bg-success!
- [&_.diff-add_.diff-newln]:text-background-panel!
- [&_.diff-remove]:bg-error/20!
- [&_.diff-remove.diff-selected]:bg-error/50!
- [&_.diff-remove_.diff-newln]:bg-error!
- [&_.diff-remove_.diff-newln]:text-background-panel!
- [&_.diff-remove_.diff-oldln]:bg-error!
- [&_.diff-remove_.diff-oldln]:text-background-panel!
- [&_.diff-sign]:inline-block [&_.diff-sign]:px-2 [&_.diff-sign]:select-none
- [&_.diff-blank]:bg-background-element
- [&_.diff-blank_.diff-oldln]:bg-background-element
- [&_.diff-blank_.diff-newln]:bg-background-element
- [&_.diff-collapsed]:block! [&_.diff-collapsed]:w-full [&_.diff-collapsed]:relative
- [&_.diff-collapsed]:cursor-pointer [&_.diff-collapsed]:select-none
- [&_.diff-collapsed]:bg-info/20 [&_.diff-collapsed]:hover:bg-info/40!
- [&_.diff-collapsed]:text-info/80 [&_.diff-collapsed]:hover:text-info
- [&_.diff-collapsed]:text-xs
- [&_.diff-collapsed_.diff-oldln]:bg-info!
- [&_.diff-collapsed_.diff-newln]:bg-info!
- "
- classList={{
- ...(local.classList || {}),
- [local.class ?? ""]: !!local.class,
- }}
- {...others}
- >
- )
-}
-
-function transformerUnifiedDiff(): ShikiTransformer {
- const kinds = new Map()
- const meta = new Map()
- let isDiff = false
-
- return {
- name: "unified-diff",
- preprocess(input) {
- kinds.clear()
- meta.clear()
- isDiff = false
-
- const ls = input.split(/\r?\n/)
- const out: Array = []
- let oldNo = 0
- let newNo = 0
- let inHunk = false
-
- for (let i = 0; i < ls.length; i++) {
- const s = ls[i]
-
- const m = s.match(/^@@\s*-(\d+)(?:,(\d+))?\s+\+(\d+)(?:,(\d+))?\s*@@/)
- if (m) {
- isDiff = true
- inHunk = true
- oldNo = parseInt(m[1], 10)
- newNo = parseInt(m[3], 10)
- continue
- }
-
- if (
- /^diff --git /.test(s) ||
- /^Index: /.test(s) ||
- /^--- /.test(s) ||
- /^\+\+\+ /.test(s) ||
- /^[=]{3,}$/.test(s) ||
- /^\*{3,}$/.test(s) ||
- /^\\ No newline at end of file$/.test(s)
- ) {
- isDiff = true
- continue
- }
-
- if (!inHunk) {
- out.push(s)
- continue
- }
-
- if (/^\+/.test(s)) {
- out.push(s)
- const ln = out.length
- kinds.set(ln, "add")
- meta.set(ln, { new: newNo, sign: "+" })
- newNo++
- continue
- }
-
- if (/^-/.test(s)) {
- out.push(s)
- const ln = out.length
- kinds.set(ln, "remove")
- meta.set(ln, { old: oldNo, sign: "-" })
- oldNo++
- continue
- }
-
- if (/^ /.test(s)) {
- out.push(s)
- const ln = out.length
- kinds.set(ln, "context")
- meta.set(ln, { old: oldNo, new: newNo })
- oldNo++
- newNo++
- continue
- }
-
- // fallback in hunks
- out.push(s)
- }
-
- return out.join("\n").trimEnd()
- },
- code(node) {
- if (isDiff) this.addClassToHast(node, "code-diff")
- },
- pre(node) {
- if (isDiff) this.addClassToHast(node, "code-diff")
- },
- line(node, line) {
- if (!isDiff) return
- const kind = kinds.get(line)
- if (!kind) return
-
- const m = meta.get(line) || {}
-
- this.addClassToHast(node, "diff-line")
- this.addClassToHast(node, `diff-${kind}`)
- node.properties = node.properties || {}
- ;(node.properties as any)["data-diff"] = kind
- if (m.old != undefined) (node.properties as any)["data-old"] = String(m.old)
- if (m.new != undefined) (node.properties as any)["data-new"] = String(m.new)
-
- const oldSpan = {
- type: "element",
- tagName: "span",
- properties: { className: ["diff-oldln"] },
- children: [{ type: "text", value: m.old != undefined ? String(m.old) : " " }],
- }
- const newSpan = {
- type: "element",
- tagName: "span",
- properties: { className: ["diff-newln"] },
- children: [{ type: "text", value: m.new != undefined ? String(m.new) : " " }],
- }
-
- if (kind === "add" || kind === "remove" || kind === "context") {
- const first = (node.children && (node.children as any[])[0]) as any
- if (first && first.type === "element" && first.children && first.children.length > 0) {
- const t = first.children[0]
- if (t && t.type === "text" && typeof t.value === "string" && t.value.length > 0) {
- const ch = t.value[0]
- if (ch === "+" || ch === "-" || ch === " ") t.value = t.value.slice(1)
- }
- }
- }
-
- const signSpan = {
- type: "element",
- tagName: "span",
- properties: { className: ["diff-sign"] },
- children: [{ type: "text", value: (m as any).sign || " " }],
- }
-
- // @ts-expect-error hast typing across versions
- node.children = [oldSpan, newSpan, signSpan, ...(node.children || [])]
- },
- }
-}
-
-function transformerDiffGroups(): ShikiTransformer {
- let group = -1
- let inGroup = false
- return {
- name: "diff-groups",
- pre() {
- group = -1
- inGroup = false
- },
- line(node) {
- const props = (node.properties || {}) as any
- const kind = props["data-diff"] as string | undefined
- if (kind === "add" || kind === "remove") {
- if (!inGroup) {
- group += 1
- inGroup = true
- }
- ;(node.properties as any)["data-chgrp"] = String(group)
- } else {
- inGroup = false
- }
- },
- }
-}
-
-function applyDiffFolding(
- root: HTMLElement,
- context = 3,
- options?: { expanded?: string[]; onExpand?: (key: string) => void; side?: "left" | "right" },
-) {
- if (!root.classList.contains("code-diff")) return
-
- // Cleanup: unwrap previous collapsed blocks and remove toggles
- const blocks = Array.from(root.querySelectorAll(".diff-collapsed-block"))
- for (const block of blocks) {
- const p = block.parentNode
- if (!p) {
- block.remove()
- continue
- }
- while (block.firstChild) p.insertBefore(block.firstChild, block)
- block.remove()
- }
- const toggles = Array.from(root.querySelectorAll(".diff-collapsed"))
- for (const t of toggles) t.remove()
-
- const lines = Array.from(root.querySelectorAll(".diff-line"))
- if (lines.length === 0) return
-
- const n = lines.length
- const isChange = lines.map((l) => l.dataset["diff"] === "add" || l.dataset["diff"] === "remove")
- const isContext = lines.map((l) => l.dataset["diff"] === "context")
- if (!isChange.some(Boolean)) return
-
- const visible = new Array(n).fill(false) as boolean[]
- for (let i = 0; i < n; i++) if (isChange[i]) visible[i] = true
- for (let i = 0; i < n; i++) {
- if (isChange[i]) {
- const s = Math.max(0, i - context)
- const e = Math.min(n - 1, i + context)
- for (let j = s; j <= e; j++) if (isContext[j]) visible[j] = true
- }
- }
-
- type Range = { start: number; end: number }
- const ranges: Range[] = []
- let i = 0
- while (i < n) {
- if (!visible[i] && isContext[i]) {
- let j = i
- while (j + 1 < n && !visible[j + 1] && isContext[j + 1]) j++
- ranges.push({ start: i, end: j })
- i = j + 1
- } else {
- i++
- }
- }
-
- for (const r of ranges) {
- const start = lines[r.start]
- const end = lines[r.end]
- const count = r.end - r.start + 1
- const minCollapse = 20
- if (count < minCollapse) {
- continue
- }
-
- // Wrap the entire collapsed chunk (including trailing newline) so it takes no space
- const block = document.createElement("span")
- block.className = "diff-collapsed-block"
- start.parentElement?.insertBefore(block, start)
-
- let cur: Node | undefined = start
- while (cur) {
- const next: Node | undefined = cur.nextSibling || undefined
- block.appendChild(cur)
- if (cur === end) {
- // Also move the newline after the last line into the block
- if (next && next.nodeType === Node.TEXT_NODE && (next.textContent || "").startsWith("\n")) {
- block.appendChild(next)
- }
- break
- }
- cur = next
- }
-
- block.style.display = "none"
- const row = document.createElement("span")
- row.className = "line diff-collapsed"
- row.setAttribute("data-kind", "collapsed")
- row.setAttribute("data-count", String(count))
- row.setAttribute("tabindex", "0")
- row.setAttribute("role", "button")
-
- const oldln = document.createElement("span")
- oldln.className = "diff-oldln"
- oldln.textContent = " "
-
- const newln = document.createElement("span")
- newln.className = "diff-newln"
- newln.textContent = " "
-
- const sign = document.createElement("span")
- sign.className = "diff-sign"
- sign.textContent = "…"
-
- const label = document.createElement("span")
- label.textContent = `show ${count} unchanged line${count > 1 ? "s" : ""}`
-
- const key = `o${start.dataset["old"] || ""}-${end.dataset["old"] || ""}:n${start.dataset["new"] || ""}-${end.dataset["new"] || ""}`
-
- const show = (record = true) => {
- if (record) options?.onExpand?.(key)
- const p = block.parentNode
- if (p) {
- while (block.firstChild) p.insertBefore(block.firstChild, block)
- block.remove()
- }
- row.remove()
- }
-
- row.addEventListener("click", () => show(true))
- row.addEventListener("keydown", (ev) => {
- if (ev.key === "Enter" || ev.key === " ") {
- ev.preventDefault()
- show(true)
- }
- })
-
- block.parentElement?.insertBefore(row, block)
- if (!options?.side || options.side === "left") row.appendChild(oldln)
- if (!options?.side || options.side === "right") row.appendChild(newln)
- row.appendChild(sign)
- row.appendChild(label)
-
- if (options?.expanded && options.expanded.includes(key)) {
- show(false)
- }
- }
-}
-
-function applySplitDiff(container: HTMLElement) {
- const pres = Array.from(container.querySelectorAll("pre"))
- if (pres.length === 0) return
- const originalPre = pres[0]
- const originalCode = originalPre.querySelector("code") as HTMLElement | undefined
- if (!originalCode || !originalCode.classList.contains("code-diff")) return
-
- // Rebuild split each time to match current content
- const existing = container.querySelector(".diff-split")
- if (existing) existing.remove()
-
- const grid = document.createElement("div")
- grid.className = "diff-split grid grid-cols-2 gap-x-6"
-
- const makeColumn = () => {
- const pre = document.createElement("pre")
- pre.className = originalPre.className
- const code = document.createElement("code")
- code.className = originalCode.className
- pre.appendChild(code)
- return { pre, code }
- }
-
- const left = makeColumn()
- const right = makeColumn()
-
- // Helpers
- const cloneSide = (line: HTMLElement, side: "old" | "new"): HTMLElement => {
- const clone = line.cloneNode(true) as HTMLElement
- const oldln = clone.querySelector(".diff-oldln")
- const newln = clone.querySelector(".diff-newln")
- if (side === "old") {
- if (newln) newln.remove()
- } else {
- if (oldln) oldln.remove()
- }
- return clone
- }
-
- const blankLine = (side: "old" | "new", kind: "add" | "remove"): HTMLElement => {
- const span = document.createElement("span")
- span.className = "line diff-line diff-blank"
- span.setAttribute("data-diff", kind)
- const ln = document.createElement("span")
- ln.className = side === "old" ? "diff-oldln" : "diff-newln"
- ln.textContent = " "
- span.appendChild(ln)
- return span
- }
-
- const lines = Array.from(originalCode.querySelectorAll(".diff-line"))
- let i = 0
- while (i < lines.length) {
- const cur = lines[i]
- const kind = cur.dataset["diff"]
-
- if (kind === "context") {
- left.code.appendChild(cloneSide(cur, "old"))
- left.code.appendChild(document.createTextNode("\n"))
- right.code.appendChild(cloneSide(cur, "new"))
- right.code.appendChild(document.createTextNode("\n"))
- i++
- continue
- }
-
- if (kind === "remove") {
- // Batch consecutive removes and following adds, then pair
- const removes: HTMLElement[] = []
- const adds: HTMLElement[] = []
- let j = i
- while (j < lines.length && lines[j].dataset["diff"] === "remove") {
- removes.push(lines[j])
- j++
- }
- let k = j
- while (k < lines.length && lines[k].dataset["diff"] === "add") {
- adds.push(lines[k])
- k++
- }
-
- const pairs = Math.min(removes.length, adds.length)
- for (let p = 0; p < pairs; p++) {
- left.code.appendChild(cloneSide(removes[p], "old"))
- left.code.appendChild(document.createTextNode("\n"))
- right.code.appendChild(cloneSide(adds[p], "new"))
- right.code.appendChild(document.createTextNode("\n"))
- }
- for (let p = pairs; p < removes.length; p++) {
- left.code.appendChild(cloneSide(removes[p], "old"))
- left.code.appendChild(document.createTextNode("\n"))
- right.code.appendChild(blankLine("new", "remove"))
- right.code.appendChild(document.createTextNode("\n"))
- }
- for (let p = pairs; p < adds.length; p++) {
- left.code.appendChild(blankLine("old", "add"))
- left.code.appendChild(document.createTextNode("\n"))
- right.code.appendChild(cloneSide(adds[p], "new"))
- right.code.appendChild(document.createTextNode("\n"))
- }
-
- i = k
- continue
- }
-
- if (kind === "add") {
- // Run of adds not preceded by removes
- const adds: HTMLElement[] = []
- let j = i
- while (j < lines.length && lines[j].dataset["diff"] === "add") {
- adds.push(lines[j])
- j++
- }
- for (let p = 0; p < adds.length; p++) {
- left.code.appendChild(blankLine("old", "add"))
- left.code.appendChild(document.createTextNode("\n"))
- right.code.appendChild(cloneSide(adds[p], "new"))
- right.code.appendChild(document.createTextNode("\n"))
- }
- i = j
- continue
- }
-
- // Any other kind: mirror as context
- left.code.appendChild(cloneSide(cur, "old"))
- left.code.appendChild(document.createTextNode("\n"))
- right.code.appendChild(cloneSide(cur, "new"))
- right.code.appendChild(document.createTextNode("\n"))
- i++
- }
-
- grid.appendChild(left.pre)
- grid.appendChild(right.pre)
- container.appendChild(grid)
-}
diff --git a/packages/app/src/components/editor-pane.tsx b/packages/app/src/components/editor-pane.tsx
deleted file mode 100644
index faf70811d..000000000
--- a/packages/app/src/components/editor-pane.tsx
+++ /dev/null
@@ -1,381 +0,0 @@
-import { For, Match, Show, Switch, createSignal, splitProps } from "solid-js"
-import { Tabs } from "@/ui/tabs"
-import { FileIcon, Icon, IconButton, Logo, Tooltip } from "@/ui"
-import {
- DragDropProvider,
- DragDropSensors,
- DragOverlay,
- SortableProvider,
- closestCenter,
- createSortable,
- useDragDropContext,
-} from "@thisbeyond/solid-dnd"
-import type { DragEvent, Transformer } from "@thisbeyond/solid-dnd"
-import type { LocalFile } from "@/context/local"
-import { Code } from "@/components/code"
-import PromptForm from "@/components/prompt-form"
-import { useLocal, useSDK, useSync } from "@/context"
-import { getFilename } from "@/utils"
-import type { JSX } from "solid-js"
-
-interface EditorPaneProps {
- layoutKey: string
- timelinePane: string
- onFileClick: (file: LocalFile) => void
- onOpenModelSelect: () => void
- onInputRefChange: (element: HTMLTextAreaElement | null) => void
-}
-
-export default function EditorPane(props: EditorPaneProps): JSX.Element {
- const [localProps] = splitProps(props, [
- "layoutKey",
- "timelinePane",
- "onFileClick",
- "onOpenModelSelect",
- "onInputRefChange",
- ])
- const local = useLocal()
- const sdk = useSDK()
- const sync = useSync()
- const [activeItem, setActiveItem] = createSignal(undefined)
-
- const navigateChange = (dir: 1 | -1) => {
- const active = local.file.active()
- if (!active) return
- const current = local.file.changeIndex(active.path)
- const next = current === undefined ? (dir === 1 ? 0 : -1) : current + dir
- local.file.setChangeIndex(active.path, next)
- }
-
- const handleTabChange = (path: string) => {
- local.file.open(path)
- }
-
- const handleTabClose = (file: LocalFile) => {
- local.file.close(file.path)
- }
-
- const handlePromptSubmit = async (prompt: string) => {
- const existingSession = local.layout.visible(localProps.layoutKey, localProps.timelinePane)
- ? local.session.active()
- : undefined
- let session = existingSession
- if (!session) {
- const created = await sdk.session.create()
- session = created.data ?? undefined
- }
- if (!session) return
- local.session.setActive(session.id)
- local.layout.show(localProps.layoutKey, localProps.timelinePane)
-
- await sdk.session.prompt({
- path: { id: session.id },
- body: {
- agent: local.agent.current()!.name,
- model: {
- modelID: local.model.current()!.id,
- providerID: local.model.current()!.provider.id,
- },
- parts: [
- {
- type: "text",
- text: prompt,
- },
- ...(local.context.active()
- ? [
- {
- type: "file" as const,
- mime: "text/plain",
- url: `file://${local.context.active()!.absolute}`,
- filename: local.context.active()!.name,
- source: {
- type: "file" as const,
- text: {
- value: "@" + local.context.active()!.name,
- start: 0,
- end: 0,
- },
- path: local.context.active()!.absolute,
- },
- },
- ]
- : []),
- ...local.context.all().flatMap((file) => [
- {
- type: "file" as const,
- mime: "text/plain",
- url: `file://${sync.absolute(file.path)}${file.selection ? `?start=${file.selection.startLine}&end=${file.selection.endLine}` : ""}`,
- filename: getFilename(file.path),
- source: {
- type: "file" as const,
- text: {
- value: "@" + getFilename(file.path),
- start: 0,
- end: 0,
- },
- path: sync.absolute(file.path),
- },
- },
- ]),
- ],
- },
- })
- }
-
- const handleDragStart = (event: unknown) => {
- const id = getDraggableId(event)
- if (!id) return
- setActiveItem(id)
- }
-
- const handleDragOver = (event: DragEvent) => {
- const { draggable, droppable } = event
- if (draggable && droppable) {
- const currentFiles = local.file.opened().map((file) => file.path)
- const fromIndex = currentFiles.indexOf(draggable.id.toString())
- const toIndex = currentFiles.indexOf(droppable.id.toString())
- if (fromIndex !== toIndex) {
- local.file.move(draggable.id.toString(), toIndex)
- }
- }
- }
-
- const handleDragEnd = () => {
- setActiveItem(undefined)
- }
-
- return (
-
-
-
-
-
-
-
-
- file.path)}>
-
- {(file) => (
-
- )}
-
-
-
-
-
- {(() => {
- const activeFile = local.file.active()!
- const view = local.file.view(activeFile.path)
- return (
-
-
-
-
- navigateChange(-1)}>
-
-
-
-
- navigateChange(1)}>
-
-
-
-
-
-
- local.file.setView(activeFile.path, "raw")}
- >
-
-
-
-
- local.file.setView(activeFile.path, "diff-unified")}
- >
-
-
-
-
- local.file.setView(activeFile.path, "diff-split")}
- >
-
-
-
-
- )
- })()}
-
-
- local.layout.toggle(localProps.layoutKey, localProps.timelinePane)}
- >
-
-
-
-
-
-
- {(file) => (
-
- {(() => {
- const view = local.file.view(file.path)
- const showRaw = view === "raw" || !file.content?.diff
- const code = showRaw ? (file.content?.content ?? "") : (file.content?.diff ?? "")
- return
- })()}
-
- )}
-
-
-
- {(() => {
- const id = activeItem()
- if (!id) return null
- const draggedFile = local.file.node(id)
- if (!draggedFile) return null
- return (
-
-
-
- )
- })()}
-
-
-
localProps.onInputRefChange(element ?? null)}
- />
-
- )
-}
-
-function TabVisual(props: { file: LocalFile }): JSX.Element {
- return (
-
-
-
- {props.file.name}
-
-
-
-
- M
-
-
- A
-
-
- D
-
-
-
-
- )
-}
-
-function SortableTab(props: {
- file: LocalFile
- onTabClick: (file: LocalFile) => void
- onTabClose: (file: LocalFile) => void
-}): JSX.Element {
- const sortable = createSortable(props.file.path)
-
- return (
- // @ts-ignore
-
-
-
- props.onTabClick(props.file)}>
-
-
- props.onTabClose(props.file)}
- >
-
-
-
-
-
- )
-}
-
-function ConstrainDragYAxis(): JSX.Element {
- const context = useDragDropContext()
- if (!context) return <>>
- const [, { onDragStart, onDragEnd, addTransformer, removeTransformer }] = context
- const transformer: Transformer = {
- id: "constrain-y-axis",
- order: 100,
- callback: (transform) => ({ ...transform, y: 0 }),
- }
- onDragStart((event) => {
- const id = getDraggableId(event)
- if (!id) return
- addTransformer("draggables", id, transformer)
- })
- onDragEnd((event) => {
- const id = getDraggableId(event)
- if (!id) return
- removeTransformer("draggables", id, transformer.id)
- })
- return <>>
-}
-
-const getDraggableId = (event: unknown): string | undefined => {
- if (typeof event !== "object" || event === null) return undefined
- if (!("draggable" in event)) return undefined
- const draggable = (event as { draggable?: { id?: unknown } }).draggable
- if (!draggable) return undefined
- return typeof draggable.id === "string" ? draggable.id : undefined
-}
diff --git a/packages/app/src/components/file-tree.tsx b/packages/app/src/components/file-tree.tsx
deleted file mode 100644
index d31255ced..000000000
--- a/packages/app/src/components/file-tree.tsx
+++ /dev/null
@@ -1,110 +0,0 @@
-import { useLocal } from "@/context"
-import type { LocalFile } from "@/context/local"
-import { Collapsible, FileIcon, Tooltip } from "@/ui"
-import { For, Match, Switch, Show, type ComponentProps, type ParentProps } from "solid-js"
-import { Dynamic } from "solid-js/web"
-
-export default function FileTree(props: {
- path: string
- class?: string
- nodeClass?: string
- level?: number
- onFileClick?: (file: LocalFile) => void
-}) {
- const local = useLocal()
- const level = props.level ?? 0
-
- const Node = (p: ParentProps & ComponentProps<"div"> & { node: LocalFile; as?: "div" | "button" }) => (
- {
- const evt = e as globalThis.DragEvent
- evt.dataTransfer!.effectAllowed = "copy"
- evt.dataTransfer!.setData("text/plain", `file:${p.node.path}`)
-
- // Create custom drag image without margins
- const dragImage = document.createElement("div")
- dragImage.className =
- "flex items-center gap-x-2 px-2 py-1 bg-background-element rounded-md border border-border-1"
- dragImage.style.position = "absolute"
- dragImage.style.top = "-1000px"
-
- // Copy only the icon and text content without padding
- const icon = e.currentTarget.querySelector("svg")
- const text = e.currentTarget.querySelector("span")
- if (icon && text) {
- dragImage.innerHTML = icon.outerHTML + text.outerHTML
- }
-
- document.body.appendChild(dragImage)
- evt.dataTransfer!.setDragImage(dragImage, 0, 12)
- setTimeout(() => document.body.removeChild(dragImage), 0)
- }}
- {...p}
- >
- {p.children}
-
- {p.node.name}
-
-
-
-
-
- )
-
- return (
-
-
- {(node) => (
-
-
-
- (open ? local.file.expand(node.path) : local.file.collapse(node.path))}
- >
-
-
-
-
-
-
-
-
-
-
-
-
- props.onFileClick?.(node)}>
-
-
-
-
-
-
- )}
-
-
- )
-}
diff --git a/packages/app/src/components/markdown.tsx b/packages/app/src/components/markdown.tsx
deleted file mode 100644
index a60fad149..000000000
--- a/packages/app/src/components/markdown.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import { useMarked } from "@/context"
-import { createResource } from "solid-js"
-
-function strip(text: string): string {
- const wrappedRe = /^\s*<([A-Za-z]\w*)>\s*([\s\S]*?)\s*<\/\1>\s*$/
- const match = text.match(wrappedRe)
- return match ? match[2] : text
-}
-export function Markdown(props: { text: string; class?: string }) {
- const marked = useMarked()
- const [html] = createResource(
- () => strip(props.text),
- async (markdown) => {
- return marked.parse(markdown)
- },
- )
- return (
-
- )
-}
diff --git a/packages/app/src/components/prompt-form.tsx b/packages/app/src/components/prompt-form.tsx
deleted file mode 100644
index 9d7c45a32..000000000
--- a/packages/app/src/components/prompt-form.tsx
+++ /dev/null
@@ -1,295 +0,0 @@
-import { For, Show, createEffect, createMemo, createSignal, onCleanup } from "solid-js"
-import { Button, FileIcon, Icon, IconButton, Tooltip } from "@/ui"
-import { Select } from "@/components/select"
-import { useLocal } from "@/context"
-import type { FileContext, LocalFile } from "@/context/local"
-import { getFilename } from "@/utils"
-import { createSpeechRecognition } from "@/utils/speech"
-
-interface PromptFormProps {
- class?: string
- classList?: Record
- onSubmit: (prompt: string) => Promise | void
- onOpenModelSelect: () => void
- onInputRefChange?: (element: HTMLTextAreaElement | undefined) => void
-}
-
-export default function PromptForm(props: PromptFormProps) {
- const local = useLocal()
-
- const [prompt, setPrompt] = createSignal("")
- const [isDragOver, setIsDragOver] = createSignal(false)
-
- const placeholderText = "Start typing or speaking..."
-
- const {
- isSupported,
- isRecording,
- interim: interimTranscript,
- start: startSpeech,
- stop: stopSpeech,
- } = createSpeechRecognition({
- onFinal: (text) => setPrompt((prev) => (prev && !prev.endsWith(" ") ? prev + " " : prev) + text),
- })
-
- let inputRef: HTMLTextAreaElement | undefined = undefined
- let overlayContainerRef: HTMLDivElement | undefined = undefined
- let shouldAutoScroll = true
-
- const promptContent = createMemo(() => {
- const base = prompt() || ""
- const interim = isRecording() ? interimTranscript() : ""
- if (!base && !interim) {
- return {placeholderText}
- }
- const needsSpace = base && interim && !base.endsWith(" ") && !interim.startsWith(" ")
- return (
- <>
- {base}
- {interim && (
-
- {needsSpace ? " " : ""}
- {interim}
-
- )}
- >
- )
- })
-
- createEffect(() => {
- prompt()
- interimTranscript()
- queueMicrotask(() => {
- if (!inputRef) return
- if (!overlayContainerRef) return
- if (!shouldAutoScroll) {
- overlayContainerRef.scrollTop = inputRef.scrollTop
- return
- }
- scrollPromptToEnd()
- })
- })
-
- const handlePromptKeyDown = (event: KeyboardEvent & { currentTarget: HTMLTextAreaElement }) => {
- if (event.isComposing) return
- if (event.key === "Enter" && !event.shiftKey) {
- event.preventDefault()
- inputRef?.form?.requestSubmit()
- }
- }
-
- const handlePromptScroll = (event: Event & { currentTarget: HTMLTextAreaElement }) => {
- const target = event.currentTarget
- shouldAutoScroll = target.scrollTop + target.clientHeight >= target.scrollHeight - 4
- if (overlayContainerRef) overlayContainerRef.scrollTop = target.scrollTop
- }
-
- const scrollPromptToEnd = () => {
- if (!inputRef) return
- const maxInputScroll = inputRef.scrollHeight - inputRef.clientHeight
- const next = maxInputScroll > 0 ? maxInputScroll : 0
- inputRef.scrollTop = next
- if (overlayContainerRef) overlayContainerRef.scrollTop = next
- shouldAutoScroll = true
- }
-
- const handleSubmit = async (event: SubmitEvent) => {
- event.preventDefault()
- const currentPrompt = prompt()
- setPrompt("")
- shouldAutoScroll = true
- if (overlayContainerRef) overlayContainerRef.scrollTop = 0
- if (inputRef) {
- inputRef.scrollTop = 0
- inputRef.blur()
- }
-
- await props.onSubmit(currentPrompt)
- }
-
- onCleanup(() => {
- props.onInputRefChange?.(undefined)
- })
-
- return (
-
- )
-}
-
-const ActiveTabContextTag = (props: { file: LocalFile; onClose: () => void }) => (
-
-
-
-
-
-
- {getFilename(props.file.path)}
-
-
-)
-
-const FileTag = (props: { file: FileContext; onClose: () => void }) => (
-
-
-
-
-
-
- {getFilename(props.file.path)}
-
-
- ({props.file.selection!.startLine}-{props.file.selection!.endLine})
-
-
-
-
-)
diff --git a/packages/app/src/components/resizeable-pane.tsx b/packages/app/src/components/resizeable-pane.tsx
deleted file mode 100644
index 49ccc4e70..000000000
--- a/packages/app/src/components/resizeable-pane.tsx
+++ /dev/null
@@ -1,217 +0,0 @@
-import { batch, createContext, createMemo, createSignal, onCleanup, Show, useContext } from "solid-js"
-import type { ComponentProps, JSX } from "solid-js"
-import { createStore } from "solid-js/store"
-import { useLocal } from "@/context"
-
-type PaneDefault = number | { size: number; visible?: boolean }
-
-type LayoutContextValue = {
- id: string
- register: (pane: string, options: { min?: number | string; max?: number | string }) => void
- size: (pane: string) => number
- visible: (pane: string) => boolean
- percent: (pane: string) => number
- next: (pane: string) => string | undefined
- startDrag: (left: string, right: string | undefined, event: MouseEvent) => void
- dragging: () => string | undefined
-}
-
-const LayoutContext = createContext(undefined)
-
-export interface ResizeableLayoutProps {
- id: string
- defaults: Record
- class?: ComponentProps<"div">["class"]
- classList?: ComponentProps<"div">["classList"]
- children: JSX.Element
-}
-
-export interface ResizeablePaneProps {
- id: string
- minSize?: number | string
- maxSize?: number | string
- class?: ComponentProps<"div">["class"]
- classList?: ComponentProps<"div">["classList"]
- children: JSX.Element
-}
-
-export function ResizeableLayout(props: ResizeableLayoutProps) {
- const local = useLocal()
- const [meta, setMeta] = createStore>({})
- const [dragging, setDragging] = createSignal()
- let container: HTMLDivElement | undefined
-
- local.layout.ensure(props.id, props.defaults)
-
- const order = createMemo(() => local.layout.order(props.id))
- const visibleOrder = createMemo(() => order().filter((pane) => local.layout.visible(props.id, pane)))
- const totalVisible = createMemo(() => {
- const panes = visibleOrder()
- if (!panes.length) return 0
- return panes.reduce((total, pane) => total + local.layout.size(props.id, pane), 0)
- })
-
- const percent = (pane: string) => {
- const panes = visibleOrder()
- if (!panes.length) return 0
- const total = totalVisible()
- if (!total) return 100 / panes.length
- return (local.layout.size(props.id, pane) / total) * 100
- }
-
- const nextPane = (pane: string) => {
- const panes = visibleOrder()
- const index = panes.indexOf(pane)
- if (index === -1) return undefined
- return panes[index + 1]
- }
-
- const minMax = (pane: string) => meta[pane] ?? { min: 5, max: 95 }
-
- const pxToPercent = (px: number, total: number) => (px / total) * 100
-
- const boundsForPair = (left: string, right: string, total: number) => {
- const leftMeta = minMax(left)
- const rightMeta = minMax(right)
- const containerWidth = container?.getBoundingClientRect().width ?? 0
-
- let minLeft = leftMeta.min
- let maxLeft = leftMeta.max
- let minRight = rightMeta.min
- let maxRight = rightMeta.max
-
- if (containerWidth && leftMeta.minPx !== undefined) minLeft = pxToPercent(leftMeta.minPx, containerWidth)
- if (containerWidth && leftMeta.maxPx !== undefined) maxLeft = pxToPercent(leftMeta.maxPx, containerWidth)
- if (containerWidth && rightMeta.minPx !== undefined) minRight = pxToPercent(rightMeta.minPx, containerWidth)
- if (containerWidth && rightMeta.maxPx !== undefined) maxRight = pxToPercent(rightMeta.maxPx, containerWidth)
-
- const finalMinLeft = Math.max(minLeft, total - maxRight)
- const finalMaxLeft = Math.min(maxLeft, total - minRight)
- return {
- min: Math.min(finalMinLeft, finalMaxLeft),
- max: Math.max(finalMinLeft, finalMaxLeft),
- }
- }
-
- const setPair = (left: string, right: string, leftSize: number, rightSize: number) => {
- batch(() => {
- local.layout.setSize(props.id, left, leftSize)
- local.layout.setSize(props.id, right, rightSize)
- })
- }
-
- const startDrag = (left: string, right: string | undefined, event: MouseEvent) => {
- if (!right) return
- if (!container) return
- const rect = container.getBoundingClientRect()
- if (!rect.width) return
- event.preventDefault()
- const startX = event.clientX
- const startLeft = local.layout.size(props.id, left)
- const startRight = local.layout.size(props.id, right)
- const total = startLeft + startRight
- const bounds = boundsForPair(left, right, total)
- const move = (moveEvent: MouseEvent) => {
- const delta = ((moveEvent.clientX - startX) / rect.width) * 100
- const nextLeft = Math.max(bounds.min, Math.min(bounds.max, startLeft + delta))
- const nextRight = total - nextLeft
- setPair(left, right, nextLeft, nextRight)
- }
- const stop = () => {
- setDragging()
- document.removeEventListener("mousemove", move)
- document.removeEventListener("mouseup", stop)
- }
- setDragging(left)
- document.addEventListener("mousemove", move)
- document.addEventListener("mouseup", stop)
- onCleanup(() => stop())
- }
-
- const register = (pane: string, options: { min?: number | string; max?: number | string }) => {
- let min = 5
- let max = 95
- let minPx: number | undefined
- let maxPx: number | undefined
-
- if (typeof options.min === "string" && options.min.endsWith("px")) {
- minPx = parseInt(options.min)
- min = 0
- } else if (typeof options.min === "number") {
- min = options.min
- }
-
- if (typeof options.max === "string" && options.max.endsWith("px")) {
- maxPx = parseInt(options.max)
- max = 100
- } else if (typeof options.max === "number") {
- max = options.max
- }
-
- setMeta(pane, () => ({ min, max, minPx, maxPx }))
- const fallback = props.defaults[pane]
- local.layout.ensurePane(props.id, pane, fallback ?? { size: min, visible: true })
- }
-
- const contextValue: LayoutContextValue = {
- id: props.id,
- register,
- size: (pane) => local.layout.size(props.id, pane),
- visible: (pane) => local.layout.visible(props.id, pane),
- percent,
- next: nextPane,
- startDrag,
- dragging,
- }
-
- return (
-
- {
- container = node ?? undefined
- }}
- class={props.class ? `relative flex h-full w-full ${props.class}` : "relative flex h-full w-full"}
- classList={props.classList}
- >
- {props.children}
-
-
- )
-}
-
-export function ResizeablePane(props: ResizeablePaneProps) {
- const context = useContext(LayoutContext)!
- context.register(props.id, { min: props.minSize, max: props.maxSize })
- const visible = () => context.visible(props.id)
- const width = () => context.percent(props.id)
- const next = () => context.next(props.id)
- const dragging = () => context.dragging() === props.id
-
- return (
-
-
- {props.children}
-
- context.startDrag(props.id, next(), event)}
- >
-
-
-
-
-
- )
-}
diff --git a/packages/app/src/components/select-dialog.tsx b/packages/app/src/components/select-dialog.tsx
deleted file mode 100644
index 315fe14e5..000000000
--- a/packages/app/src/components/select-dialog.tsx
+++ /dev/null
@@ -1,225 +0,0 @@
-import { createEffect, Show, For, createMemo, type JSX, createResource } from "solid-js"
-import { Dialog } from "@kobalte/core/dialog"
-import { Icon, IconButton } from "@/ui"
-import { createStore } from "solid-js/store"
-import { entries, flatMap, groupBy, map, pipe } from "remeda"
-import { createList } from "solid-list"
-import fuzzysort from "fuzzysort"
-
-interface SelectDialogProps {
- items: T[] | ((filter: string) => Promise)
- key: (item: T) => string
- render: (item: T) => JSX.Element
- filter?: string[]
- current?: T
- placeholder?: string
- groupBy?: (x: T) => string
- onSelect?: (value: T | undefined) => void
- onClose?: () => void
-}
-
-export function SelectDialog(props: SelectDialogProps) {
- let scrollRef: HTMLDivElement | undefined
- const [store, setStore] = createStore({
- filter: "",
- mouseActive: false,
- })
-
- const [grouped] = createResource(
- () => store.filter,
- async (filter) => {
- const needle = filter.toLowerCase()
- const all = (typeof props.items === "function" ? await props.items(needle) : props.items) || []
- const result = pipe(
- all,
- (x) => {
- if (!needle) return x
- if (!props.filter && Array.isArray(x) && x.every((e) => typeof e === "string")) {
- return fuzzysort.go(needle, x).map((x) => x.target) as T[]
- }
- return fuzzysort.go(needle, x, { keys: props.filter! }).map((x) => x.obj)
- },
- groupBy((x) => (props.groupBy ? props.groupBy(x) : "")),
- // mapValues((x) => x.sort((a, b) => props.key(a).localeCompare(props.key(b)))),
- entries(),
- map(([k, v]) => ({ category: k, items: v })),
- )
- return result
- },
- )
- const flat = createMemo(() => {
- return pipe(
- grouped() || [],
- flatMap((x) => x.items),
- )
- })
- const list = createList({
- items: () => flat().map(props.key),
- initialActive: props.current ? props.key(props.current) : undefined,
- loop: true,
- })
- const resetSelection = () => {
- const all = flat()
- if (all.length === 0) return
- list.setActive(props.key(all[0]))
- }
-
- createEffect(() => {
- store.filter
- scrollRef?.scrollTo(0, 0)
- resetSelection()
- })
-
- createEffect(() => {
- const all = flat()
- if (store.mouseActive || all.length === 0) return
- if (list.active() === props.key(all[0])) {
- scrollRef?.scrollTo(0, 0)
- return
- }
- const element = scrollRef?.querySelector(`[data-key="${list.active()}"]`)
- element?.scrollIntoView({ block: "nearest", behavior: "smooth" })
- })
-
- const handleInput = (value: string) => {
- setStore("filter", value)
- resetSelection()
- }
-
- const handleSelect = (item: T) => {
- props.onSelect?.(item)
- props.onClose?.()
- }
-
- const handleKey = (e: KeyboardEvent) => {
- setStore("mouseActive", false)
-
- if (e.key === "Enter") {
- e.preventDefault()
- const selected = flat().find((x) => props.key(x) === list.active())
- if (selected) handleSelect(selected)
- } else if (e.key === "Escape") {
- e.preventDefault()
- props.onClose?.()
- } else {
- list.onKeyDown(e)
- }
- }
-
- return (
-
- )
-}
diff --git a/packages/app/src/components/select.tsx b/packages/app/src/components/select.tsx
deleted file mode 100644
index 3df8c9999..000000000
--- a/packages/app/src/components/select.tsx
+++ /dev/null
@@ -1,107 +0,0 @@
-import { Select as KobalteSelect } from "@kobalte/core/select"
-import { createMemo } from "solid-js"
-import type { ComponentProps } from "solid-js"
-import { Icon } from "@/ui/icon"
-import { pipe, groupBy, entries, map } from "remeda"
-import { Button, type ButtonProps } from "@/ui"
-
-export interface SelectProps {
- placeholder?: string
- options: T[]
- current?: T
- value?: (x: T) => string
- label?: (x: T) => string
- groupBy?: (x: T) => string
- onSelect?: (value: T | undefined) => void
- class?: ComponentProps<"div">["class"]
- classList?: ComponentProps<"div">["classList"]
-}
-
-export function Select(props: SelectProps & ButtonProps) {
- const grouped = createMemo(() => {
- const result = pipe(
- props.options,
- groupBy((x) => (props.groupBy ? props.groupBy(x) : "")),
- // mapValues((x) => x.sort((a, b) => a.title.localeCompare(b.title))),
- entries(),
- map(([k, v]) => ({ category: k, options: v })),
- )
- return result
- })
-
- return (
-
- value={props.current}
- options={grouped()}
- optionValue={(x) => (props.value ? props.value(x) : (x as string))}
- optionTextValue={(x) => (props.label ? props.label(x) : (x as string))}
- optionGroupChildren="options"
- placeholder={props.placeholder}
- sectionComponent={(props) => (
-
- {props.section.rawValue.category}
-
- )}
- itemComponent={(itemProps) => (
-
-
- {props.label ? props.label(itemProps.item.rawValue) : (itemProps.item.rawValue as string)}
-
-
-
-
-
- )}
- onChange={(v) => {
- props.onSelect?.(v ?? undefined)
- }}
- >
-
- >
- {(state) => {
- const selected = state.selectedOption() ?? props.current
- if (!selected) return props.placeholder || ""
- if (props.label) return props.label(selected)
- return selected as string
- }}
-
-
-
-
-
-
-
-
-
-
-
- )
-}
diff --git a/packages/app/src/components/session-list.tsx b/packages/app/src/components/session-list.tsx
deleted file mode 100644
index e0819780d..000000000
--- a/packages/app/src/components/session-list.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import { useSync, useLocal } from "@/context"
-import { Button, Tooltip } from "@/ui"
-import { VList } from "virtua/solid"
-
-export default function SessionList() {
- const sync = useSync()
- const local = useLocal()
-
- return (
-
- {(session) => (
-
-
-
- )}
-
- )
-}
diff --git a/packages/app/src/components/session-timeline.tsx b/packages/app/src/components/session-timeline.tsx
deleted file mode 100644
index 07d93031e..000000000
--- a/packages/app/src/components/session-timeline.tsx
+++ /dev/null
@@ -1,459 +0,0 @@
-import { useLocal, useSync } from "@/context"
-import { Collapsible, Icon } from "@/ui"
-import type { Part, ToolPart } from "@opencode-ai/sdk"
-import { DateTime } from "luxon"
-import {
- createSignal,
- onMount,
- For,
- Match,
- splitProps,
- Switch,
- type ComponentProps,
- type ParentProps,
- createEffect,
- createMemo,
- Show,
-} from "solid-js"
-import { getFilename } from "@/utils"
-import { Markdown } from "./markdown"
-import { Code } from "./code"
-import { createElementSize } from "@solid-primitives/resize-observer"
-import { createScrollPosition } from "@solid-primitives/scroll"
-
-function Part(props: ParentProps & ComponentProps<"div">) {
- const [local, others] = splitProps(props, ["class", "classList", "children"])
- return (
-
- )
-}
-
-function CollapsiblePart(props: { title: ParentProps["children"] } & ParentProps & ComponentProps) {
- return (
-
-
- {props.title}
-
-
-
- {props.children}
-
-
-
- )
-}
-
-function ReadToolPart(props: { part: ToolPart }) {
- const sync = useSync()
- const local = useLocal()
- return (
-
-
- Reading file...
-
-
- {(state) => {
- const path = state().input["filePath"] as string
- return (
- local.file.open(path)}>
- Read {getFilename(path)}
-
- )
- }}
-
-
- {(state) => (
-
-
- Read {getFilename(state().input["filePath"] as string)}
-
-
{sync.sanitize(state().error)}
-
- )}
-
-
- )
-}
-
-function EditToolPart(props: { part: ToolPart }) {
- const sync = useSync()
- return (
-
-
- Preparing edit...
-
-
- {(state) => (
-
- Edit {getFilename(state().input["filePath"] as string)}
- >
- }
- >
-
-
- )}
-
-
- {(state) => (
-
- Edit {getFilename(state().input["filePath"] as string)}
- >
- }
- >
- {sync.sanitize(state().error)}
-
- )}
-
-
- )
-}
-
-function WriteToolPart(props: { part: ToolPart }) {
- const sync = useSync()
- return (
-
-
- Preparing write...
-
-
- {(state) => (
-
- Write {getFilename(state().input["filePath"] as string)}
- >
- }
- >
-
-
- )}
-
-
- {(state) => (
-
-
- Write {getFilename(state().input["filePath"] as string)}
-
-
{sync.sanitize(state().error)}
-
- )}
-
-
- )
-}
-
-function BashToolPart(props: { part: ToolPart }) {
- const sync = useSync()
- return (
-
-
- Writing shell command...
-
-
- {(state) => (
-
- Run command: {state().input["command"]}
- >
- }
- >
-
-
- )}
-
-
- {(state) => (
-
- Shell {state().input["command"]}
- >
- }
- >
- {sync.sanitize(state().error)}
-
- )}
-
-
- )
-}
-
-function ToolPart(props: { part: ToolPart }) {
- // read
- // edit
- // write
- // bash
- // ls
- // glob
- // grep
- // todowrite
- // todoread
- // webfetch
- // websearch
- // patch
- // task
- return (
-
-
- {props.part.type}:{props.part.tool}
-
- }
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
-}
-
-export default function SessionTimeline(props: { session: string; class?: string }) {
- const sync = useSync()
- const [scrollElement, setScrollElement] = createSignal(undefined)
- const [root, setRoot] = createSignal(undefined)
- const [tail, setTail] = createSignal(true)
- const size = createElementSize(root)
- const scroll = createScrollPosition(scrollElement)
-
- onMount(() => sync.session.sync(props.session))
- const session = createMemo(() => sync.session.get(props.session))
- const messages = createMemo(() => sync.data.message[props.session] ?? [])
- const working = createMemo(() => {
- const last = messages()[messages().length - 1]
- if (!last) return false
- if (last.role === "user") return true
- return !last.time.completed
- })
-
- const getScrollParent = (el: HTMLElement | null): HTMLElement | undefined => {
- let p = el?.parentElement
- while (p && p !== document.body) {
- const s = getComputedStyle(p)
- if (s.overflowY === "auto" || s.overflowY === "scroll") return p
- p = p.parentElement
- }
- return undefined
- }
-
- createEffect(() => {
- if (!root()) return
- setScrollElement(getScrollParent(root()!))
- })
-
- const scrollToBottom = () => {
- const element = scrollElement()
- if (!element) return
- element.scrollTop = element.scrollHeight
- }
-
- createEffect(() => {
- size.height
- if (tail()) scrollToBottom()
- })
-
- createEffect(() => {
- if (working()) {
- setTail(true)
- scrollToBottom()
- }
- })
-
- let lastScrollY = 0
- createEffect(() => {
- if (scroll.y < lastScrollY) {
- setTail(false)
- }
- lastScrollY = scroll.y
- })
-
- const valid = (part: Part) => {
- if (!part) return false
- switch (part.type) {
- case "step-start":
- case "step-finish":
- case "file":
- case "patch":
- return false
- case "text":
- return !part.synthetic
- case "reasoning":
- return part.text.trim()
- default:
- return true
- }
- }
-
- const duration = (part: Part) => {
- switch (part.type) {
- default:
- if (
- "time" in part &&
- part.time &&
- "start" in part.time &&
- part.time.start &&
- "end" in part.time &&
- part.time.end
- ) {
- const start = DateTime.fromMillis(part.time.start)
- const end = DateTime.fromMillis(part.time.end)
- return end.diff(start).toFormat("s")
- }
- return ""
- }
- }
-
- return (
-
-
-
- {(message) => (
-
- {(part) => (
- -
- {part.type}
}>
-
- {(part) => (
-
-
-
-
- {part().text}
-
-
- {DateTime.fromMillis(message.time.created).toRelative()} ·{" "}
- {sync.data.config.username ?? "user"}
-
-
-
-
-
-
-
- )}
-
-
- {(part) => (
- Thinking}>
-
- Thought for {duration(part())}s
-
-
- }
- >
-
-
- )}
-
- {(part) => }
-
-
- )}
-
- )}
-
-
-
-
-
-
-
- Raw Session Data
-
-
-
-
-
- -
-
-
-
-
- session
-
-
-
-
-
-
-
-
-
- {(message) => (
- <>
- -
-
-
-
-
- {message.role === "user" ? "user" : "assistant"}
-
-
-
-
-
-
-
-
-
- {(part) => (
- -
-
-
-
-
- {part.type}
-
-
-
-
-
-
-
-
- )}
-
- >
- )}
-
-
-
-
-
-
- )
-}
diff --git a/packages/app/src/components/sidebar-nav.tsx b/packages/app/src/components/sidebar-nav.tsx
deleted file mode 100644
index 24750bdba..000000000
--- a/packages/app/src/components/sidebar-nav.tsx
+++ /dev/null
@@ -1,48 +0,0 @@
-import { For } from "solid-js"
-import { Icon, Link, Logo, Tooltip } from "@/ui"
-import { useLocation } from "@solidjs/router"
-
-const navigation = [
- { name: "Sessions", href: "/sessions", icon: "dashboard" as const },
- { name: "Commands", href: "/commands", icon: "slash" as const },
- { name: "Agents", href: "/agents", icon: "bolt" as const },
- { name: "Providers", href: "/providers", icon: "cloud" as const },
- { name: "Tools (MCP)", href: "/tools", icon: "hammer" as const },
- { name: "LSP", href: "/lsp", icon: "code" as const },
- { name: "Settings", href: "/settings", icon: "settings" as const },
-]
-
-export default function SidebarNav() {
- const location = useLocation()
- return (
-
-
-
-
-
-
- )
-}
diff --git a/packages/app/src/context/event.tsx b/packages/app/src/context/event.tsx
deleted file mode 100644
index a2aa54181..000000000
--- a/packages/app/src/context/event.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import { createContext, useContext, type ParentProps } from "solid-js"
-import { createEventBus } from "@solid-primitives/event-bus"
-import type { Event as SDKEvent } from "@opencode-ai/sdk"
-import { useSDK } from "@/context"
-
-export type Event = SDKEvent // can extend with custom events later
-
-function init() {
- const sdk = useSDK()
- const bus = createEventBus()
- sdk.event.subscribe().then(async (events) => {
- for await (const event of events.stream) {
- bus.emit(event)
- }
- })
- return bus
-}
-
-type EventContext = ReturnType
-
-const ctx = createContext()
-
-export function EventProvider(props: ParentProps) {
- const value = init()
- return {props.children}
-}
-
-export function useEvent() {
- const value = useContext(ctx)
- if (!value) {
- throw new Error("useEvent must be used within a EventProvider")
- }
- return value
-}
diff --git a/packages/app/src/context/index.ts b/packages/app/src/context/index.ts
deleted file mode 100644
index bc4bf3b1d..000000000
--- a/packages/app/src/context/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export { EventProvider, useEvent } from "./event"
-export { LocalProvider, useLocal } from "./local"
-export { MarkedProvider, useMarked } from "./marked"
-export { SDKProvider, useSDK } from "./sdk"
-export { ShikiProvider, useShiki } from "./shiki"
-export { SyncProvider, useSync } from "./sync"
-export { ThemeProvider, useTheme } from "./theme"
diff --git a/packages/app/src/context/local.tsx b/packages/app/src/context/local.tsx
deleted file mode 100644
index 4c2a3d3be..000000000
--- a/packages/app/src/context/local.tsx
+++ /dev/null
@@ -1,537 +0,0 @@
-import { createStore, produce, reconcile } from "solid-js/store"
-import { batch, createContext, createEffect, createMemo, useContext, type ParentProps } from "solid-js"
-import { uniqueBy } from "remeda"
-import type { FileContent, FileNode, Model, Provider, File as FileStatus } from "@opencode-ai/sdk"
-import { useSDK, useEvent, useSync } from "@/context"
-
-export type LocalFile = FileNode &
- Partial<{
- loaded: boolean
- pinned: boolean
- expanded: boolean
- content: FileContent
- selection: { startLine: number; startChar: number; endLine: number; endChar: number }
- scrollTop: number
- view: "raw" | "diff-unified" | "diff-split"
- folded: string[]
- selectedChange: number
- status: FileStatus
- }>
-export type TextSelection = LocalFile["selection"]
-export type View = LocalFile["view"]
-
-export type LocalModel = Omit & {
- provider: Provider
-}
-export type ModelKey = { providerID: string; modelID: string }
-
-export type FileContext = { type: "file"; path: string; selection?: TextSelection }
-export type ContextItem = FileContext
-
-function init() {
- const sdk = useSDK()
- const sync = useSync()
-
- const agent = (() => {
- const list = createMemo(() => sync.data.agent.filter((x) => x.mode !== "subagent"))
- const [store, setStore] = createStore<{
- current: string
- }>({
- current: list()[0].name,
- })
- return {
- list,
- current() {
- return list().find((x) => x.name === store.current)!
- },
- set(name: string | undefined) {
- setStore("current", name ?? list()[0].name)
- },
- move(direction: 1 | -1) {
- let next = list().findIndex((x) => x.name === store.current) + direction
- if (next < 0) next = list().length - 1
- if (next >= list().length) next = 0
- const value = list()[next]
- setStore("current", value.name)
- if (value.model)
- model.set({
- providerID: value.model.providerID,
- modelID: value.model.modelID,
- })
- },
- }
- })()
-
- const model = (() => {
- const list = createMemo(() =>
- sync.data.provider.flatMap((p) => Object.values(p.models).map((m) => ({ ...m, provider: p }) as LocalModel)),
- )
- const find = (key: ModelKey) => list().find((m) => m.id === key?.modelID && m.provider.id === key.providerID)
-
- const [store, setStore] = createStore<{
- model: Record
- recent: ModelKey[]
- }>({
- model: {},
- recent: [],
- })
-
- const value = localStorage.getItem("model")
- setStore("recent", JSON.parse(value ?? "[]"))
- createEffect(() => {
- localStorage.setItem("model", JSON.stringify(store.recent))
- })
-
- const fallback = createMemo(() => {
- if (store.recent.length) return store.recent[0]
- const provider = sync.data.provider[0]
- const model = Object.values(provider.models)[0]
- return { modelID: model.id, providerID: provider.id }
- })
-
- const current = createMemo(() => {
- const a = agent.current()
- return find(store.model[agent.current().name]) ?? find(a.model ?? fallback())
- })
-
- const recent = createMemo(() => store.recent.map(find).filter(Boolean))
-
- return {
- list,
- current,
- recent,
- set(model: ModelKey | undefined, options?: { recent?: boolean }) {
- batch(() => {
- setStore("model", agent.current().name, model ?? fallback())
- if (options?.recent && model) {
- const uniq = uniqueBy([model, ...store.recent], (x) => x.providerID + x.modelID)
- if (uniq.length > 5) uniq.pop()
- setStore("recent", uniq)
- }
- })
- },
- }
- })()
-
- const file = (() => {
- const [store, setStore] = createStore<{
- node: Record
- opened: string[]
- active?: string
- }>({
- node: Object.fromEntries(sync.data.node.map((x) => [x.path, x])),
- opened: [],
- })
-
- const active = createMemo(() => {
- if (!store.active) return undefined
- return store.node[store.active]
- })
- const opened = createMemo(() => store.opened.map((x) => store.node[x]))
- const changeset = createMemo(() => new Set(sync.data.changes.map((f) => f.path)))
- const changes = createMemo(() => Array.from(changeset()).sort((a, b) => a.localeCompare(b)))
-
- createEffect((prev: FileStatus[]) => {
- const removed = prev.filter((p) => !sync.data.changes.find((c) => c.path === p.path))
- for (const p of removed) {
- setStore(
- "node",
- p.path,
- produce((draft) => {
- draft.status = undefined
- draft.view = "raw"
- }),
- )
- load(p.path)
- }
- for (const p of sync.data.changes) {
- if (store.node[p.path] === undefined) {
- fetch(p.path).then(() => setStore("node", p.path, "status", p))
- } else {
- setStore("node", p.path, "status", p)
- }
- }
- return sync.data.changes
- }, sync.data.changes)
-
- const changed = (path: string) => {
- const node = store.node[path]
- if (node?.status) return true
- const set = changeset()
- if (set.has(path)) return true
- for (const p of set) {
- if (p.startsWith(path ? path + "/" : "")) return true
- }
- return false
- }
-
- const resetNode = (path: string) => {
- setStore("node", path, {
- loaded: undefined,
- pinned: undefined,
- content: undefined,
- selection: undefined,
- scrollTop: undefined,
- folded: undefined,
- view: undefined,
- selectedChange: undefined,
- })
- }
-
- const relative = (path: string) => path.replace(sync.data.path.directory + "/", "")
-
- const load = async (path: string) => {
- const relativePath = relative(path)
- sdk.file.read({ query: { path: relativePath } }).then((x) => {
- setStore(
- "node",
- relativePath,
- produce((draft) => {
- draft.loaded = true
- draft.content = x.data
- }),
- )
- })
- }
-
- const fetch = async (path: string) => {
- const relativePath = relative(path)
- const parent = relativePath.split("/").slice(0, -1).join("/")
- if (parent) {
- await list(parent)
- }
- }
-
- const open = async (path: string, options?: { pinned?: boolean; view?: LocalFile["view"] }) => {
- const relativePath = relative(path)
- if (!store.node[relativePath]) await fetch(path)
- setStore("opened", (x) => {
- if (x.includes(relativePath)) return x
- return [
- ...opened()
- .filter((x) => x.pinned)
- .map((x) => x.path),
- relativePath,
- ]
- })
- setStore("active", relativePath)
- context.addActive()
- if (options?.pinned) setStore("node", path, "pinned", true)
- if (options?.view && store.node[relativePath].view === undefined) setStore("node", path, "view", options.view)
- if (store.node[relativePath].loaded) return
- return load(relativePath)
- }
-
- const list = async (path: string) => {
- return sdk.file.list({ query: { path: path + "/" } }).then((x) => {
- setStore(
- "node",
- produce((draft) => {
- x.data!.forEach((node) => {
- if (node.path in draft) return
- draft[node.path] = node
- })
- }),
- )
- })
- }
-
- const search = (query: string) => sdk.find.files({ query: { query } }).then((x) => x.data!)
-
- const bus = useEvent()
- bus.listen((event) => {
- switch (event.type) {
- case "message.part.updated":
- const part = event.properties.part
- if (part.type === "tool" && part.state.status === "completed") {
- switch (part.tool) {
- case "read":
- break
- case "edit":
- // load(part.state.input["filePath"] as string)
- break
- default:
- break
- }
- }
- break
- case "file.watcher.updated":
- setTimeout(sync.load.changes, 1000)
- const relativePath = relative(event.properties.file)
- if (relativePath.startsWith(".git/")) return
- load(relativePath)
- break
- }
- })
-
- return {
- active,
- opened,
- node: (path: string) => store.node[path],
- update: (path: string, node: LocalFile) => setStore("node", path, reconcile(node)),
- open,
- load,
- close(path: string) {
- setStore("opened", (opened) => opened.filter((x) => x !== path))
- if (store.active === path) {
- const index = store.opened.findIndex((f) => f === path)
- const previous = store.opened[Math.max(0, index - 1)]
- setStore("active", previous)
- }
- resetNode(path)
- },
- expand(path: string) {
- setStore("node", path, "expanded", true)
- if (store.node[path].loaded) return
- setStore("node", path, "loaded", true)
- list(path)
- },
- collapse(path: string) {
- setStore("node", path, "expanded", false)
- },
- select(path: string, selection: TextSelection | undefined) {
- setStore("node", path, "selection", selection)
- },
- scroll(path: string, scrollTop: number) {
- setStore("node", path, "scrollTop", scrollTop)
- },
- move(path: string, to: number) {
- const index = store.opened.findIndex((f) => f === path)
- if (index === -1) return
- setStore(
- "opened",
- produce((opened) => {
- opened.splice(to, 0, opened.splice(index, 1)[0])
- }),
- )
- setStore("node", path, "pinned", true)
- },
- view(path: string): View {
- const n = store.node[path]
- return n && n.view ? n.view : "raw"
- },
- setView(path: string, view: View) {
- setStore("node", path, "view", view)
- },
- unfold(path: string, key: string) {
- setStore("node", path, "folded", (xs) => {
- const a = xs ?? []
- if (a.includes(key)) return a
- return [...a, key]
- })
- },
- fold(path: string, key: string) {
- setStore("node", path, "folded", (xs) => (xs ?? []).filter((k) => k !== key))
- },
- folded(path: string) {
- const n = store.node[path]
- return n && n.folded ? n.folded : []
- },
- changeIndex(path: string) {
- return store.node[path]?.selectedChange
- },
- setChangeIndex(path: string, index: number | undefined) {
- setStore("node", path, "selectedChange", index)
- },
- changes,
- changed,
- children(path: string) {
- return Object.values(store.node).filter(
- (x) =>
- x.path.startsWith(path) &&
- x.path !== path &&
- !x.path.replace(new RegExp(`^${path + "/"}`), "").includes("/"),
- )
- },
- search,
- relative,
- }
- })()
-
- const layout = (() => {
- type PaneState = { size: number; visible: boolean }
- type LayoutState = { panes: Record; order: string[] }
- type PaneDefault = number | { size: number; visible?: boolean }
-
- const [store, setStore] = createStore>({})
-
- const raw = localStorage.getItem("layout")
- if (raw) {
- const data = JSON.parse(raw)
- if (data && typeof data === "object" && !Array.isArray(data)) {
- const first = Object.values(data)[0] as LayoutState
- if (first && typeof first === "object" && "panes" in first) {
- setStore(() => data as Record)
- }
- }
- }
-
- createEffect(() => {
- localStorage.setItem("layout", JSON.stringify(store))
- })
-
- const normalize = (value: PaneDefault): PaneState => {
- if (typeof value === "number") return { size: value, visible: true }
- return { size: value.size, visible: value.visible ?? true }
- }
-
- const ensure = (id: string, defaults: Record) => {
- const entries = Object.entries(defaults)
- if (!entries.length) return
- setStore(id, (current) => {
- if (current) return current
- return {
- panes: Object.fromEntries(entries.map(([pane, config]) => [pane, normalize(config)])),
- order: entries.map(([pane]) => pane),
- }
- })
- for (const [pane, config] of entries) {
- if (!store[id]?.panes[pane]) {
- setStore(id, "panes", pane, () => normalize(config))
- }
- if (!(store[id]?.order ?? []).includes(pane)) {
- setStore(id, "order", (list) => [...list, pane])
- }
- }
- }
-
- const ensurePane = (id: string, pane: string, fallback?: PaneDefault) => {
- if (!store[id]) {
- const value = normalize(fallback ?? { size: 0, visible: true })
- setStore(id, () => ({
- panes: { [pane]: value },
- order: [pane],
- }))
- return
- }
- if (!store[id].panes[pane]) {
- const value = normalize(fallback ?? { size: 0, visible: true })
- setStore(id, "panes", pane, () => value)
- }
- if (!store[id].order.includes(pane)) {
- setStore(id, "order", (list) => [...list, pane])
- }
- }
-
- const size = (id: string, pane: string) => store[id]?.panes[pane]?.size ?? 0
- const visible = (id: string, pane: string) => store[id]?.panes[pane]?.visible ?? false
-
- const setSize = (id: string, pane: string, value: number) => {
- if (!store[id]?.panes[pane]) return
- const next = Number.isFinite(value) ? Math.max(0, Math.min(100, value)) : 0
- setStore(id, "panes", pane, "size", next)
- }
-
- const setVisible = (id: string, pane: string, value: boolean) => {
- if (!store[id]?.panes[pane]) return
- setStore(id, "panes", pane, "visible", value)
- }
-
- const toggle = (id: string, pane: string) => {
- setVisible(id, pane, !visible(id, pane))
- }
-
- const show = (id: string, pane: string) => setVisible(id, pane, true)
- const hide = (id: string, pane: string) => setVisible(id, pane, false)
- const order = (id: string) => store[id]?.order ?? []
-
- return {
- ensure,
- ensurePane,
- size,
- visible,
- setSize,
- setVisible,
- toggle,
- show,
- hide,
- order,
- }
- })()
-
- const session = (() => {
- const [store, setStore] = createStore<{
- active?: string
- }>({})
-
- const active = createMemo(() => {
- if (!store.active) return undefined
- return sync.session.get(store.active)
- })
-
- return {
- active,
- setActive(sessionId: string | undefined) {
- setStore("active", sessionId)
- },
- clearActive() {
- setStore("active", undefined)
- },
- }
- })()
-
- const context = (() => {
- const [store, setStore] = createStore<{
- activeTab: boolean
- items: (ContextItem & { key: string })[]
- }>({
- activeTab: true,
- items: [],
- })
-
- return {
- all() {
- return store.items
- },
- active() {
- return store.activeTab ? file.active() : undefined
- },
- addActive() {
- setStore("activeTab", true)
- },
- removeActive() {
- setStore("activeTab", false)
- },
- add(item: ContextItem) {
- let key = item.type
- switch (item.type) {
- case "file":
- key += `${item.path}:${item.selection?.startLine}:${item.selection?.endLine}`
- break
- }
- if (store.items.find((x) => x.key === key)) return
- setStore("items", (x) => [...x, { key, ...item }])
- },
- remove(key: string) {
- setStore("items", (x) => x.filter((x) => x.key !== key))
- },
- }
- })()
-
- const result = {
- model,
- agent,
- file,
- layout,
- session,
- context,
- }
- return result
-}
-
-type LocalContext = ReturnType
-
-const ctx = createContext()
-
-export function LocalProvider(props: ParentProps) {
- const value = init()
- return {props.children}
-}
-
-export function useLocal() {
- const value = useContext(ctx)
- if (!value) {
- throw new Error("useLocal must be used within a LocalProvider")
- }
- return value
-}
diff --git a/packages/app/src/context/marked.tsx b/packages/app/src/context/marked.tsx
deleted file mode 100644
index 550a0456a..000000000
--- a/packages/app/src/context/marked.tsx
+++ /dev/null
@@ -1,43 +0,0 @@
-import { createContext, useContext, type ParentProps } from "solid-js"
-import { useShiki } from "@/context"
-import { marked } from "marked"
-import markedShiki from "marked-shiki"
-import { bundledLanguages, type BundledLanguage } from "shiki"
-
-function init(highlighter: ReturnType) {
- return marked.use(
- markedShiki({
- async highlight(code, lang) {
- if (!(lang in bundledLanguages)) {
- lang = "text"
- }
- if (!highlighter.getLoadedLanguages().includes(lang)) {
- await highlighter.loadLanguage(lang as BundledLanguage)
- }
- return highlighter.codeToHtml(code, {
- lang: lang || "text",
- theme: "opencode",
- tabindex: false,
- })
- },
- }),
- )
-}
-
-type MarkedContext = ReturnType
-
-const ctx = createContext()
-
-export function MarkedProvider(props: ParentProps) {
- const highlighter = useShiki()
- const value = init(highlighter)
- return {props.children}
-}
-
-export function useMarked() {
- const value = useContext(ctx)
- if (!value) {
- throw new Error("useMarked must be used within a MarkedProvider")
- }
- return value
-}
diff --git a/packages/app/src/context/sdk.tsx b/packages/app/src/context/sdk.tsx
deleted file mode 100644
index 48595cf9d..000000000
--- a/packages/app/src/context/sdk.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import { createContext, useContext, type ParentProps } from "solid-js"
-import { createOpencodeClient } from "@opencode-ai/sdk/client"
-
-const host = import.meta.env.VITE_OPENCODE_SERVER_HOST ?? "127.0.0.1"
-const port = import.meta.env.VITE_OPENCODE_SERVER_PORT ?? "4096"
-
-function init() {
- const client = createOpencodeClient({
- baseUrl: `http://${host}:${port}`,
- })
- return client
-}
-
-type SDKContext = ReturnType
-
-const ctx = createContext()
-
-export function SDKProvider(props: ParentProps) {
- const value = init()
- return {props.children}
-}
-
-export function useSDK() {
- const value = useContext(ctx)
- if (!value) {
- throw new Error("useSDK must be used within a SDKProvider")
- }
- return value
-}
diff --git a/packages/app/src/context/shiki.tsx b/packages/app/src/context/shiki.tsx
deleted file mode 100644
index 1930b907c..000000000
--- a/packages/app/src/context/shiki.tsx
+++ /dev/null
@@ -1,582 +0,0 @@
-import { createHighlighter, type ThemeInput } from "shiki"
-import { createContext, useContext, type ParentProps } from "solid-js"
-
-const theme: ThemeInput = {
- colors: {
- "actionBar.toggledBackground": "var(--theme-background-element)",
- "activityBarBadge.background": "var(--theme-accent)",
- "checkbox.border": "var(--theme-border)",
- "editor.background": "transparent",
- "editor.foreground": "var(--theme-text)",
- "editor.inactiveSelectionBackground": "var(--theme-background-element)",
- "editor.selectionHighlightBackground": "var(--theme-border-active)",
- "editorIndentGuide.activeBackground1": "var(--theme-border-subtle)",
- "editorIndentGuide.background1": "var(--theme-border-subtle)",
- "input.placeholderForeground": "var(--theme-text-muted)",
- "list.activeSelectionIconForeground": "var(--theme-text)",
- "list.dropBackground": "var(--theme-background-element)",
- "menu.background": "var(--theme-background-panel)",
- "menu.border": "var(--theme-border)",
- "menu.foreground": "var(--theme-text)",
- "menu.selectionBackground": "var(--theme-primary)",
- "menu.separatorBackground": "var(--theme-border)",
- "ports.iconRunningProcessForeground": "var(--theme-success)",
- "sideBarSectionHeader.background": "transparent",
- "sideBarSectionHeader.border": "var(--theme-border-subtle)",
- "sideBarTitle.foreground": "var(--theme-text-muted)",
- "statusBarItem.remoteBackground": "var(--theme-success)",
- "statusBarItem.remoteForeground": "var(--theme-text)",
- "tab.lastPinnedBorder": "var(--theme-border-subtle)",
- "tab.selectedBackground": "var(--theme-background-element)",
- "tab.selectedForeground": "var(--theme-text-muted)",
- "terminal.inactiveSelectionBackground": "var(--theme-background-element)",
- "widget.border": "var(--theme-border)",
- },
- displayName: "opencode",
- name: "opencode",
- semanticHighlighting: true,
- semanticTokenColors: {
- customLiteral: "var(--theme-syntax-function)",
- newOperator: "var(--theme-syntax-operator)",
- numberLiteral: "var(--theme-syntax-number)",
- stringLiteral: "var(--theme-syntax-string)",
- },
- tokenColors: [
- {
- scope: [
- "meta.embedded",
- "source.groovy.embedded",
- "string meta.image.inline.markdown",
- "variable.legacy.builtin.python",
- ],
- settings: {
- foreground: "var(--theme-text)",
- },
- },
- {
- scope: "emphasis",
- settings: {
- fontStyle: "italic",
- },
- },
- {
- scope: "strong",
- settings: {
- fontStyle: "bold",
- },
- },
- {
- scope: "header",
- settings: {
- foreground: "var(--theme-markdown-heading)",
- },
- },
- {
- scope: "comment",
- settings: {
- foreground: "var(--theme-syntax-comment)",
- },
- },
- {
- scope: "constant.language",
- settings: {
- foreground: "var(--theme-syntax-keyword)",
- },
- },
- {
- scope: [
- "constant.numeric",
- "variable.other.enummember",
- "keyword.operator.plus.exponent",
- "keyword.operator.minus.exponent",
- ],
- settings: {
- foreground: "var(--theme-syntax-number)",
- },
- },
- {
- scope: "constant.regexp",
- settings: {
- foreground: "var(--theme-syntax-operator)",
- },
- },
- {
- scope: "entity.name.tag",
- settings: {
- foreground: "var(--theme-syntax-keyword)",
- },
- },
- {
- scope: ["entity.name.tag.css", "entity.name.tag.less"],
- settings: {
- foreground: "var(--theme-syntax-operator)",
- },
- },
- {
- scope: "entity.other.attribute-name",
- settings: {
- foreground: "var(--theme-syntax-variable)",
- },
- },
- {
- scope: [
- "entity.other.attribute-name.class.css",
- "source.css entity.other.attribute-name.class",
- "entity.other.attribute-name.id.css",
- "entity.other.attribute-name.parent-selector.css",
- "entity.other.attribute-name.parent.less",
- "source.css entity.other.attribute-name.pseudo-class",
- "entity.other.attribute-name.pseudo-element.css",
- "source.css.less entity.other.attribute-name.id",
- "entity.other.attribute-name.scss",
- ],
- settings: {
- foreground: "var(--theme-syntax-operator)",
- },
- },
- {
- scope: "invalid",
- settings: {
- foreground: "var(--theme-error)",
- },
- },
- {
- scope: "markup.underline",
- settings: {
- fontStyle: "underline",
- },
- },
- {
- scope: "markup.bold",
- settings: {
- fontStyle: "bold",
- foreground: "var(--theme-markdown-strong)",
- },
- },
- {
- scope: "markup.heading",
- settings: {
- fontStyle: "bold",
- foreground: "var(--theme-markdown-heading)",
- },
- },
- {
- scope: "markup.italic",
- settings: {
- fontStyle: "italic",
- },
- },
- {
- scope: "markup.strikethrough",
- settings: {
- fontStyle: "strikethrough",
- },
- },
- {
- scope: "markup.inserted",
- settings: {
- foreground: "var(--theme-diff-added)",
- },
- },
- {
- scope: "markup.deleted",
- settings: {
- foreground: "var(--theme-diff-removed)",
- },
- },
- {
- scope: "markup.changed",
- settings: {
- foreground: "var(--theme-diff-context)",
- },
- },
- {
- scope: "punctuation.definition.quote.begin.markdown",
- settings: {
- foreground: "var(--theme-markdown-block-quote)",
- },
- },
- {
- scope: "punctuation.definition.list.begin.markdown",
- settings: {
- foreground: "var(--theme-markdown-list-enumeration)",
- },
- },
- {
- scope: "markup.inline.raw",
- settings: {
- foreground: "var(--theme-markdown-code)",
- },
- },
- {
- scope: "punctuation.definition.tag",
- settings: {
- foreground: "var(--theme-syntax-punctuation)",
- },
- },
- {
- scope: ["meta.preprocessor", "entity.name.function.preprocessor"],
- settings: {
- foreground: "var(--theme-syntax-keyword)",
- },
- },
- {
- scope: "meta.preprocessor.string",
- settings: {
- foreground: "var(--theme-syntax-string)",
- },
- },
- {
- scope: "meta.preprocessor.numeric",
- settings: {
- foreground: "var(--theme-syntax-number)",
- },
- },
- {
- scope: "meta.structure.dictionary.key.python",
- settings: {
- foreground: "var(--theme-syntax-variable)",
- },
- },
- {
- scope: "meta.diff.header",
- settings: {
- foreground: "var(--theme-diff-hunk-header)",
- },
- },
- {
- scope: "storage",
- settings: {
- foreground: "var(--theme-syntax-keyword)",
- },
- },
- {
- scope: "storage.type",
- settings: {
- foreground: "var(--theme-syntax-keyword)",
- },
- },
- {
- scope: ["storage.modifier", "keyword.operator.noexcept"],
- settings: {
- foreground: "var(--theme-syntax-keyword)",
- },
- },
- {
- scope: ["string", "meta.embedded.assembly"],
- settings: {
- foreground: "var(--theme-syntax-string)",
- },
- },
- {
- scope: "string.tag",
- settings: {
- foreground: "var(--theme-syntax-string)",
- },
- },
- {
- scope: "string.value",
- settings: {
- foreground: "var(--theme-syntax-string)",
- },
- },
- {
- scope: "string.regexp",
- settings: {
- foreground: "var(--theme-syntax-operator)",
- },
- },
- {
- scope: [
- "punctuation.definition.template-expression.begin",
- "punctuation.definition.template-expression.end",
- "punctuation.section.embedded",
- ],
- settings: {
- foreground: "var(--theme-syntax-keyword)",
- },
- },
- {
- scope: ["meta.template.expression"],
- settings: {
- foreground: "var(--theme-text)",
- },
- },
- {
- scope: [
- "support.type.vendored.property-name",
- "support.type.property-name",
- "source.css variable",
- "source.coffee.embedded",
- ],
- settings: {
- foreground: "var(--theme-syntax-variable)",
- },
- },
- {
- scope: "keyword",
- settings: {
- foreground: "var(--theme-syntax-keyword)",
- },
- },
- {
- scope: "keyword.control",
- settings: {
- foreground: "var(--theme-syntax-keyword)",
- },
- },
- {
- scope: "keyword.operator",
- settings: {
- foreground: "var(--theme-syntax-operator)",
- },
- },
- {
- scope: [
- "keyword.operator.new",
- "keyword.operator.expression",
- "keyword.operator.cast",
- "keyword.operator.sizeof",
- "keyword.operator.alignof",
- "keyword.operator.typeid",
- "keyword.operator.alignas",
- "keyword.operator.instanceof",
- "keyword.operator.logical.python",
- "keyword.operator.wordlike",
- ],
- settings: {
- foreground: "var(--theme-syntax-keyword)",
- },
- },
- {
- scope: "keyword.other.unit",
- settings: {
- foreground: "var(--theme-syntax-number)",
- },
- },
- {
- scope: ["punctuation.section.embedded.begin.php", "punctuation.section.embedded.end.php"],
- settings: {
- foreground: "var(--theme-syntax-keyword)",
- },
- },
- {
- scope: "support.function.git-rebase",
- settings: {
- foreground: "var(--theme-syntax-variable)",
- },
- },
- {
- scope: "constant.sha.git-rebase",
- settings: {
- foreground: "var(--theme-syntax-number)",
- },
- },
- {
- scope: ["storage.modifier.import.java", "variable.language.wildcard.java", "storage.modifier.package.java"],
- settings: {
- foreground: "var(--theme-text)",
- },
- },
- {
- scope: "variable.language",
- settings: {
- foreground: "var(--theme-syntax-keyword)",
- },
- },
- {
- scope: [
- "entity.name.function",
- "support.function",
- "support.constant.handlebars",
- "source.powershell variable.other.member",
- "entity.name.operator.custom-literal",
- ],
- settings: {
- foreground: "var(--theme-syntax-function)",
- },
- },
- {
- scope: [
- "support.class",
- "support.type",
- "entity.name.type",
- "entity.name.namespace",
- "entity.other.attribute",
- "entity.name.scope-resolution",
- "entity.name.class",
- "storage.type.numeric.go",
- "storage.type.byte.go",
- "storage.type.boolean.go",
- "storage.type.string.go",
- "storage.type.uintptr.go",
- "storage.type.error.go",
- "storage.type.rune.go",
- "storage.type.cs",
- "storage.type.generic.cs",
- "storage.type.modifier.cs",
- "storage.type.variable.cs",
- "storage.type.annotation.java",
- "storage.type.generic.java",
- "storage.type.java",
- "storage.type.object.array.java",
- "storage.type.primitive.array.java",
- "storage.type.primitive.java",
- "storage.type.token.java",
- "storage.type.groovy",
- "storage.type.annotation.groovy",
- "storage.type.parameters.groovy",
- "storage.type.generic.groovy",
- "storage.type.object.array.groovy",
- "storage.type.primitive.array.groovy",
- "storage.type.primitive.groovy",
- ],
- settings: {
- foreground: "var(--theme-syntax-type)",
- },
- },
- {
- scope: [
- "meta.type.cast.expr",
- "meta.type.new.expr",
- "support.constant.math",
- "support.constant.dom",
- "support.constant.json",
- "entity.other.inherited-class",
- "punctuation.separator.namespace.ruby",
- ],
- settings: {
- foreground: "var(--theme-syntax-type)",
- },
- },
- {
- scope: [
- "keyword.control",
- "source.cpp keyword.operator.new",
- "keyword.operator.delete",
- "keyword.other.using",
- "keyword.other.directive.using",
- "keyword.other.operator",
- "entity.name.operator",
- ],
- settings: {
- foreground: "var(--theme-syntax-operator)",
- },
- },
- {
- scope: [
- "variable",
- "meta.definition.variable.name",
- "support.variable",
- "entity.name.variable",
- "constant.other.placeholder",
- ],
- settings: {
- foreground: "var(--theme-syntax-variable)",
- },
- },
- {
- scope: ["variable.other.constant", "variable.other.enummember"],
- settings: {
- foreground: "var(--theme-syntax-variable)",
- },
- },
- {
- scope: ["meta.object-literal.key"],
- settings: {
- foreground: "var(--theme-syntax-variable)",
- },
- },
- {
- scope: [
- "support.constant.property-value",
- "support.constant.font-name",
- "support.constant.media-type",
- "support.constant.media",
- "constant.other.color.rgb-value",
- "constant.other.rgb-value",
- "support.constant.color",
- ],
- settings: {
- foreground: "var(--theme-syntax-string)",
- },
- },
- {
- scope: [
- "punctuation.definition.group.regexp",
- "punctuation.definition.group.assertion.regexp",
- "punctuation.definition.character-class.regexp",
- "punctuation.character.set.begin.regexp",
- "punctuation.character.set.end.regexp",
- "keyword.operator.negation.regexp",
- "support.other.parenthesis.regexp",
- ],
- settings: {
- foreground: "var(--theme-syntax-string)",
- },
- },
- {
- scope: [
- "constant.character.character-class.regexp",
- "constant.other.character-class.set.regexp",
- "constant.other.character-class.regexp",
- "constant.character.set.regexp",
- ],
- settings: {
- foreground: "var(--theme-syntax-operator)",
- },
- },
- {
- scope: ["keyword.operator.or.regexp", "keyword.control.anchor.regexp"],
- settings: {
- foreground: "var(--theme-syntax-operator)",
- },
- },
- {
- scope: "keyword.operator.quantifier.regexp",
- settings: {
- foreground: "var(--theme-syntax-operator)",
- },
- },
- {
- scope: ["constant.character", "constant.other.option"],
- settings: {
- foreground: "var(--theme-syntax-keyword)",
- },
- },
- {
- scope: "constant.character.escape",
- settings: {
- foreground: "var(--theme-syntax-operator)",
- },
- },
- {
- scope: "entity.name.label",
- settings: {
- foreground: "var(--theme-text-muted)",
- },
- },
- ],
- type: "dark",
-}
-
-const highlighter = await createHighlighter({
- themes: [theme],
- langs: [],
-})
-
-type ShikiContext = typeof highlighter
-
-const ctx = createContext()
-
-export function ShikiProvider(props: ParentProps) {
- return {props.children}
-}
-
-export function useShiki() {
- const value = useContext(ctx)
- if (!value) {
- throw new Error("useShiki must be used within a ShikiProvider")
- }
- return value
-}
diff --git a/packages/app/src/context/sync.tsx b/packages/app/src/context/sync.tsx
deleted file mode 100644
index 5d64f3ee7..000000000
--- a/packages/app/src/context/sync.tsx
+++ /dev/null
@@ -1,174 +0,0 @@
-import type { Message, Agent, Provider, Session, Part, Config, Path, File, FileNode } from "@opencode-ai/sdk"
-import { createStore, produce, reconcile } from "solid-js/store"
-import { createContext, createMemo, Show, useContext, type ParentProps } from "solid-js"
-import { useSDK, useEvent } from "@/context"
-import { Binary } from "@/utils/binary"
-
-function init() {
- const [store, setStore] = createStore<{
- ready: boolean
- provider: Provider[]
- agent: Agent[]
- config: Config
- path: Path
- session: Session[]
- message: {
- [sessionID: string]: Message[]
- }
- part: {
- [messageID: string]: Part[]
- }
- node: FileNode[]
- changes: File[]
- }>({
- config: {},
- path: { state: "", config: "", worktree: "", directory: "" },
- ready: false,
- agent: [],
- provider: [],
- session: [],
- message: {},
- part: {},
- node: [],
- changes: [],
- })
-
- const bus = useEvent()
- bus.listen((event) => {
- switch (event.type) {
- case "session.updated": {
- const result = Binary.search(store.session, event.properties.info.id, (s) => s.id)
- if (result.found) {
- setStore("session", result.index, reconcile(event.properties.info))
- break
- }
- setStore(
- "session",
- produce((draft) => {
- draft.splice(result.index, 0, event.properties.info)
- }),
- )
- break
- }
- case "message.updated": {
- const messages = store.message[event.properties.info.sessionID]
- if (!messages) {
- setStore("message", event.properties.info.sessionID, [event.properties.info])
- break
- }
- const result = Binary.search(messages, event.properties.info.id, (m) => m.id)
- if (result.found) {
- setStore("message", event.properties.info.sessionID, result.index, reconcile(event.properties.info))
- break
- }
- setStore(
- "message",
- event.properties.info.sessionID,
- produce((draft) => {
- draft.splice(result.index, 0, event.properties.info)
- }),
- )
- break
- }
- case "message.part.updated": {
- const parts = store.part[event.properties.part.messageID]
- if (!parts) {
- setStore("part", event.properties.part.messageID, [event.properties.part])
- break
- }
- const result = Binary.search(parts, event.properties.part.id, (p) => p.id)
- if (result.found) {
- setStore("part", event.properties.part.messageID, result.index, reconcile(event.properties.part))
- break
- }
- setStore(
- "part",
- event.properties.part.messageID,
- produce((draft) => {
- draft.splice(result.index, 0, event.properties.part)
- }),
- )
- break
- }
- }
- })
-
- const sdk = useSDK()
-
- const load = {
- provider: () => sdk.config.providers().then((x) => setStore("provider", x.data!.providers)),
- path: () => sdk.path.get().then((x) => setStore("path", x.data!)),
- agent: () => sdk.app.agents().then((x) => setStore("agent", x.data ?? [])),
- session: () =>
- sdk.session.list().then((x) =>
- setStore(
- "session",
- (x.data ?? []).slice().sort((a, b) => a.id.localeCompare(b.id)),
- ),
- ),
- config: () => sdk.config.get().then((x) => setStore("config", x.data!)),
- changes: () => sdk.file.status().then((x) => setStore("changes", x.data!)),
- node: () => sdk.file.list({ query: { path: "/" } }).then((x) => setStore("node", x.data!)),
- }
-
- Promise.all(Object.values(load).map((p) => p())).then(() => setStore("ready", true))
-
- const sanitizer = createMemo(() => new RegExp(`${store.path.directory}/`, "g"))
- const sanitize = (text: string) => text.replace(sanitizer(), "")
- const absolute = (path: string) => (store.path.directory + "/" + path).replace("//", "/")
-
- return {
- data: store,
- set: setStore,
- session: {
- get(sessionID: string) {
- const match = Binary.search(store.session, sessionID, (s) => s.id)
- if (match.found) return store.session[match.index]
- return undefined
- },
- async sync(sessionID: string) {
- const [session, messages] = await Promise.all([
- sdk.session.get({ path: { id: sessionID } }),
- sdk.session.messages({ path: { id: sessionID } }),
- ])
- setStore(
- produce((draft) => {
- const match = Binary.search(draft.session, sessionID, (s) => s.id)
- draft.session[match.index] = session.data!
- draft.message[sessionID] = messages
- .data!.map((x) => x.info)
- .slice()
- .sort((a, b) => a.id.localeCompare(b.id))
- for (const message of messages.data!) {
- draft.part[message.info.id] = message.parts.slice().sort((a, b) => a.id.localeCompare(b.id))
- }
- }),
- )
- },
- },
- load,
- absolute,
- sanitize,
- }
-}
-
-type SyncContext = ReturnType
-
-const ctx = createContext()
-
-export function SyncProvider(props: ParentProps) {
- const value = init()
- return (
-
- {props.children}
-
- )
-}
-
-export function useSync() {
- const value = useContext(ctx)
- if (!value) {
- throw new Error("useSync must be used within a SyncProvider")
- }
- return value
-}
diff --git a/packages/app/src/context/theme.tsx b/packages/app/src/context/theme.tsx
deleted file mode 100644
index 0b344ea97..000000000
--- a/packages/app/src/context/theme.tsx
+++ /dev/null
@@ -1,92 +0,0 @@
-import {
- createContext,
- useContext,
- createSignal,
- createEffect,
- onMount,
- type ParentComponent,
- onCleanup,
-} from "solid-js"
-
-export interface ThemeContextValue {
- theme: string | undefined
- isDark: boolean
- setTheme: (themeName: string) => void
- setDarkMode: (isDark: boolean) => void
-}
-
-const ThemeContext = createContext()
-
-export const useTheme = () => {
- const context = useContext(ThemeContext)
- if (!context) {
- throw new Error("useTheme must be used within a ThemeProvider")
- }
- return context
-}
-
-interface ThemeProviderProps {
- defaultTheme?: string
- defaultDarkMode?: boolean
-}
-
-const themes = ["opencode", "tokyonight", "ayu", "nord", "catppuccin"]
-
-export const ThemeProvider: ParentComponent = (props) => {
- const [theme, setThemeSignal] = createSignal()
- const [isDark, setIsDark] = createSignal(props.defaultDarkMode ?? false)
-
- const handleKeyDown = (event: KeyboardEvent) => {
- if (event.key === "t" && event.ctrlKey) {
- event.preventDefault()
- const current = theme()
- if (!current) return
- const index = themes.indexOf(current)
- const next = themes[(index + 1) % themes.length]
- setTheme(next)
- }
- }
-
- onMount(() => {
- window.addEventListener("keydown", handleKeyDown)
- })
-
- onCleanup(() => {
- window.removeEventListener("keydown", handleKeyDown)
- })
-
- onMount(() => {
- const savedTheme = localStorage.getItem("theme") ?? "opencode"
- const savedDarkMode = localStorage.getItem("darkMode") ?? "true"
- setIsDark(savedDarkMode === "true")
- setTheme(savedTheme)
- })
-
- createEffect(() => {
- const currentTheme = theme()
- const darkMode = isDark()
- if (currentTheme) {
- document.documentElement.setAttribute("data-theme", currentTheme)
- document.documentElement.setAttribute("data-dark", darkMode.toString())
- }
- })
-
- const setTheme = async (theme: string) => {
- setThemeSignal(theme)
- localStorage.setItem("theme", theme)
- }
-
- const setDarkMode = (dark: boolean) => {
- setIsDark(dark)
- localStorage.setItem("darkMode", dark.toString())
- }
-
- const contextValue: ThemeContextValue = {
- theme: theme(),
- isDark: isDark(),
- setTheme,
- setDarkMode,
- }
-
- return {props.children}
-}
diff --git a/packages/app/src/env.d.ts b/packages/app/src/env.d.ts
deleted file mode 100644
index ad575e93b..000000000
--- a/packages/app/src/env.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-interface ImportMetaEnv {
- readonly VITE_OPENCODE_SERVER_HOST: string
- readonly VITE_OPENCODE_SERVER_PORT: string
-}
-
-interface ImportMeta {
- readonly env: ImportMetaEnv
-}
diff --git a/packages/app/src/index.css b/packages/app/src/index.css
deleted file mode 100644
index cac2e91a6..000000000
--- a/packages/app/src/index.css
+++ /dev/null
@@ -1,168 +0,0 @@
-@import "tailwindcss";
-
-:root {
- interpolate-size: allow-keywords;
-}
-
-@layer components {
- [data-popper-positioner] {
- pointer-events: none;
- }
-
- body {
- line-height: 1;
- }
-
- ::selection {
- background-color: color-mix(in srgb, var(--color-primary) 33%, transparent);
- /* background-color: var(--color-primary); */
- /* color: var(--color-background); */
- }
-
- ::-webkit-scrollbar-track {
- background: var(--theme-background-panel);
- }
-
- ::-webkit-scrollbar-thumb {
- background-color: var(--theme-border-subtle);
- border-radius: 6px;
- }
-
- * {
- scrollbar-color: var(--theme-border-subtle) var(--theme-background-panel);
- }
-
- .prose h1 {
- color: var(--color-text);
- font-size: var(--text-sm);
- line-height: var(--text-sm--line-height);
- margin-bottom: calc(var(--spacing) * 3);
- }
- .prose h2 {
- color: var(--color-text);
- font-size: var(--text-sm);
- line-height: var(--text-sm--line-height);
- margin-bottom: calc(var(--spacing) * 3);
- }
- .prose h3 {
- color: var(--color-text);
- font-size: var(--text-xs);
- line-height: var(--text-xs--line-height);
- margin-bottom: calc(var(--spacing) * 2);
- }
- .prose h4 {
- color: var(--color-text);
- font-size: var(--text-xs);
- line-height: var(--text-xs--line-height);
- margin-bottom: calc(var(--spacing) * 2);
- }
- .prose h5 {
- color: var(--color-text);
- font-size: var(--text-xs);
- line-height: var(--text-xs--line-height);
- margin-bottom: calc(var(--spacing) * 2);
- }
- .prose h6 {
- color: var(--color-text);
- font-size: var(--text-xs);
- line-height: var(--text-xs--line-height);
- margin-bottom: calc(var(--spacing) * 2);
- }
- .prose p {
- font-size: var(--text-xs);
- line-height: var(--text-xs--line-height);
- margin-bottom: calc(var(--spacing) * 2);
- }
- .prose strong {
- color: var(--color-text);
- }
- .prose ul,
- ol {
- list-style-type: disc;
- list-style-position: inside;
- margin-bottom: calc(var(--spacing) * 2);
- }
- .prose pre {
- background-color: var(--color-background-panel);
- padding: calc(var(--spacing) * 2);
- border-radius: var(--radius-md);
- border: 1px solid var(--color-border-subtle);
- overflow-x: auto;
- white-space: pre;
- margin-bottom: calc(var(--spacing) * 2);
- @apply no-scrollbar;
- }
- .prose code {
- font-family: var(--font-mono);
- font-size: var(--text-xs);
- line-height: var(--text-xs--line-height);
- }
- .prose blockquote {
- margin-bottom: calc(var(--spacing) * 2);
- }
-}
-
-@utility no-scrollbar {
- &::-webkit-scrollbar {
- display: none;
- }
- /* Hide scrollbar for IE, Edge and Firefox */
- & {
- -ms-overflow-style: none; /* IE and Edge */
- scrollbar-width: none; /* Firefox */
- }
-}
-
-@theme {
- --color-*: initial;
- --color-primary: var(--theme-primary);
- --color-secondary: var(--theme-secondary);
- --color-accent: var(--theme-accent);
- --color-error: var(--theme-error);
- --color-warning: var(--theme-warning);
- --color-success: var(--theme-success);
- --color-info: var(--theme-info);
- --color-text: var(--theme-text);
- --color-text-muted: var(--theme-text-muted);
- --color-background: var(--theme-background);
- --color-background-panel: var(--theme-background-panel);
- --color-background-element: var(--theme-background-element);
- --color-border: var(--theme-border);
- --color-border-active: var(--theme-border-active);
- --color-border-subtle: var(--theme-border-subtle);
- --color-diff-added: var(--theme-diff-added);
- --color-diff-removed: var(--theme-diff-removed);
- --color-diff-context: var(--theme-diff-context);
- --color-diff-hunk-header: var(--theme-diff-hunk-header);
- --color-diff-highlight-added: var(--theme-diff-highlight-added);
- --color-diff-highlight-removed: var(--theme-diff-highlight-removed);
- --color-diff-added-bg: var(--theme-diff-added-bg);
- --color-diff-removed-bg: var(--theme-diff-removed-bg);
- --color-diff-context-bg: var(--theme-diff-context-bg);
- --color-diff-line-number: var(--theme-diff-line-number);
- --color-diff-added-line-number-bg: var(--theme-diff-added-line-number-bg);
- --color-diff-removed-line-number-bg: var(--theme-diff-removed-line-number-bg);
- --color-markdown-text: var(--theme-markdown-text);
- --color-markdown-heading: var(--theme-markdown-heading);
- --color-markdown-link: var(--theme-markdown-link);
- --color-markdown-link-text: var(--theme-markdown-link-text);
- --color-markdown-code: var(--theme-markdown-code);
- --color-markdown-block-quote: var(--theme-markdown-block-quote);
- --color-markdown-emph: var(--theme-markdown-emph);
- --color-markdown-strong: var(--theme-markdown-strong);
- --color-markdown-horizontal-rule: var(--theme-markdown-horizontal-rule);
- --color-markdown-list-item: var(--theme-markdown-list-item);
- --color-markdown-list-enumeration: var(--theme-markdown-list-enumeration);
- --color-markdown-image: var(--theme-markdown-image);
- --color-markdown-image-text: var(--theme-markdown-image-text);
- --color-markdown-code-block: var(--theme-markdown-code-block);
- --color-syntax-comment: var(--theme-syntax-comment);
- --color-syntax-keyword: var(--theme-syntax-keyword);
- --color-syntax-function: var(--theme-syntax-function);
- --color-syntax-variable: var(--theme-syntax-variable);
- --color-syntax-string: var(--theme-syntax-string);
- --color-syntax-number: var(--theme-syntax-number);
- --color-syntax-type: var(--theme-syntax-type);
- --color-syntax-operator: var(--theme-syntax-operator);
- --color-syntax-punctuation: var(--theme-syntax-punctuation);
-}
diff --git a/packages/app/src/index.tsx b/packages/app/src/index.tsx
deleted file mode 100644
index 66ed93d3a..000000000
--- a/packages/app/src/index.tsx
+++ /dev/null
@@ -1,48 +0,0 @@
-/* @refresh reload */
-import { render } from "solid-js/web"
-import { Router, Route } from "@solidjs/router"
-import "@/index.css"
-import Layout from "@/pages/layout"
-import Home from "@/pages"
-import {
- EventProvider,
- SDKProvider,
- SyncProvider,
- LocalProvider,
- ThemeProvider,
- ShikiProvider,
- MarkedProvider,
-} from "@/context"
-
-const root = document.getElementById("root")
-
-if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
- throw new Error(
- "Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got misspelled?",
- )
-}
-
-render(
- () => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- root!,
-)
diff --git a/packages/app/src/pages/index.tsx b/packages/app/src/pages/index.tsx
deleted file mode 100644
index 128c6adfd..000000000
--- a/packages/app/src/pages/index.tsx
+++ /dev/null
@@ -1,278 +0,0 @@
-import { FileIcon, Icon, IconButton, Tooltip } from "@/ui"
-import { Tabs } from "@/ui/tabs"
-import FileTree from "@/components/file-tree"
-import EditorPane from "@/components/editor-pane"
-import { For, Match, onCleanup, onMount, Show, Switch } from "solid-js"
-import { SelectDialog } from "@/components/select-dialog"
-import { useLocal } from "@/context"
-import { ResizeableLayout, ResizeablePane } from "@/components/resizeable-pane"
-import type { LocalFile } from "@/context/local"
-import SessionList from "@/components/session-list"
-import SessionTimeline from "@/components/session-timeline"
-import { createStore } from "solid-js/store"
-import { getDirectory, getFilename } from "@/utils"
-
-export default function Page() {
- const local = useLocal()
- const [store, setStore] = createStore({
- clickTimer: undefined as number | undefined,
- modelSelectOpen: false,
- fileSelectOpen: false,
- })
-
- const layoutKey = "workspace"
- const timelinePane = "timeline"
-
- let inputRef: HTMLTextAreaElement | undefined = undefined
-
- const MOD = typeof navigator === "object" && /(Mac|iPod|iPhone|iPad)/.test(navigator.platform) ? "Meta" : "Control"
-
- onMount(() => {
- document.addEventListener("keydown", handleKeyDown)
- })
-
- onCleanup(() => {
- document.removeEventListener("keydown", handleKeyDown)
- })
-
- const handleKeyDown = (event: KeyboardEvent) => {
- if (event.getModifierState(MOD) && event.shiftKey && event.key.toLowerCase() === "p") {
- event.preventDefault()
- // TODO: command palette
- return
- }
- if (event.getModifierState(MOD) && event.key.toLowerCase() === "p") {
- event.preventDefault()
- setStore("fileSelectOpen", true)
- return
- }
-
- const focused = document.activeElement === inputRef
- if (focused) {
- if (event.key === "Escape") {
- inputRef?.blur()
- }
- return
- }
-
- if (local.file.active()) {
- const active = local.file.active()!
- if (event.key === "Enter" && active.selection) {
- local.context.add({
- type: "file",
- path: active.path,
- selection: { ...active.selection },
- })
- return
- }
-
- if (event.getModifierState(MOD)) {
- if (event.key.toLowerCase() === "a") {
- return
- }
- if (event.key.toLowerCase() === "c") {
- return
- }
- }
- }
-
- if (event.key.length === 1 && event.key !== "Unidentified") {
- inputRef?.focus()
- }
- }
-
- const resetClickTimer = () => {
- if (!store.clickTimer) return
- clearTimeout(store.clickTimer)
- setStore("clickTimer", undefined)
- }
-
- const startClickTimer = () => {
- const newClickTimer = setTimeout(() => {
- setStore("clickTimer", undefined)
- }, 300)
- setStore("clickTimer", newClickTimer as unknown as number)
- }
-
- const handleFileClick = async (file: LocalFile) => {
- if (store.clickTimer) {
- resetClickTimer()
- local.file.update(file.path, { ...file, pinned: true })
- } else {
- local.file.open(file.path)
- startClickTimer()
- }
- }
-
- return (
-
-
-
-
-
-
-
- Files
-
-
- Changes
-
-
-
-
-
-
-
- No changes }
- >
-
-
- {(path) => (
- -
-
-
- )}
-
-
-
-
-
-
-
- setStore("modelSelectOpen", true)}
- onInputRefChange={(element: HTMLTextAreaElement | null) => {
- inputRef = element ?? undefined
- }}
- />
-
-
-
-
}>
- {(activeSession) => (
-
-
-
- local.session.clearActive()}
- class="text-text-muted hover:text-text"
- >
-
-
-
- {activeSession().title || "Untitled Session"}
-
-
-
-
-
- )}
-
-
-
-
-
- `${x.provider.id}:${x.id}`}
- items={local.model.list()}
- current={local.model.current()}
- render={(i) => (
-
-
-

-
{i.name}
-
- {i.id}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {new Intl.NumberFormat("en-US", {
- notation: "compact",
- compactDisplay: "short",
- }).format(i.limit.context)}
-
-
-
-
- 10}>$$$
- 1}>$$
- 0.1}>$
-
-
-
-
-
- )}
- filter={["provider.name", "name", "id"]}
- groupBy={(x) => x.provider.name}
- onClose={() => setStore("modelSelectOpen", false)}
- onSelect={(x) => local.model.set(x ? { modelID: x.id, providerID: x.provider.id } : undefined)}
- />
-
-
- x}
- render={(i) => (
-
-
-
- {getFilename(i)}
-
- {getDirectory(i)}
-
-
-
-
- )}
- onClose={() => setStore("fileSelectOpen", false)}
- onSelect={(x) => (x ? local.file.open(x, { pinned: true }) : undefined)}
- />
-
-
- )
-}
diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx
deleted file mode 100644
index d2e33a2ca..000000000
--- a/packages/app/src/pages/layout.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import { type ParentProps } from "solid-js"
-
-export default function Layout(props: ParentProps) {
- return {props.children}
-}
diff --git a/packages/app/src/sst-env.d.ts b/packages/app/src/sst-env.d.ts
deleted file mode 100644
index 47a8fbec7..000000000
--- a/packages/app/src/sst-env.d.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-/* This file is auto-generated by SST. Do not edit. */
-/* tslint:disable */
-/* eslint-disable */
-///
-interface ImportMetaEnv {
-
-}
-interface ImportMeta {
- readonly env: ImportMetaEnv
-}
\ No newline at end of file
diff --git a/packages/app/src/ui/button.tsx b/packages/app/src/ui/button.tsx
deleted file mode 100644
index 21d89fbee..000000000
--- a/packages/app/src/ui/button.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import { Button as Kobalte } from "@kobalte/core/button"
-import { type ComponentProps, splitProps } from "solid-js"
-
-export interface ButtonProps {
- variant?: "primary" | "secondary" | "ghost"
- size?: "sm" | "md" | "lg"
-}
-
-export function Button(props: ComponentProps<"button"> & ButtonProps) {
- const [split, rest] = splitProps(props, ["variant", "size", "class", "classList"])
- return (
-
- {props.children}
-
- )
-}
diff --git a/packages/app/src/ui/collapsible.tsx b/packages/app/src/ui/collapsible.tsx
deleted file mode 100644
index e0202f617..000000000
--- a/packages/app/src/ui/collapsible.tsx
+++ /dev/null
@@ -1,62 +0,0 @@
-import { Collapsible as KobalteCollapsible } from "@kobalte/core/collapsible"
-import { splitProps } from "solid-js"
-import type { ComponentProps, ParentProps } from "solid-js"
-import { Icon, type IconProps } from "./icon"
-
-export interface CollapsibleProps extends ComponentProps {}
-export interface CollapsibleTriggerProps extends ComponentProps {}
-export interface CollapsibleContentProps extends ComponentProps {}
-
-function CollapsibleRoot(props: CollapsibleProps) {
- return
-}
-
-function CollapsibleTrigger(props: CollapsibleTriggerProps) {
- const [local, others] = splitProps(props, ["class"])
- return (
-
- )
-}
-
-function CollapsibleContent(props: ParentProps) {
- const [local, others] = splitProps(props, ["class", "children"])
- return (
-
- {local.children}
-
- )
-}
-
-function CollapsibleArrow(props: Partial) {
- const [local, others] = splitProps(props, ["class", "name"])
- return (
-
- )
-}
-
-export const Collapsible = Object.assign(CollapsibleRoot, {
- Trigger: CollapsibleTrigger,
- Content: CollapsibleContent,
- Arrow: CollapsibleArrow,
-})
diff --git a/packages/app/src/ui/file-icon.tsx b/packages/app/src/ui/file-icon.tsx
deleted file mode 100644
index d31a741e0..000000000
--- a/packages/app/src/ui/file-icon.tsx
+++ /dev/null
@@ -1,582 +0,0 @@
-import type { Component, JSX } from "solid-js"
-import { createMemo, splitProps } from "solid-js"
-import sprite from "@/ui/file-icons/sprite.svg"
-import type { IconName } from "@/ui/file-icons/types"
-
-export type FileIconProps = JSX.GSVGAttributes & {
- node: { path: string; type: "file" | "directory" }
- expanded?: boolean
-}
-
-export const FileIcon: Component = (props) => {
- const [local, rest] = splitProps(props, ["node", "class", "expanded"])
- const name = createMemo(() => chooseIconName(local.node.path, local.node.type, local.expanded || false))
- return (
-
-
-
- )
-}
-
-type IconMaps = {
- fileNames: Record
- fileExtensions: Record
- folderNames: Record
- defaults: {
- file: IconName
- folder: IconName
- folderOpen: IconName
- }
-}
-
-const ICON_MAPS: IconMaps = {
- fileNames: {
- // Documentation files
- "readme.md": "Readme",
- "changelog.md": "Changelog",
- "contributing.md": "Contributing",
- "conduct.md": "Conduct",
- license: "Certificate",
- authors: "Authors",
- credits: "Credits",
- install: "Installation",
-
- // Node.js files
- "package.json": "Nodejs",
- "package-lock.json": "Nodejs",
- "yarn.lock": "Yarn",
- "pnpm-lock.yaml": "Pnpm",
- "bun.lock": "Bun",
- "bun.lockb": "Bun",
- "bunfig.toml": "Bun",
- ".nvmrc": "Nodejs",
- ".node-version": "Nodejs",
-
- // Docker files
- dockerfile: "Docker",
- "docker-compose.yml": "Docker",
- "docker-compose.yaml": "Docker",
- ".dockerignore": "Docker",
-
- // Config files
- "jest.config.js": "Jest",
- "jest.config.ts": "Jest",
- "jest.config.mjs": "Jest",
- "vitest.config.js": "Vitest",
- "vitest.config.ts": "Vitest",
- "tailwind.config.js": "Tailwindcss",
- "tailwind.config.ts": "Tailwindcss",
- "turbo.json": "Turborepo",
- "tsconfig.json": "Tsconfig",
- "jsconfig.json": "Jsconfig",
- ".eslintrc": "Eslint",
- ".eslintrc.js": "Eslint",
- ".eslintrc.json": "Eslint",
- ".prettierrc": "Prettier",
- ".prettierrc.js": "Prettier",
- ".prettierrc.json": "Prettier",
- "vite.config.js": "Vite",
- "vite.config.ts": "Vite",
- "webpack.config.js": "Webpack",
- "rollup.config.js": "Rollup",
- "astro.config.mjs": "AstroConfig",
- "astro.config.js": "AstroConfig",
- "next.config.js": "Next",
- "next.config.mjs": "Next",
- "nuxt.config.js": "Nuxt",
- "nuxt.config.ts": "Nuxt",
- "svelte.config.js": "Svelte",
- "gatsby-config.js": "Gatsby",
- "remix.config.js": "Remix",
- "prisma.schema": "Prisma",
- ".gitignore": "Git",
- ".gitattributes": "Git",
- makefile: "Makefile",
- cmake: "Cmake",
- "cargo.toml": "Rust",
- "go.mod": "GoMod",
- "go.sum": "GoMod",
- "requirements.txt": "Python",
- "pyproject.toml": "Python",
- pipfile: "Python",
- "poetry.lock": "Poetry",
- gemfile: "Gemfile",
- rakefile: "Ruby",
- "composer.json": "Php",
- "build.gradle": "Gradle",
- "pom.xml": "Maven",
- "deno.json": "Deno",
- "deno.jsonc": "Deno",
- "vercel.json": "Vercel",
- "netlify.toml": "Netlify",
- ".env": "Tune",
- ".env.local": "Tune",
- ".env.development": "Tune",
- ".env.production": "Tune",
- ".env.example": "Tune",
- ".editorconfig": "Editorconfig",
- "robots.txt": "Robots",
- "favicon.ico": "Favicon",
- browserlist: "Browserlist",
- ".babelrc": "Babel",
- "babel.config.js": "Babel",
- "gulpfile.js": "Gulp",
- "gruntfile.js": "Grunt",
- "capacitor.config.json": "Capacitor",
- "ionic.config.json": "Ionic",
- "angular.json": "Angular",
- ".storybook": "Storybook",
- "storybook.config.js": "Storybook",
- "cypress.config.js": "Cypress",
- "playwright.config.js": "Playwright",
- "puppeteer.config.js": "Puppeteer",
- "wrangler.toml": "Wrangler",
- "firebase.json": "Firebase",
- supabase: "Supabase",
- terraform: "Terraform",
- kubernetes: "Kubernetes",
- ".gitpod.yml": "Gitpod",
- ".devcontainer": "Vscode",
- "travis.yml": "Travis",
- "appveyor.yml": "Appveyor",
- ".circleci": "Circleci",
- "renovate.json": "Renovate",
- "dependabot.yml": "Dependabot",
- "lerna.json": "Lerna",
- "nx.json": "Nx",
- },
- fileExtensions: {
- // Test files
- "spec.ts": "TestTs",
- "test.ts": "TestTs",
- "spec.tsx": "TestJsx",
- "test.tsx": "TestJsx",
- "spec.js": "TestJs",
- "test.js": "TestJs",
- "spec.jsx": "TestJsx",
- "test.jsx": "TestJsx",
-
- // JavaScript/TypeScript
- "js.map": "JavascriptMap",
- "d.ts": "TypescriptDef",
- ts: "Typescript",
- tsx: "React_ts",
- js: "Javascript",
- jsx: "React",
- mjs: "Javascript",
- cjs: "Javascript",
-
- // Web languages
- html: "Html",
- htm: "Html",
- css: "Css",
- scss: "Sass",
- sass: "Sass",
- less: "Less",
- styl: "Stylus",
-
- // Data formats
- json: "Json",
- xml: "Xml",
- yml: "Yaml",
- yaml: "Yaml",
- toml: "Toml",
- hjson: "Hjson",
-
- // Documentation
- md: "Markdown",
- mdx: "Mdx",
- tex: "Tex",
-
- // Programming languages
- py: "Python",
- pyx: "Python",
- pyw: "Python",
- rs: "Rust",
- go: "Go",
- java: "Java",
- kt: "Kotlin",
- scala: "Scala",
- php: "Php",
- rb: "Ruby",
- cs: "Csharp",
- vb: "Visualstudio",
- cpp: "Cpp",
- cc: "Cpp",
- cxx: "Cpp",
- c: "C",
- h: "H",
- hpp: "Hpp",
- swift: "Swift",
- m: "ObjectiveC",
- mm: "ObjectiveCpp",
- dart: "Dart",
- lua: "Lua",
- pl: "Perl",
- r: "R",
- jl: "Julia",
- hs: "Haskell",
- elm: "Elm",
- ml: "Ocaml",
- clj: "Clojure",
- cljs: "Clojure",
- erl: "Erlang",
- ex: "Elixir",
- exs: "Elixir",
- nim: "Nim",
- zig: "Zig",
- v: "Vlang",
- odin: "Odin",
- gleam: "Gleam",
- grain: "Grain",
- roc: "Rocket",
- fs: "Fsharp",
-
- // Shell scripts
- sh: "Console",
- bash: "Console",
- zsh: "Console",
- fish: "Console",
- ps1: "Powershell",
-
- // Config/build files
- cfg: "Settings",
- ini: "Settings",
- conf: "Settings",
- properties: "Settings",
-
- // Media files
- svg: "Svg",
- png: "Image",
- jpg: "Image",
- jpeg: "Image",
- gif: "Image",
- webp: "Image",
- bmp: "Image",
- ico: "Favicon",
- mp4: "Video",
- mov: "Video",
- avi: "Video",
- webm: "Video",
- mp3: "Audio",
- wav: "Audio",
- flac: "Audio",
-
- // Archive files
- zip: "Zip",
- tar: "Zip",
- gz: "Zip",
- rar: "Zip",
- "7z": "Zip",
-
- // Document files
- pdf: "Pdf",
- doc: "Word",
- docx: "Word",
- ppt: "Powerpoint",
- pptx: "Powerpoint",
- xls: "Document",
- xlsx: "Document",
-
- // Database files
- sql: "Database",
- db: "Database",
- sqlite: "Database",
-
- // Other
- env: "Tune",
- log: "Log",
- lock: "Lock",
- key: "Key",
- pem: "Certificate",
- crt: "Certificate",
- proto: "Proto",
- graphql: "Graphql",
- gql: "Graphql",
- wasm: "Webassembly",
- dockerfile: "Docker",
- },
- folderNames: {
- // Source code
- src: "FolderSrc",
- source: "FolderSrc",
- lib: "FolderLib",
- libs: "FolderLib",
-
- // Testing
- test: "FolderTest",
- tests: "FolderTest",
- testing: "FolderTest",
- spec: "FolderTest",
- specs: "FolderTest",
- __tests__: "FolderTest",
- e2e: "FolderTest",
- integration: "FolderTest",
- unit: "FolderTest",
- cypress: "FolderCypress",
-
- // Dependencies
- node_modules: "FolderNode",
- vendor: "FolderPackages",
- packages: "FolderPackages",
- deps: "FolderPackages",
-
- // Build/dist
- build: "FolderBuildkite",
- dist: "FolderDist",
- out: "FolderDist",
- output: "FolderDist",
- target: "FolderTarget",
-
- // Configuration
- config: "FolderConfig",
- configs: "FolderConfig",
- configuration: "FolderConfig",
- settings: "FolderConfig",
- env: "FolderEnvironment",
- environments: "FolderEnvironment",
-
- // Docker
- docker: "FolderDocker",
- dockerfiles: "FolderDocker",
- containers: "FolderDocker",
-
- // Documentation
- docs: "FolderDocs",
- doc: "FolderDocs",
- documentation: "FolderDocs",
- readme: "FolderDocs",
-
- // Public/assets
- public: "FolderPublic",
- static: "FolderPublic",
- assets: "FolderImages",
- images: "FolderImages",
- img: "FolderImages",
- icons: "FolderImages",
- media: "FolderImages",
- fonts: "FolderFont",
- styles: "FolderCss",
- stylesheets: "FolderCss",
- css: "FolderCss",
- sass: "FolderSass",
- scss: "FolderSass",
- less: "FolderLess",
-
- // Scripts
- scripts: "FolderScripts",
- script: "FolderScripts",
- tools: "FolderTools",
- utils: "FolderUtils",
- utilities: "FolderUtils",
- helpers: "FolderHelper",
-
- // Framework specific
- components: "FolderComponents",
- component: "FolderComponents",
- views: "FolderViews",
- view: "FolderViews",
- layouts: "FolderLayout",
- layout: "FolderLayout",
- templates: "FolderTemplate",
- template: "FolderTemplate",
- hooks: "FolderHook",
- hook: "FolderHook",
- store: "FolderStore",
- stores: "FolderStore",
- state: "FolderNgrxStore",
- reducers: "FolderReduxReducer",
- reducer: "FolderReduxReducer",
- services: "FolderApi",
- service: "FolderApi",
- api: "FolderApi",
- apis: "FolderApi",
- routes: "FolderRoutes",
- route: "FolderRoutes",
- routing: "FolderRoutes",
- middleware: "FolderMiddleware",
- middlewares: "FolderMiddleware",
- controllers: "FolderController",
- controller: "FolderController",
- models: "FolderDatabase",
- model: "FolderDatabase",
- schemas: "FolderDatabase",
- schema: "FolderDatabase",
- migrations: "FolderDatabase",
- migration: "FolderDatabase",
- seeders: "FolderSeeders",
- seeder: "FolderSeeders",
-
- // TypeScript
- types: "FolderTypescript",
- typing: "FolderTypescript",
- typings: "FolderTypescript",
- "@types": "FolderTypescript",
- interfaces: "FolderInterface",
- interface: "FolderInterface",
-
- // Mobile
- android: "FolderAndroid",
- ios: "FolderIos",
- mobile: "FolderMobile",
- flutter: "FolderFlutter",
-
- // Infrastructure
- kubernetes: "FolderKubernetes",
- k8s: "FolderKubernetes",
- terraform: "FolderTerraform",
- aws: "FolderAws",
- azure: "FolderAzurePipelines",
- firebase: "FolderFirebase",
- supabase: "FolderSupabase",
- vercel: "FolderVercel",
- netlify: "FolderNetlify",
-
- // CI/CD
- ".github": "FolderGithub",
- ".gitlab": "FolderGitlab",
- ".circleci": "FolderCircleci",
- ci: "FolderCi",
- ".ci": "FolderCi",
- workflows: "FolderGhWorkflows",
-
- // Git
- ".git": "FolderGit",
-
- // Development tools
- ".vscode": "FolderVscode",
- ".idea": "FolderIntellij",
- ".cursor": "FolderCursor",
- ".devcontainer": "FolderContainer",
- ".storybook": "FolderStorybook",
-
- // Localization
- i18n: "FolderI18n",
- locales: "FolderI18n",
- locale: "FolderI18n",
- lang: "FolderI18n",
- languages: "FolderI18n",
-
- // Other common patterns
- temp: "FolderTemp",
- tmp: "FolderTemp",
- logs: "FolderLog",
- log: "FolderLog",
- backup: "FolderBackup",
- backups: "FolderBackup",
- examples: "FolderExamples",
- example: "FolderExamples",
- demo: "FolderExamples",
- demos: "FolderExamples",
- samples: "FolderExamples",
- sample: "FolderExamples",
- fixtures: "FolderTest",
- mocks: "FolderMock",
- mock: "FolderMock",
- data: "FolderDatabase",
- database: "FolderDatabase",
- db: "FolderDatabase",
- sql: "FolderDatabase",
- prisma: "FolderPrisma",
- drizzle: "FolderDrizzle",
-
- // Security
- security: "FolderSecure",
- auth: "FolderSecure",
- authentication: "FolderSecure",
- authorization: "FolderSecure",
- keys: "FolderKeys",
- certs: "FolderKeys",
- certificates: "FolderKeys",
-
- // Content
- content: "FolderContent",
- posts: "FolderContent",
- articles: "FolderContent",
- blog: "FolderContent",
-
- // Functions
- functions: "FolderFunctions",
- function: "FolderFunctions",
- lambda: "FolderFunctions",
- lambdas: "FolderFunctions",
- serverless: "FolderServerless",
-
- // Jobs/tasks
- jobs: "FolderJob",
- job: "FolderJob",
- tasks: "FolderTasks",
- task: "FolderTasks",
- cron: "FolderTasks",
- queue: "FolderQueue",
- queues: "FolderQueue",
-
- // Desktop platforms
- desktop: "FolderDesktop",
- windows: "FolderWindows",
- macos: "FolderMacos",
- linux: "FolderLinux",
- },
- defaults: {
- file: "Document",
- folder: "Folder",
- folderOpen: "FolderOpen",
- },
-}
-
-const toOpenVariant = (icon: IconName): IconName => {
- if (!icon.startsWith("Folder")) return icon
- if (icon.endsWith("_light")) return icon.replace("_light", "Open_light") as IconName
- if (!icon.endsWith("Open")) return (icon + "Open") as IconName
- return icon
-}
-
-const basenameOf = (p: string) =>
- p
- .replace(/[/\\]+$/, "")
- .split(/[\\/]/)
- .pop() ?? ""
-
-const folderNameVariants = (name: string) => {
- const n = name.toLowerCase()
- return [n, `.${n}`, `_${n}`, `__${n}__`]
-}
-
-const dottedSuffixesDesc = (name: string) => {
- const n = name.toLowerCase()
- const idxs: number[] = []
- for (let i = 0; i < n.length; i++) if (n[i] === ".") idxs.push(i)
- const out = new Set()
- out.add(n) // allow exact whole-name "extensions" like "dockerfile"
- for (const i of idxs) if (i + 1 < n.length) out.add(n.slice(i + 1))
- return Array.from(out).sort((a, b) => b.length - a.length) // longest first
-}
-
-export function chooseIconName(path: string, type: "directory" | "file", expanded: boolean): IconName {
- const base = basenameOf(path)
- const baseLower = base.toLowerCase()
-
- if (type === "directory") {
- for (const cand of folderNameVariants(baseLower)) {
- const icon = ICON_MAPS.folderNames[cand]
- if (icon) return expanded ? toOpenVariant(icon) : icon
- }
- return expanded ? ICON_MAPS.defaults.folderOpen : ICON_MAPS.defaults.folder
- }
-
- const byName = ICON_MAPS.fileNames[baseLower]
- if (byName) return byName
-
- for (const ext of dottedSuffixesDesc(baseLower)) {
- const icon = ICON_MAPS.fileExtensions[ext]
- if (icon) return icon
- }
-
- return ICON_MAPS.defaults.file
-}
diff --git a/packages/app/src/ui/file-icons/sprite.svg b/packages/app/src/ui/file-icons/sprite.svg
deleted file mode 100644
index 619b2b58c..000000000
--- a/packages/app/src/ui/file-icons/sprite.svg
+++ /dev/null
@@ -1,11707 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/packages/app/src/ui/file-icons/types.ts b/packages/app/src/ui/file-icons/types.ts
deleted file mode 100644
index 5b47661f9..000000000
--- a/packages/app/src/ui/file-icons/types.ts
+++ /dev/null
@@ -1,1095 +0,0 @@
-// This file is generated by icon spritesheet generator
-
-export const iconNames = [
- "Zip",
- "Zig",
- "Zeabur_light",
- "Zeabur",
- "Yarn",
- "Yang",
- "Yaml",
- "Xml",
- "Xmake",
- "Xaml",
- "Wxt",
- "Wrangler",
- "Word",
- "Wolframlanguage",
- "Windicss",
- "Werf",
- "Wepy",
- "Webpack",
- "Webhint",
- "Webassembly",
- "Watchman",
- "Wally",
- "Wallaby",
- "Wakatime_light",
- "Wakatime",
- "VuexStore",
- "Vue",
- "VueConfig",
- "Vscode",
- "Vlang",
- "Vitest",
- "Vite",
- "Visualstudio",
- "Virtual",
- "Vim",
- "Video",
- "Vfl",
- "Verilog",
- "Verified",
- "Verdaccio",
- "Vercel_light",
- "Vercel",
- "Velocity",
- "Velite",
- "Vedic",
- "Varnish",
- "VanillaExtract",
- "Vala",
- "Vagrant",
- "Uv",
- "Url",
- "Unocss",
- "Unity",
- "Uml_light",
- "Uml",
- "Umi",
- "Typst",
- "Typescript",
- "TypescriptDef",
- "Twine",
- "Twig",
- "Turborepo_light",
- "Turborepo",
- "Tune",
- "Tsil",
- "Tsdoc",
- "Tsconfig",
- "Trigger",
- "Tree",
- "Travis",
- "Toml_light",
- "Toml",
- "Todo",
- "Tobimake",
- "Tobi",
- "Tldraw_light",
- "Tldraw",
- "Tilt",
- "Textlint",
- "Tex",
- "TestTs",
- "TestJsx",
- "TestJs",
- "Terraform",
- "Template",
- "Templ",
- "Teal",
- "Tcl",
- "Taze",
- "Tauri",
- "Taskfile",
- "Tailwindcss",
- "Table",
- "Systemd_light",
- "Systemd",
- "Syncpack",
- "Swift",
- "Swc",
- "Sway",
- "Swagger",
- "Svgr",
- "Svgo",
- "Svg",
- "Svelte",
- "Supabase",
- "Subtitles",
- "Sublime",
- "Stylus",
- "Stylelint_light",
- "Stylelint",
- "Stylable",
- "Stryker",
- "Storybook",
- "Stitches_light",
- "Stitches",
- "Stencil",
- "Steadybit",
- "Stan",
- "Stackblitz",
- "Spwn",
- "Sonarcloud",
- "Solidity",
- "Snyk",
- "Snowpack_light",
- "Snowpack",
- "Snapcraft",
- "Snakemake",
- "Sml",
- "Smarty",
- "Slug",
- "Slint",
- "Slim",
- "Sketch",
- "Siyuan",
- "Simulink",
- "Silverstripe",
- "Shader",
- "Settings",
- "Serverless",
- "Sequelize",
- "Sentry",
- "Semgrep",
- "SemanticRelease_light",
- "SemanticRelease",
- "Search",
- "Screwdriver",
- "Scons_light",
- "Scons",
- "Scheme",
- "Scala",
- "Sbt",
- "Sass",
- "Sas",
- "San",
- "Salesforce",
- "Rust",
- "Ruff",
- "Ruby",
- "Rubocop_light",
- "Rubocop",
- "Rspec",
- "Routing",
- "Rome",
- "Rollup",
- "Rojo",
- "Rocket",
- "Robots",
- "Robot",
- "Roblox",
- "Roadmap",
- "Riot",
- "Restql",
- "Rescript",
- "RescriptInterface",
- "Replit",
- "Renovate",
- "Remix_light",
- "Remix",
- "Remark",
- "Regedit",
- "ReduxStore",
- "ReduxSelector",
- "ReduxReducer",
- "ReduxAction",
- "Red",
- "Reason",
- "Readme",
- "React_ts",
- "React",
- "Rc",
- "Rbxmk",
- "Razor",
- "Raml",
- "Racket",
- "R",
- "Qwik",
- "Quokka",
- "Quasar",
- "Quarto",
- "Qsharp",
- "Pytorch",
- "Python",
- "PythonMisc",
- "Purescript",
- "Puppeteer",
- "Puppet",
- "Pug",
- "Protractor",
- "Proto",
- "Prompt",
- "Prolog",
- "Processing",
- "Prisma",
- "Prettier",
- "PreCommit",
- "Powershell",
- "Powerpoint",
- "Posthtml",
- "Postcss",
- "Poetry",
- "Pnpm_light",
- "Pnpm",
- "Pm2Ecosystem",
- "Plop",
- "Playwright",
- "Plastic",
- "Pkl",
- "Pipeline",
- "Pinejs",
- "Phpunit",
- "Phpstan",
- "Php_elephant_pink",
- "Php_elephant",
- "Php",
- "PhpCsFixer",
- "Perl",
- "Percy",
- "Pdm",
- "Pdf",
- "Payload_light",
- "Payload",
- "Pawn",
- "Pascal",
- "Parcel",
- "Panda",
- "Palette",
- "Packship",
- "Oxlint",
- "Otne",
- "Openapi_light",
- "Openapi",
- "Opam",
- "Opa",
- "Odin",
- "Ocaml",
- "ObjectiveCpp",
- "ObjectiveC",
- "Nx",
- "Nuxt",
- "Nunjucks",
- "Nuget",
- "Npm",
- "Nodemon",
- "Nodejs_alt",
- "Nodejs",
- "Nix",
- "Nim",
- "NgrxState",
- "NgrxSelectors",
- "NgrxReducer",
- "NgrxEntity",
- "NgrxEffects",
- "NgrxActions",
- "Nginx",
- "Next_light",
- "Next",
- "Netlify_light",
- "Netlify",
- "Nest",
- "Ndst",
- "NanoStaged_light",
- "NanoStaged",
- "Mxml",
- "Moonscript",
- "Moon",
- "Mojo",
- "Modernizr",
- "Mocha",
- "Mjml",
- "Mint",
- "Minecraft",
- "MinecraftFabric",
- "Meson",
- "Mermaid",
- "Merlin",
- "Mercurial",
- "Mdx",
- "Mdsvex",
- "Maven",
- "Matlab",
- "Mathematica",
- "Markojs",
- "Markdownlint",
- "Markdown",
- "Markdoc",
- "MarkdocConfig",
- "Makefile",
- "Lyric",
- "Luau",
- "Lua",
- "Lottie",
- "Lolcode",
- "Log",
- "Lock",
- "Livescript",
- "Lisp",
- "Liquid",
- "Lintstaged",
- "Lilypond",
- "Lighthouse",
- "Lib",
- "Liara",
- "Less",
- "Lerna",
- "Lefthook",
- "Lbx",
- "Latexmk",
- "Laravel",
- "Label",
- "Kusto",
- "Kubernetes",
- "Kotlin",
- "Knip",
- "Kl",
- "Kivy",
- "Keystatic",
- "Key",
- "Kcl",
- "Karma",
- "Just",
- "Jupyter",
- "Julia",
- "Jsr_light",
- "Jsr",
- "Json",
- "Jsconfig",
- "Jinja_light",
- "Jinja",
- "Jest",
- "Jenkins",
- "Javascript",
- "JavascriptMap",
- "Javaclass",
- "Java",
- "Jar",
- "Istanbul",
- "Ionic",
- "Installation",
- "Imba",
- "Image",
- "IfanrCloud",
- "Idris",
- "I18n",
- "Husky",
- "Hurl",
- "Huff_light",
- "Huff",
- "Http",
- "Html",
- "Hpp",
- "Hosts_light",
- "Hosts",
- "Horusec",
- "Hjson",
- "Histoire",
- "Hex",
- "Heroku",
- "Helm",
- "Hcl_light",
- "Hcl",
- "Haxe",
- "Haskell",
- "Harmonix",
- "Hardhat",
- "Handlebars",
- "Haml",
- "Hadolint",
- "Hack",
- "H",
- "Gulp",
- "Grunt",
- "Groovy",
- "Gridsome",
- "Graphql",
- "Graphcool",
- "Grain",
- "GrafanaAlloy",
- "Gradle",
- "Godot",
- "GodotAssets",
- "Go_gopher",
- "Go",
- "GoMod",
- "Gnuplot",
- "Gleam",
- "Gitpod",
- "Gitlab",
- "GithubSponsors",
- "GithubActionsWorkflow",
- "Git",
- "Gemini",
- "GeminiAi",
- "Gemfile",
- "Gcp",
- "Gatsby",
- "Garden",
- "Gamemaker",
- "Fusebox",
- "Fsharp",
- "Freemarker",
- "Foxpro",
- "Fortran",
- "Forth",
- "Font",
- "Folder",
- "FolderZeabur",
- "FolderZeaburOpen",
- "FolderYarn",
- "FolderYarnOpen",
- "FolderWordpress",
- "FolderWordpressOpen",
- "FolderWindows",
- "FolderWindowsOpen",
- "FolderWebpack",
- "FolderWebpackOpen",
- "FolderWakatime",
- "FolderWakatimeOpen",
- "FolderVuexStore",
- "FolderVuexStoreOpen",
- "FolderVuepress",
- "FolderVuepressOpen",
- "FolderVue",
- "FolderVueOpen",
- "FolderVueDirectives",
- "FolderVueDirectivesOpen",
- "FolderVscode",
- "FolderVscodeOpen",
- "FolderVm",
- "FolderVmOpen",
- "FolderViews",
- "FolderViewsOpen",
- "FolderVideo",
- "FolderVideoOpen",
- "FolderVerdaccio",
- "FolderVerdaccioOpen",
- "FolderVercel",
- "FolderVercelOpen",
- "FolderUtils",
- "FolderUtilsOpen",
- "FolderUpload",
- "FolderUploadOpen",
- "FolderUpdate",
- "FolderUpdateOpen",
- "FolderUnity",
- "FolderUnityOpen",
- "FolderUi",
- "FolderUiOpen",
- "FolderTypescript",
- "FolderTypescriptOpen",
- "FolderTurborepo",
- "FolderTurborepoOpen",
- "FolderTrigger",
- "FolderTriggerOpen",
- "FolderTrash",
- "FolderTrashOpen",
- "FolderTools",
- "FolderToolsOpen",
- "FolderTheme",
- "FolderThemeOpen",
- "FolderTest",
- "FolderTestOpen",
- "FolderTerraform",
- "FolderTerraformOpen",
- "FolderTemplate",
- "FolderTemplateOpen",
- "FolderTemp",
- "FolderTempOpen",
- "FolderTelevision",
- "FolderTelevisionOpen",
- "FolderTasks",
- "FolderTasksOpen",
- "FolderTaskfile",
- "FolderTaskfileOpen",
- "FolderTarget",
- "FolderTargetOpen",
- "FolderSyntax",
- "FolderSyntaxOpen",
- "FolderSvg",
- "FolderSvgOpen",
- "FolderSvelte",
- "FolderSvelteOpen",
- "FolderSupabase",
- "FolderSupabaseOpen",
- "FolderSublime",
- "FolderSublimeOpen",
- "FolderStylus",
- "FolderStylusOpen",
- "FolderStorybook",
- "FolderStorybookOpen",
- "FolderStore",
- "FolderStoreOpen",
- "FolderStencil",
- "FolderStencilOpen",
- "FolderStack",
- "FolderStackOpen",
- "FolderSrc",
- "FolderSrcTauri",
- "FolderSrcTauriOpen",
- "FolderSrcOpen",
- "FolderSnippet",
- "FolderSnippetOpen",
- "FolderSnapcraft",
- "FolderSnapcraftOpen",
- "FolderShared",
- "FolderSharedOpen",
- "FolderShader",
- "FolderShaderOpen",
- "FolderServerless",
- "FolderServerlessOpen",
- "FolderServer",
- "FolderServerOpen",
- "FolderSeeders",
- "FolderSeedersOpen",
- "FolderSecure",
- "FolderSecureOpen",
- "FolderScripts",
- "FolderScriptsOpen",
- "FolderScons",
- "FolderSconsOpen",
- "FolderScala",
- "FolderScalaOpen",
- "FolderSass",
- "FolderSassOpen",
- "FolderSandbox",
- "FolderSandboxOpen",
- "FolderRust",
- "FolderRustOpen",
- "FolderRules",
- "FolderRulesOpen",
- "FolderRoutes",
- "FolderRoutesOpen",
- "FolderRobot",
- "FolderRobotOpen",
- "FolderReview",
- "FolderReviewOpen",
- "FolderResource",
- "FolderResourceOpen",
- "FolderResolver",
- "FolderResolverOpen",
- "FolderRepository",
- "FolderRepositoryOpen",
- "FolderReduxReducer",
- "FolderReduxReducerOpen",
- "FolderReactComponents",
- "FolderReactComponentsOpen",
- "FolderQueue",
- "FolderQueueOpen",
- "FolderQuasar",
- "FolderQuasarOpen",
- "FolderPytorch",
- "FolderPytorchOpen",
- "FolderPython",
- "FolderPythonOpen",
- "FolderPublic",
- "FolderPublicOpen",
- "FolderProto",
- "FolderProtoOpen",
- "FolderPrompts",
- "FolderPromptsOpen",
- "FolderProject",
- "FolderProjectOpen",
- "FolderPrivate",
- "FolderPrivateOpen",
- "FolderPrisma",
- "FolderPrismaOpen",
- "FolderPowershell",
- "FolderPowershellOpen",
- "FolderPolicy",
- "FolderPolicyOpen",
- "FolderPlugin",
- "FolderPluginOpen",
- "FolderPlastic",
- "FolderPlasticOpen",
- "FolderPipe",
- "FolderPipeOpen",
- "FolderPhpmailer",
- "FolderPhpmailerOpen",
- "FolderPhp",
- "FolderPhpOpen",
- "FolderPdm",
- "FolderPdmOpen",
- "FolderPdf",
- "FolderPdfOpen",
- "FolderPackages",
- "FolderPackagesOpen",
- "FolderOther",
- "FolderOtherOpen",
- "FolderOrganism",
- "FolderOrganismOpen",
- "FolderOpen",
- "FolderObsidian",
- "FolderObsidianOpen",
- "FolderNuxt",
- "FolderNuxtOpen",
- "FolderNode",
- "FolderNodeOpen",
- "FolderNgrxStore",
- "FolderNgrxStoreOpen",
- "FolderNext",
- "FolderNextOpen",
- "FolderNetlify",
- "FolderNetlifyOpen",
- "FolderMoon",
- "FolderMoonOpen",
- "FolderMolecule",
- "FolderMoleculeOpen",
- "FolderMojo",
- "FolderMojoOpen",
- "FolderMock",
- "FolderMockOpen",
- "FolderMobile",
- "FolderMobileOpen",
- "FolderMjml",
- "FolderMjmlOpen",
- "FolderMiddleware",
- "FolderMiddlewareOpen",
- "FolderMeta",
- "FolderMetaOpen",
- "FolderMessages",
- "FolderMessagesOpen",
- "FolderMercurial",
- "FolderMercurialOpen",
- "FolderMarkdown",
- "FolderMarkdownOpen",
- "FolderMappings",
- "FolderMappingsOpen",
- "FolderMail",
- "FolderMailOpen",
- "FolderMacos",
- "FolderMacosOpen",
- "FolderLuau",
- "FolderLuauOpen",
- "FolderLua",
- "FolderLuaOpen",
- "FolderLottie",
- "FolderLottieOpen",
- "FolderLog",
- "FolderLogOpen",
- "FolderLiquibase",
- "FolderLiquibaseOpen",
- "FolderLinux",
- "FolderLinuxOpen",
- "FolderLink",
- "FolderLinkOpen",
- "FolderLib",
- "FolderLibOpen",
- "FolderLess",
- "FolderLessOpen",
- "FolderLefthook",
- "FolderLefthookOpen",
- "FolderLayout",
- "FolderLayoutOpen",
- "FolderKusto",
- "FolderKustoOpen",
- "FolderKubernetes",
- "FolderKubernetesOpen",
- "FolderKeys",
- "FolderKeysOpen",
- "FolderJupyter",
- "FolderJupyterOpen",
- "FolderJson",
- "FolderJsonOpen",
- "FolderJob",
- "FolderJobOpen",
- "FolderJinja_light",
- "FolderJinja",
- "FolderJinjaOpen_light",
- "FolderJinjaOpen",
- "FolderJavascript",
- "FolderJavascriptOpen",
- "FolderJava",
- "FolderJavaOpen",
- "FolderIos",
- "FolderIosOpen",
- "FolderInterface",
- "FolderInterfaceOpen",
- "FolderInterceptor",
- "FolderInterceptorOpen",
- "FolderIntellij_light",
- "FolderIntellij",
- "FolderIntellijOpen_light",
- "FolderIntellijOpen",
- "FolderInclude",
- "FolderIncludeOpen",
- "FolderImport",
- "FolderImportOpen",
- "FolderImages",
- "FolderImagesOpen",
- "FolderI18n",
- "FolderI18nOpen",
- "FolderHusky",
- "FolderHuskyOpen",
- "FolderHook",
- "FolderHookOpen",
- "FolderHome",
- "FolderHomeOpen",
- "FolderHelper",
- "FolderHelperOpen",
- "FolderHelm",
- "FolderHelmOpen",
- "FolderGulp",
- "FolderGulpOpen",
- "FolderGuard",
- "FolderGuardOpen",
- "FolderGraphql",
- "FolderGraphqlOpen",
- "FolderGradle",
- "FolderGradleOpen",
- "FolderGodot",
- "FolderGodotOpen",
- "FolderGlobal",
- "FolderGlobalOpen",
- "FolderGitlab",
- "FolderGitlabOpen",
- "FolderGithub",
- "FolderGithubOpen",
- "FolderGitea",
- "FolderGiteaOpen",
- "FolderGit",
- "FolderGitOpen",
- "FolderGhWorkflows",
- "FolderGhWorkflowsOpen",
- "FolderGenerator",
- "FolderGeneratorOpen",
- "FolderGamemaker",
- "FolderGamemakerOpen",
- "FolderFunctions",
- "FolderFunctionsOpen",
- "FolderForgejo",
- "FolderForgejoOpen",
- "FolderFont",
- "FolderFontOpen",
- "FolderFlutter",
- "FolderFlutterOpen",
- "FolderFlow",
- "FolderFlowOpen",
- "FolderFirestore",
- "FolderFirestoreOpen",
- "FolderFirebase",
- "FolderFirebaseOpen",
- "FolderFavicon",
- "FolderFaviconOpen",
- "FolderFastlane",
- "FolderFastlaneOpen",
- "FolderExport",
- "FolderExportOpen",
- "FolderExpo",
- "FolderExpoOpen",
- "FolderExamples",
- "FolderExamplesOpen",
- "FolderEvent",
- "FolderEventOpen",
- "FolderError",
- "FolderErrorOpen",
- "FolderEnvironment",
- "FolderEnvironmentOpen",
- "FolderEnum",
- "FolderEnumOpen",
- "FolderElement",
- "FolderElementOpen",
- "FolderDump",
- "FolderDumpOpen",
- "FolderDrizzle",
- "FolderDrizzleOpen",
- "FolderDownload",
- "FolderDownloadOpen",
- "FolderDocs",
- "FolderDocsOpen",
- "FolderDocker",
- "FolderDockerOpen",
- "FolderDist",
- "FolderDistOpen",
- "FolderDirective",
- "FolderDirectiveOpen",
- "FolderDesktop",
- "FolderDesktopOpen",
- "FolderDelta",
- "FolderDeltaOpen",
- "FolderDecorators",
- "FolderDecoratorsOpen",
- "FolderDebug",
- "FolderDebugOpen",
- "FolderDatabase",
- "FolderDatabaseOpen",
- "FolderDart",
- "FolderDartOpen",
- "FolderCypress",
- "FolderCypressOpen",
- "FolderCustom",
- "FolderCustomOpen",
- "FolderCursor_light",
- "FolderCursor",
- "FolderCursorOpen_light",
- "FolderCursorOpen",
- "FolderCss",
- "FolderCssOpen",
- "FolderCoverage",
- "FolderCoverageOpen",
- "FolderCore",
- "FolderCoreOpen",
- "FolderController",
- "FolderControllerOpen",
- "FolderContract",
- "FolderContractOpen",
- "FolderContext",
- "FolderContextOpen",
- "FolderContent",
- "FolderContentOpen",
- "FolderContainer",
- "FolderContainerOpen",
- "FolderConstant",
- "FolderConstantOpen",
- "FolderConsole",
- "FolderConsoleOpen",
- "FolderConnection",
- "FolderConnectionOpen",
- "FolderConfig",
- "FolderConfigOpen",
- "FolderComponents",
- "FolderComponentsOpen",
- "FolderCommand",
- "FolderCommandOpen",
- "FolderCobol",
- "FolderCobolOpen",
- "FolderCluster",
- "FolderClusterOpen",
- "FolderCloudflare",
- "FolderCloudflareOpen",
- "FolderCloudFunctions",
- "FolderCloudFunctionsOpen",
- "FolderCline",
- "FolderClineOpen",
- "FolderClient",
- "FolderClientOpen",
- "FolderClaude",
- "FolderClaudeOpen",
- "FolderClass",
- "FolderClassOpen",
- "FolderCircleci",
- "FolderCircleciOpen",
- "FolderCi",
- "FolderCiOpen",
- "FolderChangesets",
- "FolderChangesetsOpen",
- "FolderCart",
- "FolderCartOpen",
- "FolderBuildkite",
- "FolderBuildkiteOpen",
- "FolderBower",
- "FolderBowerOpen",
- "FolderBloc",
- "FolderBlocOpen",
- "FolderBlender",
- "FolderBlenderOpen",
- "FolderBicep",
- "FolderBicepOpen",
- "FolderBibliography",
- "FolderBibliographyOpen",
- "FolderBenchmark",
- "FolderBenchmarkOpen",
- "FolderBatch",
- "FolderBatchOpen",
- "FolderBase",
- "FolderBaseOpen",
- "FolderBackup",
- "FolderBackupOpen",
- "FolderAzurePipelines",
- "FolderAzurePipelinesOpen",
- "FolderAws",
- "FolderAwsOpen",
- "FolderAurelia",
- "FolderAureliaOpen",
- "FolderAudio",
- "FolderAudioOpen",
- "FolderAttachment",
- "FolderAttachmentOpen",
- "FolderAtom",
- "FolderAtomOpen",
- "FolderAstro",
- "FolderAstroOpen",
- "FolderArchive",
- "FolderArchiveOpen",
- "FolderApp",
- "FolderAppOpen",
- "FolderApollo",
- "FolderApolloOpen",
- "FolderApi",
- "FolderApiOpen",
- "FolderAnsible",
- "FolderAnsibleOpen",
- "FolderAnimation",
- "FolderAnimationOpen",
- "FolderAngular",
- "FolderAngularOpen",
- "FolderAndroid",
- "FolderAndroidOpen",
- "FolderAdmin",
- "FolderAdminOpen",
- "Flow",
- "Flash",
- "Firebase",
- "Figma",
- "Favicon",
- "Fastlane",
- "Exe",
- "Excalidraw",
- "Eslint",
- "Esbuild",
- "Erlang",
- "Epub",
- "Ember",
- "Email",
- "Elm",
- "Elixir",
- "Ejs",
- "Editorconfig",
- "Edge",
- "Dune",
- "Duc",
- "Drone_light",
- "Drone",
- "Drizzle",
- "Drawio",
- "Dotjs",
- "Document",
- "DoctexInstaller",
- "Docker",
- "Dll",
- "Django",
- "Disc",
- "Dinophp",
- "Diff",
- "Dhall",
- "DependenciesUpdate",
- "Dependabot",
- "Deno_light",
- "Deno",
- "Denizenscript",
- "Deepsource",
- "Database",
- "Dart_generated",
- "Dart",
- "D",
- "Cypress",
- "Cursor_light",
- "Cursor",
- "Cuda",
- "Cucumber",
- "Css",
- "CssMap",
- "Csharp",
- "Crystal_light",
- "Crystal",
- "Credits",
- "Craco",
- "Cpp",
- "Copilot_light",
- "Copilot",
- "Controller",
- "Contributing",
- "Context",
- "Contentlayer",
- "Console",
- "Conduct",
- "Concourse",
- "Commitlint",
- "Commitizen",
- "Command",
- "Coloredpetrinets",
- "Coldfusion",
- "Coffee",
- "CoderabbitAi",
- "Codeowners",
- "Codecov",
- "CodeClimate_light",
- "CodeClimate",
- "Coconut",
- "Cobol",
- "Coala",
- "Cmake",
- "Cloudfoundry",
- "Clojure",
- "Cline",
- "Claude",
- "Clangd",
- "Citation",
- "Circleci_light",
- "Circleci",
- "Chrome",
- "Chess_light",
- "Chess",
- "Changelog",
- "Certificate",
- "Cds",
- "Cbx",
- "Capnp",
- "Capacitor",
- "Cake",
- "Cairo",
- "Cadence",
- "Caddy",
- "Cabal",
- "C3",
- "C",
- "Bun_light",
- "Bun",
- "Buildkite",
- "Bucklescript",
- "Buck",
- "Bruno",
- "Browserlist_light",
- "Browserlist",
- "Brainfuck",
- "Bower",
- "Blitz",
- "Blink_light",
- "Blink",
- "Blender",
- "Bithound",
- "Bitbucket",
- "Biome",
- "Bicep",
- "BibtexStyle",
- "Bibliography",
- "BenchTs",
- "BenchJsx",
- "BenchJs",
- "Beancount",
- "Bbx",
- "Bazel",
- "Ballerina",
- "Babel",
- "Azure",
- "AzurePipelines",
- "Autoit",
- "Autohotkey",
- "Auto_light",
- "Auto",
- "Authors",
- "Aurelia",
- "Audio",
- "Astyle",
- "Astro",
- "AstroConfig",
- "Assembly",
- "Asciidoc",
- "Arduino",
- "Architecture",
- "Appveyor",
- "AppsScript",
- "Applescript",
- "Apollo",
- "Apiblueprint",
- "Antlr",
- "Angular",
- "Android",
- "Amplify",
- "Advpl",
- "Adonis",
- "AdobeSwc",
- "AdobePhotoshop_light",
- "AdobePhotoshop",
- "AdobeIllustrator_light",
- "AdobeIllustrator",
- "Ada",
- "Actionscript",
- "Abc",
- "Abap",
- "3d",
-] as const
-
-export type IconName = (typeof iconNames)[number]
diff --git a/packages/app/src/ui/icon-button.tsx b/packages/app/src/ui/icon-button.tsx
deleted file mode 100644
index 7e9e3e6e2..000000000
--- a/packages/app/src/ui/icon-button.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import { Button as KobalteButton } from "@kobalte/core/button"
-import { splitProps } from "solid-js"
-import type { ComponentProps, JSX } from "solid-js"
-
-export interface IconButtonProps extends ComponentProps {
- variant?: "primary" | "secondary" | "outline" | "ghost"
- size?: "xs" | "sm" | "md" | "lg"
- children: JSX.Element
-}
-
-export function IconButton(props: IconButtonProps) {
- const [local, others] = splitProps(props, ["variant", "size", "class", "classList"])
- return (
-
- )
-}
diff --git a/packages/app/src/ui/icon.tsx b/packages/app/src/ui/icon.tsx
deleted file mode 100644
index 35c77c078..000000000
--- a/packages/app/src/ui/icon.tsx
+++ /dev/null
@@ -1,155 +0,0 @@
-import { splitProps, type ComponentProps } from "solid-js"
-
-export interface IconProps extends ComponentProps<"svg"> {
- name: keyof typeof icons
- size?: number
-}
-
-// prettier-ignore
-const icons = {
- close: '',
- menu: ' ',
- "chevron-right": '',
- "chevron-left": '',
- "chevron-down": '',
- "chevron-up": '',
- "chevron-down-square": '',
- "chevron-up-square": '',
- "chevron-right-square": '',
- "chevron-left-square": '',
- settings: '',
- globe: '',
- github: '',
- hammer: '',
- "avatar-square": '',
- slash: '',
- robot: '',
- cloud: '',
- "file-text": '',
- file: '',
- "file-checkmark": '',
- "file-code": '',
- "file-important": '',
- "file-minus": '',
- "file-plus": '',
- files: '',
- "file-zip": '',
- jpg: '',
- pdf: '',
- png: '',
- gif: '',
- archive: '',
- sun: '',
- moon: '',
- monitor: '',
- command: '',
- link: '',
- share: '',
- branch: '',
- logout: '',
- login: '',
- keys: '',
- key: '',
- info: '',
- warning: '',
- checkmark: '',
- "checkmark-square": '',
- plus: '',
- minus: '',
- undo: '',
- merge: '',
- redo: '',
- refresh: '',
- rotate: '',
- "arrow-left": '',
- "arrow-down": '',
- "arrow-right": '',
- "arrow-up": '',
- enter: '',
- trash: '',
- package: '',
- box: '',
- lock: '',
- unlocked: '',
- activity: '',
- asterisk: '',
- bell: '',
- "bell-off": '',
- bolt: '',
- bookmark: '',
- brain: '',
- browser: '',
- "browser-cursor": '',
- bug: '',
- "carat-down": '',
- "carat-left": '',
- "carat-right": '',
- "carat-up": '',
- cards: '',
- chart: '',
- "check-circle": '',
- checklist: '',
- "checklist-cards": '',
- lab: '',
- circle: '',
- "circle-dotted": '',
- clipboard: '',
- clock: '',
- "close-circle": '',
- terminal: '',
- code: '',
- components: '',
- copy: '',
- cpu: '',
- dashboard: '',
- transfer: '',
- devices: '',
- diamond: '',
- dice: '',
- discord: '',
- dots: '',
- expand: '',
- droplet: '',
- "chevron-double-down": '',
- "chevron-double-left": '',
- "chevron-double-right": '',
- "chevron-double-up": '',
- "speech-bubble": '',
- message: '',
- annotation: '',
- square: '',
- "pull-request": '',
- pencil: '',
- sparkles: '',
- photo: '',
- columns: '',
- "open-pane": '',
- "close-pane": '',
- "file-search": '',
- "folder-search": '',
- search: '',
- "web-search": '',
- loading: '',
- mic: '',
- } as const
-
-export function Icon(props: IconProps) {
- const [local, others] = splitProps(props, ["name", "size", "class", "classList"])
- const size = local.size ?? 24
- return (
-
- )
-}
diff --git a/packages/app/src/ui/index.ts b/packages/app/src/ui/index.ts
deleted file mode 100644
index d3f24a192..000000000
--- a/packages/app/src/ui/index.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-export { Button, type ButtonProps } from "./button"
-export {
- Collapsible,
- type CollapsibleProps,
- type CollapsibleTriggerProps,
- type CollapsibleContentProps,
-} from "./collapsible"
-export { FileIcon, type FileIconProps } from "./file-icon"
-export { Icon, type IconProps } from "./icon"
-export { IconButton, type IconButtonProps } from "./icon-button"
-export { Link, type LinkProps } from "./link"
-export { Logo, type LogoProps } from "./logo"
-export { Tooltip, type TooltipProps } from "./tooltip"
diff --git a/packages/app/src/ui/link.tsx b/packages/app/src/ui/link.tsx
deleted file mode 100644
index 461206d58..000000000
--- a/packages/app/src/ui/link.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { A } from "@solidjs/router"
-import { splitProps } from "solid-js"
-import type { ComponentProps } from "solid-js"
-
-export interface LinkProps extends ComponentProps {
- variant?: "primary" | "secondary" | "ghost"
- size?: "sm" | "md" | "lg"
-}
-
-export function Link(props: LinkProps) {
- const [, others] = splitProps(props, ["variant", "size", "class"])
- return
-}
diff --git a/packages/app/src/ui/logo.tsx b/packages/app/src/ui/logo.tsx
deleted file mode 100644
index 0bbaba835..000000000
--- a/packages/app/src/ui/logo.tsx
+++ /dev/null
@@ -1,125 +0,0 @@
-import type { ComponentProps } from "solid-js"
-
-export interface LogoProps extends ComponentProps<"svg"> {
- variant?: "mark" | "full" | "ornate"
- size?: number
-}
-
-export function Logo(props: LogoProps) {
- const { variant = "mark", size = 64, ...others } = props
-
- if (variant === "mark") {
- return (
-
-
-
-
- )
- }
-
- if (variant === "full") {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
- )
- }
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
-}
diff --git a/packages/app/src/ui/tabs.tsx b/packages/app/src/ui/tabs.tsx
deleted file mode 100644
index d82d3327a..000000000
--- a/packages/app/src/ui/tabs.tsx
+++ /dev/null
@@ -1,71 +0,0 @@
-import { Tabs as KobalteTabs } from "@kobalte/core/tabs"
-import { splitProps } from "solid-js"
-import type { ComponentProps, ParentProps } from "solid-js"
-
-export interface TabsProps extends ComponentProps {}
-export interface TabsListProps extends ComponentProps {}
-export interface TabsTriggerProps extends ComponentProps {}
-export interface TabsContentProps extends ComponentProps {}
-
-function TabsRoot(props: TabsProps) {
- return
-}
-
-function TabsList(props: TabsListProps) {
- const [local, others] = splitProps(props, ["class"])
- return (
-
- )
-}
-
-function TabsTrigger(props: ParentProps) {
- const [local, others] = splitProps(props, ["class", "children"])
- return (
-
- {local.children}
-
- )
-}
-
-function TabsContent(props: ParentProps) {
- const [local, others] = splitProps(props, ["class", "children"])
- return (
-
- {local.children}
-
- )
-}
-
-export const Tabs = Object.assign(TabsRoot, {
- List: TabsList,
- Trigger: TabsTrigger,
- Content: TabsContent,
-})
diff --git a/packages/app/src/ui/tooltip.tsx b/packages/app/src/ui/tooltip.tsx
deleted file mode 100644
index 8bf1dc429..000000000
--- a/packages/app/src/ui/tooltip.tsx
+++ /dev/null
@@ -1,58 +0,0 @@
-import { Tooltip as KobalteTooltip } from "@kobalte/core/tooltip"
-import { children, createEffect, createSignal, splitProps } from "solid-js"
-import type { ComponentProps } from "solid-js"
-
-export interface TooltipProps extends ComponentProps {
- value: string | (() => string)
- class?: string
-}
-
-export function Tooltip(props: TooltipProps) {
- const [open, setOpen] = createSignal(false)
- const [local, others] = splitProps(props, ["class", "children"])
-
- const c = children(() => local.children)
-
- createEffect(() => {
- const childElements = c()
- if (childElements instanceof HTMLElement) {
- childElements.addEventListener("focus", () => setOpen(true))
- childElements.addEventListener("blur", () => setOpen(false))
- } else if (Array.isArray(childElements)) {
- for (const child of childElements) {
- if (child instanceof HTMLElement) {
- child.addEventListener("focus", () => setOpen(true))
- child.addEventListener("blur", () => setOpen(false))
- }
- }
- }
- })
-
- return (
-
-
- {c()}
-
-
-
- {typeof others.value === "function" ? others.value() : others.value}
-
-
-
-
- )
-}
diff --git a/packages/app/src/utils/binary.ts b/packages/app/src/utils/binary.ts
deleted file mode 100644
index 3d8f61851..000000000
--- a/packages/app/src/utils/binary.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-export namespace Binary {
- export function search(array: T[], id: string, compare: (item: T) => string): { found: boolean; index: number } {
- let left = 0
- let right = array.length - 1
-
- while (left <= right) {
- const mid = Math.floor((left + right) / 2)
- const midId = compare(array[mid])
-
- if (midId === id) {
- return { found: true, index: mid }
- } else if (midId < id) {
- left = mid + 1
- } else {
- right = mid - 1
- }
- }
-
- return { found: false, index: left }
- }
-
- export function insert(array: T[], item: T, compare: (item: T) => string): T[] {
- const id = compare(item)
- let left = 0
- let right = array.length
-
- while (left < right) {
- const mid = Math.floor((left + right) / 2)
- const midId = compare(array[mid])
-
- if (midId < id) {
- left = mid + 1
- } else {
- right = mid
- }
- }
-
- array.splice(left, 0, item)
- return array
- }
-}
diff --git a/packages/app/src/utils/dom.ts b/packages/app/src/utils/dom.ts
deleted file mode 100644
index 4f3724c7c..000000000
--- a/packages/app/src/utils/dom.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-export function getCharacterOffsetInLine(lineElement: Element, targetNode: Node, offset: number): number {
- const r = document.createRange()
- r.selectNodeContents(lineElement)
- r.setEnd(targetNode, offset)
- return r.toString().length
-}
-
-export function getNodeOffsetInLine(lineElement: Element, charIndex: number): { node: Node; offset: number } | null {
- const walker = document.createTreeWalker(lineElement, NodeFilter.SHOW_TEXT, null)
- let remaining = Math.max(0, charIndex)
- let lastText: Node | null = null
- let lastLen = 0
- let node: Node | null
- while ((node = walker.nextNode())) {
- const len = node.textContent?.length || 0
- lastText = node
- lastLen = len
- if (remaining <= len) return { node, offset: remaining }
- remaining -= len
- }
- if (lastText) return { node: lastText, offset: lastLen }
- if (lineElement.firstChild) return { node: lineElement.firstChild, offset: 0 }
- return null
-}
-
-export function getSelectionInContainer(
- container: HTMLElement,
-): { sl: number; sch: number; el: number; ech: number } | null {
- const s = window.getSelection()
- if (!s || s.rangeCount === 0) return null
- const r = s.getRangeAt(0)
- const sc = r.startContainer
- const ec = r.endContainer
- const getLineElement = (n: Node) =>
- (n.nodeType === Node.TEXT_NODE ? (n.parentElement as Element) : (n as Element))?.closest(".line")
- const sle = getLineElement(sc)
- const ele = getLineElement(ec)
- if (!sle || !ele) return null
- if (!container.contains(sle as Node) || !container.contains(ele as Node)) return null
- const cc = container.querySelector("code") as HTMLElement | null
- if (!cc) return null
- const lines = Array.from(cc.querySelectorAll(".line"))
- const sli = lines.indexOf(sle as Element)
- const eli = lines.indexOf(ele as Element)
- if (sli === -1 || eli === -1) return null
- const sl = sli + 1
- const el = eli + 1
- const sch = getCharacterOffsetInLine(sle as Element, sc, r.startOffset)
- const ech = getCharacterOffsetInLine(ele as Element, ec, r.endOffset)
- return { sl, sch, el, ech }
-}
diff --git a/packages/app/src/utils/index.ts b/packages/app/src/utils/index.ts
deleted file mode 100644
index ae89e4417..000000000
--- a/packages/app/src/utils/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from "./path"
-export * from "./dom"
diff --git a/packages/app/src/utils/path.ts b/packages/app/src/utils/path.ts
deleted file mode 100644
index 9c026ca41..000000000
--- a/packages/app/src/utils/path.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export function getFilename(path: string) {
- const parts = path.split("/")
- return parts[parts.length - 1]
-}
-
-export function getDirectory(path: string) {
- const parts = path.split("/")
- return parts.slice(0, parts.length - 1).join("/")
-}
-
-export function getFileExtension(path: string) {
- const parts = path.split(".")
- return parts[parts.length - 1]
-}
diff --git a/packages/app/src/utils/speech.ts b/packages/app/src/utils/speech.ts
deleted file mode 100644
index 921e0a159..000000000
--- a/packages/app/src/utils/speech.ts
+++ /dev/null
@@ -1,302 +0,0 @@
-import { createSignal, onCleanup } from "solid-js"
-
-// Minimal types to avoid relying on non-standard DOM typings
-type RecognitionResult = {
- 0: { transcript: string }
- isFinal: boolean
-}
-
-type RecognitionEvent = {
- results: RecognitionResult[]
- resultIndex: number
-}
-
-interface Recognition {
- continuous: boolean
- interimResults: boolean
- lang: string
- start: () => void
- stop: () => void
- onresult: ((e: RecognitionEvent) => void) | null
- onerror: ((e: { error: string }) => void) | null
- onend: (() => void) | null
- onstart: (() => void) | null
-}
-
-const COMMIT_DELAY = 250
-
-const appendSegment = (base: string, addition: string) => {
- const trimmed = addition.trim()
- if (!trimmed) return base
- if (!base) return trimmed
- const needsSpace = /\S$/.test(base) && !/^[,.;!?]/.test(trimmed)
- return `${base}${needsSpace ? " " : ""}${trimmed}`
-}
-
-const extractSuffix = (committed: string, hypothesis: string) => {
- const cleanHypothesis = hypothesis.trim()
- if (!cleanHypothesis) return ""
- const baseTokens = committed.trim() ? committed.trim().split(/\s+/) : []
- const hypothesisTokens = cleanHypothesis.split(/\s+/)
- let index = 0
- while (
- index < baseTokens.length &&
- index < hypothesisTokens.length &&
- baseTokens[index] === hypothesisTokens[index]
- ) {
- index += 1
- }
- if (index < baseTokens.length) return ""
- return hypothesisTokens.slice(index).join(" ")
-}
-
-export function createSpeechRecognition(opts?: {
- lang?: string
- onFinal?: (text: string) => void
- onInterim?: (text: string) => void
-}) {
- const hasSupport =
- typeof window !== "undefined" &&
- Boolean((window as any).webkitSpeechRecognition || (window as any).SpeechRecognition)
-
- const [isRecording, setIsRecording] = createSignal(false)
- const [committed, setCommitted] = createSignal("")
- const [interim, setInterim] = createSignal("")
-
- let recognition: Recognition | undefined
- let shouldContinue = false
- let committedText = ""
- let sessionCommitted = ""
- let pendingHypothesis = ""
- let lastInterimSuffix = ""
- let shrinkCandidate: string | undefined
- let commitTimer: number | undefined
-
- const cancelPendingCommit = () => {
- if (commitTimer === undefined) return
- clearTimeout(commitTimer)
- commitTimer = undefined
- }
-
- const commitSegment = (segment: string) => {
- const nextCommitted = appendSegment(committedText, segment)
- if (nextCommitted === committedText) return
- committedText = nextCommitted
- setCommitted(committedText)
- if (opts?.onFinal) opts.onFinal(segment.trim())
- }
-
- const promotePending = () => {
- if (!pendingHypothesis) return
- const suffix = extractSuffix(sessionCommitted, pendingHypothesis)
- if (!suffix) {
- pendingHypothesis = ""
- return
- }
- sessionCommitted = appendSegment(sessionCommitted, suffix)
- commitSegment(suffix)
- pendingHypothesis = ""
- lastInterimSuffix = ""
- shrinkCandidate = undefined
- setInterim("")
- if (opts?.onInterim) opts.onInterim("")
- }
-
- const applyInterim = (suffix: string, hypothesis: string) => {
- cancelPendingCommit()
- pendingHypothesis = hypothesis
- lastInterimSuffix = suffix
- shrinkCandidate = undefined
- setInterim(suffix)
- if (opts?.onInterim) {
- opts.onInterim(suffix ? appendSegment(committedText, suffix) : "")
- }
- if (!suffix) return
- const snapshot = hypothesis
- commitTimer = window.setTimeout(() => {
- if (pendingHypothesis !== snapshot) return
- const currentSuffix = extractSuffix(sessionCommitted, pendingHypothesis)
- if (!currentSuffix) return
- sessionCommitted = appendSegment(sessionCommitted, currentSuffix)
- commitSegment(currentSuffix)
- pendingHypothesis = ""
- lastInterimSuffix = ""
- shrinkCandidate = undefined
- setInterim("")
- if (opts?.onInterim) opts.onInterim("")
- }, COMMIT_DELAY)
- }
-
- if (hasSupport) {
- const Ctor: new () => Recognition = (window as any).webkitSpeechRecognition || (window as any).SpeechRecognition
-
- recognition = new Ctor()
- recognition.continuous = false
- recognition.interimResults = true
- recognition.lang = opts?.lang || (typeof navigator !== "undefined" ? navigator.language : "en-US")
-
- recognition.onresult = (event: RecognitionEvent) => {
- if (!event.results.length) return
-
- let aggregatedFinal = ""
- let latestHypothesis = ""
-
- for (let i = 0; i < event.results.length; i += 1) {
- const result = event.results[i]
- const transcript = (result[0]?.transcript || "").trim()
- if (!transcript) continue
- if (result.isFinal) {
- aggregatedFinal = appendSegment(aggregatedFinal, transcript)
- } else {
- latestHypothesis = transcript
- }
- }
-
- if (aggregatedFinal) {
- cancelPendingCommit()
- const finalSuffix = extractSuffix(sessionCommitted, aggregatedFinal)
- if (finalSuffix) {
- sessionCommitted = appendSegment(sessionCommitted, finalSuffix)
- commitSegment(finalSuffix)
- }
- pendingHypothesis = ""
- lastInterimSuffix = ""
- shrinkCandidate = undefined
- setInterim("")
- if (opts?.onInterim) opts.onInterim("")
- return
- }
-
- cancelPendingCommit()
-
- if (!latestHypothesis) {
- shrinkCandidate = undefined
- applyInterim("", "")
- return
- }
-
- const suffix = extractSuffix(sessionCommitted, latestHypothesis)
-
- if (!suffix) {
- if (!lastInterimSuffix) {
- shrinkCandidate = undefined
- applyInterim("", latestHypothesis)
- return
- }
- if (shrinkCandidate === "") {
- applyInterim("", latestHypothesis)
- return
- }
- shrinkCandidate = ""
- pendingHypothesis = latestHypothesis
- return
- }
-
- if (lastInterimSuffix && suffix.length < lastInterimSuffix.length) {
- if (shrinkCandidate === suffix) {
- applyInterim(suffix, latestHypothesis)
- return
- }
- shrinkCandidate = suffix
- pendingHypothesis = latestHypothesis
- return
- }
-
- shrinkCandidate = undefined
- applyInterim(suffix, latestHypothesis)
- }
-
- recognition.onerror = (e: { error: string }) => {
- cancelPendingCommit()
- lastInterimSuffix = ""
- shrinkCandidate = undefined
- if (e.error === "no-speech" && shouldContinue) {
- setInterim("")
- if (opts?.onInterim) opts.onInterim("")
- setTimeout(() => {
- try {
- recognition?.start()
- } catch {}
- }, 150)
- return
- }
- shouldContinue = false
- setIsRecording(false)
- }
-
- recognition.onstart = () => {
- sessionCommitted = ""
- pendingHypothesis = ""
- cancelPendingCommit()
- lastInterimSuffix = ""
- shrinkCandidate = undefined
- setInterim("")
- if (opts?.onInterim) opts.onInterim("")
- setIsRecording(true)
- }
-
- recognition.onend = () => {
- cancelPendingCommit()
- lastInterimSuffix = ""
- shrinkCandidate = undefined
- setIsRecording(false)
- if (shouldContinue) {
- setTimeout(() => {
- try {
- recognition?.start()
- } catch {}
- }, 150)
- }
- }
- }
-
- const start = () => {
- if (!recognition) return
- shouldContinue = true
- sessionCommitted = ""
- pendingHypothesis = ""
- cancelPendingCommit()
- lastInterimSuffix = ""
- shrinkCandidate = undefined
- setInterim("")
- try {
- recognition.start()
- } catch {}
- }
-
- const stop = () => {
- if (!recognition) return
- shouldContinue = false
- promotePending()
- cancelPendingCommit()
- lastInterimSuffix = ""
- shrinkCandidate = undefined
- setInterim("")
- if (opts?.onInterim) opts.onInterim("")
- try {
- recognition.stop()
- } catch {}
- }
-
- onCleanup(() => {
- shouldContinue = false
- promotePending()
- cancelPendingCommit()
- lastInterimSuffix = ""
- shrinkCandidate = undefined
- setInterim("")
- if (opts?.onInterim) opts.onInterim("")
- try {
- recognition?.stop()
- } catch {}
- })
-
- return {
- isSupported: () => hasSupport,
- isRecording,
- committed,
- interim,
- start,
- stop,
- }
-}
diff --git a/packages/app/sst-env.d.ts b/packages/app/sst-env.d.ts
deleted file mode 100644
index b6a7e9066..000000000
--- a/packages/app/sst-env.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-/* This file is auto-generated by SST. Do not edit. */
-/* tslint:disable */
-/* eslint-disable */
-/* deno-fmt-ignore-file */
-
-///
-
-import "sst"
-export {}
\ No newline at end of file
diff --git a/packages/app/tsconfig.json b/packages/app/tsconfig.json
deleted file mode 100644
index d86b8ca46..000000000
--- a/packages/app/tsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "$schema": "https://json.schemastore.org/tsconfig",
- "extends": "@tsconfig/bun/tsconfig.json",
- "compilerOptions": {
- "jsx": "preserve",
- "jsxImportSource": "solid-js",
- "types": ["vite/client"],
- "lib": ["DOM", "DOM.Iterable"],
- "paths": {
- "@/*": ["./src/*"]
- }
- }
-}
diff --git a/packages/app/vite.config.ts b/packages/app/vite.config.ts
deleted file mode 100644
index e0a62f5f5..000000000
--- a/packages/app/vite.config.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { defineConfig } from "vite"
-import solidPlugin from "vite-plugin-solid"
-import tailwindcss from "@tailwindcss/vite"
-import path from "path"
-import { iconsSpritesheet } from "vite-plugin-icons-spritesheet"
-import { generateThemeCSS } from "./scripts/vite-theme-plugin"
-
-export default defineConfig({
- resolve: {
- alias: {
- "@": path.resolve(__dirname, "./src"),
- },
- },
- plugins: [
- generateThemeCSS(),
- tailwindcss(),
- solidPlugin(),
- iconsSpritesheet({
- withTypes: true,
- inputDir: "src/assets/file-icons",
- outputDir: "src/ui/file-icons",
- formatter: "prettier",
- }),
- ],
- server: {
- host: "0.0.0.0",
- port: 3000,
- },
- build: {
- target: "esnext",
- },
-})
diff --git a/packages/desktop/.gitignore b/packages/desktop/.gitignore
new file mode 100644
index 000000000..4a20d55a7
--- /dev/null
+++ b/packages/desktop/.gitignore
@@ -0,0 +1 @@
+src/assets/theme.css
diff --git a/packages/desktop/AGENTS.md b/packages/desktop/AGENTS.md
new file mode 100644
index 000000000..3137bddc2
--- /dev/null
+++ b/packages/desktop/AGENTS.md
@@ -0,0 +1,28 @@
+# Agent Guidelines for @opencode/app
+
+## Build/Test Commands
+
+- **Development**: `bun run dev` (starts Vite dev server on port 3000)
+- **Build**: `bun run build` (production build)
+- **Preview**: `bun run serve` (preview production build)
+- **Validation**: Use `bun run typecheck` only - do not build or run project for validation
+- **Testing**: Do not create or run automated tests
+
+## Code Style
+
+- **Framework**: SolidJS with TypeScript
+- **Imports**: Use `@/` alias for src/ directory (e.g., `import Button from "@/ui/button"`)
+- **Formatting**: Prettier configured with semicolons disabled, 120 character line width
+- **Components**: Use function declarations, splitProps for component props
+- **Types**: Define interfaces for component props, avoid `any` type
+- **CSS**: TailwindCSS with custom CSS variables theme system
+- **Naming**: PascalCase for components, camelCase for variables/functions, snake_case for file names
+- **File Structure**: UI primitives in `/ui/`, higher-level components in `/components/`, pages in `/pages/`, providers in `/providers/`
+
+## Key Dependencies
+
+- SolidJS, @solidjs/router, @kobalte/core (UI primitives)
+- TailwindCSS 4.x with @tailwindcss/vite
+- Custom theme system with CSS variables
+
+No special rules files found.
diff --git a/packages/desktop/README.md b/packages/desktop/README.md
new file mode 100644
index 000000000..6a1764536
--- /dev/null
+++ b/packages/desktop/README.md
@@ -0,0 +1,34 @@
+## Usage
+
+Those templates dependencies are maintained via [pnpm](https://pnpm.io) via `pnpm up -Lri`.
+
+This is the reason you see a `pnpm-lock.yaml`. That being said, any package manager will work. This file can be safely be removed once you clone a template.
+
+```bash
+$ npm install # or pnpm install or yarn install
+```
+
+### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs)
+
+## Available Scripts
+
+In the project directory, you can run:
+
+### `npm run dev` or `npm start`
+
+Runs the app in the development mode.
+Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
+
+The page will reload if you make edits.
+
+### `npm run build`
+
+Builds the app for production to the `dist` folder.
+It correctly bundles Solid in production mode and optimizes the build for the best performance.
+
+The build is minified and the filenames include the hashes.
+Your app is ready to be deployed!
+
+## Deployment
+
+You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.)
diff --git a/packages/desktop/index.html b/packages/desktop/index.html
new file mode 100644
index 000000000..1ee727ff4
--- /dev/null
+++ b/packages/desktop/index.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+ opencode
+
+
+
+
+
+
+
+
diff --git a/packages/desktop/package.json b/packages/desktop/package.json
new file mode 100644
index 000000000..04a0ce801
--- /dev/null
+++ b/packages/desktop/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "@opencode/desktop",
+ "version": "0.14.1",
+ "description": "",
+ "type": "module",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "vite build",
+ "serve": "vite preview",
+ "typecheck": "tsc --noEmit"
+ },
+ "license": "MIT",
+ "devDependencies": {
+ "@tailwindcss/vite": "4.1.11",
+ "@types/luxon": "3.7.1",
+ "@types/node": "catalog:",
+ "typescript": "catalog:",
+ "vite": "^6.0.0",
+ "vite-plugin-icons-spritesheet": "3.0.1",
+ "vite-plugin-solid": "^2.11.6"
+ },
+ "dependencies": {
+ "@kobalte/core": "catalog:",
+ "@opencode-ai/sdk": "workspace:*",
+ "@shikijs/transformers": "3.9.2",
+ "@solid-primitives/event-bus": "1.1.2",
+ "@solid-primitives/resize-observer": "2.1.3",
+ "@solid-primitives/scroll": "2.1.3",
+ "@solidjs/router": "0.15.3",
+ "@thisbeyond/solid-dnd": "0.7.5",
+ "diff": "8.0.2",
+ "fuzzysort": "catalog:",
+ "luxon": "catalog:",
+ "marked": "16.2.0",
+ "marked-shiki": "1.2.1",
+ "remeda": "catalog:",
+ "shiki": "3.9.2",
+ "solid-js": "catalog:",
+ "solid-list": "0.3.0",
+ "tailwindcss": "4.1.11",
+ "virtua": "0.42.3"
+ },
+ "prettier": {
+ "semi": false,
+ "printWidth": 120
+ }
+}
diff --git a/packages/desktop/scripts/vite-theme-plugin.ts b/packages/desktop/scripts/vite-theme-plugin.ts
new file mode 100644
index 000000000..1241ffcd7
--- /dev/null
+++ b/packages/desktop/scripts/vite-theme-plugin.ts
@@ -0,0 +1,163 @@
+import type { Plugin } from "vite"
+import { readdir, readFile, writeFile } from "fs/promises"
+import { join, resolve } from "path"
+
+interface ThemeDefinition {
+ $schema?: string
+ defs?: Record
+ theme: Record
+}
+
+interface ResolvedThemeColor {
+ dark: string
+ light: string
+}
+
+class ColorResolver {
+ private colors: Map = new Map()
+ private visited: Set = new Set()
+
+ constructor(defs: Record = {}, theme: Record = {}) {
+ Object.entries(defs).forEach(([key, value]) => {
+ this.colors.set(key, value)
+ })
+ Object.entries(theme).forEach(([key, value]) => {
+ this.colors.set(key, value)
+ })
+ }
+
+ resolveColor(key: string, value: any): ResolvedThemeColor {
+ if (this.visited.has(key)) {
+ throw new Error(`Circular reference detected for color ${key}`)
+ }
+
+ this.visited.add(key)
+
+ try {
+ if (typeof value === "string") {
+ if (value === "none") return { dark: value, light: value }
+ if (value.startsWith("#")) {
+ return { dark: value.toLowerCase(), light: value.toLowerCase() }
+ }
+ const resolved = this.resolveReference(value)
+ return { dark: resolved, light: resolved }
+ }
+ if (typeof value === "object" && value !== null) {
+ const dark = this.resolveColorValue(value.dark || value.light || "#000000")
+ const light = this.resolveColorValue(value.light || value.dark || "#FFFFFF")
+ return { dark, light }
+ }
+ return { dark: "#000000", light: "#FFFFFF" }
+ } finally {
+ this.visited.delete(key)
+ }
+ }
+
+ private resolveColorValue(value: any): string {
+ if (typeof value === "string") {
+ if (value === "none") return value
+ if (value.startsWith("#")) {
+ return value.toLowerCase()
+ }
+ return this.resolveReference(value)
+ }
+ return value
+ }
+
+ private resolveReference(ref: string): string {
+ const colorValue = this.colors.get(ref)
+ if (colorValue === undefined) {
+ throw new Error(`Color reference '${ref}' not found`)
+ }
+ if (typeof colorValue === "string") {
+ if (colorValue === "none") return colorValue
+ if (colorValue.startsWith("#")) {
+ return colorValue.toLowerCase()
+ }
+ return this.resolveReference(colorValue)
+ }
+ return colorValue
+ }
+}
+
+function kebabCase(str: string): string {
+ return str.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase()
+}
+
+function parseTheme(themeData: ThemeDefinition): Record {
+ const resolver = new ColorResolver(themeData.defs, themeData.theme)
+ const colors: Record = {}
+ Object.entries(themeData.theme).forEach(([key, value]) => {
+ colors[key] = resolver.resolveColor(key, value)
+ })
+ return colors
+}
+
+async function loadThemes(): Promise>> {
+ const themesDir = resolve(__dirname, "../../tui/internal/theme/themes")
+ const files = await readdir(themesDir)
+ const themes: Record> = {}
+
+ for (const file of files) {
+ if (!file.endsWith(".json")) continue
+
+ const themeName = file.replace(".json", "")
+ const themeData: ThemeDefinition = JSON.parse(await readFile(join(themesDir, file), "utf-8"))
+
+ themes[themeName] = parseTheme(themeData)
+ }
+
+ return themes
+}
+
+function generateCSS(themes: Record>): string {
+ let css = `/* Auto-generated theme CSS - Do not edit manually */\n:root {\n`
+
+ const defaultTheme = themes["opencode"] || Object.values(themes)[0]
+ if (defaultTheme) {
+ Object.entries(defaultTheme).forEach(([key, color]) => {
+ const cssVar = `--theme-${kebabCase(key)}`
+ css += ` ${cssVar}: ${color.light};\n`
+ })
+ }
+ css += `}\n\n`
+
+ Object.entries(themes).forEach(([themeName, colors]) => {
+ css += `[data-theme="${themeName}"][data-dark="false"] {\n`
+ Object.entries(colors).forEach(([key, color]) => {
+ const cssVar = `--theme-${kebabCase(key)}`
+ css += ` ${cssVar}: ${color.light};\n`
+ })
+ css += `}\n\n`
+
+ css += `[data-theme="${themeName}"][data-dark="true"] {\n`
+ Object.entries(colors).forEach(([key, color]) => {
+ const cssVar = `--theme-${kebabCase(key)}`
+ css += ` ${cssVar}: ${color.dark};\n`
+ })
+ css += `}\n\n`
+ })
+
+ return css
+}
+
+export function generateThemeCSS(): Plugin {
+ return {
+ name: "generate-theme-css",
+ async buildStart() {
+ try {
+ console.log("Generating theme CSS...")
+ const themes = await loadThemes()
+ const css = generateCSS(themes)
+
+ const outputPath = resolve(__dirname, "../src/assets/theme.css")
+ await writeFile(outputPath, css)
+
+ console.log(`✅ Generated theme CSS with ${Object.keys(themes).length} themes`)
+ console.log(` Output: ${outputPath}`)
+ } catch (error) {
+ throw new Error(`Theme CSS generation failed: ${error}`)
+ }
+ },
+ }
+}
diff --git a/packages/desktop/src/assets/favicon.svg b/packages/desktop/src/assets/favicon.svg
new file mode 100644
index 000000000..3c81bbdb4
--- /dev/null
+++ b/packages/desktop/src/assets/favicon.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/3d.svg b/packages/desktop/src/assets/file-icons/3d.svg
new file mode 100644
index 000000000..0fdb93497
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/3d.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/abap.svg b/packages/desktop/src/assets/file-icons/abap.svg
new file mode 100644
index 000000000..0a9b08390
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/abap.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/abc.svg b/packages/desktop/src/assets/file-icons/abc.svg
new file mode 100644
index 000000000..7c7cb534c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/abc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/actionscript.svg b/packages/desktop/src/assets/file-icons/actionscript.svg
new file mode 100644
index 000000000..31d91f2db
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/actionscript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ada.svg b/packages/desktop/src/assets/file-icons/ada.svg
new file mode 100644
index 000000000..613646fa1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ada.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/adobe-illustrator.svg b/packages/desktop/src/assets/file-icons/adobe-illustrator.svg
new file mode 100644
index 000000000..e0a334bb4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/adobe-illustrator.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/adobe-illustrator_light.svg b/packages/desktop/src/assets/file-icons/adobe-illustrator_light.svg
new file mode 100644
index 000000000..326d2315a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/adobe-illustrator_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/adobe-photoshop.svg b/packages/desktop/src/assets/file-icons/adobe-photoshop.svg
new file mode 100644
index 000000000..27033d9af
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/adobe-photoshop.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/adobe-photoshop_light.svg b/packages/desktop/src/assets/file-icons/adobe-photoshop_light.svg
new file mode 100644
index 000000000..d2bfb4d25
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/adobe-photoshop_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/adobe-swc.svg b/packages/desktop/src/assets/file-icons/adobe-swc.svg
new file mode 100644
index 000000000..fda5c181a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/adobe-swc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/adonis.svg b/packages/desktop/src/assets/file-icons/adonis.svg
new file mode 100644
index 000000000..f854f018e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/adonis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/advpl.svg b/packages/desktop/src/assets/file-icons/advpl.svg
new file mode 100644
index 000000000..54e493b0f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/advpl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/amplify.svg b/packages/desktop/src/assets/file-icons/amplify.svg
new file mode 100644
index 000000000..89f42120b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/amplify.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/android.svg b/packages/desktop/src/assets/file-icons/android.svg
new file mode 100644
index 000000000..c44608d4b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/android.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/angular.svg b/packages/desktop/src/assets/file-icons/angular.svg
new file mode 100644
index 000000000..a28075e93
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/angular.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/antlr.svg b/packages/desktop/src/assets/file-icons/antlr.svg
new file mode 100644
index 000000000..42f43bb30
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/antlr.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/apiblueprint.svg b/packages/desktop/src/assets/file-icons/apiblueprint.svg
new file mode 100644
index 000000000..08462673a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/apiblueprint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/apollo.svg b/packages/desktop/src/assets/file-icons/apollo.svg
new file mode 100644
index 000000000..6de6aa26b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/apollo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/applescript.svg b/packages/desktop/src/assets/file-icons/applescript.svg
new file mode 100644
index 000000000..d883e90da
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/applescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/apps-script.svg b/packages/desktop/src/assets/file-icons/apps-script.svg
new file mode 100644
index 000000000..ed20f1f13
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/apps-script.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/appveyor.svg b/packages/desktop/src/assets/file-icons/appveyor.svg
new file mode 100644
index 000000000..0dd0a5cb0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/appveyor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/architecture.svg b/packages/desktop/src/assets/file-icons/architecture.svg
new file mode 100644
index 000000000..ee7de1823
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/architecture.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/arduino.svg b/packages/desktop/src/assets/file-icons/arduino.svg
new file mode 100644
index 000000000..053dc1267
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/arduino.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/asciidoc.svg b/packages/desktop/src/assets/file-icons/asciidoc.svg
new file mode 100644
index 000000000..82215c7d4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/asciidoc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/assembly.svg b/packages/desktop/src/assets/file-icons/assembly.svg
new file mode 100644
index 000000000..33a056643
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/assembly.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/astro-config.svg b/packages/desktop/src/assets/file-icons/astro-config.svg
new file mode 100644
index 000000000..1c12c5e8b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/astro-config.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/astro.svg b/packages/desktop/src/assets/file-icons/astro.svg
new file mode 100644
index 000000000..fa67feeff
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/astro.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/astyle.svg b/packages/desktop/src/assets/file-icons/astyle.svg
new file mode 100644
index 000000000..6643432b5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/astyle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/audio.svg b/packages/desktop/src/assets/file-icons/audio.svg
new file mode 100644
index 000000000..74f43c461
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/audio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/aurelia.svg b/packages/desktop/src/assets/file-icons/aurelia.svg
new file mode 100644
index 000000000..f7b67f023
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/aurelia.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/authors.svg b/packages/desktop/src/assets/file-icons/authors.svg
new file mode 100644
index 000000000..88618a701
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/authors.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/auto.svg b/packages/desktop/src/assets/file-icons/auto.svg
new file mode 100644
index 000000000..41bd15de4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/auto.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/auto_light.svg b/packages/desktop/src/assets/file-icons/auto_light.svg
new file mode 100644
index 000000000..5f2451b23
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/auto_light.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/autohotkey.svg b/packages/desktop/src/assets/file-icons/autohotkey.svg
new file mode 100644
index 000000000..4ecd7a3ef
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/autohotkey.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/autoit.svg b/packages/desktop/src/assets/file-icons/autoit.svg
new file mode 100644
index 000000000..350519f25
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/autoit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/azure-pipelines.svg b/packages/desktop/src/assets/file-icons/azure-pipelines.svg
new file mode 100644
index 000000000..f460d2079
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/azure-pipelines.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/azure.svg b/packages/desktop/src/assets/file-icons/azure.svg
new file mode 100644
index 000000000..2330f87bb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/azure.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/babel.svg b/packages/desktop/src/assets/file-icons/babel.svg
new file mode 100644
index 000000000..244ae36a1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/babel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ballerina.svg b/packages/desktop/src/assets/file-icons/ballerina.svg
new file mode 100644
index 000000000..3c1341d77
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ballerina.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bazel.svg b/packages/desktop/src/assets/file-icons/bazel.svg
new file mode 100644
index 000000000..b38a90c59
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bazel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bbx.svg b/packages/desktop/src/assets/file-icons/bbx.svg
new file mode 100644
index 000000000..002d26047
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bbx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/beancount.svg b/packages/desktop/src/assets/file-icons/beancount.svg
new file mode 100644
index 000000000..905ff22b0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/beancount.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bench-js.svg b/packages/desktop/src/assets/file-icons/bench-js.svg
new file mode 100644
index 000000000..c2ba0ca6e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bench-js.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bench-jsx.svg b/packages/desktop/src/assets/file-icons/bench-jsx.svg
new file mode 100644
index 000000000..ed2b9d434
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bench-jsx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bench-ts.svg b/packages/desktop/src/assets/file-icons/bench-ts.svg
new file mode 100644
index 000000000..f9c2af9e0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bench-ts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bibliography.svg b/packages/desktop/src/assets/file-icons/bibliography.svg
new file mode 100644
index 000000000..ad6baa6ef
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bibliography.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bibtex-style.svg b/packages/desktop/src/assets/file-icons/bibtex-style.svg
new file mode 100644
index 000000000..24d121d72
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bibtex-style.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bicep.svg b/packages/desktop/src/assets/file-icons/bicep.svg
new file mode 100644
index 000000000..dc959e7be
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bicep.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/biome.svg b/packages/desktop/src/assets/file-icons/biome.svg
new file mode 100644
index 000000000..2f255fc2b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/biome.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bitbucket.svg b/packages/desktop/src/assets/file-icons/bitbucket.svg
new file mode 100644
index 000000000..ba572f09f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bitbucket.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bithound.svg b/packages/desktop/src/assets/file-icons/bithound.svg
new file mode 100644
index 000000000..1eea4deae
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bithound.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/blender.svg b/packages/desktop/src/assets/file-icons/blender.svg
new file mode 100644
index 000000000..f55d6bc7d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/blender.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/blink.svg b/packages/desktop/src/assets/file-icons/blink.svg
new file mode 100644
index 000000000..441228857
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/blink.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/blink_light.svg b/packages/desktop/src/assets/file-icons/blink_light.svg
new file mode 100644
index 000000000..380d8c762
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/blink_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/blitz.svg b/packages/desktop/src/assets/file-icons/blitz.svg
new file mode 100644
index 000000000..147ccc1a7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/blitz.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bower.svg b/packages/desktop/src/assets/file-icons/bower.svg
new file mode 100644
index 000000000..9ffb06acc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bower.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/brainfuck.svg b/packages/desktop/src/assets/file-icons/brainfuck.svg
new file mode 100644
index 000000000..6a2422c9b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/brainfuck.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/browserlist.svg b/packages/desktop/src/assets/file-icons/browserlist.svg
new file mode 100644
index 000000000..d2e0d0a38
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/browserlist.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/browserlist_light.svg b/packages/desktop/src/assets/file-icons/browserlist_light.svg
new file mode 100644
index 000000000..fa34de6a1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/browserlist_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bruno.svg b/packages/desktop/src/assets/file-icons/bruno.svg
new file mode 100644
index 000000000..88bebeae4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bruno.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/buck.svg b/packages/desktop/src/assets/file-icons/buck.svg
new file mode 100644
index 000000000..a5a31bc46
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/buck.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bucklescript.svg b/packages/desktop/src/assets/file-icons/bucklescript.svg
new file mode 100644
index 000000000..d67a7843d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bucklescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/buildkite.svg b/packages/desktop/src/assets/file-icons/buildkite.svg
new file mode 100644
index 000000000..32a499555
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/buildkite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bun.svg b/packages/desktop/src/assets/file-icons/bun.svg
new file mode 100644
index 000000000..cc3620479
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bun.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/bun_light.svg b/packages/desktop/src/assets/file-icons/bun_light.svg
new file mode 100644
index 000000000..d49bac7b2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/bun_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/c.svg b/packages/desktop/src/assets/file-icons/c.svg
new file mode 100644
index 000000000..5bb84b6a9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/c.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/c3.svg b/packages/desktop/src/assets/file-icons/c3.svg
new file mode 100644
index 000000000..ff30caab2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/c3.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/cabal.svg b/packages/desktop/src/assets/file-icons/cabal.svg
new file mode 100644
index 000000000..014335bf7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cabal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/caddy.svg b/packages/desktop/src/assets/file-icons/caddy.svg
new file mode 100644
index 000000000..997c11962
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/caddy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/cadence.svg b/packages/desktop/src/assets/file-icons/cadence.svg
new file mode 100644
index 000000000..25338baae
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cadence.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/cairo.svg b/packages/desktop/src/assets/file-icons/cairo.svg
new file mode 100644
index 000000000..591b2328a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cairo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/cake.svg b/packages/desktop/src/assets/file-icons/cake.svg
new file mode 100644
index 000000000..ed6b09f4d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cake.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/capacitor.svg b/packages/desktop/src/assets/file-icons/capacitor.svg
new file mode 100644
index 000000000..2a48c5843
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/capacitor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/capnp.svg b/packages/desktop/src/assets/file-icons/capnp.svg
new file mode 100644
index 000000000..c74aa9f01
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/capnp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/cbx.svg b/packages/desktop/src/assets/file-icons/cbx.svg
new file mode 100644
index 000000000..716426ad7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cbx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/cds.svg b/packages/desktop/src/assets/file-icons/cds.svg
new file mode 100644
index 000000000..3c7fed81e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cds.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/certificate.svg b/packages/desktop/src/assets/file-icons/certificate.svg
new file mode 100644
index 000000000..64ddcf3b6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/certificate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/changelog.svg b/packages/desktop/src/assets/file-icons/changelog.svg
new file mode 100644
index 000000000..b4b1a0717
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/changelog.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/chess.svg b/packages/desktop/src/assets/file-icons/chess.svg
new file mode 100644
index 000000000..85bede301
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/chess.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/chess_light.svg b/packages/desktop/src/assets/file-icons/chess_light.svg
new file mode 100644
index 000000000..250fb8cbf
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/chess_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/chrome.svg b/packages/desktop/src/assets/file-icons/chrome.svg
new file mode 100644
index 000000000..0208e2704
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/chrome.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/circleci.svg b/packages/desktop/src/assets/file-icons/circleci.svg
new file mode 100644
index 000000000..464dace08
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/circleci.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/circleci_light.svg b/packages/desktop/src/assets/file-icons/circleci_light.svg
new file mode 100644
index 000000000..cd45d352c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/circleci_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/citation.svg b/packages/desktop/src/assets/file-icons/citation.svg
new file mode 100644
index 000000000..eb7fcaa92
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/citation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/clangd.svg b/packages/desktop/src/assets/file-icons/clangd.svg
new file mode 100644
index 000000000..f6742e9ae
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/clangd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/claude.svg b/packages/desktop/src/assets/file-icons/claude.svg
new file mode 100644
index 000000000..fa01860fd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/claude.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/cline.svg b/packages/desktop/src/assets/file-icons/cline.svg
new file mode 100644
index 000000000..c41f59d83
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/clojure.svg b/packages/desktop/src/assets/file-icons/clojure.svg
new file mode 100644
index 000000000..1b22aed22
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/clojure.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/cloudfoundry.svg b/packages/desktop/src/assets/file-icons/cloudfoundry.svg
new file mode 100644
index 000000000..3251ca469
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cloudfoundry.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/cmake.svg b/packages/desktop/src/assets/file-icons/cmake.svg
new file mode 100644
index 000000000..aa217964f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cmake.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/coala.svg b/packages/desktop/src/assets/file-icons/coala.svg
new file mode 100644
index 000000000..1e84b8f5e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/coala.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/cobol.svg b/packages/desktop/src/assets/file-icons/cobol.svg
new file mode 100644
index 000000000..220b0ab48
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cobol.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/coconut.svg b/packages/desktop/src/assets/file-icons/coconut.svg
new file mode 100644
index 000000000..98355a662
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/coconut.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/code-climate.svg b/packages/desktop/src/assets/file-icons/code-climate.svg
new file mode 100644
index 000000000..97cbb4e8f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/code-climate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/code-climate_light.svg b/packages/desktop/src/assets/file-icons/code-climate_light.svg
new file mode 100644
index 000000000..dd18ba52b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/code-climate_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/codecov.svg b/packages/desktop/src/assets/file-icons/codecov.svg
new file mode 100644
index 000000000..9a8d4eb7b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/codecov.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/codeowners.svg b/packages/desktop/src/assets/file-icons/codeowners.svg
new file mode 100644
index 000000000..553c60f5a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/codeowners.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/coderabbit-ai.svg b/packages/desktop/src/assets/file-icons/coderabbit-ai.svg
new file mode 100644
index 000000000..5d1b6c9c2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/coderabbit-ai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/coffee.svg b/packages/desktop/src/assets/file-icons/coffee.svg
new file mode 100644
index 000000000..f81b65c79
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/coffee.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/coldfusion.svg b/packages/desktop/src/assets/file-icons/coldfusion.svg
new file mode 100644
index 000000000..d018b6652
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/coldfusion.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/coloredpetrinets.svg b/packages/desktop/src/assets/file-icons/coloredpetrinets.svg
new file mode 100644
index 000000000..bd612618e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/coloredpetrinets.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/command.svg b/packages/desktop/src/assets/file-icons/command.svg
new file mode 100644
index 000000000..b5a7913d2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/command.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/commitizen.svg b/packages/desktop/src/assets/file-icons/commitizen.svg
new file mode 100644
index 000000000..2467d2c71
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/commitizen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/commitlint.svg b/packages/desktop/src/assets/file-icons/commitlint.svg
new file mode 100644
index 000000000..c42144a42
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/commitlint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/concourse.svg b/packages/desktop/src/assets/file-icons/concourse.svg
new file mode 100644
index 000000000..c34f23eb8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/concourse.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/conduct.svg b/packages/desktop/src/assets/file-icons/conduct.svg
new file mode 100644
index 000000000..97eb6fc54
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/conduct.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/console.svg b/packages/desktop/src/assets/file-icons/console.svg
new file mode 100644
index 000000000..75f90b733
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/console.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/contentlayer.svg b/packages/desktop/src/assets/file-icons/contentlayer.svg
new file mode 100644
index 000000000..441f6904e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/contentlayer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/context.svg b/packages/desktop/src/assets/file-icons/context.svg
new file mode 100644
index 000000000..1b8200ed4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/context.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/contributing.svg b/packages/desktop/src/assets/file-icons/contributing.svg
new file mode 100644
index 000000000..13666a020
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/contributing.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/controller.svg b/packages/desktop/src/assets/file-icons/controller.svg
new file mode 100644
index 000000000..9f99264b9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/controller.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/copilot.svg b/packages/desktop/src/assets/file-icons/copilot.svg
new file mode 100644
index 000000000..24e89af0b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/copilot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/copilot_light.svg b/packages/desktop/src/assets/file-icons/copilot_light.svg
new file mode 100644
index 000000000..9bc56ea84
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/copilot_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/cpp.svg b/packages/desktop/src/assets/file-icons/cpp.svg
new file mode 100644
index 000000000..16534acac
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cpp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/craco.svg b/packages/desktop/src/assets/file-icons/craco.svg
new file mode 100644
index 000000000..96ba45846
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/craco.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/credits.svg b/packages/desktop/src/assets/file-icons/credits.svg
new file mode 100644
index 000000000..b67c55a8c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/credits.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/crystal.svg b/packages/desktop/src/assets/file-icons/crystal.svg
new file mode 100644
index 000000000..e3796bfa5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/crystal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/crystal_light.svg b/packages/desktop/src/assets/file-icons/crystal_light.svg
new file mode 100644
index 000000000..ca387f4e9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/crystal_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/csharp.svg b/packages/desktop/src/assets/file-icons/csharp.svg
new file mode 100644
index 000000000..02b1be3e1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/csharp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/css-map.svg b/packages/desktop/src/assets/file-icons/css-map.svg
new file mode 100644
index 000000000..55b74c088
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/css-map.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/css.svg b/packages/desktop/src/assets/file-icons/css.svg
new file mode 100644
index 000000000..1acad1be2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/css.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/cucumber.svg b/packages/desktop/src/assets/file-icons/cucumber.svg
new file mode 100644
index 000000000..052fd2955
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cucumber.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/cuda.svg b/packages/desktop/src/assets/file-icons/cuda.svg
new file mode 100644
index 000000000..cc57a60fc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cuda.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/cursor.svg b/packages/desktop/src/assets/file-icons/cursor.svg
new file mode 100644
index 000000000..b754147ff
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cursor.svg
@@ -0,0 +1 @@
+
diff --git a/packages/desktop/src/assets/file-icons/cursor_light.svg b/packages/desktop/src/assets/file-icons/cursor_light.svg
new file mode 100644
index 000000000..f65b6461a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cursor_light.svg
@@ -0,0 +1 @@
+
diff --git a/packages/desktop/src/assets/file-icons/cypress.svg b/packages/desktop/src/assets/file-icons/cypress.svg
new file mode 100644
index 000000000..35274d3a0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/cypress.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/d.svg b/packages/desktop/src/assets/file-icons/d.svg
new file mode 100644
index 000000000..3207725da
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/d.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/dart.svg b/packages/desktop/src/assets/file-icons/dart.svg
new file mode 100644
index 000000000..04b22d09c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/dart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/dart_generated.svg b/packages/desktop/src/assets/file-icons/dart_generated.svg
new file mode 100644
index 000000000..8f64f5f02
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/dart_generated.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/database.svg b/packages/desktop/src/assets/file-icons/database.svg
new file mode 100644
index 000000000..b10723460
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/database.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/deepsource.svg b/packages/desktop/src/assets/file-icons/deepsource.svg
new file mode 100644
index 000000000..d70fd467c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/deepsource.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/denizenscript.svg b/packages/desktop/src/assets/file-icons/denizenscript.svg
new file mode 100644
index 000000000..2debb9da2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/denizenscript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/deno.svg b/packages/desktop/src/assets/file-icons/deno.svg
new file mode 100644
index 000000000..344a12e40
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/deno.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/deno_light.svg b/packages/desktop/src/assets/file-icons/deno_light.svg
new file mode 100644
index 000000000..ee82ea7c7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/deno_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/dependabot.svg b/packages/desktop/src/assets/file-icons/dependabot.svg
new file mode 100644
index 000000000..3b101a12f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/dependabot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/dependencies-update.svg b/packages/desktop/src/assets/file-icons/dependencies-update.svg
new file mode 100644
index 000000000..b85ad9e5f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/dependencies-update.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/dhall.svg b/packages/desktop/src/assets/file-icons/dhall.svg
new file mode 100644
index 000000000..0be94119d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/dhall.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/diff.svg b/packages/desktop/src/assets/file-icons/diff.svg
new file mode 100644
index 000000000..ea3068c60
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/diff.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/dinophp.svg b/packages/desktop/src/assets/file-icons/dinophp.svg
new file mode 100644
index 000000000..8e6ef29af
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/dinophp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/disc.svg b/packages/desktop/src/assets/file-icons/disc.svg
new file mode 100644
index 000000000..b0d74dc25
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/disc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/django.svg b/packages/desktop/src/assets/file-icons/django.svg
new file mode 100644
index 000000000..64c9ee339
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/django.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/dll.svg b/packages/desktop/src/assets/file-icons/dll.svg
new file mode 100644
index 000000000..0646cbb03
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/dll.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/docker.svg b/packages/desktop/src/assets/file-icons/docker.svg
new file mode 100644
index 000000000..7d6a1a525
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/docker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/doctex-installer.svg b/packages/desktop/src/assets/file-icons/doctex-installer.svg
new file mode 100644
index 000000000..5bdb4439f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/doctex-installer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/document.svg b/packages/desktop/src/assets/file-icons/document.svg
new file mode 100644
index 000000000..a717956b7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/document.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/dotjs.svg b/packages/desktop/src/assets/file-icons/dotjs.svg
new file mode 100644
index 000000000..5ac893c6a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/dotjs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/drawio.svg b/packages/desktop/src/assets/file-icons/drawio.svg
new file mode 100644
index 000000000..8ef1bcb72
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/drawio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/drizzle.svg b/packages/desktop/src/assets/file-icons/drizzle.svg
new file mode 100644
index 000000000..72f1b21aa
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/drizzle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/drone.svg b/packages/desktop/src/assets/file-icons/drone.svg
new file mode 100644
index 000000000..5e3082d31
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/drone.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/drone_light.svg b/packages/desktop/src/assets/file-icons/drone_light.svg
new file mode 100644
index 000000000..ce3ad253b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/drone_light.svg
@@ -0,0 +1,4 @@
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/duc.svg b/packages/desktop/src/assets/file-icons/duc.svg
new file mode 100644
index 000000000..1d85b34ad
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/duc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/dune.svg b/packages/desktop/src/assets/file-icons/dune.svg
new file mode 100644
index 000000000..1a35e7001
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/dune.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/edge.svg b/packages/desktop/src/assets/file-icons/edge.svg
new file mode 100644
index 000000000..298b55890
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/edge.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/editorconfig.svg b/packages/desktop/src/assets/file-icons/editorconfig.svg
new file mode 100644
index 000000000..ba528993d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/editorconfig.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ejs.svg b/packages/desktop/src/assets/file-icons/ejs.svg
new file mode 100644
index 000000000..6ead40eba
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ejs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/elixir.svg b/packages/desktop/src/assets/file-icons/elixir.svg
new file mode 100644
index 000000000..d40f90b47
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/elixir.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/elm.svg b/packages/desktop/src/assets/file-icons/elm.svg
new file mode 100644
index 000000000..c17b74d7d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/elm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/email.svg b/packages/desktop/src/assets/file-icons/email.svg
new file mode 100644
index 000000000..a603e1477
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/email.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ember.svg b/packages/desktop/src/assets/file-icons/ember.svg
new file mode 100644
index 000000000..c16cef13c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ember.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/epub.svg b/packages/desktop/src/assets/file-icons/epub.svg
new file mode 100644
index 000000000..98f11d490
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/epub.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/erlang.svg b/packages/desktop/src/assets/file-icons/erlang.svg
new file mode 100644
index 000000000..41025d6dc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/erlang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/esbuild.svg b/packages/desktop/src/assets/file-icons/esbuild.svg
new file mode 100644
index 000000000..e682d6b10
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/esbuild.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/eslint.svg b/packages/desktop/src/assets/file-icons/eslint.svg
new file mode 100644
index 000000000..54fe8cc22
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/eslint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/excalidraw.svg b/packages/desktop/src/assets/file-icons/excalidraw.svg
new file mode 100644
index 000000000..c1e1bca9c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/excalidraw.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/exe.svg b/packages/desktop/src/assets/file-icons/exe.svg
new file mode 100644
index 000000000..dde947d80
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/exe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/fastlane.svg b/packages/desktop/src/assets/file-icons/fastlane.svg
new file mode 100644
index 000000000..44d042fbd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/fastlane.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/favicon.svg b/packages/desktop/src/assets/file-icons/favicon.svg
new file mode 100644
index 000000000..21abf661b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/favicon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/figma.svg b/packages/desktop/src/assets/file-icons/figma.svg
new file mode 100644
index 000000000..db4522bec
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/figma.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/firebase.svg b/packages/desktop/src/assets/file-icons/firebase.svg
new file mode 100644
index 000000000..bb3b63cb8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/firebase.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/flash.svg b/packages/desktop/src/assets/file-icons/flash.svg
new file mode 100644
index 000000000..abd6e01e9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/flash.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/flow.svg b/packages/desktop/src/assets/file-icons/flow.svg
new file mode 100644
index 000000000..05919810f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/flow.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-admin-open.svg b/packages/desktop/src/assets/file-icons/folder-admin-open.svg
new file mode 100644
index 000000000..5e77464ff
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-admin-open.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-admin.svg b/packages/desktop/src/assets/file-icons/folder-admin.svg
new file mode 100644
index 000000000..f8d1ea13c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-admin.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-android-open.svg b/packages/desktop/src/assets/file-icons/folder-android-open.svg
new file mode 100644
index 000000000..cdd8376ff
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-android-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-android.svg b/packages/desktop/src/assets/file-icons/folder-android.svg
new file mode 100644
index 000000000..7ee8a4679
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-android.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-angular-open.svg b/packages/desktop/src/assets/file-icons/folder-angular-open.svg
new file mode 100644
index 000000000..60c604e84
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-angular-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-angular.svg b/packages/desktop/src/assets/file-icons/folder-angular.svg
new file mode 100644
index 000000000..3d8c87d32
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-angular.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-animation-open.svg b/packages/desktop/src/assets/file-icons/folder-animation-open.svg
new file mode 100644
index 000000000..637a3af6b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-animation-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-animation.svg b/packages/desktop/src/assets/file-icons/folder-animation.svg
new file mode 100644
index 000000000..6b5bb691f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-animation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-ansible-open.svg b/packages/desktop/src/assets/file-icons/folder-ansible-open.svg
new file mode 100644
index 000000000..96df458dd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-ansible-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-ansible.svg b/packages/desktop/src/assets/file-icons/folder-ansible.svg
new file mode 100644
index 000000000..f4303155b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-ansible.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-api-open.svg b/packages/desktop/src/assets/file-icons/folder-api-open.svg
new file mode 100644
index 000000000..ac3edb976
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-api-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-api.svg b/packages/desktop/src/assets/file-icons/folder-api.svg
new file mode 100644
index 000000000..bf1d64c54
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-api.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-apollo-open.svg b/packages/desktop/src/assets/file-icons/folder-apollo-open.svg
new file mode 100644
index 000000000..f0febaf95
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-apollo-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-apollo.svg b/packages/desktop/src/assets/file-icons/folder-apollo.svg
new file mode 100644
index 000000000..7eb610781
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-apollo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-app-open.svg b/packages/desktop/src/assets/file-icons/folder-app-open.svg
new file mode 100644
index 000000000..c9da6a7bb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-app-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-app.svg b/packages/desktop/src/assets/file-icons/folder-app.svg
new file mode 100644
index 000000000..d0e37f19d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-app.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-archive-open.svg b/packages/desktop/src/assets/file-icons/folder-archive-open.svg
new file mode 100644
index 000000000..6af2a9f0a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-archive-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-archive.svg b/packages/desktop/src/assets/file-icons/folder-archive.svg
new file mode 100644
index 000000000..b018654b2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-archive.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-astro-open.svg b/packages/desktop/src/assets/file-icons/folder-astro-open.svg
new file mode 100644
index 000000000..282a3ce0a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-astro-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-astro.svg b/packages/desktop/src/assets/file-icons/folder-astro.svg
new file mode 100644
index 000000000..b324019e7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-astro.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-atom-open.svg b/packages/desktop/src/assets/file-icons/folder-atom-open.svg
new file mode 100644
index 000000000..5558d1841
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-atom-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-atom.svg b/packages/desktop/src/assets/file-icons/folder-atom.svg
new file mode 100644
index 000000000..c272f6ecd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-atom.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-attachment-open.svg b/packages/desktop/src/assets/file-icons/folder-attachment-open.svg
new file mode 100644
index 000000000..7a9af66f1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-attachment-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-attachment.svg b/packages/desktop/src/assets/file-icons/folder-attachment.svg
new file mode 100644
index 000000000..3b9992e31
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-attachment.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-audio-open.svg b/packages/desktop/src/assets/file-icons/folder-audio-open.svg
new file mode 100644
index 000000000..6d9b23836
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-audio-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-audio.svg b/packages/desktop/src/assets/file-icons/folder-audio.svg
new file mode 100644
index 000000000..e3d0db3d0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-audio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-aurelia-open.svg b/packages/desktop/src/assets/file-icons/folder-aurelia-open.svg
new file mode 100644
index 000000000..bacae248a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-aurelia-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-aurelia.svg b/packages/desktop/src/assets/file-icons/folder-aurelia.svg
new file mode 100644
index 000000000..61ee59ed3
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-aurelia.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-aws-open.svg b/packages/desktop/src/assets/file-icons/folder-aws-open.svg
new file mode 100644
index 000000000..9e530d4cf
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-aws-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-aws.svg b/packages/desktop/src/assets/file-icons/folder-aws.svg
new file mode 100644
index 000000000..769755d14
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-aws.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-azure-pipelines-open.svg b/packages/desktop/src/assets/file-icons/folder-azure-pipelines-open.svg
new file mode 100644
index 000000000..9253cd5a6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-azure-pipelines-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-azure-pipelines.svg b/packages/desktop/src/assets/file-icons/folder-azure-pipelines.svg
new file mode 100644
index 000000000..a0fef25f9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-azure-pipelines.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-backup-open.svg b/packages/desktop/src/assets/file-icons/folder-backup-open.svg
new file mode 100644
index 000000000..c2914ee22
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-backup-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-backup.svg b/packages/desktop/src/assets/file-icons/folder-backup.svg
new file mode 100644
index 000000000..aa9a6c942
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-backup.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-base-open.svg b/packages/desktop/src/assets/file-icons/folder-base-open.svg
new file mode 100644
index 000000000..e84bc36c1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-base-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-base.svg b/packages/desktop/src/assets/file-icons/folder-base.svg
new file mode 100644
index 000000000..194410083
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-base.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-batch-open.svg b/packages/desktop/src/assets/file-icons/folder-batch-open.svg
new file mode 100644
index 000000000..1db45e181
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-batch-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-batch.svg b/packages/desktop/src/assets/file-icons/folder-batch.svg
new file mode 100644
index 000000000..c44a66bc2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-batch.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-benchmark-open.svg b/packages/desktop/src/assets/file-icons/folder-benchmark-open.svg
new file mode 100644
index 000000000..fa7b3ea60
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-benchmark-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-benchmark.svg b/packages/desktop/src/assets/file-icons/folder-benchmark.svg
new file mode 100644
index 000000000..8291d6847
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-benchmark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-bibliography-open.svg b/packages/desktop/src/assets/file-icons/folder-bibliography-open.svg
new file mode 100644
index 000000000..81b6cde63
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-bibliography-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-bibliography.svg b/packages/desktop/src/assets/file-icons/folder-bibliography.svg
new file mode 100644
index 000000000..aa1e92a91
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-bibliography.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-bicep-open.svg b/packages/desktop/src/assets/file-icons/folder-bicep-open.svg
new file mode 100644
index 000000000..72519ce9d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-bicep-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-bicep.svg b/packages/desktop/src/assets/file-icons/folder-bicep.svg
new file mode 100644
index 000000000..b336ff5be
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-bicep.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-blender-open.svg b/packages/desktop/src/assets/file-icons/folder-blender-open.svg
new file mode 100644
index 000000000..1c80d73a6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-blender-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-blender.svg b/packages/desktop/src/assets/file-icons/folder-blender.svg
new file mode 100644
index 000000000..6f56dce4d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-blender.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-bloc-open.svg b/packages/desktop/src/assets/file-icons/folder-bloc-open.svg
new file mode 100644
index 000000000..8833e5f3c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-bloc-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-bloc.svg b/packages/desktop/src/assets/file-icons/folder-bloc.svg
new file mode 100644
index 000000000..cf08363c2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-bloc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-bower-open.svg b/packages/desktop/src/assets/file-icons/folder-bower-open.svg
new file mode 100644
index 000000000..659f87c98
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-bower-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-bower.svg b/packages/desktop/src/assets/file-icons/folder-bower.svg
new file mode 100644
index 000000000..6bfd65491
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-bower.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-buildkite-open.svg b/packages/desktop/src/assets/file-icons/folder-buildkite-open.svg
new file mode 100644
index 000000000..872db6445
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-buildkite-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-buildkite.svg b/packages/desktop/src/assets/file-icons/folder-buildkite.svg
new file mode 100644
index 000000000..9512b40a8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-buildkite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cart-open.svg b/packages/desktop/src/assets/file-icons/folder-cart-open.svg
new file mode 100644
index 000000000..4471a778e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cart-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cart.svg b/packages/desktop/src/assets/file-icons/folder-cart.svg
new file mode 100644
index 000000000..d19a62790
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-changesets-open.svg b/packages/desktop/src/assets/file-icons/folder-changesets-open.svg
new file mode 100644
index 000000000..c38923331
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-changesets-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-changesets.svg b/packages/desktop/src/assets/file-icons/folder-changesets.svg
new file mode 100644
index 000000000..fc071f48d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-changesets.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-ci-open.svg b/packages/desktop/src/assets/file-icons/folder-ci-open.svg
new file mode 100644
index 000000000..57ac1ba8f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-ci-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-ci.svg b/packages/desktop/src/assets/file-icons/folder-ci.svg
new file mode 100644
index 000000000..4fdc2edea
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-ci.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-circleci-open.svg b/packages/desktop/src/assets/file-icons/folder-circleci-open.svg
new file mode 100644
index 000000000..9e323ff9c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-circleci-open.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-circleci.svg b/packages/desktop/src/assets/file-icons/folder-circleci.svg
new file mode 100644
index 000000000..ef3251857
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-circleci.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-class-open.svg b/packages/desktop/src/assets/file-icons/folder-class-open.svg
new file mode 100644
index 000000000..9c5b1017a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-class-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-class.svg b/packages/desktop/src/assets/file-icons/folder-class.svg
new file mode 100644
index 000000000..8225cf14b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-class.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-claude-open.svg b/packages/desktop/src/assets/file-icons/folder-claude-open.svg
new file mode 100644
index 000000000..1a52afdcc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-claude-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-claude.svg b/packages/desktop/src/assets/file-icons/folder-claude.svg
new file mode 100644
index 000000000..0c85a134a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-claude.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-client-open.svg b/packages/desktop/src/assets/file-icons/folder-client-open.svg
new file mode 100644
index 000000000..ceec8f1e2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-client-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-client.svg b/packages/desktop/src/assets/file-icons/folder-client.svg
new file mode 100644
index 000000000..fbfaee77b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-client.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cline-open.svg b/packages/desktop/src/assets/file-icons/folder-cline-open.svg
new file mode 100644
index 000000000..67ef7a261
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cline-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cline.svg b/packages/desktop/src/assets/file-icons/folder-cline.svg
new file mode 100644
index 000000000..8fec96d74
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cloud-functions-open.svg b/packages/desktop/src/assets/file-icons/folder-cloud-functions-open.svg
new file mode 100644
index 000000000..b3ce0e4c6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cloud-functions-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cloud-functions.svg b/packages/desktop/src/assets/file-icons/folder-cloud-functions.svg
new file mode 100644
index 000000000..8dac84a48
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cloud-functions.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cloudflare-open.svg b/packages/desktop/src/assets/file-icons/folder-cloudflare-open.svg
new file mode 100644
index 000000000..d7022abf8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cloudflare-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cloudflare.svg b/packages/desktop/src/assets/file-icons/folder-cloudflare.svg
new file mode 100644
index 000000000..0cc444ea8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cloudflare.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cluster-open.svg b/packages/desktop/src/assets/file-icons/folder-cluster-open.svg
new file mode 100644
index 000000000..368843309
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cluster-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cluster.svg b/packages/desktop/src/assets/file-icons/folder-cluster.svg
new file mode 100644
index 000000000..77f5b8a39
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cluster.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cobol-open.svg b/packages/desktop/src/assets/file-icons/folder-cobol-open.svg
new file mode 100644
index 000000000..0f5e31528
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cobol-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cobol.svg b/packages/desktop/src/assets/file-icons/folder-cobol.svg
new file mode 100644
index 000000000..ea0f54d13
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cobol.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-command-open.svg b/packages/desktop/src/assets/file-icons/folder-command-open.svg
new file mode 100644
index 000000000..ca9d4dff0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-command-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-command.svg b/packages/desktop/src/assets/file-icons/folder-command.svg
new file mode 100644
index 000000000..4015207b5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-command.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-components-open.svg b/packages/desktop/src/assets/file-icons/folder-components-open.svg
new file mode 100644
index 000000000..2f55b72fe
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-components-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-components.svg b/packages/desktop/src/assets/file-icons/folder-components.svg
new file mode 100644
index 000000000..983833e56
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-components.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-config-open.svg b/packages/desktop/src/assets/file-icons/folder-config-open.svg
new file mode 100644
index 000000000..3b4ec5ae0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-config-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-config.svg b/packages/desktop/src/assets/file-icons/folder-config.svg
new file mode 100644
index 000000000..8519910c2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-config.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-connection-open.svg b/packages/desktop/src/assets/file-icons/folder-connection-open.svg
new file mode 100644
index 000000000..4d14f0962
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-connection-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-connection.svg b/packages/desktop/src/assets/file-icons/folder-connection.svg
new file mode 100644
index 000000000..f46d5264c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-connection.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-console-open.svg b/packages/desktop/src/assets/file-icons/folder-console-open.svg
new file mode 100644
index 000000000..99384a809
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-console-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-console.svg b/packages/desktop/src/assets/file-icons/folder-console.svg
new file mode 100644
index 000000000..301b10d73
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-console.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-constant-open.svg b/packages/desktop/src/assets/file-icons/folder-constant-open.svg
new file mode 100644
index 000000000..9e8791d45
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-constant-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-constant.svg b/packages/desktop/src/assets/file-icons/folder-constant.svg
new file mode 100644
index 000000000..99a22917a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-constant.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-container-open.svg b/packages/desktop/src/assets/file-icons/folder-container-open.svg
new file mode 100644
index 000000000..9db833471
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-container-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-container.svg b/packages/desktop/src/assets/file-icons/folder-container.svg
new file mode 100644
index 000000000..3ea03c165
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-container.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-content-open.svg b/packages/desktop/src/assets/file-icons/folder-content-open.svg
new file mode 100644
index 000000000..a924b27aa
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-content-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-content.svg b/packages/desktop/src/assets/file-icons/folder-content.svg
new file mode 100644
index 000000000..23f57d243
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-content.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-context-open.svg b/packages/desktop/src/assets/file-icons/folder-context-open.svg
new file mode 100644
index 000000000..a631e02e9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-context-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-context.svg b/packages/desktop/src/assets/file-icons/folder-context.svg
new file mode 100644
index 000000000..bee74c196
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-context.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-contract-open.svg b/packages/desktop/src/assets/file-icons/folder-contract-open.svg
new file mode 100644
index 000000000..6878c76f6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-contract-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-contract.svg b/packages/desktop/src/assets/file-icons/folder-contract.svg
new file mode 100644
index 000000000..2ea0abb11
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-contract.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-controller-open.svg b/packages/desktop/src/assets/file-icons/folder-controller-open.svg
new file mode 100644
index 000000000..a732ed1a0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-controller-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-controller.svg b/packages/desktop/src/assets/file-icons/folder-controller.svg
new file mode 100644
index 000000000..f98cd6fea
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-controller.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-core-open.svg b/packages/desktop/src/assets/file-icons/folder-core-open.svg
new file mode 100644
index 000000000..34e7a82d2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-core-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-core.svg b/packages/desktop/src/assets/file-icons/folder-core.svg
new file mode 100644
index 000000000..f7cfae6ef
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-core.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-coverage-open.svg b/packages/desktop/src/assets/file-icons/folder-coverage-open.svg
new file mode 100644
index 000000000..5d47b2f0b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-coverage-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-coverage.svg b/packages/desktop/src/assets/file-icons/folder-coverage.svg
new file mode 100644
index 000000000..7a75f7166
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-coverage.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-css-open.svg b/packages/desktop/src/assets/file-icons/folder-css-open.svg
new file mode 100644
index 000000000..ef79791fc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-css-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-css.svg b/packages/desktop/src/assets/file-icons/folder-css.svg
new file mode 100644
index 000000000..4ff433e92
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-css.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cursor-open.svg b/packages/desktop/src/assets/file-icons/folder-cursor-open.svg
new file mode 100644
index 000000000..b6e106848
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cursor-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cursor-open_light.svg b/packages/desktop/src/assets/file-icons/folder-cursor-open_light.svg
new file mode 100644
index 000000000..c960112de
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cursor-open_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cursor.svg b/packages/desktop/src/assets/file-icons/folder-cursor.svg
new file mode 100644
index 000000000..46726088c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cursor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cursor_light.svg b/packages/desktop/src/assets/file-icons/folder-cursor_light.svg
new file mode 100644
index 000000000..391be56af
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cursor_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-custom-open.svg b/packages/desktop/src/assets/file-icons/folder-custom-open.svg
new file mode 100644
index 000000000..fe747d217
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-custom-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-custom.svg b/packages/desktop/src/assets/file-icons/folder-custom.svg
new file mode 100644
index 000000000..02ac61100
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-custom.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cypress-open.svg b/packages/desktop/src/assets/file-icons/folder-cypress-open.svg
new file mode 100644
index 000000000..2a18521a2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cypress-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-cypress.svg b/packages/desktop/src/assets/file-icons/folder-cypress.svg
new file mode 100644
index 000000000..39460e229
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-cypress.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-dart-open.svg b/packages/desktop/src/assets/file-icons/folder-dart-open.svg
new file mode 100644
index 000000000..8eadca02e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-dart-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-dart.svg b/packages/desktop/src/assets/file-icons/folder-dart.svg
new file mode 100644
index 000000000..0de15182d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-dart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-database-open.svg b/packages/desktop/src/assets/file-icons/folder-database-open.svg
new file mode 100644
index 000000000..5bde14607
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-database-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-database.svg b/packages/desktop/src/assets/file-icons/folder-database.svg
new file mode 100644
index 000000000..b256e645c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-database.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-debug-open.svg b/packages/desktop/src/assets/file-icons/folder-debug-open.svg
new file mode 100644
index 000000000..a0c16a741
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-debug-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-debug.svg b/packages/desktop/src/assets/file-icons/folder-debug.svg
new file mode 100644
index 000000000..1099873ff
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-debug.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-decorators-open.svg b/packages/desktop/src/assets/file-icons/folder-decorators-open.svg
new file mode 100644
index 000000000..ff42ddeec
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-decorators-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-decorators.svg b/packages/desktop/src/assets/file-icons/folder-decorators.svg
new file mode 100644
index 000000000..fcc746dc5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-decorators.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-delta-open.svg b/packages/desktop/src/assets/file-icons/folder-delta-open.svg
new file mode 100644
index 000000000..c2b56636e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-delta-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-delta.svg b/packages/desktop/src/assets/file-icons/folder-delta.svg
new file mode 100644
index 000000000..cdda479a1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-delta.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-desktop-open.svg b/packages/desktop/src/assets/file-icons/folder-desktop-open.svg
new file mode 100644
index 000000000..880ca769b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-desktop-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-desktop.svg b/packages/desktop/src/assets/file-icons/folder-desktop.svg
new file mode 100644
index 000000000..5a20b4960
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-desktop.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-directive-open.svg b/packages/desktop/src/assets/file-icons/folder-directive-open.svg
new file mode 100644
index 000000000..71946e510
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-directive-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-directive.svg b/packages/desktop/src/assets/file-icons/folder-directive.svg
new file mode 100644
index 000000000..4197c6803
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-directive.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-dist-open.svg b/packages/desktop/src/assets/file-icons/folder-dist-open.svg
new file mode 100644
index 000000000..553cef1cb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-dist-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-dist.svg b/packages/desktop/src/assets/file-icons/folder-dist.svg
new file mode 100644
index 000000000..995580fda
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-dist.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-docker-open.svg b/packages/desktop/src/assets/file-icons/folder-docker-open.svg
new file mode 100644
index 000000000..a76e97b94
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-docker-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-docker.svg b/packages/desktop/src/assets/file-icons/folder-docker.svg
new file mode 100644
index 000000000..c5b094999
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-docker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-docs-open.svg b/packages/desktop/src/assets/file-icons/folder-docs-open.svg
new file mode 100644
index 000000000..357776702
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-docs-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-docs.svg b/packages/desktop/src/assets/file-icons/folder-docs.svg
new file mode 100644
index 000000000..246a05d2e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-docs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-download-open.svg b/packages/desktop/src/assets/file-icons/folder-download-open.svg
new file mode 100644
index 000000000..ddb9c2416
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-download-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-download.svg b/packages/desktop/src/assets/file-icons/folder-download.svg
new file mode 100644
index 000000000..34105b932
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-download.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-drizzle-open.svg b/packages/desktop/src/assets/file-icons/folder-drizzle-open.svg
new file mode 100644
index 000000000..5f0cd591a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-drizzle-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-drizzle.svg b/packages/desktop/src/assets/file-icons/folder-drizzle.svg
new file mode 100644
index 000000000..d01a18618
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-drizzle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-dump-open.svg b/packages/desktop/src/assets/file-icons/folder-dump-open.svg
new file mode 100644
index 000000000..b4de7f861
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-dump-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-dump.svg b/packages/desktop/src/assets/file-icons/folder-dump.svg
new file mode 100644
index 000000000..8178fcc03
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-dump.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-element-open.svg b/packages/desktop/src/assets/file-icons/folder-element-open.svg
new file mode 100644
index 000000000..32dc7cd87
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-element-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-element.svg b/packages/desktop/src/assets/file-icons/folder-element.svg
new file mode 100644
index 000000000..d67a85ade
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-element.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-enum-open.svg b/packages/desktop/src/assets/file-icons/folder-enum-open.svg
new file mode 100644
index 000000000..92782b157
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-enum-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-enum.svg b/packages/desktop/src/assets/file-icons/folder-enum.svg
new file mode 100644
index 000000000..fa852efd8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-enum.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-environment-open.svg b/packages/desktop/src/assets/file-icons/folder-environment-open.svg
new file mode 100644
index 000000000..3b56abb18
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-environment-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-environment.svg b/packages/desktop/src/assets/file-icons/folder-environment.svg
new file mode 100644
index 000000000..9cc1f2e00
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-environment.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-error-open.svg b/packages/desktop/src/assets/file-icons/folder-error-open.svg
new file mode 100644
index 000000000..81f0ffc20
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-error-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-error.svg b/packages/desktop/src/assets/file-icons/folder-error.svg
new file mode 100644
index 000000000..3bd1d85d6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-error.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-event-open.svg b/packages/desktop/src/assets/file-icons/folder-event-open.svg
new file mode 100644
index 000000000..28c018d44
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-event-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-event.svg b/packages/desktop/src/assets/file-icons/folder-event.svg
new file mode 100644
index 000000000..f54dea6d8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-event.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-examples-open.svg b/packages/desktop/src/assets/file-icons/folder-examples-open.svg
new file mode 100644
index 000000000..78c77a918
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-examples-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-examples.svg b/packages/desktop/src/assets/file-icons/folder-examples.svg
new file mode 100644
index 000000000..fba8885ab
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-examples.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-expo-open.svg b/packages/desktop/src/assets/file-icons/folder-expo-open.svg
new file mode 100644
index 000000000..614435aba
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-expo-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-expo.svg b/packages/desktop/src/assets/file-icons/folder-expo.svg
new file mode 100644
index 000000000..820a998b6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-expo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-export-open.svg b/packages/desktop/src/assets/file-icons/folder-export-open.svg
new file mode 100644
index 000000000..f03eb1bba
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-export-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-export.svg b/packages/desktop/src/assets/file-icons/folder-export.svg
new file mode 100644
index 000000000..1b3e3abe7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-export.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-fastlane-open.svg b/packages/desktop/src/assets/file-icons/folder-fastlane-open.svg
new file mode 100644
index 000000000..5efb2acad
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-fastlane-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-fastlane.svg b/packages/desktop/src/assets/file-icons/folder-fastlane.svg
new file mode 100644
index 000000000..eb9056694
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-fastlane.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-favicon-open.svg b/packages/desktop/src/assets/file-icons/folder-favicon-open.svg
new file mode 100644
index 000000000..b716525ab
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-favicon-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-favicon.svg b/packages/desktop/src/assets/file-icons/folder-favicon.svg
new file mode 100644
index 000000000..6ef90d91c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-favicon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-firebase-open.svg b/packages/desktop/src/assets/file-icons/folder-firebase-open.svg
new file mode 100644
index 000000000..7149b48f6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-firebase-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-firebase.svg b/packages/desktop/src/assets/file-icons/folder-firebase.svg
new file mode 100644
index 000000000..9eeac86b9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-firebase.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-firestore-open.svg b/packages/desktop/src/assets/file-icons/folder-firestore-open.svg
new file mode 100644
index 000000000..a3e6edac7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-firestore-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-firestore.svg b/packages/desktop/src/assets/file-icons/folder-firestore.svg
new file mode 100644
index 000000000..cb1249af0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-firestore.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-flow-open.svg b/packages/desktop/src/assets/file-icons/folder-flow-open.svg
new file mode 100644
index 000000000..a72dd76b7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-flow-open.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-flow.svg b/packages/desktop/src/assets/file-icons/folder-flow.svg
new file mode 100644
index 000000000..015518922
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-flow.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-flutter-open.svg b/packages/desktop/src/assets/file-icons/folder-flutter-open.svg
new file mode 100644
index 000000000..b95a8cee7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-flutter-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-flutter.svg b/packages/desktop/src/assets/file-icons/folder-flutter.svg
new file mode 100644
index 000000000..e5ffced14
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-flutter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-font-open.svg b/packages/desktop/src/assets/file-icons/folder-font-open.svg
new file mode 100644
index 000000000..1a91f0b19
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-font-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-font.svg b/packages/desktop/src/assets/file-icons/folder-font.svg
new file mode 100644
index 000000000..0115b7301
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-font.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-forgejo-open.svg b/packages/desktop/src/assets/file-icons/folder-forgejo-open.svg
new file mode 100644
index 000000000..a9762228e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-forgejo-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-forgejo.svg b/packages/desktop/src/assets/file-icons/folder-forgejo.svg
new file mode 100644
index 000000000..0eaccff60
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-forgejo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-functions-open.svg b/packages/desktop/src/assets/file-icons/folder-functions-open.svg
new file mode 100644
index 000000000..00d6dc442
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-functions-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-functions.svg b/packages/desktop/src/assets/file-icons/folder-functions.svg
new file mode 100644
index 000000000..01a938514
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-functions.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-gamemaker-open.svg b/packages/desktop/src/assets/file-icons/folder-gamemaker-open.svg
new file mode 100644
index 000000000..caf9a82ea
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-gamemaker-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-gamemaker.svg b/packages/desktop/src/assets/file-icons/folder-gamemaker.svg
new file mode 100644
index 000000000..625feb382
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-gamemaker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-generator-open.svg b/packages/desktop/src/assets/file-icons/folder-generator-open.svg
new file mode 100644
index 000000000..43b504732
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-generator-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-generator.svg b/packages/desktop/src/assets/file-icons/folder-generator.svg
new file mode 100644
index 000000000..5446582e9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-generator.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-gh-workflows-open.svg b/packages/desktop/src/assets/file-icons/folder-gh-workflows-open.svg
new file mode 100644
index 000000000..3ae400ed9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-gh-workflows-open.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-gh-workflows.svg b/packages/desktop/src/assets/file-icons/folder-gh-workflows.svg
new file mode 100644
index 000000000..3a868cca9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-gh-workflows.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-git-open.svg b/packages/desktop/src/assets/file-icons/folder-git-open.svg
new file mode 100644
index 000000000..90be1c118
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-git-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-git.svg b/packages/desktop/src/assets/file-icons/folder-git.svg
new file mode 100644
index 000000000..2ca4db551
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-git.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-gitea-open.svg b/packages/desktop/src/assets/file-icons/folder-gitea-open.svg
new file mode 100644
index 000000000..239800c47
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-gitea-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-gitea.svg b/packages/desktop/src/assets/file-icons/folder-gitea.svg
new file mode 100644
index 000000000..ac041b325
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-gitea.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-github-open.svg b/packages/desktop/src/assets/file-icons/folder-github-open.svg
new file mode 100644
index 000000000..84e5bee84
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-github-open.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-github.svg b/packages/desktop/src/assets/file-icons/folder-github.svg
new file mode 100644
index 000000000..374bcae0b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-github.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-gitlab-open.svg b/packages/desktop/src/assets/file-icons/folder-gitlab-open.svg
new file mode 100644
index 000000000..fc4deb295
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-gitlab-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-gitlab.svg b/packages/desktop/src/assets/file-icons/folder-gitlab.svg
new file mode 100644
index 000000000..55db99e0d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-gitlab.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-global-open.svg b/packages/desktop/src/assets/file-icons/folder-global-open.svg
new file mode 100644
index 000000000..13e72e070
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-global-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-global.svg b/packages/desktop/src/assets/file-icons/folder-global.svg
new file mode 100644
index 000000000..8ada6a6dd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-global.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-godot-open.svg b/packages/desktop/src/assets/file-icons/folder-godot-open.svg
new file mode 100644
index 000000000..fd785504a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-godot-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-godot.svg b/packages/desktop/src/assets/file-icons/folder-godot.svg
new file mode 100644
index 000000000..dc4b5d10b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-godot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-gradle-open.svg b/packages/desktop/src/assets/file-icons/folder-gradle-open.svg
new file mode 100644
index 000000000..51725e722
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-gradle-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-gradle.svg b/packages/desktop/src/assets/file-icons/folder-gradle.svg
new file mode 100644
index 000000000..93e843d2b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-gradle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-graphql-open.svg b/packages/desktop/src/assets/file-icons/folder-graphql-open.svg
new file mode 100644
index 000000000..ac2365092
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-graphql-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-graphql.svg b/packages/desktop/src/assets/file-icons/folder-graphql.svg
new file mode 100644
index 000000000..1d7b1cc68
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-graphql.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-guard-open.svg b/packages/desktop/src/assets/file-icons/folder-guard-open.svg
new file mode 100644
index 000000000..f7031e257
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-guard-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-guard.svg b/packages/desktop/src/assets/file-icons/folder-guard.svg
new file mode 100644
index 000000000..b4269ed22
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-guard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-gulp-open.svg b/packages/desktop/src/assets/file-icons/folder-gulp-open.svg
new file mode 100644
index 000000000..556e7399a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-gulp-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-gulp.svg b/packages/desktop/src/assets/file-icons/folder-gulp.svg
new file mode 100644
index 000000000..339523138
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-gulp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-helm-open.svg b/packages/desktop/src/assets/file-icons/folder-helm-open.svg
new file mode 100644
index 000000000..6bbf0cc6d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-helm-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-helm.svg b/packages/desktop/src/assets/file-icons/folder-helm.svg
new file mode 100644
index 000000000..7b7d7a7a4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-helm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-helper-open.svg b/packages/desktop/src/assets/file-icons/folder-helper-open.svg
new file mode 100644
index 000000000..6fca39118
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-helper-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-helper.svg b/packages/desktop/src/assets/file-icons/folder-helper.svg
new file mode 100644
index 000000000..27a20d43c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-helper.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-home-open.svg b/packages/desktop/src/assets/file-icons/folder-home-open.svg
new file mode 100644
index 000000000..8b0f0ca01
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-home-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-home.svg b/packages/desktop/src/assets/file-icons/folder-home.svg
new file mode 100644
index 000000000..a4deeef4a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-home.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-hook-open.svg b/packages/desktop/src/assets/file-icons/folder-hook-open.svg
new file mode 100644
index 000000000..17d62310d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-hook-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-hook.svg b/packages/desktop/src/assets/file-icons/folder-hook.svg
new file mode 100644
index 000000000..2105709e2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-hook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-husky-open.svg b/packages/desktop/src/assets/file-icons/folder-husky-open.svg
new file mode 100644
index 000000000..88c19e895
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-husky-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-husky.svg b/packages/desktop/src/assets/file-icons/folder-husky.svg
new file mode 100644
index 000000000..1bbdc4c37
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-husky.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-i18n-open.svg b/packages/desktop/src/assets/file-icons/folder-i18n-open.svg
new file mode 100644
index 000000000..bc1a53c0f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-i18n-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-i18n.svg b/packages/desktop/src/assets/file-icons/folder-i18n.svg
new file mode 100644
index 000000000..6ef028377
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-i18n.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-images-open.svg b/packages/desktop/src/assets/file-icons/folder-images-open.svg
new file mode 100644
index 000000000..44a673b14
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-images-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-images.svg b/packages/desktop/src/assets/file-icons/folder-images.svg
new file mode 100644
index 000000000..5b63a6c3a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-images.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-import-open.svg b/packages/desktop/src/assets/file-icons/folder-import-open.svg
new file mode 100644
index 000000000..a58a7e64f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-import-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-import.svg b/packages/desktop/src/assets/file-icons/folder-import.svg
new file mode 100644
index 000000000..0c0f42e57
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-import.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-include-open.svg b/packages/desktop/src/assets/file-icons/folder-include-open.svg
new file mode 100644
index 000000000..fc2c011ba
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-include-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-include.svg b/packages/desktop/src/assets/file-icons/folder-include.svg
new file mode 100644
index 000000000..117b91a2c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-include.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-intellij-open.svg b/packages/desktop/src/assets/file-icons/folder-intellij-open.svg
new file mode 100644
index 000000000..5839a2b1c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-intellij-open.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-intellij-open_light.svg b/packages/desktop/src/assets/file-icons/folder-intellij-open_light.svg
new file mode 100644
index 000000000..ccb6046bb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-intellij-open_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-intellij.svg b/packages/desktop/src/assets/file-icons/folder-intellij.svg
new file mode 100644
index 000000000..c655f37ef
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-intellij.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-intellij_light.svg b/packages/desktop/src/assets/file-icons/folder-intellij_light.svg
new file mode 100644
index 000000000..97bc8c7bd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-intellij_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-interceptor-open.svg b/packages/desktop/src/assets/file-icons/folder-interceptor-open.svg
new file mode 100644
index 000000000..c91c42ad9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-interceptor-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-interceptor.svg b/packages/desktop/src/assets/file-icons/folder-interceptor.svg
new file mode 100644
index 000000000..e6cbf9f5c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-interceptor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-interface-open.svg b/packages/desktop/src/assets/file-icons/folder-interface-open.svg
new file mode 100644
index 000000000..ba54b0ec8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-interface-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-interface.svg b/packages/desktop/src/assets/file-icons/folder-interface.svg
new file mode 100644
index 000000000..993ce7258
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-interface.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-ios-open.svg b/packages/desktop/src/assets/file-icons/folder-ios-open.svg
new file mode 100644
index 000000000..112fee6a4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-ios-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-ios.svg b/packages/desktop/src/assets/file-icons/folder-ios.svg
new file mode 100644
index 000000000..7af3b85da
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-ios.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-java-open.svg b/packages/desktop/src/assets/file-icons/folder-java-open.svg
new file mode 100644
index 000000000..eb59229cd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-java-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-java.svg b/packages/desktop/src/assets/file-icons/folder-java.svg
new file mode 100644
index 000000000..58fdd3db5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-java.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-javascript-open.svg b/packages/desktop/src/assets/file-icons/folder-javascript-open.svg
new file mode 100644
index 000000000..581f3a273
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-javascript-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-javascript.svg b/packages/desktop/src/assets/file-icons/folder-javascript.svg
new file mode 100644
index 000000000..97cf04cc2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-javascript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-jinja-open.svg b/packages/desktop/src/assets/file-icons/folder-jinja-open.svg
new file mode 100644
index 000000000..9c0b2b6eb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-jinja-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-jinja-open_light.svg b/packages/desktop/src/assets/file-icons/folder-jinja-open_light.svg
new file mode 100644
index 000000000..ffc940faa
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-jinja-open_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-jinja.svg b/packages/desktop/src/assets/file-icons/folder-jinja.svg
new file mode 100644
index 000000000..687efe3d2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-jinja.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-jinja_light.svg b/packages/desktop/src/assets/file-icons/folder-jinja_light.svg
new file mode 100644
index 000000000..c2b08bb7f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-jinja_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-job-open.svg b/packages/desktop/src/assets/file-icons/folder-job-open.svg
new file mode 100644
index 000000000..efd7cdfbf
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-job-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-job.svg b/packages/desktop/src/assets/file-icons/folder-job.svg
new file mode 100644
index 000000000..9135aff33
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-job.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-json-open.svg b/packages/desktop/src/assets/file-icons/folder-json-open.svg
new file mode 100644
index 000000000..29cdf2f66
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-json-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-json.svg b/packages/desktop/src/assets/file-icons/folder-json.svg
new file mode 100644
index 000000000..34085f6a9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-json.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-jupyter-open.svg b/packages/desktop/src/assets/file-icons/folder-jupyter-open.svg
new file mode 100644
index 000000000..d431953fc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-jupyter-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-jupyter.svg b/packages/desktop/src/assets/file-icons/folder-jupyter.svg
new file mode 100644
index 000000000..d4d3eb35e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-jupyter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-keys-open.svg b/packages/desktop/src/assets/file-icons/folder-keys-open.svg
new file mode 100644
index 000000000..783b16e98
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-keys-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-keys.svg b/packages/desktop/src/assets/file-icons/folder-keys.svg
new file mode 100644
index 000000000..3527f6220
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-keys.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-kubernetes-open.svg b/packages/desktop/src/assets/file-icons/folder-kubernetes-open.svg
new file mode 100644
index 000000000..022be4de7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-kubernetes-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-kubernetes.svg b/packages/desktop/src/assets/file-icons/folder-kubernetes.svg
new file mode 100644
index 000000000..b60d83d85
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-kubernetes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-kusto-open.svg b/packages/desktop/src/assets/file-icons/folder-kusto-open.svg
new file mode 100644
index 000000000..4ea80cac0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-kusto-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-kusto.svg b/packages/desktop/src/assets/file-icons/folder-kusto.svg
new file mode 100644
index 000000000..fa71096a4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-kusto.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-layout-open.svg b/packages/desktop/src/assets/file-icons/folder-layout-open.svg
new file mode 100644
index 000000000..f8f1def9c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-layout-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-layout.svg b/packages/desktop/src/assets/file-icons/folder-layout.svg
new file mode 100644
index 000000000..3d773bc4f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-layout.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-lefthook-open.svg b/packages/desktop/src/assets/file-icons/folder-lefthook-open.svg
new file mode 100644
index 000000000..a2694ba69
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-lefthook-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-lefthook.svg b/packages/desktop/src/assets/file-icons/folder-lefthook.svg
new file mode 100644
index 000000000..0c7eb274c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-lefthook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-less-open.svg b/packages/desktop/src/assets/file-icons/folder-less-open.svg
new file mode 100644
index 000000000..3419b0a9d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-less-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-less.svg b/packages/desktop/src/assets/file-icons/folder-less.svg
new file mode 100644
index 000000000..b6abc5ecd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-less.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-lib-open.svg b/packages/desktop/src/assets/file-icons/folder-lib-open.svg
new file mode 100644
index 000000000..8c4443168
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-lib-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-lib.svg b/packages/desktop/src/assets/file-icons/folder-lib.svg
new file mode 100644
index 000000000..4e752857a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-lib.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-link-open.svg b/packages/desktop/src/assets/file-icons/folder-link-open.svg
new file mode 100644
index 000000000..817d0d588
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-link-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-link.svg b/packages/desktop/src/assets/file-icons/folder-link.svg
new file mode 100644
index 000000000..48a8bbe84
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-link.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-linux-open.svg b/packages/desktop/src/assets/file-icons/folder-linux-open.svg
new file mode 100644
index 000000000..8517b35df
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-linux-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-linux.svg b/packages/desktop/src/assets/file-icons/folder-linux.svg
new file mode 100644
index 000000000..df4d2293e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-linux.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-liquibase-open.svg b/packages/desktop/src/assets/file-icons/folder-liquibase-open.svg
new file mode 100644
index 000000000..2fe7ba65f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-liquibase-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-liquibase.svg b/packages/desktop/src/assets/file-icons/folder-liquibase.svg
new file mode 100644
index 000000000..aea076ac1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-liquibase.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-log-open.svg b/packages/desktop/src/assets/file-icons/folder-log-open.svg
new file mode 100644
index 000000000..a78771ea1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-log-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-log.svg b/packages/desktop/src/assets/file-icons/folder-log.svg
new file mode 100644
index 000000000..b2ba6a582
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-log.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-lottie-open.svg b/packages/desktop/src/assets/file-icons/folder-lottie-open.svg
new file mode 100644
index 000000000..adca02541
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-lottie-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-lottie.svg b/packages/desktop/src/assets/file-icons/folder-lottie.svg
new file mode 100644
index 000000000..4d7fe341d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-lottie.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-lua-open.svg b/packages/desktop/src/assets/file-icons/folder-lua-open.svg
new file mode 100644
index 000000000..cb2ea6efb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-lua-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-lua.svg b/packages/desktop/src/assets/file-icons/folder-lua.svg
new file mode 100644
index 000000000..e32819b9f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-lua.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-luau-open.svg b/packages/desktop/src/assets/file-icons/folder-luau-open.svg
new file mode 100644
index 000000000..2b113b473
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-luau-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-luau.svg b/packages/desktop/src/assets/file-icons/folder-luau.svg
new file mode 100644
index 000000000..a6b455176
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-luau.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-macos-open.svg b/packages/desktop/src/assets/file-icons/folder-macos-open.svg
new file mode 100644
index 000000000..8d0280ae9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-macos-open.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-macos.svg b/packages/desktop/src/assets/file-icons/folder-macos.svg
new file mode 100644
index 000000000..6afe2ed2a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-macos.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-mail-open.svg b/packages/desktop/src/assets/file-icons/folder-mail-open.svg
new file mode 100644
index 000000000..27774cf1d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-mail-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-mail.svg b/packages/desktop/src/assets/file-icons/folder-mail.svg
new file mode 100644
index 000000000..513e4b1be
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-mail.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-mappings-open.svg b/packages/desktop/src/assets/file-icons/folder-mappings-open.svg
new file mode 100644
index 000000000..510d06b76
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-mappings-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-mappings.svg b/packages/desktop/src/assets/file-icons/folder-mappings.svg
new file mode 100644
index 000000000..53b58e05f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-mappings.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-markdown-open.svg b/packages/desktop/src/assets/file-icons/folder-markdown-open.svg
new file mode 100644
index 000000000..75ef9044e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-markdown-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-markdown.svg b/packages/desktop/src/assets/file-icons/folder-markdown.svg
new file mode 100644
index 000000000..5df5d0a59
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-markdown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-mercurial-open.svg b/packages/desktop/src/assets/file-icons/folder-mercurial-open.svg
new file mode 100644
index 000000000..74bbb9da1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-mercurial-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-mercurial.svg b/packages/desktop/src/assets/file-icons/folder-mercurial.svg
new file mode 100644
index 000000000..5175b8ea6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-mercurial.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-messages-open.svg b/packages/desktop/src/assets/file-icons/folder-messages-open.svg
new file mode 100644
index 000000000..2701529cf
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-messages-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-messages.svg b/packages/desktop/src/assets/file-icons/folder-messages.svg
new file mode 100644
index 000000000..ab3e2f8c1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-messages.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-meta-open.svg b/packages/desktop/src/assets/file-icons/folder-meta-open.svg
new file mode 100644
index 000000000..de1fd82ad
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-meta-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-meta.svg b/packages/desktop/src/assets/file-icons/folder-meta.svg
new file mode 100644
index 000000000..3a1b90add
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-meta.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-middleware-open.svg b/packages/desktop/src/assets/file-icons/folder-middleware-open.svg
new file mode 100644
index 000000000..346954c3b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-middleware-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-middleware.svg b/packages/desktop/src/assets/file-icons/folder-middleware.svg
new file mode 100644
index 000000000..f12c99de2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-middleware.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-mjml-open.svg b/packages/desktop/src/assets/file-icons/folder-mjml-open.svg
new file mode 100644
index 000000000..81843f0e5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-mjml-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-mjml.svg b/packages/desktop/src/assets/file-icons/folder-mjml.svg
new file mode 100644
index 000000000..8d7f06703
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-mjml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-mobile-open.svg b/packages/desktop/src/assets/file-icons/folder-mobile-open.svg
new file mode 100644
index 000000000..6a5a39b6b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-mobile-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-mobile.svg b/packages/desktop/src/assets/file-icons/folder-mobile.svg
new file mode 100644
index 000000000..03aab1333
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-mobile.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-mock-open.svg b/packages/desktop/src/assets/file-icons/folder-mock-open.svg
new file mode 100644
index 000000000..c92929c6a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-mock-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-mock.svg b/packages/desktop/src/assets/file-icons/folder-mock.svg
new file mode 100644
index 000000000..22f88e55a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-mock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-mojo-open.svg b/packages/desktop/src/assets/file-icons/folder-mojo-open.svg
new file mode 100644
index 000000000..ce5b9be2d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-mojo-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-mojo.svg b/packages/desktop/src/assets/file-icons/folder-mojo.svg
new file mode 100644
index 000000000..67f753755
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-mojo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-molecule-open.svg b/packages/desktop/src/assets/file-icons/folder-molecule-open.svg
new file mode 100644
index 000000000..846e2f9de
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-molecule-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-molecule.svg b/packages/desktop/src/assets/file-icons/folder-molecule.svg
new file mode 100644
index 000000000..9c7905eca
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-molecule.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-moon-open.svg b/packages/desktop/src/assets/file-icons/folder-moon-open.svg
new file mode 100644
index 000000000..f2da8ddd0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-moon-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-moon.svg b/packages/desktop/src/assets/file-icons/folder-moon.svg
new file mode 100644
index 000000000..06613deb5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-moon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-netlify-open.svg b/packages/desktop/src/assets/file-icons/folder-netlify-open.svg
new file mode 100644
index 000000000..d6f63b776
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-netlify-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-netlify.svg b/packages/desktop/src/assets/file-icons/folder-netlify.svg
new file mode 100644
index 000000000..5473f42cd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-netlify.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-next-open.svg b/packages/desktop/src/assets/file-icons/folder-next-open.svg
new file mode 100644
index 000000000..c8709cac3
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-next-open.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-next.svg b/packages/desktop/src/assets/file-icons/folder-next.svg
new file mode 100644
index 000000000..cab1e8fca
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-next.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-ngrx-store-open.svg b/packages/desktop/src/assets/file-icons/folder-ngrx-store-open.svg
new file mode 100644
index 000000000..2c8514ef2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-ngrx-store-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-ngrx-store.svg b/packages/desktop/src/assets/file-icons/folder-ngrx-store.svg
new file mode 100644
index 000000000..1f9cb2d59
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-ngrx-store.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-node-open.svg b/packages/desktop/src/assets/file-icons/folder-node-open.svg
new file mode 100644
index 000000000..a785ed3d6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-node-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-node.svg b/packages/desktop/src/assets/file-icons/folder-node.svg
new file mode 100644
index 000000000..fb47492b9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-node.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-nuxt-open.svg b/packages/desktop/src/assets/file-icons/folder-nuxt-open.svg
new file mode 100644
index 000000000..c49ff8d21
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-nuxt-open.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-nuxt.svg b/packages/desktop/src/assets/file-icons/folder-nuxt.svg
new file mode 100644
index 000000000..a0a52b06e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-nuxt.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-obsidian-open.svg b/packages/desktop/src/assets/file-icons/folder-obsidian-open.svg
new file mode 100644
index 000000000..f7d1305ea
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-obsidian-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-obsidian.svg b/packages/desktop/src/assets/file-icons/folder-obsidian.svg
new file mode 100644
index 000000000..cd16a528a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-obsidian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-open.svg b/packages/desktop/src/assets/file-icons/folder-open.svg
new file mode 100644
index 000000000..eac89185e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-open.svg
@@ -0,0 +1,5 @@
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-organism-open.svg b/packages/desktop/src/assets/file-icons/folder-organism-open.svg
new file mode 100644
index 000000000..6be44d2b0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-organism-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-organism.svg b/packages/desktop/src/assets/file-icons/folder-organism.svg
new file mode 100644
index 000000000..50092a098
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-organism.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-other-open.svg b/packages/desktop/src/assets/file-icons/folder-other-open.svg
new file mode 100644
index 000000000..ea4144f48
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-other-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-other.svg b/packages/desktop/src/assets/file-icons/folder-other.svg
new file mode 100644
index 000000000..df3d27f26
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-other.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-packages-open.svg b/packages/desktop/src/assets/file-icons/folder-packages-open.svg
new file mode 100644
index 000000000..7ac6075e6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-packages-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-packages.svg b/packages/desktop/src/assets/file-icons/folder-packages.svg
new file mode 100644
index 000000000..9ba67cb9a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-packages.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-pdf-open.svg b/packages/desktop/src/assets/file-icons/folder-pdf-open.svg
new file mode 100644
index 000000000..fdeccb04b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-pdf-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-pdf.svg b/packages/desktop/src/assets/file-icons/folder-pdf.svg
new file mode 100644
index 000000000..db0ace7e2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-pdf.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-pdm-open.svg b/packages/desktop/src/assets/file-icons/folder-pdm-open.svg
new file mode 100644
index 000000000..6145f798b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-pdm-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-pdm.svg b/packages/desktop/src/assets/file-icons/folder-pdm.svg
new file mode 100644
index 000000000..9508547ff
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-pdm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-php-open.svg b/packages/desktop/src/assets/file-icons/folder-php-open.svg
new file mode 100644
index 000000000..2059a9b90
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-php-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-php.svg b/packages/desktop/src/assets/file-icons/folder-php.svg
new file mode 100644
index 000000000..4304e179d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-php.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-phpmailer-open.svg b/packages/desktop/src/assets/file-icons/folder-phpmailer-open.svg
new file mode 100644
index 000000000..26388bb3f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-phpmailer-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-phpmailer.svg b/packages/desktop/src/assets/file-icons/folder-phpmailer.svg
new file mode 100644
index 000000000..18f696c1c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-phpmailer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-pipe-open.svg b/packages/desktop/src/assets/file-icons/folder-pipe-open.svg
new file mode 100644
index 000000000..8aacef08d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-pipe-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-pipe.svg b/packages/desktop/src/assets/file-icons/folder-pipe.svg
new file mode 100644
index 000000000..9ba5d0adb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-pipe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-plastic-open.svg b/packages/desktop/src/assets/file-icons/folder-plastic-open.svg
new file mode 100644
index 000000000..b93a541f1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-plastic-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-plastic.svg b/packages/desktop/src/assets/file-icons/folder-plastic.svg
new file mode 100644
index 000000000..5e595f320
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-plastic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-plugin-open.svg b/packages/desktop/src/assets/file-icons/folder-plugin-open.svg
new file mode 100644
index 000000000..5a7f03a4d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-plugin-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-plugin.svg b/packages/desktop/src/assets/file-icons/folder-plugin.svg
new file mode 100644
index 000000000..14a315457
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-plugin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-policy-open.svg b/packages/desktop/src/assets/file-icons/folder-policy-open.svg
new file mode 100644
index 000000000..c2b51d459
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-policy-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-policy.svg b/packages/desktop/src/assets/file-icons/folder-policy.svg
new file mode 100644
index 000000000..1b1781d59
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-policy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-powershell-open.svg b/packages/desktop/src/assets/file-icons/folder-powershell-open.svg
new file mode 100644
index 000000000..be4b458be
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-powershell-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-powershell.svg b/packages/desktop/src/assets/file-icons/folder-powershell.svg
new file mode 100644
index 000000000..6f28098de
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-powershell.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-prisma-open.svg b/packages/desktop/src/assets/file-icons/folder-prisma-open.svg
new file mode 100644
index 000000000..95df8ba0e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-prisma-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-prisma.svg b/packages/desktop/src/assets/file-icons/folder-prisma.svg
new file mode 100644
index 000000000..a166ebd1e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-prisma.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-private-open.svg b/packages/desktop/src/assets/file-icons/folder-private-open.svg
new file mode 100644
index 000000000..19094be89
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-private-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-private.svg b/packages/desktop/src/assets/file-icons/folder-private.svg
new file mode 100644
index 000000000..da95ecec4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-private.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-project-open.svg b/packages/desktop/src/assets/file-icons/folder-project-open.svg
new file mode 100644
index 000000000..9da28620e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-project-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-project.svg b/packages/desktop/src/assets/file-icons/folder-project.svg
new file mode 100644
index 000000000..f575aa014
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-project.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-prompts-open.svg b/packages/desktop/src/assets/file-icons/folder-prompts-open.svg
new file mode 100644
index 000000000..5ed3346fb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-prompts-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-prompts.svg b/packages/desktop/src/assets/file-icons/folder-prompts.svg
new file mode 100644
index 000000000..969535bf5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-prompts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-proto-open.svg b/packages/desktop/src/assets/file-icons/folder-proto-open.svg
new file mode 100644
index 000000000..710de39b5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-proto-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-proto.svg b/packages/desktop/src/assets/file-icons/folder-proto.svg
new file mode 100644
index 000000000..935fcbc5d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-proto.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-public-open.svg b/packages/desktop/src/assets/file-icons/folder-public-open.svg
new file mode 100644
index 000000000..04449ed55
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-public-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-public.svg b/packages/desktop/src/assets/file-icons/folder-public.svg
new file mode 100644
index 000000000..ea599391d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-public.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-python-open.svg b/packages/desktop/src/assets/file-icons/folder-python-open.svg
new file mode 100644
index 000000000..dbfc367aa
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-python-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-python.svg b/packages/desktop/src/assets/file-icons/folder-python.svg
new file mode 100644
index 000000000..aae07362e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-python.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-pytorch-open.svg b/packages/desktop/src/assets/file-icons/folder-pytorch-open.svg
new file mode 100644
index 000000000..46f664f59
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-pytorch-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-pytorch.svg b/packages/desktop/src/assets/file-icons/folder-pytorch.svg
new file mode 100644
index 000000000..2616b6bc0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-pytorch.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-quasar-open.svg b/packages/desktop/src/assets/file-icons/folder-quasar-open.svg
new file mode 100644
index 000000000..5fb6b9288
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-quasar-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-quasar.svg b/packages/desktop/src/assets/file-icons/folder-quasar.svg
new file mode 100644
index 000000000..b098014e8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-quasar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-queue-open.svg b/packages/desktop/src/assets/file-icons/folder-queue-open.svg
new file mode 100644
index 000000000..5afa82181
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-queue-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-queue.svg b/packages/desktop/src/assets/file-icons/folder-queue.svg
new file mode 100644
index 000000000..244530406
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-queue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-react-components-open.svg b/packages/desktop/src/assets/file-icons/folder-react-components-open.svg
new file mode 100644
index 000000000..05af544b2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-react-components-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-react-components.svg b/packages/desktop/src/assets/file-icons/folder-react-components.svg
new file mode 100644
index 000000000..5f117a705
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-react-components.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-redux-reducer-open.svg b/packages/desktop/src/assets/file-icons/folder-redux-reducer-open.svg
new file mode 100644
index 000000000..838bf52a2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-redux-reducer-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-redux-reducer.svg b/packages/desktop/src/assets/file-icons/folder-redux-reducer.svg
new file mode 100644
index 000000000..a3b441f01
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-redux-reducer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-repository-open.svg b/packages/desktop/src/assets/file-icons/folder-repository-open.svg
new file mode 100644
index 000000000..9c6275dbb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-repository-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-repository.svg b/packages/desktop/src/assets/file-icons/folder-repository.svg
new file mode 100644
index 000000000..4f7520651
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-repository.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-resolver-open.svg b/packages/desktop/src/assets/file-icons/folder-resolver-open.svg
new file mode 100644
index 000000000..5a4b752e0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-resolver-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-resolver.svg b/packages/desktop/src/assets/file-icons/folder-resolver.svg
new file mode 100644
index 000000000..c59a6b41f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-resolver.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-resource-open.svg b/packages/desktop/src/assets/file-icons/folder-resource-open.svg
new file mode 100644
index 000000000..0f534e10d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-resource-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-resource.svg b/packages/desktop/src/assets/file-icons/folder-resource.svg
new file mode 100644
index 000000000..24a053af6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-resource.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-review-open.svg b/packages/desktop/src/assets/file-icons/folder-review-open.svg
new file mode 100644
index 000000000..2384601dc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-review-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-review.svg b/packages/desktop/src/assets/file-icons/folder-review.svg
new file mode 100644
index 000000000..c7b138caa
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-review.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-robot-open.svg b/packages/desktop/src/assets/file-icons/folder-robot-open.svg
new file mode 100644
index 000000000..cd501c411
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-robot-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-robot.svg b/packages/desktop/src/assets/file-icons/folder-robot.svg
new file mode 100644
index 000000000..fa582f494
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-robot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-routes-open.svg b/packages/desktop/src/assets/file-icons/folder-routes-open.svg
new file mode 100644
index 000000000..c9c875e44
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-routes-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-routes.svg b/packages/desktop/src/assets/file-icons/folder-routes.svg
new file mode 100644
index 000000000..2fb204dda
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-routes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-rules-open.svg b/packages/desktop/src/assets/file-icons/folder-rules-open.svg
new file mode 100644
index 000000000..1f9c01f25
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-rules-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-rules.svg b/packages/desktop/src/assets/file-icons/folder-rules.svg
new file mode 100644
index 000000000..baa5b615e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-rules.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-rust-open.svg b/packages/desktop/src/assets/file-icons/folder-rust-open.svg
new file mode 100644
index 000000000..65be154ef
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-rust-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-rust.svg b/packages/desktop/src/assets/file-icons/folder-rust.svg
new file mode 100644
index 000000000..afe65f6c4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-rust.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-sandbox-open.svg b/packages/desktop/src/assets/file-icons/folder-sandbox-open.svg
new file mode 100644
index 000000000..e0c7a064f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-sandbox-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-sandbox.svg b/packages/desktop/src/assets/file-icons/folder-sandbox.svg
new file mode 100644
index 000000000..4339173ff
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-sandbox.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-sass-open.svg b/packages/desktop/src/assets/file-icons/folder-sass-open.svg
new file mode 100644
index 000000000..0a2a82e94
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-sass-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-sass.svg b/packages/desktop/src/assets/file-icons/folder-sass.svg
new file mode 100644
index 000000000..6f2873163
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-sass.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-scala-open.svg b/packages/desktop/src/assets/file-icons/folder-scala-open.svg
new file mode 100644
index 000000000..fb4aee7f6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-scala-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-scala.svg b/packages/desktop/src/assets/file-icons/folder-scala.svg
new file mode 100644
index 000000000..d78a07420
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-scala.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-scons-open.svg b/packages/desktop/src/assets/file-icons/folder-scons-open.svg
new file mode 100644
index 000000000..db8961210
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-scons-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-scons.svg b/packages/desktop/src/assets/file-icons/folder-scons.svg
new file mode 100644
index 000000000..aae02b46c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-scons.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-scripts-open.svg b/packages/desktop/src/assets/file-icons/folder-scripts-open.svg
new file mode 100644
index 000000000..981a43f78
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-scripts-open.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-scripts.svg b/packages/desktop/src/assets/file-icons/folder-scripts.svg
new file mode 100644
index 000000000..4b755acb9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-scripts.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-secure-open.svg b/packages/desktop/src/assets/file-icons/folder-secure-open.svg
new file mode 100644
index 000000000..163f7da40
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-secure-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-secure.svg b/packages/desktop/src/assets/file-icons/folder-secure.svg
new file mode 100644
index 000000000..110093fb9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-secure.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-seeders-open.svg b/packages/desktop/src/assets/file-icons/folder-seeders-open.svg
new file mode 100644
index 000000000..b93194091
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-seeders-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-seeders.svg b/packages/desktop/src/assets/file-icons/folder-seeders.svg
new file mode 100644
index 000000000..cd59776ad
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-seeders.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-server-open.svg b/packages/desktop/src/assets/file-icons/folder-server-open.svg
new file mode 100644
index 000000000..706b8af36
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-server-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-server.svg b/packages/desktop/src/assets/file-icons/folder-server.svg
new file mode 100644
index 000000000..4f03f4726
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-server.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-serverless-open.svg b/packages/desktop/src/assets/file-icons/folder-serverless-open.svg
new file mode 100644
index 000000000..113f73c9d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-serverless-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-serverless.svg b/packages/desktop/src/assets/file-icons/folder-serverless.svg
new file mode 100644
index 000000000..226f89d41
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-serverless.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-shader-open.svg b/packages/desktop/src/assets/file-icons/folder-shader-open.svg
new file mode 100644
index 000000000..03e00ed5f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-shader-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-shader.svg b/packages/desktop/src/assets/file-icons/folder-shader.svg
new file mode 100644
index 000000000..57772b323
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-shader.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-shared-open.svg b/packages/desktop/src/assets/file-icons/folder-shared-open.svg
new file mode 100644
index 000000000..6542e7fe0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-shared-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-shared.svg b/packages/desktop/src/assets/file-icons/folder-shared.svg
new file mode 100644
index 000000000..01e7a17dd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-shared.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-snapcraft-open.svg b/packages/desktop/src/assets/file-icons/folder-snapcraft-open.svg
new file mode 100644
index 000000000..1a0306828
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-snapcraft-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-snapcraft.svg b/packages/desktop/src/assets/file-icons/folder-snapcraft.svg
new file mode 100644
index 000000000..fc77b789a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-snapcraft.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-snippet-open.svg b/packages/desktop/src/assets/file-icons/folder-snippet-open.svg
new file mode 100644
index 000000000..451c291f8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-snippet-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-snippet.svg b/packages/desktop/src/assets/file-icons/folder-snippet.svg
new file mode 100644
index 000000000..991f5c444
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-snippet.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-src-open.svg b/packages/desktop/src/assets/file-icons/folder-src-open.svg
new file mode 100644
index 000000000..8cd9ee3c1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-src-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-src-tauri-open.svg b/packages/desktop/src/assets/file-icons/folder-src-tauri-open.svg
new file mode 100644
index 000000000..969c5778d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-src-tauri-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-src-tauri.svg b/packages/desktop/src/assets/file-icons/folder-src-tauri.svg
new file mode 100644
index 000000000..727790c81
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-src-tauri.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-src.svg b/packages/desktop/src/assets/file-icons/folder-src.svg
new file mode 100644
index 000000000..8d45da992
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-src.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-stack-open.svg b/packages/desktop/src/assets/file-icons/folder-stack-open.svg
new file mode 100644
index 000000000..cfd8bd057
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-stack-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-stack.svg b/packages/desktop/src/assets/file-icons/folder-stack.svg
new file mode 100644
index 000000000..9c0b10d52
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-stack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-stencil-open.svg b/packages/desktop/src/assets/file-icons/folder-stencil-open.svg
new file mode 100644
index 000000000..6dea078a7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-stencil-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-stencil.svg b/packages/desktop/src/assets/file-icons/folder-stencil.svg
new file mode 100644
index 000000000..c0443c98a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-stencil.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-store-open.svg b/packages/desktop/src/assets/file-icons/folder-store-open.svg
new file mode 100644
index 000000000..13e415bc5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-store-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-store.svg b/packages/desktop/src/assets/file-icons/folder-store.svg
new file mode 100644
index 000000000..ae29c03de
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-store.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-storybook-open.svg b/packages/desktop/src/assets/file-icons/folder-storybook-open.svg
new file mode 100644
index 000000000..9be24b2e1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-storybook-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-storybook.svg b/packages/desktop/src/assets/file-icons/folder-storybook.svg
new file mode 100644
index 000000000..26e6246f0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-storybook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-stylus-open.svg b/packages/desktop/src/assets/file-icons/folder-stylus-open.svg
new file mode 100644
index 000000000..9615173c5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-stylus-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-stylus.svg b/packages/desktop/src/assets/file-icons/folder-stylus.svg
new file mode 100644
index 000000000..68ae158fb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-stylus.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-sublime-open.svg b/packages/desktop/src/assets/file-icons/folder-sublime-open.svg
new file mode 100644
index 000000000..5066f3a14
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-sublime-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-sublime.svg b/packages/desktop/src/assets/file-icons/folder-sublime.svg
new file mode 100644
index 000000000..1361eda5f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-sublime.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-supabase-open.svg b/packages/desktop/src/assets/file-icons/folder-supabase-open.svg
new file mode 100644
index 000000000..d58a6924e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-supabase-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-supabase.svg b/packages/desktop/src/assets/file-icons/folder-supabase.svg
new file mode 100644
index 000000000..c0c8189fe
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-supabase.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-svelte-open.svg b/packages/desktop/src/assets/file-icons/folder-svelte-open.svg
new file mode 100644
index 000000000..f72ae2f7e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-svelte-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-svelte.svg b/packages/desktop/src/assets/file-icons/folder-svelte.svg
new file mode 100644
index 000000000..61bf1d4db
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-svelte.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-svg-open.svg b/packages/desktop/src/assets/file-icons/folder-svg-open.svg
new file mode 100644
index 000000000..f8ef72bad
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-svg-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-svg.svg b/packages/desktop/src/assets/file-icons/folder-svg.svg
new file mode 100644
index 000000000..320b9eb59
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-svg.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-syntax-open.svg b/packages/desktop/src/assets/file-icons/folder-syntax-open.svg
new file mode 100644
index 000000000..fd9d972b3
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-syntax-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-syntax.svg b/packages/desktop/src/assets/file-icons/folder-syntax.svg
new file mode 100644
index 000000000..be4ab1619
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-syntax.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-target-open.svg b/packages/desktop/src/assets/file-icons/folder-target-open.svg
new file mode 100644
index 000000000..0004bf866
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-target-open.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-target.svg b/packages/desktop/src/assets/file-icons/folder-target.svg
new file mode 100644
index 000000000..5872750bd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-target.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-taskfile-open.svg b/packages/desktop/src/assets/file-icons/folder-taskfile-open.svg
new file mode 100644
index 000000000..fc2c50148
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-taskfile-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-taskfile.svg b/packages/desktop/src/assets/file-icons/folder-taskfile.svg
new file mode 100644
index 000000000..1a3cac7ad
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-taskfile.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-tasks-open.svg b/packages/desktop/src/assets/file-icons/folder-tasks-open.svg
new file mode 100644
index 000000000..ed0e67f26
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-tasks-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-tasks.svg b/packages/desktop/src/assets/file-icons/folder-tasks.svg
new file mode 100644
index 000000000..1a9ef8ad6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-tasks.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-television-open.svg b/packages/desktop/src/assets/file-icons/folder-television-open.svg
new file mode 100644
index 000000000..33c21d8bc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-television-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-television.svg b/packages/desktop/src/assets/file-icons/folder-television.svg
new file mode 100644
index 000000000..dc1029496
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-television.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-temp-open.svg b/packages/desktop/src/assets/file-icons/folder-temp-open.svg
new file mode 100644
index 000000000..ec798b1e2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-temp-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-temp.svg b/packages/desktop/src/assets/file-icons/folder-temp.svg
new file mode 100644
index 000000000..3002a86c2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-temp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-template-open.svg b/packages/desktop/src/assets/file-icons/folder-template-open.svg
new file mode 100644
index 000000000..e3f822b71
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-template-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-template.svg b/packages/desktop/src/assets/file-icons/folder-template.svg
new file mode 100644
index 000000000..1d1583704
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-template.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-terraform-open.svg b/packages/desktop/src/assets/file-icons/folder-terraform-open.svg
new file mode 100644
index 000000000..fff197bb0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-terraform-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-terraform.svg b/packages/desktop/src/assets/file-icons/folder-terraform.svg
new file mode 100644
index 000000000..e71fba8dc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-terraform.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-test-open.svg b/packages/desktop/src/assets/file-icons/folder-test-open.svg
new file mode 100644
index 000000000..f3fefb357
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-test-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-test.svg b/packages/desktop/src/assets/file-icons/folder-test.svg
new file mode 100644
index 000000000..92bee1623
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-test.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-theme-open.svg b/packages/desktop/src/assets/file-icons/folder-theme-open.svg
new file mode 100644
index 000000000..5e79f991e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-theme-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-theme.svg b/packages/desktop/src/assets/file-icons/folder-theme.svg
new file mode 100644
index 000000000..88efa9551
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-theme.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-tools-open.svg b/packages/desktop/src/assets/file-icons/folder-tools-open.svg
new file mode 100644
index 000000000..77ecaa886
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-tools-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-tools.svg b/packages/desktop/src/assets/file-icons/folder-tools.svg
new file mode 100644
index 000000000..d591a1f38
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-tools.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-trash-open.svg b/packages/desktop/src/assets/file-icons/folder-trash-open.svg
new file mode 100644
index 000000000..add51b82d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-trash-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-trash.svg b/packages/desktop/src/assets/file-icons/folder-trash.svg
new file mode 100644
index 000000000..1e81d28f9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-trash.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-trigger-open.svg b/packages/desktop/src/assets/file-icons/folder-trigger-open.svg
new file mode 100644
index 000000000..ecd80d37c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-trigger-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-trigger.svg b/packages/desktop/src/assets/file-icons/folder-trigger.svg
new file mode 100644
index 000000000..cfe23c1bf
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-trigger.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-turborepo-open.svg b/packages/desktop/src/assets/file-icons/folder-turborepo-open.svg
new file mode 100644
index 000000000..e0d7c35cf
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-turborepo-open.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-turborepo.svg b/packages/desktop/src/assets/file-icons/folder-turborepo.svg
new file mode 100644
index 000000000..ea203360b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-turborepo.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-typescript-open.svg b/packages/desktop/src/assets/file-icons/folder-typescript-open.svg
new file mode 100644
index 000000000..87c8e2fa1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-typescript-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-typescript.svg b/packages/desktop/src/assets/file-icons/folder-typescript.svg
new file mode 100644
index 000000000..df26f8937
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-typescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-ui-open.svg b/packages/desktop/src/assets/file-icons/folder-ui-open.svg
new file mode 100644
index 000000000..304491698
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-ui-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-ui.svg b/packages/desktop/src/assets/file-icons/folder-ui.svg
new file mode 100644
index 000000000..fa320d101
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-ui.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-unity-open.svg b/packages/desktop/src/assets/file-icons/folder-unity-open.svg
new file mode 100644
index 000000000..cb036d5d1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-unity-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-unity.svg b/packages/desktop/src/assets/file-icons/folder-unity.svg
new file mode 100644
index 000000000..c751de29c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-unity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-update-open.svg b/packages/desktop/src/assets/file-icons/folder-update-open.svg
new file mode 100644
index 000000000..a6d18a9a7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-update-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-update.svg b/packages/desktop/src/assets/file-icons/folder-update.svg
new file mode 100644
index 000000000..65eaf57d7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-update.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-upload-open.svg b/packages/desktop/src/assets/file-icons/folder-upload-open.svg
new file mode 100644
index 000000000..24fc35931
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-upload-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-upload.svg b/packages/desktop/src/assets/file-icons/folder-upload.svg
new file mode 100644
index 000000000..423c6c117
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-upload.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-utils-open.svg b/packages/desktop/src/assets/file-icons/folder-utils-open.svg
new file mode 100644
index 000000000..b894eff0b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-utils-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-utils.svg b/packages/desktop/src/assets/file-icons/folder-utils.svg
new file mode 100644
index 000000000..fcc799948
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-utils.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-vercel-open.svg b/packages/desktop/src/assets/file-icons/folder-vercel-open.svg
new file mode 100644
index 000000000..c571c63f3
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-vercel-open.svg
@@ -0,0 +1,5 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-vercel.svg b/packages/desktop/src/assets/file-icons/folder-vercel.svg
new file mode 100644
index 000000000..513848130
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-vercel.svg
@@ -0,0 +1,5 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/folder-verdaccio-open.svg b/packages/desktop/src/assets/file-icons/folder-verdaccio-open.svg
new file mode 100644
index 000000000..24beac52b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-verdaccio-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-verdaccio.svg b/packages/desktop/src/assets/file-icons/folder-verdaccio.svg
new file mode 100644
index 000000000..8e78ba798
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-verdaccio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-video-open.svg b/packages/desktop/src/assets/file-icons/folder-video-open.svg
new file mode 100644
index 000000000..ea60cd047
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-video-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-video.svg b/packages/desktop/src/assets/file-icons/folder-video.svg
new file mode 100644
index 000000000..d1385545a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-video.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-views-open.svg b/packages/desktop/src/assets/file-icons/folder-views-open.svg
new file mode 100644
index 000000000..1c785e4ce
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-views-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-views.svg b/packages/desktop/src/assets/file-icons/folder-views.svg
new file mode 100644
index 000000000..5d41f10b0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-views.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-vm-open.svg b/packages/desktop/src/assets/file-icons/folder-vm-open.svg
new file mode 100644
index 000000000..e1a2b54cf
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-vm-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-vm.svg b/packages/desktop/src/assets/file-icons/folder-vm.svg
new file mode 100644
index 000000000..1ee3a95dd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-vm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-vscode-open.svg b/packages/desktop/src/assets/file-icons/folder-vscode-open.svg
new file mode 100644
index 000000000..82e3a21e0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-vscode-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-vscode.svg b/packages/desktop/src/assets/file-icons/folder-vscode.svg
new file mode 100644
index 000000000..07ccbd6e7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-vscode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-vue-directives-open.svg b/packages/desktop/src/assets/file-icons/folder-vue-directives-open.svg
new file mode 100644
index 000000000..341354bbc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-vue-directives-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-vue-directives.svg b/packages/desktop/src/assets/file-icons/folder-vue-directives.svg
new file mode 100644
index 000000000..fc28ccb85
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-vue-directives.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-vue-open.svg b/packages/desktop/src/assets/file-icons/folder-vue-open.svg
new file mode 100644
index 000000000..03abcafab
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-vue-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-vue.svg b/packages/desktop/src/assets/file-icons/folder-vue.svg
new file mode 100644
index 000000000..c7cf38e8a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-vue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-vuepress-open.svg b/packages/desktop/src/assets/file-icons/folder-vuepress-open.svg
new file mode 100644
index 000000000..af2b09b39
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-vuepress-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-vuepress.svg b/packages/desktop/src/assets/file-icons/folder-vuepress.svg
new file mode 100644
index 000000000..42fb0dc4b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-vuepress.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-vuex-store-open.svg b/packages/desktop/src/assets/file-icons/folder-vuex-store-open.svg
new file mode 100644
index 000000000..77c3c4681
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-vuex-store-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-vuex-store.svg b/packages/desktop/src/assets/file-icons/folder-vuex-store.svg
new file mode 100644
index 000000000..5c6793e6d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-vuex-store.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-wakatime-open.svg b/packages/desktop/src/assets/file-icons/folder-wakatime-open.svg
new file mode 100644
index 000000000..d1dbc3845
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-wakatime-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-wakatime.svg b/packages/desktop/src/assets/file-icons/folder-wakatime.svg
new file mode 100644
index 000000000..860a661ee
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-wakatime.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-webpack-open.svg b/packages/desktop/src/assets/file-icons/folder-webpack-open.svg
new file mode 100644
index 000000000..acd1e1919
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-webpack-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-webpack.svg b/packages/desktop/src/assets/file-icons/folder-webpack.svg
new file mode 100644
index 000000000..3ac887a2a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-webpack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-windows-open.svg b/packages/desktop/src/assets/file-icons/folder-windows-open.svg
new file mode 100644
index 000000000..9173ff9cb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-windows-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-windows.svg b/packages/desktop/src/assets/file-icons/folder-windows.svg
new file mode 100644
index 000000000..184de3100
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-windows.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-wordpress-open.svg b/packages/desktop/src/assets/file-icons/folder-wordpress-open.svg
new file mode 100644
index 000000000..8cb4006db
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-wordpress-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-wordpress.svg b/packages/desktop/src/assets/file-icons/folder-wordpress.svg
new file mode 100644
index 000000000..a954a2b99
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-wordpress.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-yarn-open.svg b/packages/desktop/src/assets/file-icons/folder-yarn-open.svg
new file mode 100644
index 000000000..ddbb98894
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-yarn-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-yarn.svg b/packages/desktop/src/assets/file-icons/folder-yarn.svg
new file mode 100644
index 000000000..58aee64b8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-yarn.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-zeabur-open.svg b/packages/desktop/src/assets/file-icons/folder-zeabur-open.svg
new file mode 100644
index 000000000..ac2a31a3e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-zeabur-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder-zeabur.svg b/packages/desktop/src/assets/file-icons/folder-zeabur.svg
new file mode 100644
index 000000000..b0b842136
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder-zeabur.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/folder.svg b/packages/desktop/src/assets/file-icons/folder.svg
new file mode 100644
index 000000000..97ee81ca4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/folder.svg
@@ -0,0 +1,5 @@
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/font.svg b/packages/desktop/src/assets/file-icons/font.svg
new file mode 100644
index 000000000..961586d9d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/font.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/forth.svg b/packages/desktop/src/assets/file-icons/forth.svg
new file mode 100644
index 000000000..50b66af6e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/forth.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/fortran.svg b/packages/desktop/src/assets/file-icons/fortran.svg
new file mode 100644
index 000000000..235db1a06
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/fortran.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/foxpro.svg b/packages/desktop/src/assets/file-icons/foxpro.svg
new file mode 100644
index 000000000..e2d5eb00b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/foxpro.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/freemarker.svg b/packages/desktop/src/assets/file-icons/freemarker.svg
new file mode 100644
index 000000000..edf98f6df
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/freemarker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/fsharp.svg b/packages/desktop/src/assets/file-icons/fsharp.svg
new file mode 100644
index 000000000..1e5b7cfdc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/fsharp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/fusebox.svg b/packages/desktop/src/assets/file-icons/fusebox.svg
new file mode 100644
index 000000000..a4ad3d666
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/fusebox.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/gamemaker.svg b/packages/desktop/src/assets/file-icons/gamemaker.svg
new file mode 100644
index 000000000..4097cdd7f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/gamemaker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/garden.svg b/packages/desktop/src/assets/file-icons/garden.svg
new file mode 100644
index 000000000..a96386d60
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/garden.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/gatsby.svg b/packages/desktop/src/assets/file-icons/gatsby.svg
new file mode 100644
index 000000000..c2674692e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/gatsby.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/gcp.svg b/packages/desktop/src/assets/file-icons/gcp.svg
new file mode 100644
index 000000000..62be90414
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/gcp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/gemfile.svg b/packages/desktop/src/assets/file-icons/gemfile.svg
new file mode 100644
index 000000000..757c89d16
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/gemfile.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/gemini-ai.svg b/packages/desktop/src/assets/file-icons/gemini-ai.svg
new file mode 100644
index 000000000..0911694b1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/gemini-ai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/gemini.svg b/packages/desktop/src/assets/file-icons/gemini.svg
new file mode 100644
index 000000000..79ad4bf5f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/gemini.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/git.svg b/packages/desktop/src/assets/file-icons/git.svg
new file mode 100644
index 000000000..c1e08fd4e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/git.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/github-actions-workflow.svg b/packages/desktop/src/assets/file-icons/github-actions-workflow.svg
new file mode 100644
index 000000000..1c724c5ff
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/github-actions-workflow.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/github-sponsors.svg b/packages/desktop/src/assets/file-icons/github-sponsors.svg
new file mode 100644
index 000000000..72fb66811
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/github-sponsors.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/gitlab.svg b/packages/desktop/src/assets/file-icons/gitlab.svg
new file mode 100644
index 000000000..ceeabaf9a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/gitlab.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/gitpod.svg b/packages/desktop/src/assets/file-icons/gitpod.svg
new file mode 100644
index 000000000..a992017ec
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/gitpod.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/gleam.svg b/packages/desktop/src/assets/file-icons/gleam.svg
new file mode 100644
index 000000000..76e0d0c5e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/gleam.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/gnuplot.svg b/packages/desktop/src/assets/file-icons/gnuplot.svg
new file mode 100644
index 000000000..8cc510b53
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/gnuplot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/go-mod.svg b/packages/desktop/src/assets/file-icons/go-mod.svg
new file mode 100644
index 000000000..1689116be
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/go-mod.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/go.svg b/packages/desktop/src/assets/file-icons/go.svg
new file mode 100644
index 000000000..d874e329e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/go.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/go_gopher.svg b/packages/desktop/src/assets/file-icons/go_gopher.svg
new file mode 100644
index 000000000..e465f7456
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/go_gopher.svg
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/godot-assets.svg b/packages/desktop/src/assets/file-icons/godot-assets.svg
new file mode 100644
index 000000000..19e193da4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/godot-assets.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/godot.svg b/packages/desktop/src/assets/file-icons/godot.svg
new file mode 100644
index 000000000..4b1dd7fc2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/godot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/gradle.svg b/packages/desktop/src/assets/file-icons/gradle.svg
new file mode 100644
index 000000000..72d88fdbb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/gradle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/grafana-alloy.svg b/packages/desktop/src/assets/file-icons/grafana-alloy.svg
new file mode 100644
index 000000000..cf0003126
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/grafana-alloy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/grain.svg b/packages/desktop/src/assets/file-icons/grain.svg
new file mode 100644
index 000000000..f96d46ba7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/grain.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/graphcool.svg b/packages/desktop/src/assets/file-icons/graphcool.svg
new file mode 100644
index 000000000..bdaedb9d5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/graphcool.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/graphql.svg b/packages/desktop/src/assets/file-icons/graphql.svg
new file mode 100644
index 000000000..252b0f734
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/graphql.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/gridsome.svg b/packages/desktop/src/assets/file-icons/gridsome.svg
new file mode 100644
index 000000000..872774100
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/gridsome.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/groovy.svg b/packages/desktop/src/assets/file-icons/groovy.svg
new file mode 100644
index 000000000..9af0c08f4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/groovy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/grunt.svg b/packages/desktop/src/assets/file-icons/grunt.svg
new file mode 100644
index 000000000..2b1499453
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/grunt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/gulp.svg b/packages/desktop/src/assets/file-icons/gulp.svg
new file mode 100644
index 000000000..bc6a77ffd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/gulp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/h.svg b/packages/desktop/src/assets/file-icons/h.svg
new file mode 100644
index 000000000..08db8fe48
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/h.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/hack.svg b/packages/desktop/src/assets/file-icons/hack.svg
new file mode 100644
index 000000000..921cd7359
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/hack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/hadolint.svg b/packages/desktop/src/assets/file-icons/hadolint.svg
new file mode 100644
index 000000000..26195f506
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/hadolint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/haml.svg b/packages/desktop/src/assets/file-icons/haml.svg
new file mode 100644
index 000000000..bf08db53a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/haml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/handlebars.svg b/packages/desktop/src/assets/file-icons/handlebars.svg
new file mode 100644
index 000000000..cf8993005
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/handlebars.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/hardhat.svg b/packages/desktop/src/assets/file-icons/hardhat.svg
new file mode 100644
index 000000000..dad8d4503
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/hardhat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/harmonix.svg b/packages/desktop/src/assets/file-icons/harmonix.svg
new file mode 100644
index 000000000..299fa478c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/harmonix.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/haskell.svg b/packages/desktop/src/assets/file-icons/haskell.svg
new file mode 100644
index 000000000..ae44927a9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/haskell.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/haxe.svg b/packages/desktop/src/assets/file-icons/haxe.svg
new file mode 100644
index 000000000..cb28364f3
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/haxe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/hcl.svg b/packages/desktop/src/assets/file-icons/hcl.svg
new file mode 100644
index 000000000..71edfb4af
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/hcl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/hcl_light.svg b/packages/desktop/src/assets/file-icons/hcl_light.svg
new file mode 100644
index 000000000..019691460
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/hcl_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/helm.svg b/packages/desktop/src/assets/file-icons/helm.svg
new file mode 100644
index 000000000..58aa4a82d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/helm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/heroku.svg b/packages/desktop/src/assets/file-icons/heroku.svg
new file mode 100644
index 000000000..d9d1ab03d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/heroku.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/hex.svg b/packages/desktop/src/assets/file-icons/hex.svg
new file mode 100644
index 000000000..e50c6771c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/hex.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/histoire.svg b/packages/desktop/src/assets/file-icons/histoire.svg
new file mode 100644
index 000000000..5619c16da
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/histoire.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/hjson.svg b/packages/desktop/src/assets/file-icons/hjson.svg
new file mode 100644
index 000000000..7725feb78
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/hjson.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/horusec.svg b/packages/desktop/src/assets/file-icons/horusec.svg
new file mode 100644
index 000000000..9ea1155e4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/horusec.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/hosts.svg b/packages/desktop/src/assets/file-icons/hosts.svg
new file mode 100644
index 000000000..f88e7c6c8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/hosts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/hosts_light.svg b/packages/desktop/src/assets/file-icons/hosts_light.svg
new file mode 100644
index 000000000..613a25e39
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/hosts_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/hpp.svg b/packages/desktop/src/assets/file-icons/hpp.svg
new file mode 100644
index 000000000..3e6872d2e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/hpp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/html.svg b/packages/desktop/src/assets/file-icons/html.svg
new file mode 100644
index 000000000..71caf32b6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/html.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/http.svg b/packages/desktop/src/assets/file-icons/http.svg
new file mode 100644
index 000000000..94574d4a5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/http.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/huff.svg b/packages/desktop/src/assets/file-icons/huff.svg
new file mode 100644
index 000000000..223291415
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/huff.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/huff_light.svg b/packages/desktop/src/assets/file-icons/huff_light.svg
new file mode 100644
index 000000000..43889e036
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/huff_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/hurl.svg b/packages/desktop/src/assets/file-icons/hurl.svg
new file mode 100644
index 000000000..227045b5e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/hurl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/husky.svg b/packages/desktop/src/assets/file-icons/husky.svg
new file mode 100644
index 000000000..b48f06a69
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/husky.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/i18n.svg b/packages/desktop/src/assets/file-icons/i18n.svg
new file mode 100644
index 000000000..4f678de31
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/i18n.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/idris.svg b/packages/desktop/src/assets/file-icons/idris.svg
new file mode 100644
index 000000000..445745b68
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/idris.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ifanr-cloud.svg b/packages/desktop/src/assets/file-icons/ifanr-cloud.svg
new file mode 100644
index 000000000..c356b1691
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ifanr-cloud.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/image.svg b/packages/desktop/src/assets/file-icons/image.svg
new file mode 100644
index 000000000..0ca446bb9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/image.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/imba.svg b/packages/desktop/src/assets/file-icons/imba.svg
new file mode 100644
index 000000000..60b06154c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/imba.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/installation.svg b/packages/desktop/src/assets/file-icons/installation.svg
new file mode 100644
index 000000000..36fa21cf0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/installation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ionic.svg b/packages/desktop/src/assets/file-icons/ionic.svg
new file mode 100644
index 000000000..2ce630d01
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ionic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/istanbul.svg b/packages/desktop/src/assets/file-icons/istanbul.svg
new file mode 100644
index 000000000..9508a981a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/istanbul.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/jar.svg b/packages/desktop/src/assets/file-icons/jar.svg
new file mode 100644
index 000000000..1c81c48c5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/jar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/java.svg b/packages/desktop/src/assets/file-icons/java.svg
new file mode 100644
index 000000000..0950bc402
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/java.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/javaclass.svg b/packages/desktop/src/assets/file-icons/javaclass.svg
new file mode 100644
index 000000000..9abe7ad80
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/javaclass.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/javascript-map.svg b/packages/desktop/src/assets/file-icons/javascript-map.svg
new file mode 100644
index 000000000..a1fcc2273
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/javascript-map.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/javascript.svg b/packages/desktop/src/assets/file-icons/javascript.svg
new file mode 100644
index 000000000..254704ab7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/javascript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/jenkins.svg b/packages/desktop/src/assets/file-icons/jenkins.svg
new file mode 100644
index 000000000..1517b746e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/jenkins.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/jest.svg b/packages/desktop/src/assets/file-icons/jest.svg
new file mode 100644
index 000000000..fb40ecb37
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/jest.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/jinja.svg b/packages/desktop/src/assets/file-icons/jinja.svg
new file mode 100644
index 000000000..8163f2a1b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/jinja.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/jinja_light.svg b/packages/desktop/src/assets/file-icons/jinja_light.svg
new file mode 100644
index 000000000..22333982c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/jinja_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/jsconfig.svg b/packages/desktop/src/assets/file-icons/jsconfig.svg
new file mode 100644
index 000000000..5aef48128
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/jsconfig.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/json.svg b/packages/desktop/src/assets/file-icons/json.svg
new file mode 100644
index 000000000..2590b943f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/json.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/jsr.svg b/packages/desktop/src/assets/file-icons/jsr.svg
new file mode 100644
index 000000000..739f6574e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/jsr.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/jsr_light.svg b/packages/desktop/src/assets/file-icons/jsr_light.svg
new file mode 100644
index 000000000..c93d45224
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/jsr_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/julia.svg b/packages/desktop/src/assets/file-icons/julia.svg
new file mode 100644
index 000000000..39fca6351
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/julia.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/jupyter.svg b/packages/desktop/src/assets/file-icons/jupyter.svg
new file mode 100644
index 000000000..770bffbc6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/jupyter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/just.svg b/packages/desktop/src/assets/file-icons/just.svg
new file mode 100644
index 000000000..7fc754314
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/just.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/karma.svg b/packages/desktop/src/assets/file-icons/karma.svg
new file mode 100644
index 000000000..0db4ab60b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/karma.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/kcl.svg b/packages/desktop/src/assets/file-icons/kcl.svg
new file mode 100644
index 000000000..4f10c602e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/kcl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/key.svg b/packages/desktop/src/assets/file-icons/key.svg
new file mode 100644
index 000000000..08f67af4c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/key.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/keystatic.svg b/packages/desktop/src/assets/file-icons/keystatic.svg
new file mode 100644
index 000000000..087b65872
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/keystatic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/kivy.svg b/packages/desktop/src/assets/file-icons/kivy.svg
new file mode 100644
index 000000000..2a1a35c4a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/kivy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/kl.svg b/packages/desktop/src/assets/file-icons/kl.svg
new file mode 100644
index 000000000..967ef09e9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/kl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/knip.svg b/packages/desktop/src/assets/file-icons/knip.svg
new file mode 100644
index 000000000..c71d0a20d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/knip.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/kotlin.svg b/packages/desktop/src/assets/file-icons/kotlin.svg
new file mode 100644
index 000000000..740505c19
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/kotlin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/kubernetes.svg b/packages/desktop/src/assets/file-icons/kubernetes.svg
new file mode 100644
index 000000000..6726dcc86
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/kubernetes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/kusto.svg b/packages/desktop/src/assets/file-icons/kusto.svg
new file mode 100644
index 000000000..46087e83c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/kusto.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/label.svg b/packages/desktop/src/assets/file-icons/label.svg
new file mode 100644
index 000000000..28abeacd7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/label.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/laravel.svg b/packages/desktop/src/assets/file-icons/laravel.svg
new file mode 100644
index 000000000..95ee92351
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/laravel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/latexmk.svg b/packages/desktop/src/assets/file-icons/latexmk.svg
new file mode 100644
index 000000000..484318aaf
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/latexmk.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/lbx.svg b/packages/desktop/src/assets/file-icons/lbx.svg
new file mode 100644
index 000000000..c66f15715
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/lbx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/lefthook.svg b/packages/desktop/src/assets/file-icons/lefthook.svg
new file mode 100644
index 000000000..93f6f81b6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/lefthook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/lerna.svg b/packages/desktop/src/assets/file-icons/lerna.svg
new file mode 100644
index 000000000..4128d6b9d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/lerna.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/less.svg b/packages/desktop/src/assets/file-icons/less.svg
new file mode 100644
index 000000000..2e13a3c5e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/less.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/liara.svg b/packages/desktop/src/assets/file-icons/liara.svg
new file mode 100644
index 000000000..2fd408c6e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/liara.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/lib.svg b/packages/desktop/src/assets/file-icons/lib.svg
new file mode 100644
index 000000000..7c8fda3e0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/lib.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/lighthouse.svg b/packages/desktop/src/assets/file-icons/lighthouse.svg
new file mode 100644
index 000000000..022924410
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/lighthouse.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/lilypond.svg b/packages/desktop/src/assets/file-icons/lilypond.svg
new file mode 100644
index 000000000..a12aa2cc2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/lilypond.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/lintstaged.svg b/packages/desktop/src/assets/file-icons/lintstaged.svg
new file mode 100644
index 000000000..fbf94678e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/lintstaged.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/liquid.svg b/packages/desktop/src/assets/file-icons/liquid.svg
new file mode 100644
index 000000000..5111ab67f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/liquid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/lisp.svg b/packages/desktop/src/assets/file-icons/lisp.svg
new file mode 100644
index 000000000..76e4f465b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/lisp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/livescript.svg b/packages/desktop/src/assets/file-icons/livescript.svg
new file mode 100644
index 000000000..d7dcb37c3
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/livescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/lock.svg b/packages/desktop/src/assets/file-icons/lock.svg
new file mode 100644
index 000000000..ca49d02c3
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/lock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/log.svg b/packages/desktop/src/assets/file-icons/log.svg
new file mode 100644
index 000000000..389f51d32
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/log.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/lolcode.svg b/packages/desktop/src/assets/file-icons/lolcode.svg
new file mode 100644
index 000000000..f9c759581
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/lolcode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/lottie.svg b/packages/desktop/src/assets/file-icons/lottie.svg
new file mode 100644
index 000000000..29981d323
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/lottie.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/lua.svg b/packages/desktop/src/assets/file-icons/lua.svg
new file mode 100644
index 000000000..ca7a3d5dd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/lua.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/luau.svg b/packages/desktop/src/assets/file-icons/luau.svg
new file mode 100644
index 000000000..7f9ad5768
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/luau.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/lyric.svg b/packages/desktop/src/assets/file-icons/lyric.svg
new file mode 100644
index 000000000..06bb43e4d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/lyric.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/makefile.svg b/packages/desktop/src/assets/file-icons/makefile.svg
new file mode 100644
index 000000000..e211671c5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/makefile.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/markdoc-config.svg b/packages/desktop/src/assets/file-icons/markdoc-config.svg
new file mode 100644
index 000000000..13913c38c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/markdoc-config.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/markdoc.svg b/packages/desktop/src/assets/file-icons/markdoc.svg
new file mode 100644
index 000000000..3ed2c54b7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/markdoc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/markdown.svg b/packages/desktop/src/assets/file-icons/markdown.svg
new file mode 100644
index 000000000..4c224341c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/markdown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/markdownlint.svg b/packages/desktop/src/assets/file-icons/markdownlint.svg
new file mode 100644
index 000000000..37daf0d27
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/markdownlint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/markojs.svg b/packages/desktop/src/assets/file-icons/markojs.svg
new file mode 100644
index 000000000..938b6fee8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/markojs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/mathematica.svg b/packages/desktop/src/assets/file-icons/mathematica.svg
new file mode 100644
index 000000000..08c25084b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/mathematica.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/matlab.svg b/packages/desktop/src/assets/file-icons/matlab.svg
new file mode 100644
index 000000000..a2166f81e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/matlab.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/maven.svg b/packages/desktop/src/assets/file-icons/maven.svg
new file mode 100644
index 000000000..7a8874502
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/maven.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/mdsvex.svg b/packages/desktop/src/assets/file-icons/mdsvex.svg
new file mode 100644
index 000000000..34b252af1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/mdsvex.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/mdx.svg b/packages/desktop/src/assets/file-icons/mdx.svg
new file mode 100644
index 000000000..b2ab5611a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/mdx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/mercurial.svg b/packages/desktop/src/assets/file-icons/mercurial.svg
new file mode 100644
index 000000000..41f701e23
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/mercurial.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/merlin.svg b/packages/desktop/src/assets/file-icons/merlin.svg
new file mode 100644
index 000000000..96b29d3fd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/merlin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/mermaid.svg b/packages/desktop/src/assets/file-icons/mermaid.svg
new file mode 100644
index 000000000..b1f520d81
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/mermaid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/meson.svg b/packages/desktop/src/assets/file-icons/meson.svg
new file mode 100644
index 000000000..f9d3bef4a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/meson.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/minecraft-fabric.svg b/packages/desktop/src/assets/file-icons/minecraft-fabric.svg
new file mode 100644
index 000000000..4c0985b9c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/minecraft-fabric.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/minecraft.svg b/packages/desktop/src/assets/file-icons/minecraft.svg
new file mode 100644
index 000000000..219af8ae4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/minecraft.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/mint.svg b/packages/desktop/src/assets/file-icons/mint.svg
new file mode 100644
index 000000000..659340a8c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/mint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/mjml.svg b/packages/desktop/src/assets/file-icons/mjml.svg
new file mode 100644
index 000000000..5580ca096
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/mjml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/mocha.svg b/packages/desktop/src/assets/file-icons/mocha.svg
new file mode 100644
index 000000000..bce8ac3b5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/mocha.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/modernizr.svg b/packages/desktop/src/assets/file-icons/modernizr.svg
new file mode 100644
index 000000000..b340bec1b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/modernizr.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/mojo.svg b/packages/desktop/src/assets/file-icons/mojo.svg
new file mode 100644
index 000000000..505a8f529
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/mojo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/moon.svg b/packages/desktop/src/assets/file-icons/moon.svg
new file mode 100644
index 000000000..c428ebb0e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/moon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/moonscript.svg b/packages/desktop/src/assets/file-icons/moonscript.svg
new file mode 100644
index 000000000..1d7f7ee9f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/moonscript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/mxml.svg b/packages/desktop/src/assets/file-icons/mxml.svg
new file mode 100644
index 000000000..c5b84ddbd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/mxml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/nano-staged.svg b/packages/desktop/src/assets/file-icons/nano-staged.svg
new file mode 100644
index 000000000..6e6cd0751
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/nano-staged.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/nano-staged_light.svg b/packages/desktop/src/assets/file-icons/nano-staged_light.svg
new file mode 100644
index 000000000..698232f0c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/nano-staged_light.svg
@@ -0,0 +1,4 @@
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/ndst.svg b/packages/desktop/src/assets/file-icons/ndst.svg
new file mode 100644
index 000000000..194131385
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ndst.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/nest.svg b/packages/desktop/src/assets/file-icons/nest.svg
new file mode 100644
index 000000000..259dc538b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/nest.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/netlify.svg b/packages/desktop/src/assets/file-icons/netlify.svg
new file mode 100644
index 000000000..27c837fcc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/netlify.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/netlify_light.svg b/packages/desktop/src/assets/file-icons/netlify_light.svg
new file mode 100644
index 000000000..b142c486f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/netlify_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/next.svg b/packages/desktop/src/assets/file-icons/next.svg
new file mode 100644
index 000000000..83fee37c1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/next.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/next_light.svg b/packages/desktop/src/assets/file-icons/next_light.svg
new file mode 100644
index 000000000..6e5fb272e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/next_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/nginx.svg b/packages/desktop/src/assets/file-icons/nginx.svg
new file mode 100644
index 000000000..658ad228f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/nginx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ngrx-actions.svg b/packages/desktop/src/assets/file-icons/ngrx-actions.svg
new file mode 100644
index 000000000..de418d48d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ngrx-actions.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ngrx-effects.svg b/packages/desktop/src/assets/file-icons/ngrx-effects.svg
new file mode 100644
index 000000000..8f7dc89dd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ngrx-effects.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ngrx-entity.svg b/packages/desktop/src/assets/file-icons/ngrx-entity.svg
new file mode 100644
index 000000000..af0dd0563
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ngrx-entity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ngrx-reducer.svg b/packages/desktop/src/assets/file-icons/ngrx-reducer.svg
new file mode 100644
index 000000000..db7a5534a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ngrx-reducer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ngrx-selectors.svg b/packages/desktop/src/assets/file-icons/ngrx-selectors.svg
new file mode 100644
index 000000000..af03c40ff
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ngrx-selectors.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ngrx-state.svg b/packages/desktop/src/assets/file-icons/ngrx-state.svg
new file mode 100644
index 000000000..258c0ac87
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ngrx-state.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/nim.svg b/packages/desktop/src/assets/file-icons/nim.svg
new file mode 100644
index 000000000..d985bb40e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/nim.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/nix.svg b/packages/desktop/src/assets/file-icons/nix.svg
new file mode 100644
index 000000000..a50760969
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/nix.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/nodejs.svg b/packages/desktop/src/assets/file-icons/nodejs.svg
new file mode 100644
index 000000000..ba7390153
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/nodejs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/nodejs_alt.svg b/packages/desktop/src/assets/file-icons/nodejs_alt.svg
new file mode 100644
index 000000000..5b70be2d0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/nodejs_alt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/nodemon.svg b/packages/desktop/src/assets/file-icons/nodemon.svg
new file mode 100644
index 000000000..2bd35d1c2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/nodemon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/npm.svg b/packages/desktop/src/assets/file-icons/npm.svg
new file mode 100644
index 000000000..87aa58368
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/npm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/nuget.svg b/packages/desktop/src/assets/file-icons/nuget.svg
new file mode 100644
index 000000000..82e298f50
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/nuget.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/nunjucks.svg b/packages/desktop/src/assets/file-icons/nunjucks.svg
new file mode 100644
index 000000000..9fb8890e2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/nunjucks.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/nuxt.svg b/packages/desktop/src/assets/file-icons/nuxt.svg
new file mode 100644
index 000000000..babf91945
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/nuxt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/nx.svg b/packages/desktop/src/assets/file-icons/nx.svg
new file mode 100644
index 000000000..8db832302
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/nx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/objective-c.svg b/packages/desktop/src/assets/file-icons/objective-c.svg
new file mode 100644
index 000000000..7a69f91d6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/objective-c.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/objective-cpp.svg b/packages/desktop/src/assets/file-icons/objective-cpp.svg
new file mode 100644
index 000000000..cd55d1ea5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/objective-cpp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ocaml.svg b/packages/desktop/src/assets/file-icons/ocaml.svg
new file mode 100644
index 000000000..cb6eb6b94
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ocaml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/odin.svg b/packages/desktop/src/assets/file-icons/odin.svg
new file mode 100644
index 000000000..1877a6cfc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/odin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/opa.svg b/packages/desktop/src/assets/file-icons/opa.svg
new file mode 100644
index 000000000..3afc1c6bf
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/opa.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/opam.svg b/packages/desktop/src/assets/file-icons/opam.svg
new file mode 100644
index 000000000..70f1b7f02
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/opam.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/openapi.svg b/packages/desktop/src/assets/file-icons/openapi.svg
new file mode 100644
index 000000000..5b367a168
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/openapi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/openapi_light.svg b/packages/desktop/src/assets/file-icons/openapi_light.svg
new file mode 100644
index 000000000..179006db8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/openapi_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/otne.svg b/packages/desktop/src/assets/file-icons/otne.svg
new file mode 100644
index 000000000..8670a615b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/otne.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/oxlint.svg b/packages/desktop/src/assets/file-icons/oxlint.svg
new file mode 100644
index 000000000..2ffad92d9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/oxlint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/packship.svg b/packages/desktop/src/assets/file-icons/packship.svg
new file mode 100644
index 000000000..e03b35d66
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/packship.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/palette.svg b/packages/desktop/src/assets/file-icons/palette.svg
new file mode 100644
index 000000000..cc27f66ae
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/palette.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/panda.svg b/packages/desktop/src/assets/file-icons/panda.svg
new file mode 100644
index 000000000..dde4122bb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/panda.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/parcel.svg b/packages/desktop/src/assets/file-icons/parcel.svg
new file mode 100644
index 000000000..39a1835f1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/parcel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/pascal.svg b/packages/desktop/src/assets/file-icons/pascal.svg
new file mode 100644
index 000000000..b0a2993eb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/pascal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/pawn.svg b/packages/desktop/src/assets/file-icons/pawn.svg
new file mode 100644
index 000000000..b615d75d1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/pawn.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/payload.svg b/packages/desktop/src/assets/file-icons/payload.svg
new file mode 100644
index 000000000..8e1e82abd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/payload.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/payload_light.svg b/packages/desktop/src/assets/file-icons/payload_light.svg
new file mode 100644
index 000000000..7a4e9c7d3
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/payload_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/pdf.svg b/packages/desktop/src/assets/file-icons/pdf.svg
new file mode 100644
index 000000000..1c84fe82d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/pdf.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/pdm.svg b/packages/desktop/src/assets/file-icons/pdm.svg
new file mode 100644
index 000000000..dd23bb343
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/pdm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/percy.svg b/packages/desktop/src/assets/file-icons/percy.svg
new file mode 100644
index 000000000..6d0f8973b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/percy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/perl.svg b/packages/desktop/src/assets/file-icons/perl.svg
new file mode 100644
index 000000000..0534cade2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/perl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/php-cs-fixer.svg b/packages/desktop/src/assets/file-icons/php-cs-fixer.svg
new file mode 100644
index 000000000..398c2145b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/php-cs-fixer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/php.svg b/packages/desktop/src/assets/file-icons/php.svg
new file mode 100644
index 000000000..1d7e3365e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/php.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/php_elephant.svg b/packages/desktop/src/assets/file-icons/php_elephant.svg
new file mode 100644
index 000000000..d2c2995b6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/php_elephant.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/php_elephant_pink.svg b/packages/desktop/src/assets/file-icons/php_elephant_pink.svg
new file mode 100644
index 000000000..a7cad7493
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/php_elephant_pink.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/phpstan.svg b/packages/desktop/src/assets/file-icons/phpstan.svg
new file mode 100644
index 000000000..34b612fe9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/phpstan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/phpunit.svg b/packages/desktop/src/assets/file-icons/phpunit.svg
new file mode 100644
index 000000000..21322005e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/phpunit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/pinejs.svg b/packages/desktop/src/assets/file-icons/pinejs.svg
new file mode 100644
index 000000000..44c0020b2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/pinejs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/pipeline.svg b/packages/desktop/src/assets/file-icons/pipeline.svg
new file mode 100644
index 000000000..a3a5e6688
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/pipeline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/pkl.svg b/packages/desktop/src/assets/file-icons/pkl.svg
new file mode 100644
index 000000000..3f31ead5d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/pkl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/plastic.svg b/packages/desktop/src/assets/file-icons/plastic.svg
new file mode 100644
index 000000000..cc00e5a70
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/plastic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/playwright.svg b/packages/desktop/src/assets/file-icons/playwright.svg
new file mode 100644
index 000000000..cae0b24aa
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/playwright.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/plop.svg b/packages/desktop/src/assets/file-icons/plop.svg
new file mode 100644
index 000000000..85e3bd2f0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/plop.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/pm2-ecosystem.svg b/packages/desktop/src/assets/file-icons/pm2-ecosystem.svg
new file mode 100644
index 000000000..a99d5f2a6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/pm2-ecosystem.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/pnpm.svg b/packages/desktop/src/assets/file-icons/pnpm.svg
new file mode 100644
index 000000000..fc52c6ed9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/pnpm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/pnpm_light.svg b/packages/desktop/src/assets/file-icons/pnpm_light.svg
new file mode 100644
index 000000000..4236956cc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/pnpm_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/poetry.svg b/packages/desktop/src/assets/file-icons/poetry.svg
new file mode 100644
index 000000000..4a355a7ef
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/poetry.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/postcss.svg b/packages/desktop/src/assets/file-icons/postcss.svg
new file mode 100644
index 000000000..799edebc9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/postcss.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/posthtml.svg b/packages/desktop/src/assets/file-icons/posthtml.svg
new file mode 100644
index 000000000..54dda3c6a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/posthtml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/powerpoint.svg b/packages/desktop/src/assets/file-icons/powerpoint.svg
new file mode 100644
index 000000000..eaba916fb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/powerpoint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/powershell.svg b/packages/desktop/src/assets/file-icons/powershell.svg
new file mode 100644
index 000000000..a2663936d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/powershell.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/pre-commit.svg b/packages/desktop/src/assets/file-icons/pre-commit.svg
new file mode 100644
index 000000000..399826bff
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/pre-commit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/prettier.svg b/packages/desktop/src/assets/file-icons/prettier.svg
new file mode 100644
index 000000000..a6cda341b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/prettier.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/prisma.svg b/packages/desktop/src/assets/file-icons/prisma.svg
new file mode 100644
index 000000000..121abea22
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/prisma.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/processing.svg b/packages/desktop/src/assets/file-icons/processing.svg
new file mode 100644
index 000000000..8a960abd8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/processing.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/prolog.svg b/packages/desktop/src/assets/file-icons/prolog.svg
new file mode 100644
index 000000000..7eda09071
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/prolog.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/prompt.svg b/packages/desktop/src/assets/file-icons/prompt.svg
new file mode 100644
index 000000000..aa37366b7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/prompt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/proto.svg b/packages/desktop/src/assets/file-icons/proto.svg
new file mode 100644
index 000000000..7757c0e5f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/proto.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/protractor.svg b/packages/desktop/src/assets/file-icons/protractor.svg
new file mode 100644
index 000000000..50f464394
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/protractor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/pug.svg b/packages/desktop/src/assets/file-icons/pug.svg
new file mode 100644
index 000000000..62a36027c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/pug.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/puppet.svg b/packages/desktop/src/assets/file-icons/puppet.svg
new file mode 100644
index 000000000..3e1e9c12b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/puppet.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/puppeteer.svg b/packages/desktop/src/assets/file-icons/puppeteer.svg
new file mode 100644
index 000000000..b553df392
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/puppeteer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/purescript.svg b/packages/desktop/src/assets/file-icons/purescript.svg
new file mode 100644
index 000000000..d82c8f9d8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/purescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/python-misc.svg b/packages/desktop/src/assets/file-icons/python-misc.svg
new file mode 100644
index 000000000..44fb730e5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/python-misc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/python.svg b/packages/desktop/src/assets/file-icons/python.svg
new file mode 100644
index 000000000..20c2508a2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/python.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/pytorch.svg b/packages/desktop/src/assets/file-icons/pytorch.svg
new file mode 100644
index 000000000..4cb85d012
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/pytorch.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/qsharp.svg b/packages/desktop/src/assets/file-icons/qsharp.svg
new file mode 100644
index 000000000..de9838d60
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/qsharp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/quarto.svg b/packages/desktop/src/assets/file-icons/quarto.svg
new file mode 100644
index 000000000..3bb8ef7c7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/quarto.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/quasar.svg b/packages/desktop/src/assets/file-icons/quasar.svg
new file mode 100644
index 000000000..fa02ff081
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/quasar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/quokka.svg b/packages/desktop/src/assets/file-icons/quokka.svg
new file mode 100644
index 000000000..bf368de32
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/quokka.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/qwik.svg b/packages/desktop/src/assets/file-icons/qwik.svg
new file mode 100644
index 000000000..555511694
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/qwik.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/r.svg b/packages/desktop/src/assets/file-icons/r.svg
new file mode 100644
index 000000000..5703dd0f9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/r.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/racket.svg b/packages/desktop/src/assets/file-icons/racket.svg
new file mode 100644
index 000000000..04ca144ba
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/racket.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/raml.svg b/packages/desktop/src/assets/file-icons/raml.svg
new file mode 100644
index 000000000..d35d561b9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/raml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/razor.svg b/packages/desktop/src/assets/file-icons/razor.svg
new file mode 100644
index 000000000..4e99091f1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/razor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/rbxmk.svg b/packages/desktop/src/assets/file-icons/rbxmk.svg
new file mode 100644
index 000000000..e7d495376
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/rbxmk.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/rc.svg b/packages/desktop/src/assets/file-icons/rc.svg
new file mode 100644
index 000000000..83040dbc9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/rc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/react.svg b/packages/desktop/src/assets/file-icons/react.svg
new file mode 100644
index 000000000..ced90db1a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/react.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/react_ts.svg b/packages/desktop/src/assets/file-icons/react_ts.svg
new file mode 100644
index 000000000..887f72ca1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/react_ts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/readme.svg b/packages/desktop/src/assets/file-icons/readme.svg
new file mode 100644
index 000000000..943d08f3c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/readme.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/reason.svg b/packages/desktop/src/assets/file-icons/reason.svg
new file mode 100644
index 000000000..0f4b3e1f6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/reason.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/red.svg b/packages/desktop/src/assets/file-icons/red.svg
new file mode 100644
index 000000000..608423166
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/red.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/redux-action.svg b/packages/desktop/src/assets/file-icons/redux-action.svg
new file mode 100644
index 000000000..a4872e7db
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/redux-action.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/redux-reducer.svg b/packages/desktop/src/assets/file-icons/redux-reducer.svg
new file mode 100644
index 000000000..cfcca98a1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/redux-reducer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/redux-selector.svg b/packages/desktop/src/assets/file-icons/redux-selector.svg
new file mode 100644
index 000000000..073c286df
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/redux-selector.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/redux-store.svg b/packages/desktop/src/assets/file-icons/redux-store.svg
new file mode 100644
index 000000000..8e644e771
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/redux-store.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/regedit.svg b/packages/desktop/src/assets/file-icons/regedit.svg
new file mode 100644
index 000000000..3d6320607
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/regedit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/remark.svg b/packages/desktop/src/assets/file-icons/remark.svg
new file mode 100644
index 000000000..9d6a91831
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/remark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/remix.svg b/packages/desktop/src/assets/file-icons/remix.svg
new file mode 100644
index 000000000..763f57ff4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/remix.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/remix_light.svg b/packages/desktop/src/assets/file-icons/remix_light.svg
new file mode 100644
index 000000000..748b77928
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/remix_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/renovate.svg b/packages/desktop/src/assets/file-icons/renovate.svg
new file mode 100644
index 000000000..bc63cbb0c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/renovate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/replit.svg b/packages/desktop/src/assets/file-icons/replit.svg
new file mode 100644
index 000000000..f1478a503
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/replit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/rescript-interface.svg b/packages/desktop/src/assets/file-icons/rescript-interface.svg
new file mode 100644
index 000000000..db3055365
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/rescript-interface.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/rescript.svg b/packages/desktop/src/assets/file-icons/rescript.svg
new file mode 100644
index 000000000..8f40a3a96
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/rescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/restql.svg b/packages/desktop/src/assets/file-icons/restql.svg
new file mode 100644
index 000000000..a056fe910
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/restql.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/riot.svg b/packages/desktop/src/assets/file-icons/riot.svg
new file mode 100644
index 000000000..587e50dfc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/riot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/roadmap.svg b/packages/desktop/src/assets/file-icons/roadmap.svg
new file mode 100644
index 000000000..2279eadd0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/roadmap.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/roblox.svg b/packages/desktop/src/assets/file-icons/roblox.svg
new file mode 100644
index 000000000..56cc37847
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/roblox.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/robot.svg b/packages/desktop/src/assets/file-icons/robot.svg
new file mode 100644
index 000000000..36c722518
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/robot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/robots.svg b/packages/desktop/src/assets/file-icons/robots.svg
new file mode 100644
index 000000000..11fdaaea4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/robots.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/rocket.svg b/packages/desktop/src/assets/file-icons/rocket.svg
new file mode 100644
index 000000000..5f62f322c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/rocket.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/rojo.svg b/packages/desktop/src/assets/file-icons/rojo.svg
new file mode 100644
index 000000000..37c46ea0e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/rojo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/rollup.svg b/packages/desktop/src/assets/file-icons/rollup.svg
new file mode 100644
index 000000000..7fa015324
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/rollup.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/rome.svg b/packages/desktop/src/assets/file-icons/rome.svg
new file mode 100644
index 000000000..8f5de92d2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/rome.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/routing.svg b/packages/desktop/src/assets/file-icons/routing.svg
new file mode 100644
index 000000000..ea02c9054
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/routing.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/rspec.svg b/packages/desktop/src/assets/file-icons/rspec.svg
new file mode 100644
index 000000000..c1bf424d6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/rspec.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/rubocop.svg b/packages/desktop/src/assets/file-icons/rubocop.svg
new file mode 100644
index 000000000..e6a24a235
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/rubocop.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/rubocop_light.svg b/packages/desktop/src/assets/file-icons/rubocop_light.svg
new file mode 100644
index 000000000..689c023b5
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/rubocop_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ruby.svg b/packages/desktop/src/assets/file-icons/ruby.svg
new file mode 100644
index 000000000..2e3215d75
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ruby.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/ruff.svg b/packages/desktop/src/assets/file-icons/ruff.svg
new file mode 100644
index 000000000..a526788a8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/ruff.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/rust.svg b/packages/desktop/src/assets/file-icons/rust.svg
new file mode 100644
index 000000000..b382aa4b1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/rust.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/salesforce.svg b/packages/desktop/src/assets/file-icons/salesforce.svg
new file mode 100644
index 000000000..80e1aa99e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/salesforce.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/san.svg b/packages/desktop/src/assets/file-icons/san.svg
new file mode 100644
index 000000000..d17b9faf6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/san.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/sas.svg b/packages/desktop/src/assets/file-icons/sas.svg
new file mode 100644
index 000000000..d47c8bdef
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/sas.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/sass.svg b/packages/desktop/src/assets/file-icons/sass.svg
new file mode 100644
index 000000000..6f39acb02
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/sass.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/sbt.svg b/packages/desktop/src/assets/file-icons/sbt.svg
new file mode 100644
index 000000000..37587c5ca
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/sbt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/scala.svg b/packages/desktop/src/assets/file-icons/scala.svg
new file mode 100644
index 000000000..08e0c2d34
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/scala.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/scheme.svg b/packages/desktop/src/assets/file-icons/scheme.svg
new file mode 100644
index 000000000..c8f986e86
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/scheme.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/scons.svg b/packages/desktop/src/assets/file-icons/scons.svg
new file mode 100644
index 000000000..d584ea832
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/scons.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/scons_light.svg b/packages/desktop/src/assets/file-icons/scons_light.svg
new file mode 100644
index 000000000..31f88d565
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/scons_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/screwdriver.svg b/packages/desktop/src/assets/file-icons/screwdriver.svg
new file mode 100644
index 000000000..cac820631
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/screwdriver.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/search.svg b/packages/desktop/src/assets/file-icons/search.svg
new file mode 100644
index 000000000..3d35c8e24
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/search.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/semantic-release.svg b/packages/desktop/src/assets/file-icons/semantic-release.svg
new file mode 100644
index 000000000..17187e89a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/semantic-release.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/semantic-release_light.svg b/packages/desktop/src/assets/file-icons/semantic-release_light.svg
new file mode 100644
index 000000000..21e42a095
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/semantic-release_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/semgrep.svg b/packages/desktop/src/assets/file-icons/semgrep.svg
new file mode 100644
index 000000000..73a8abc66
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/semgrep.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/sentry.svg b/packages/desktop/src/assets/file-icons/sentry.svg
new file mode 100644
index 000000000..319e60a74
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/sentry.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/sequelize.svg b/packages/desktop/src/assets/file-icons/sequelize.svg
new file mode 100644
index 000000000..0e4c7888f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/sequelize.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/serverless.svg b/packages/desktop/src/assets/file-icons/serverless.svg
new file mode 100644
index 000000000..92ccca84a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/serverless.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/settings.svg b/packages/desktop/src/assets/file-icons/settings.svg
new file mode 100644
index 000000000..dc701ae87
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/settings.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/shader.svg b/packages/desktop/src/assets/file-icons/shader.svg
new file mode 100644
index 000000000..f42156ed8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/shader.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/silverstripe.svg b/packages/desktop/src/assets/file-icons/silverstripe.svg
new file mode 100644
index 000000000..46cdb7ee1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/silverstripe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/simulink.svg b/packages/desktop/src/assets/file-icons/simulink.svg
new file mode 100644
index 000000000..33e97fe42
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/simulink.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/siyuan.svg b/packages/desktop/src/assets/file-icons/siyuan.svg
new file mode 100644
index 000000000..7a7488dd2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/siyuan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/sketch.svg b/packages/desktop/src/assets/file-icons/sketch.svg
new file mode 100644
index 000000000..0d7540690
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/sketch.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/slim.svg b/packages/desktop/src/assets/file-icons/slim.svg
new file mode 100644
index 000000000..edc724173
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/slim.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/slint.svg b/packages/desktop/src/assets/file-icons/slint.svg
new file mode 100644
index 000000000..b6434ec97
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/slint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/slug.svg b/packages/desktop/src/assets/file-icons/slug.svg
new file mode 100644
index 000000000..da1dcc7b0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/slug.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/smarty.svg b/packages/desktop/src/assets/file-icons/smarty.svg
new file mode 100644
index 000000000..4572a5879
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/smarty.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/sml.svg b/packages/desktop/src/assets/file-icons/sml.svg
new file mode 100644
index 000000000..8f92a33ba
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/sml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/snakemake.svg b/packages/desktop/src/assets/file-icons/snakemake.svg
new file mode 100644
index 000000000..6dd08c958
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/snakemake.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/snapcraft.svg b/packages/desktop/src/assets/file-icons/snapcraft.svg
new file mode 100644
index 000000000..17bf8d8d9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/snapcraft.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/snowpack.svg b/packages/desktop/src/assets/file-icons/snowpack.svg
new file mode 100644
index 000000000..7941faefb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/snowpack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/snowpack_light.svg b/packages/desktop/src/assets/file-icons/snowpack_light.svg
new file mode 100644
index 000000000..70389d20f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/snowpack_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/snyk.svg b/packages/desktop/src/assets/file-icons/snyk.svg
new file mode 100644
index 000000000..90791eeec
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/snyk.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/solidity.svg b/packages/desktop/src/assets/file-icons/solidity.svg
new file mode 100644
index 000000000..6ae9873d8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/solidity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/sonarcloud.svg b/packages/desktop/src/assets/file-icons/sonarcloud.svg
new file mode 100644
index 000000000..ee9896161
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/sonarcloud.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/spwn.svg b/packages/desktop/src/assets/file-icons/spwn.svg
new file mode 100644
index 000000000..8a8bf4347
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/spwn.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/stackblitz.svg b/packages/desktop/src/assets/file-icons/stackblitz.svg
new file mode 100644
index 000000000..f1806a8b2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/stackblitz.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/stan.svg b/packages/desktop/src/assets/file-icons/stan.svg
new file mode 100644
index 000000000..bb5cf6723
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/stan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/steadybit.svg b/packages/desktop/src/assets/file-icons/steadybit.svg
new file mode 100644
index 000000000..4871bbd76
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/steadybit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/stencil.svg b/packages/desktop/src/assets/file-icons/stencil.svg
new file mode 100644
index 000000000..bf8f3ea19
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/stencil.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/stitches.svg b/packages/desktop/src/assets/file-icons/stitches.svg
new file mode 100644
index 000000000..a597fbcce
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/stitches.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/stitches_light.svg b/packages/desktop/src/assets/file-icons/stitches_light.svg
new file mode 100644
index 000000000..8001d9dfc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/stitches_light.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/storybook.svg b/packages/desktop/src/assets/file-icons/storybook.svg
new file mode 100644
index 000000000..8a4bdeaa7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/storybook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/stryker.svg b/packages/desktop/src/assets/file-icons/stryker.svg
new file mode 100644
index 000000000..05d45e614
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/stryker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/stylable.svg b/packages/desktop/src/assets/file-icons/stylable.svg
new file mode 100644
index 000000000..be5522619
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/stylable.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/stylelint.svg b/packages/desktop/src/assets/file-icons/stylelint.svg
new file mode 100644
index 000000000..eb6452438
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/stylelint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/stylelint_light.svg b/packages/desktop/src/assets/file-icons/stylelint_light.svg
new file mode 100644
index 000000000..502fec33f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/stylelint_light.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/stylus.svg b/packages/desktop/src/assets/file-icons/stylus.svg
new file mode 100644
index 000000000..ae61b48dd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/stylus.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/sublime.svg b/packages/desktop/src/assets/file-icons/sublime.svg
new file mode 100644
index 000000000..5c99fb9be
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/sublime.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/subtitles.svg b/packages/desktop/src/assets/file-icons/subtitles.svg
new file mode 100644
index 000000000..15eebd61f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/subtitles.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/supabase.svg b/packages/desktop/src/assets/file-icons/supabase.svg
new file mode 100644
index 000000000..78bfef7d9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/supabase.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/svelte.svg b/packages/desktop/src/assets/file-icons/svelte.svg
new file mode 100644
index 000000000..4b14a6f71
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/svelte.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/svg.svg b/packages/desktop/src/assets/file-icons/svg.svg
new file mode 100644
index 000000000..fbaf9e59b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/svg.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/svgo.svg b/packages/desktop/src/assets/file-icons/svgo.svg
new file mode 100644
index 000000000..4b9cb8904
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/svgo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/svgr.svg b/packages/desktop/src/assets/file-icons/svgr.svg
new file mode 100644
index 000000000..01443226e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/svgr.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/swagger.svg b/packages/desktop/src/assets/file-icons/swagger.svg
new file mode 100644
index 000000000..1f79152d1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/swagger.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/sway.svg b/packages/desktop/src/assets/file-icons/sway.svg
new file mode 100644
index 000000000..adca3282b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/sway.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/swc.svg b/packages/desktop/src/assets/file-icons/swc.svg
new file mode 100644
index 000000000..5931bd3a1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/swc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/swift.svg b/packages/desktop/src/assets/file-icons/swift.svg
new file mode 100644
index 000000000..df413c843
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/swift.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/syncpack.svg b/packages/desktop/src/assets/file-icons/syncpack.svg
new file mode 100644
index 000000000..9c64e3184
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/syncpack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/systemd.svg b/packages/desktop/src/assets/file-icons/systemd.svg
new file mode 100755
index 000000000..943b77f26
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/systemd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/systemd_light.svg b/packages/desktop/src/assets/file-icons/systemd_light.svg
new file mode 100755
index 000000000..39e81f63b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/systemd_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/table.svg b/packages/desktop/src/assets/file-icons/table.svg
new file mode 100644
index 000000000..040b3839e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/table.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/tailwindcss.svg b/packages/desktop/src/assets/file-icons/tailwindcss.svg
new file mode 100644
index 000000000..a55450d0b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/tailwindcss.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/taskfile.svg b/packages/desktop/src/assets/file-icons/taskfile.svg
new file mode 100644
index 000000000..99a775f69
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/taskfile.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/tauri.svg b/packages/desktop/src/assets/file-icons/tauri.svg
new file mode 100644
index 000000000..2c7aa2656
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/tauri.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/taze.svg b/packages/desktop/src/assets/file-icons/taze.svg
new file mode 100644
index 000000000..c6e3a3fc8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/taze.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/tcl.svg b/packages/desktop/src/assets/file-icons/tcl.svg
new file mode 100644
index 000000000..3c196a696
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/tcl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/teal.svg b/packages/desktop/src/assets/file-icons/teal.svg
new file mode 100644
index 000000000..770b63d7b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/teal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/templ.svg b/packages/desktop/src/assets/file-icons/templ.svg
new file mode 100644
index 000000000..5b79cfe99
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/templ.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/template.svg b/packages/desktop/src/assets/file-icons/template.svg
new file mode 100644
index 000000000..604a6f86e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/template.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/terraform.svg b/packages/desktop/src/assets/file-icons/terraform.svg
new file mode 100644
index 000000000..d072809bf
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/terraform.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/test-js.svg b/packages/desktop/src/assets/file-icons/test-js.svg
new file mode 100644
index 000000000..d6ea99491
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/test-js.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/test-jsx.svg b/packages/desktop/src/assets/file-icons/test-jsx.svg
new file mode 100644
index 000000000..ea2d4da46
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/test-jsx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/test-ts.svg b/packages/desktop/src/assets/file-icons/test-ts.svg
new file mode 100644
index 000000000..0b4ec71be
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/test-ts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/tex.svg b/packages/desktop/src/assets/file-icons/tex.svg
new file mode 100644
index 000000000..83fc24ad0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/tex.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/textlint.svg b/packages/desktop/src/assets/file-icons/textlint.svg
new file mode 100644
index 000000000..a619bf04d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/textlint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/tilt.svg b/packages/desktop/src/assets/file-icons/tilt.svg
new file mode 100644
index 000000000..0ab842851
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/tilt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/tldraw.svg b/packages/desktop/src/assets/file-icons/tldraw.svg
new file mode 100644
index 000000000..c4e6d6b8f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/tldraw.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/tldraw_light.svg b/packages/desktop/src/assets/file-icons/tldraw_light.svg
new file mode 100644
index 000000000..41faab3f0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/tldraw_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/tobi.svg b/packages/desktop/src/assets/file-icons/tobi.svg
new file mode 100644
index 000000000..1a576a1c3
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/tobi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/tobimake.svg b/packages/desktop/src/assets/file-icons/tobimake.svg
new file mode 100644
index 000000000..0ba3b3e7f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/tobimake.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/todo.svg b/packages/desktop/src/assets/file-icons/todo.svg
new file mode 100644
index 000000000..281ed6599
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/todo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/toml.svg b/packages/desktop/src/assets/file-icons/toml.svg
new file mode 100644
index 000000000..aa4f24c3b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/toml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/toml_light.svg b/packages/desktop/src/assets/file-icons/toml_light.svg
new file mode 100644
index 000000000..a85712bf8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/toml_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/travis.svg b/packages/desktop/src/assets/file-icons/travis.svg
new file mode 100644
index 000000000..37a69a8d3
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/travis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/tree.svg b/packages/desktop/src/assets/file-icons/tree.svg
new file mode 100644
index 000000000..a3b6d57e1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/tree.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/trigger.svg b/packages/desktop/src/assets/file-icons/trigger.svg
new file mode 100644
index 000000000..7a4f63a07
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/trigger.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/tsconfig.svg b/packages/desktop/src/assets/file-icons/tsconfig.svg
new file mode 100644
index 000000000..817fb8dbe
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/tsconfig.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/tsdoc.svg b/packages/desktop/src/assets/file-icons/tsdoc.svg
new file mode 100644
index 000000000..e7e04d0e1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/tsdoc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/tsil.svg b/packages/desktop/src/assets/file-icons/tsil.svg
new file mode 100644
index 000000000..261d7cdfe
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/tsil.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/tune.svg b/packages/desktop/src/assets/file-icons/tune.svg
new file mode 100644
index 000000000..ecbde06c6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/tune.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/turborepo.svg b/packages/desktop/src/assets/file-icons/turborepo.svg
new file mode 100644
index 000000000..f0e544985
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/turborepo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/turborepo_light.svg b/packages/desktop/src/assets/file-icons/turborepo_light.svg
new file mode 100644
index 000000000..b020a358d
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/turborepo_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/twig.svg b/packages/desktop/src/assets/file-icons/twig.svg
new file mode 100644
index 000000000..01f9a5dba
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/twig.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/twine.svg b/packages/desktop/src/assets/file-icons/twine.svg
new file mode 100644
index 000000000..ac1bc553b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/twine.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/typescript-def.svg b/packages/desktop/src/assets/file-icons/typescript-def.svg
new file mode 100644
index 000000000..a9ef95879
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/typescript-def.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/typescript.svg b/packages/desktop/src/assets/file-icons/typescript.svg
new file mode 100644
index 000000000..acaf0ddb7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/typescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/typst.svg b/packages/desktop/src/assets/file-icons/typst.svg
new file mode 100644
index 000000000..a36473450
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/typst.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/umi.svg b/packages/desktop/src/assets/file-icons/umi.svg
new file mode 100644
index 000000000..7479a4bbb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/umi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/uml.svg b/packages/desktop/src/assets/file-icons/uml.svg
new file mode 100644
index 000000000..5f70f1e42
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/uml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/uml_light.svg b/packages/desktop/src/assets/file-icons/uml_light.svg
new file mode 100644
index 000000000..c296fac5a
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/uml_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/unity.svg b/packages/desktop/src/assets/file-icons/unity.svg
new file mode 100644
index 000000000..f495772f9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/unity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/unocss.svg b/packages/desktop/src/assets/file-icons/unocss.svg
new file mode 100644
index 000000000..eab05c437
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/unocss.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/url.svg b/packages/desktop/src/assets/file-icons/url.svg
new file mode 100644
index 000000000..f065589a6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/url.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/uv.svg b/packages/desktop/src/assets/file-icons/uv.svg
new file mode 100644
index 000000000..1549270fb
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/uv.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/vagrant.svg b/packages/desktop/src/assets/file-icons/vagrant.svg
new file mode 100644
index 000000000..78c19f9e7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vagrant.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/vala.svg b/packages/desktop/src/assets/file-icons/vala.svg
new file mode 100644
index 000000000..114aff27c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vala.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/vanilla-extract.svg b/packages/desktop/src/assets/file-icons/vanilla-extract.svg
new file mode 100644
index 000000000..c1f1e5946
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vanilla-extract.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/varnish.svg b/packages/desktop/src/assets/file-icons/varnish.svg
new file mode 100644
index 000000000..6b504af71
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/varnish.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/vedic.svg b/packages/desktop/src/assets/file-icons/vedic.svg
new file mode 100644
index 000000000..3dccbeb01
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vedic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/velite.svg b/packages/desktop/src/assets/file-icons/velite.svg
new file mode 100644
index 000000000..ca50cfa4f
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/velite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/velocity.svg b/packages/desktop/src/assets/file-icons/velocity.svg
new file mode 100644
index 000000000..f5fb988a2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/velocity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/vercel.svg b/packages/desktop/src/assets/file-icons/vercel.svg
new file mode 100644
index 000000000..8ff6e492e
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vercel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/vercel_light.svg b/packages/desktop/src/assets/file-icons/vercel_light.svg
new file mode 100644
index 000000000..314b78cd6
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vercel_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/verdaccio.svg b/packages/desktop/src/assets/file-icons/verdaccio.svg
new file mode 100644
index 000000000..3b5f1d412
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/verdaccio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/verified.svg b/packages/desktop/src/assets/file-icons/verified.svg
new file mode 100644
index 000000000..0c861c559
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/verified.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/verilog.svg b/packages/desktop/src/assets/file-icons/verilog.svg
new file mode 100644
index 000000000..c546ea874
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/verilog.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/vfl.svg b/packages/desktop/src/assets/file-icons/vfl.svg
new file mode 100644
index 000000000..3c371b4ad
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vfl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/video.svg b/packages/desktop/src/assets/file-icons/video.svg
new file mode 100644
index 000000000..2ade126f8
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/video.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/vim.svg b/packages/desktop/src/assets/file-icons/vim.svg
new file mode 100644
index 000000000..1fc655d96
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vim.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/virtual.svg b/packages/desktop/src/assets/file-icons/virtual.svg
new file mode 100644
index 000000000..0fdb620da
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/virtual.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/visualstudio.svg b/packages/desktop/src/assets/file-icons/visualstudio.svg
new file mode 100644
index 000000000..15328de80
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/visualstudio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/vite.svg b/packages/desktop/src/assets/file-icons/vite.svg
new file mode 100644
index 000000000..d66cd5e7b
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/vitest.svg b/packages/desktop/src/assets/file-icons/vitest.svg
new file mode 100644
index 000000000..0a634e997
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vitest.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/vlang.svg b/packages/desktop/src/assets/file-icons/vlang.svg
new file mode 100644
index 000000000..17bf0e049
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vlang.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/desktop/src/assets/file-icons/vscode.svg b/packages/desktop/src/assets/file-icons/vscode.svg
new file mode 100644
index 000000000..bb3772afd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vscode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/vue-config.svg b/packages/desktop/src/assets/file-icons/vue-config.svg
new file mode 100644
index 000000000..bfe01c23c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vue-config.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/vue.svg b/packages/desktop/src/assets/file-icons/vue.svg
new file mode 100644
index 000000000..359f899f2
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/vuex-store.svg b/packages/desktop/src/assets/file-icons/vuex-store.svg
new file mode 100644
index 000000000..c98a851cc
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/vuex-store.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/wakatime.svg b/packages/desktop/src/assets/file-icons/wakatime.svg
new file mode 100644
index 000000000..66b8a6f71
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/wakatime.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/wakatime_light.svg b/packages/desktop/src/assets/file-icons/wakatime_light.svg
new file mode 100644
index 000000000..2b94c5611
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/wakatime_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/wallaby.svg b/packages/desktop/src/assets/file-icons/wallaby.svg
new file mode 100644
index 000000000..0e7ce6ef0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/wallaby.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/wally.svg b/packages/desktop/src/assets/file-icons/wally.svg
new file mode 100644
index 000000000..a5c1f24fa
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/wally.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/watchman.svg b/packages/desktop/src/assets/file-icons/watchman.svg
new file mode 100644
index 000000000..74773cd14
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/watchman.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/webassembly.svg b/packages/desktop/src/assets/file-icons/webassembly.svg
new file mode 100644
index 000000000..69a43aa35
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/webassembly.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/webhint.svg b/packages/desktop/src/assets/file-icons/webhint.svg
new file mode 100644
index 000000000..fdaa668db
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/webhint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/webpack.svg b/packages/desktop/src/assets/file-icons/webpack.svg
new file mode 100644
index 000000000..68233d9e9
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/webpack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/wepy.svg b/packages/desktop/src/assets/file-icons/wepy.svg
new file mode 100644
index 000000000..bed1ad034
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/wepy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/werf.svg b/packages/desktop/src/assets/file-icons/werf.svg
new file mode 100644
index 000000000..7a89a1fb1
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/werf.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/windicss.svg b/packages/desktop/src/assets/file-icons/windicss.svg
new file mode 100644
index 000000000..4f31c55fa
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/windicss.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/wolframlanguage.svg b/packages/desktop/src/assets/file-icons/wolframlanguage.svg
new file mode 100644
index 000000000..77e880995
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/wolframlanguage.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/word.svg b/packages/desktop/src/assets/file-icons/word.svg
new file mode 100644
index 000000000..a90b88f9c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/word.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/wrangler.svg b/packages/desktop/src/assets/file-icons/wrangler.svg
new file mode 100644
index 000000000..51a7983a0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/wrangler.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/wxt.svg b/packages/desktop/src/assets/file-icons/wxt.svg
new file mode 100644
index 000000000..d43b74283
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/wxt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/xaml.svg b/packages/desktop/src/assets/file-icons/xaml.svg
new file mode 100644
index 000000000..0b7e865a7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/xaml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/xmake.svg b/packages/desktop/src/assets/file-icons/xmake.svg
new file mode 100644
index 000000000..47b3ce8ae
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/xmake.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/xml.svg b/packages/desktop/src/assets/file-icons/xml.svg
new file mode 100644
index 000000000..c3a1eaf45
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/xml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/yaml.svg b/packages/desktop/src/assets/file-icons/yaml.svg
new file mode 100644
index 000000000..1f1cc7cb0
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/yaml.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/yang.svg b/packages/desktop/src/assets/file-icons/yang.svg
new file mode 100644
index 000000000..fba4bbfa4
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/yang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/yarn.svg b/packages/desktop/src/assets/file-icons/yarn.svg
new file mode 100644
index 000000000..9af575c11
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/yarn.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/zeabur.svg b/packages/desktop/src/assets/file-icons/zeabur.svg
new file mode 100644
index 000000000..37b0ea8b7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/zeabur.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/zeabur_light.svg b/packages/desktop/src/assets/file-icons/zeabur_light.svg
new file mode 100644
index 000000000..0d01f2b1c
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/zeabur_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/zig.svg b/packages/desktop/src/assets/file-icons/zig.svg
new file mode 100644
index 000000000..b5604dfe7
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/zig.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/assets/file-icons/zip.svg b/packages/desktop/src/assets/file-icons/zip.svg
new file mode 100644
index 000000000..1056c60bd
--- /dev/null
+++ b/packages/desktop/src/assets/file-icons/zip.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/desktop/src/components/code.tsx b/packages/desktop/src/components/code.tsx
new file mode 100644
index 000000000..40a40aa9a
--- /dev/null
+++ b/packages/desktop/src/components/code.tsx
@@ -0,0 +1,846 @@
+import { bundledLanguages, type BundledLanguage, type ShikiTransformer } from "shiki"
+import { splitProps, type ComponentProps, createEffect, onMount, onCleanup, createMemo, createResource } from "solid-js"
+import { useLocal, useShiki } from "@/context"
+import type { TextSelection } from "@/context/local"
+import { getFileExtension, getNodeOffsetInLine, getSelectionInContainer } from "@/utils"
+
+type DefinedSelection = Exclude
+
+interface Props extends ComponentProps<"div"> {
+ code: string
+ path: string
+}
+
+export function Code(props: Props) {
+ const ctx = useLocal()
+ const highlighter = useShiki()
+ const [local, others] = splitProps(props, ["class", "classList", "code", "path"])
+ const lang = createMemo(() => {
+ const ext = getFileExtension(local.path)
+ if (ext in bundledLanguages) return ext
+ return "text"
+ })
+
+ let container: HTMLDivElement | undefined
+ let isProgrammaticSelection = false
+
+ const ranges = createMemo(() => {
+ const items = ctx.context.all() as Array<{ type: "file"; path: string; selection?: DefinedSelection }>
+ const result: DefinedSelection[] = []
+ for (const item of items) {
+ if (item.path !== local.path) continue
+ const selection = item.selection
+ if (!selection) continue
+ result.push(selection)
+ }
+ return result
+ })
+
+ const createLineNumberTransformer = (selections: DefinedSelection[]): ShikiTransformer => {
+ const highlighted = new Set()
+ for (const selection of selections) {
+ const startLine = selection.startLine
+ const endLine = selection.endLine
+ const start = Math.max(1, Math.min(startLine, endLine))
+ const end = Math.max(start, Math.max(startLine, endLine))
+ const count = end - start + 1
+ if (count <= 0) continue
+ const values = Array.from({ length: count }, (_, index) => start + index)
+ for (const value of values) highlighted.add(value)
+ }
+ return {
+ name: "line-number-highlight",
+ line(node, index) {
+ if (!highlighted.has(index)) return
+ this.addClassToHast(node, "line-number-highlight")
+ const children = node.children
+ if (!Array.isArray(children)) return
+ for (const child of children) {
+ if (!child || typeof child !== "object") continue
+ const element = child as { type?: string; properties?: { className?: string[] } }
+ if (element.type !== "element") continue
+ const className = element.properties?.className
+ if (!Array.isArray(className)) continue
+ const matches = className.includes("diff-oldln") || className.includes("diff-newln")
+ if (!matches) continue
+ if (className.includes("line-number-highlight")) continue
+ className.push("line-number-highlight")
+ }
+ },
+ }
+ }
+
+ const [html] = createResource(
+ () => ranges(),
+ async (activeRanges) => {
+ if (!highlighter.getLoadedLanguages().includes(lang())) {
+ await highlighter.loadLanguage(lang() as BundledLanguage)
+ }
+ return highlighter.codeToHtml(local.code || "", {
+ lang: lang() && lang() in bundledLanguages ? lang() : "text",
+ theme: "opencode",
+ transformers: [transformerUnifiedDiff(), transformerDiffGroups(), createLineNumberTransformer(activeRanges)],
+ }) as string
+ },
+ )
+
+ onMount(() => {
+ if (!container) return
+
+ let ticking = false
+ const onScroll = () => {
+ if (!container) return
+ if (ctx.file.active()?.path !== local.path) return
+ if (ticking) return
+ ticking = true
+ requestAnimationFrame(() => {
+ ticking = false
+ ctx.file.scroll(local.path, container!.scrollTop)
+ })
+ }
+
+ const onSelectionChange = () => {
+ if (!container) return
+ if (isProgrammaticSelection) return
+ if (ctx.file.active()?.path !== local.path) return
+ const d = getSelectionInContainer(container)
+ if (!d) return
+ const p = ctx.file.node(local.path)?.selection
+ if (p && p.startLine === d.sl && p.endLine === d.el && p.startChar === d.sch && p.endChar === d.ech) return
+ ctx.file.select(local.path, { startLine: d.sl, startChar: d.sch, endLine: d.el, endChar: d.ech })
+ }
+
+ const MOD = typeof navigator === "object" && /(Mac|iPod|iPhone|iPad)/.test(navigator.platform) ? "Meta" : "Control"
+ const onKeyDown = (e: KeyboardEvent) => {
+ if (ctx.file.active()?.path !== local.path) return
+ const ae = document.activeElement as HTMLElement | undefined
+ const tag = (ae?.tagName || "").toLowerCase()
+ const inputFocused = !!ae && (tag === "input" || tag === "textarea" || ae.isContentEditable)
+ if (inputFocused) return
+ if (e.getModifierState(MOD) && e.key.toLowerCase() === "a") {
+ e.preventDefault()
+ if (!container) return
+ const element = container.querySelector("code") as HTMLElement | undefined
+ if (!element) return
+ const lines = Array.from(element.querySelectorAll(".line"))
+ if (!lines.length) return
+ const r = document.createRange()
+ const last = lines[lines.length - 1]
+ r.selectNodeContents(last)
+ const lastLen = r.toString().length
+ ctx.file.select(local.path, { startLine: 1, startChar: 0, endLine: lines.length, endChar: lastLen })
+ }
+ }
+
+ container.addEventListener("scroll", onScroll)
+ document.addEventListener("selectionchange", onSelectionChange)
+ document.addEventListener("keydown", onKeyDown)
+
+ onCleanup(() => {
+ container?.removeEventListener("scroll", onScroll)
+ document.removeEventListener("selectionchange", onSelectionChange)
+ document.removeEventListener("keydown", onKeyDown)
+ })
+ })
+
+ // Restore scroll position from store when content is ready
+ createEffect(() => {
+ const content = html()
+ if (!container || !content) return
+ const top = ctx.file.node(local.path)?.scrollTop
+ if (top !== undefined && container.scrollTop !== top) container.scrollTop = top
+ })
+
+ // Sync selection from store -> DOM
+ createEffect(() => {
+ const content = html()
+ if (!container || !content) return
+ if (ctx.file.active()?.path !== local.path) return
+ const codeEl = container.querySelector("code") as HTMLElement | undefined
+ if (!codeEl) return
+ const target = ctx.file.node(local.path)?.selection
+ const current = getSelectionInContainer(container)
+ const sel = window.getSelection()
+ if (!sel) return
+ if (!target) {
+ if (current) {
+ isProgrammaticSelection = true
+ sel.removeAllRanges()
+ queueMicrotask(() => {
+ isProgrammaticSelection = false
+ })
+ }
+ return
+ }
+ const matches = !!(
+ current &&
+ current.sl === target.startLine &&
+ current.sch === target.startChar &&
+ current.el === target.endLine &&
+ current.ech === target.endChar
+ )
+ if (matches) return
+ const lines = Array.from(codeEl.querySelectorAll(".line"))
+ if (lines.length === 0) return
+ let sIdx = Math.max(0, target.startLine - 1)
+ let eIdx = Math.max(0, target.endLine - 1)
+ let sChar = Math.max(0, target.startChar || 0)
+ let eChar = Math.max(0, target.endChar || 0)
+ if (sIdx > eIdx || (sIdx === eIdx && sChar > eChar)) {
+ const ti = sIdx
+ sIdx = eIdx
+ eIdx = ti
+ const tc = sChar
+ sChar = eChar
+ eChar = tc
+ }
+ if (eChar === 0 && eIdx > sIdx) {
+ eIdx = eIdx - 1
+ eChar = Number.POSITIVE_INFINITY
+ }
+ if (sIdx >= lines.length) return
+ if (eIdx >= lines.length) eIdx = lines.length - 1
+ const s = getNodeOffsetInLine(lines[sIdx], sChar) ?? { node: lines[sIdx], offset: 0 }
+ const e = getNodeOffsetInLine(lines[eIdx], eChar) ?? { node: lines[eIdx], offset: lines[eIdx].childNodes.length }
+ const range = document.createRange()
+ range.setStart(s.node, s.offset)
+ range.setEnd(e.node, e.offset)
+ isProgrammaticSelection = true
+ sel.removeAllRanges()
+ sel.addRange(range)
+ queueMicrotask(() => {
+ isProgrammaticSelection = false
+ })
+ })
+
+ // Build/toggle split layout and apply folding (both unified and split)
+ createEffect(() => {
+ const content = html()
+ if (!container || !content) return
+ const view = ctx.file.view(local.path)
+
+ const pres = Array.from(container.querySelectorAll("pre"))
+ if (pres.length === 0) return
+ const originalPre = pres[0]
+
+ const split = container.querySelector(".diff-split")
+ if (view === "diff-split") {
+ applySplitDiff(container)
+ const next = container.querySelector(".diff-split")
+ if (next) next.style.display = ""
+ originalPre.style.display = "none"
+ } else {
+ if (split) split.style.display = "none"
+ originalPre.style.display = ""
+ }
+
+ const expanded = ctx.file.folded(local.path)
+ if (view === "diff-split") {
+ const left = container.querySelector(".diff-split pre:nth-child(1) code")
+ const right = container.querySelector(".diff-split pre:nth-child(2) code")
+ if (left)
+ applyDiffFolding(left, 3, { expanded, onExpand: (key) => ctx.file.unfold(local.path, key), side: "left" })
+ if (right)
+ applyDiffFolding(right, 3, { expanded, onExpand: (key) => ctx.file.unfold(local.path, key), side: "right" })
+ } else {
+ const code = container.querySelector("pre code")
+ if (code)
+ applyDiffFolding(code, 3, {
+ expanded,
+ onExpand: (key) => ctx.file.unfold(local.path, key),
+ })
+ }
+ })
+
+ // Highlight groups + scroll coupling
+ const clearHighlights = () => {
+ if (!container) return
+ container.querySelectorAll(".diff-selected").forEach((el) => el.classList.remove("diff-selected"))
+ }
+
+ const applyHighlight = (idx: number, scroll?: boolean) => {
+ if (!container) return
+ const view = ctx.file.view(local.path)
+ if (view === "raw") return
+
+ clearHighlights()
+
+ const nodes: HTMLElement[] = []
+ if (view === "diff-split") {
+ const left = container.querySelector(".diff-split pre:nth-child(1) code")
+ const right = container.querySelector(".diff-split pre:nth-child(2) code")
+ if (left)
+ nodes.push(...Array.from(left.querySelectorAll(`[data-chgrp="${idx}"][data-diff="remove"]`)))
+ if (right)
+ nodes.push(...Array.from(right.querySelectorAll(`[data-chgrp="${idx}"][data-diff="add"]`)))
+ } else {
+ const code = container.querySelector("pre code")
+ if (code) nodes.push(...Array.from(code.querySelectorAll(`[data-chgrp="${idx}"]`)))
+ }
+
+ for (const n of nodes) n.classList.add("diff-selected")
+ if (scroll && nodes.length) nodes[0].scrollIntoView({ block: "center", behavior: "smooth" })
+ }
+
+ const countGroups = () => {
+ if (!container) return 0
+ const code = container.querySelector("pre code")
+ if (!code) return 0
+ const set = new Set()
+ for (const el of Array.from(code.querySelectorAll(".diff-line[data-chgrp]"))) {
+ const v = el.getAttribute("data-chgrp")
+ if (v != undefined) set.add(v)
+ }
+ return set.size
+ }
+
+ let lastIdx: number | undefined = undefined
+ let lastView: string | undefined
+ let lastContent: string | undefined
+ let lastRawIdx: number | undefined = undefined
+ createEffect(() => {
+ const content = html()
+ if (!container || !content) return
+ const view = ctx.file.view(local.path)
+ const raw = ctx.file.changeIndex(local.path)
+ if (raw === undefined) return
+ const total = countGroups()
+ if (total <= 0) return
+ const next = ((raw % total) + total) % total
+
+ const navigated = lastRawIdx !== undefined && lastRawIdx !== raw
+
+ if (next !== raw) {
+ ctx.file.setChangeIndex(local.path, next)
+ applyHighlight(next, true)
+ } else {
+ if (lastView !== view || lastContent !== content) applyHighlight(next)
+ if ((lastIdx !== undefined && lastIdx !== next) || navigated) applyHighlight(next, true)
+ }
+
+ lastRawIdx = raw
+ lastIdx = next
+ lastView = view
+ lastContent = content
+ })
+
+ return (
+ {
+ container = el
+ }}
+ innerHTML={html()}
+ class="
+ font-mono text-xs tracking-wide overflow-y-auto h-full
+ [&]:[counter-reset:line]
+ [&_pre]:focus-visible:outline-none
+ [&_pre]:overflow-x-auto [&_pre]:no-scrollbar
+ [&_code]:min-w-full [&_code]:inline-block
+ [&_.tab]:relative
+ [&_.tab::before]:content['⇥']
+ [&_.tab::before]:absolute
+ [&_.tab::before]:opacity-0
+ [&_.space]:relative
+ [&_.space::before]:content-['·']
+ [&_.space::before]:absolute
+ [&_.space::before]:opacity-0
+ [&_.line]:inline-block [&_.line]:w-full
+ [&_.line]:hover:bg-background-element
+ [&_.line::before]:sticky [&_.line::before]:left-0
+ [&_.line::before]:w-12 [&_.line::before]:pr-4
+ [&_.line::before]:z-10
+ [&_.line::before]:bg-background-panel
+ [&_.line::before]:text-text-muted/60
+ [&_.line::before]:text-right [&_.line::before]:inline-block
+ [&_.line::before]:select-none
+ [&_.line::before]:[counter-increment:line]
+ [&_.line::before]:content-[counter(line)]
+ [&_.line-number-highlight]:bg-accent/20
+ [&_.line-number-highlight::before]:bg-accent/40!
+ [&_.line-number-highlight::before]:text-background-panel!
+ [&_code.code-diff_.line::before]:content-['']
+ [&_code.code-diff_.line::before]:w-0
+ [&_code.code-diff_.line::before]:pr-0
+ [&_.diff-split_code.code-diff::before]:w-10
+ [&_.diff-split_.diff-newln]:left-0
+ [&_.diff-oldln]:sticky [&_.diff-oldln]:left-0
+ [&_.diff-oldln]:w-10 [&_.diff-oldln]:pr-2
+ [&_.diff-oldln]:z-40
+ [&_.diff-oldln]:text-text-muted/60
+ [&_.diff-oldln]:text-right [&_.diff-oldln]:inline-block
+ [&_.diff-oldln]:select-none
+ [&_.diff-oldln]:bg-background-panel
+ [&_.diff-newln]:sticky [&_.diff-newln]:left-10
+ [&_.diff-newln]:w-10 [&_.diff-newln]:pr-2
+ [&_.diff-newln]:z-40
+ [&_.diff-newln]:text-text-muted/60
+ [&_.diff-newln]:text-right [&_.diff-newln]:inline-block
+ [&_.diff-newln]:select-none
+ [&_.diff-newln]:bg-background-panel
+ [&_.diff-add]:bg-success/20!
+ [&_.diff-add.diff-selected]:bg-success/50!
+ [&_.diff-add_.diff-oldln]:bg-success!
+ [&_.diff-add_.diff-oldln]:text-background-panel!
+ [&_.diff-add_.diff-newln]:bg-success!
+ [&_.diff-add_.diff-newln]:text-background-panel!
+ [&_.diff-remove]:bg-error/20!
+ [&_.diff-remove.diff-selected]:bg-error/50!
+ [&_.diff-remove_.diff-newln]:bg-error!
+ [&_.diff-remove_.diff-newln]:text-background-panel!
+ [&_.diff-remove_.diff-oldln]:bg-error!
+ [&_.diff-remove_.diff-oldln]:text-background-panel!
+ [&_.diff-sign]:inline-block [&_.diff-sign]:px-2 [&_.diff-sign]:select-none
+ [&_.diff-blank]:bg-background-element
+ [&_.diff-blank_.diff-oldln]:bg-background-element
+ [&_.diff-blank_.diff-newln]:bg-background-element
+ [&_.diff-collapsed]:block! [&_.diff-collapsed]:w-full [&_.diff-collapsed]:relative
+ [&_.diff-collapsed]:cursor-pointer [&_.diff-collapsed]:select-none
+ [&_.diff-collapsed]:bg-info/20 [&_.diff-collapsed]:hover:bg-info/40!
+ [&_.diff-collapsed]:text-info/80 [&_.diff-collapsed]:hover:text-info
+ [&_.diff-collapsed]:text-xs
+ [&_.diff-collapsed_.diff-oldln]:bg-info!
+ [&_.diff-collapsed_.diff-newln]:bg-info!
+ "
+ classList={{
+ ...(local.classList || {}),
+ [local.class ?? ""]: !!local.class,
+ }}
+ {...others}
+ >
+ )
+}
+
+function transformerUnifiedDiff(): ShikiTransformer {
+ const kinds = new Map()
+ const meta = new Map()
+ let isDiff = false
+
+ return {
+ name: "unified-diff",
+ preprocess(input) {
+ kinds.clear()
+ meta.clear()
+ isDiff = false
+
+ const ls = input.split(/\r?\n/)
+ const out: Array = []
+ let oldNo = 0
+ let newNo = 0
+ let inHunk = false
+
+ for (let i = 0; i < ls.length; i++) {
+ const s = ls[i]
+
+ const m = s.match(/^@@\s*-(\d+)(?:,(\d+))?\s+\+(\d+)(?:,(\d+))?\s*@@/)
+ if (m) {
+ isDiff = true
+ inHunk = true
+ oldNo = parseInt(m[1], 10)
+ newNo = parseInt(m[3], 10)
+ continue
+ }
+
+ if (
+ /^diff --git /.test(s) ||
+ /^Index: /.test(s) ||
+ /^--- /.test(s) ||
+ /^\+\+\+ /.test(s) ||
+ /^[=]{3,}$/.test(s) ||
+ /^\*{3,}$/.test(s) ||
+ /^\\ No newline at end of file$/.test(s)
+ ) {
+ isDiff = true
+ continue
+ }
+
+ if (!inHunk) {
+ out.push(s)
+ continue
+ }
+
+ if (/^\+/.test(s)) {
+ out.push(s)
+ const ln = out.length
+ kinds.set(ln, "add")
+ meta.set(ln, { new: newNo, sign: "+" })
+ newNo++
+ continue
+ }
+
+ if (/^-/.test(s)) {
+ out.push(s)
+ const ln = out.length
+ kinds.set(ln, "remove")
+ meta.set(ln, { old: oldNo, sign: "-" })
+ oldNo++
+ continue
+ }
+
+ if (/^ /.test(s)) {
+ out.push(s)
+ const ln = out.length
+ kinds.set(ln, "context")
+ meta.set(ln, { old: oldNo, new: newNo })
+ oldNo++
+ newNo++
+ continue
+ }
+
+ // fallback in hunks
+ out.push(s)
+ }
+
+ return out.join("\n").trimEnd()
+ },
+ code(node) {
+ if (isDiff) this.addClassToHast(node, "code-diff")
+ },
+ pre(node) {
+ if (isDiff) this.addClassToHast(node, "code-diff")
+ },
+ line(node, line) {
+ if (!isDiff) return
+ const kind = kinds.get(line)
+ if (!kind) return
+
+ const m = meta.get(line) || {}
+
+ this.addClassToHast(node, "diff-line")
+ this.addClassToHast(node, `diff-${kind}`)
+ node.properties = node.properties || {}
+ ;(node.properties as any)["data-diff"] = kind
+ if (m.old != undefined) (node.properties as any)["data-old"] = String(m.old)
+ if (m.new != undefined) (node.properties as any)["data-new"] = String(m.new)
+
+ const oldSpan = {
+ type: "element",
+ tagName: "span",
+ properties: { className: ["diff-oldln"] },
+ children: [{ type: "text", value: m.old != undefined ? String(m.old) : " " }],
+ }
+ const newSpan = {
+ type: "element",
+ tagName: "span",
+ properties: { className: ["diff-newln"] },
+ children: [{ type: "text", value: m.new != undefined ? String(m.new) : " " }],
+ }
+
+ if (kind === "add" || kind === "remove" || kind === "context") {
+ const first = (node.children && (node.children as any[])[0]) as any
+ if (first && first.type === "element" && first.children && first.children.length > 0) {
+ const t = first.children[0]
+ if (t && t.type === "text" && typeof t.value === "string" && t.value.length > 0) {
+ const ch = t.value[0]
+ if (ch === "+" || ch === "-" || ch === " ") t.value = t.value.slice(1)
+ }
+ }
+ }
+
+ const signSpan = {
+ type: "element",
+ tagName: "span",
+ properties: { className: ["diff-sign"] },
+ children: [{ type: "text", value: (m as any).sign || " " }],
+ }
+
+ // @ts-expect-error hast typing across versions
+ node.children = [oldSpan, newSpan, signSpan, ...(node.children || [])]
+ },
+ }
+}
+
+function transformerDiffGroups(): ShikiTransformer {
+ let group = -1
+ let inGroup = false
+ return {
+ name: "diff-groups",
+ pre() {
+ group = -1
+ inGroup = false
+ },
+ line(node) {
+ const props = (node.properties || {}) as any
+ const kind = props["data-diff"] as string | undefined
+ if (kind === "add" || kind === "remove") {
+ if (!inGroup) {
+ group += 1
+ inGroup = true
+ }
+ ;(node.properties as any)["data-chgrp"] = String(group)
+ } else {
+ inGroup = false
+ }
+ },
+ }
+}
+
+function applyDiffFolding(
+ root: HTMLElement,
+ context = 3,
+ options?: { expanded?: string[]; onExpand?: (key: string) => void; side?: "left" | "right" },
+) {
+ if (!root.classList.contains("code-diff")) return
+
+ // Cleanup: unwrap previous collapsed blocks and remove toggles
+ const blocks = Array.from(root.querySelectorAll(".diff-collapsed-block"))
+ for (const block of blocks) {
+ const p = block.parentNode
+ if (!p) {
+ block.remove()
+ continue
+ }
+ while (block.firstChild) p.insertBefore(block.firstChild, block)
+ block.remove()
+ }
+ const toggles = Array.from(root.querySelectorAll(".diff-collapsed"))
+ for (const t of toggles) t.remove()
+
+ const lines = Array.from(root.querySelectorAll(".diff-line"))
+ if (lines.length === 0) return
+
+ const n = lines.length
+ const isChange = lines.map((l) => l.dataset["diff"] === "add" || l.dataset["diff"] === "remove")
+ const isContext = lines.map((l) => l.dataset["diff"] === "context")
+ if (!isChange.some(Boolean)) return
+
+ const visible = new Array(n).fill(false) as boolean[]
+ for (let i = 0; i < n; i++) if (isChange[i]) visible[i] = true
+ for (let i = 0; i < n; i++) {
+ if (isChange[i]) {
+ const s = Math.max(0, i - context)
+ const e = Math.min(n - 1, i + context)
+ for (let j = s; j <= e; j++) if (isContext[j]) visible[j] = true
+ }
+ }
+
+ type Range = { start: number; end: number }
+ const ranges: Range[] = []
+ let i = 0
+ while (i < n) {
+ if (!visible[i] && isContext[i]) {
+ let j = i
+ while (j + 1 < n && !visible[j + 1] && isContext[j + 1]) j++
+ ranges.push({ start: i, end: j })
+ i = j + 1
+ } else {
+ i++
+ }
+ }
+
+ for (const r of ranges) {
+ const start = lines[r.start]
+ const end = lines[r.end]
+ const count = r.end - r.start + 1
+ const minCollapse = 20
+ if (count < minCollapse) {
+ continue
+ }
+
+ // Wrap the entire collapsed chunk (including trailing newline) so it takes no space
+ const block = document.createElement("span")
+ block.className = "diff-collapsed-block"
+ start.parentElement?.insertBefore(block, start)
+
+ let cur: Node | undefined = start
+ while (cur) {
+ const next: Node | undefined = cur.nextSibling || undefined
+ block.appendChild(cur)
+ if (cur === end) {
+ // Also move the newline after the last line into the block
+ if (next && next.nodeType === Node.TEXT_NODE && (next.textContent || "").startsWith("\n")) {
+ block.appendChild(next)
+ }
+ break
+ }
+ cur = next
+ }
+
+ block.style.display = "none"
+ const row = document.createElement("span")
+ row.className = "line diff-collapsed"
+ row.setAttribute("data-kind", "collapsed")
+ row.setAttribute("data-count", String(count))
+ row.setAttribute("tabindex", "0")
+ row.setAttribute("role", "button")
+
+ const oldln = document.createElement("span")
+ oldln.className = "diff-oldln"
+ oldln.textContent = " "
+
+ const newln = document.createElement("span")
+ newln.className = "diff-newln"
+ newln.textContent = " "
+
+ const sign = document.createElement("span")
+ sign.className = "diff-sign"
+ sign.textContent = "…"
+
+ const label = document.createElement("span")
+ label.textContent = `show ${count} unchanged line${count > 1 ? "s" : ""}`
+
+ const key = `o${start.dataset["old"] || ""}-${end.dataset["old"] || ""}:n${start.dataset["new"] || ""}-${end.dataset["new"] || ""}`
+
+ const show = (record = true) => {
+ if (record) options?.onExpand?.(key)
+ const p = block.parentNode
+ if (p) {
+ while (block.firstChild) p.insertBefore(block.firstChild, block)
+ block.remove()
+ }
+ row.remove()
+ }
+
+ row.addEventListener("click", () => show(true))
+ row.addEventListener("keydown", (ev) => {
+ if (ev.key === "Enter" || ev.key === " ") {
+ ev.preventDefault()
+ show(true)
+ }
+ })
+
+ block.parentElement?.insertBefore(row, block)
+ if (!options?.side || options.side === "left") row.appendChild(oldln)
+ if (!options?.side || options.side === "right") row.appendChild(newln)
+ row.appendChild(sign)
+ row.appendChild(label)
+
+ if (options?.expanded && options.expanded.includes(key)) {
+ show(false)
+ }
+ }
+}
+
+function applySplitDiff(container: HTMLElement) {
+ const pres = Array.from(container.querySelectorAll("pre"))
+ if (pres.length === 0) return
+ const originalPre = pres[0]
+ const originalCode = originalPre.querySelector("code") as HTMLElement | undefined
+ if (!originalCode || !originalCode.classList.contains("code-diff")) return
+
+ // Rebuild split each time to match current content
+ const existing = container.querySelector(".diff-split")
+ if (existing) existing.remove()
+
+ const grid = document.createElement("div")
+ grid.className = "diff-split grid grid-cols-2 gap-x-6"
+
+ const makeColumn = () => {
+ const pre = document.createElement("pre")
+ pre.className = originalPre.className
+ const code = document.createElement("code")
+ code.className = originalCode.className
+ pre.appendChild(code)
+ return { pre, code }
+ }
+
+ const left = makeColumn()
+ const right = makeColumn()
+
+ // Helpers
+ const cloneSide = (line: HTMLElement, side: "old" | "new"): HTMLElement => {
+ const clone = line.cloneNode(true) as HTMLElement
+ const oldln = clone.querySelector(".diff-oldln")
+ const newln = clone.querySelector(".diff-newln")
+ if (side === "old") {
+ if (newln) newln.remove()
+ } else {
+ if (oldln) oldln.remove()
+ }
+ return clone
+ }
+
+ const blankLine = (side: "old" | "new", kind: "add" | "remove"): HTMLElement => {
+ const span = document.createElement("span")
+ span.className = "line diff-line diff-blank"
+ span.setAttribute("data-diff", kind)
+ const ln = document.createElement("span")
+ ln.className = side === "old" ? "diff-oldln" : "diff-newln"
+ ln.textContent = " "
+ span.appendChild(ln)
+ return span
+ }
+
+ const lines = Array.from(originalCode.querySelectorAll(".diff-line"))
+ let i = 0
+ while (i < lines.length) {
+ const cur = lines[i]
+ const kind = cur.dataset["diff"]
+
+ if (kind === "context") {
+ left.code.appendChild(cloneSide(cur, "old"))
+ left.code.appendChild(document.createTextNode("\n"))
+ right.code.appendChild(cloneSide(cur, "new"))
+ right.code.appendChild(document.createTextNode("\n"))
+ i++
+ continue
+ }
+
+ if (kind === "remove") {
+ // Batch consecutive removes and following adds, then pair
+ const removes: HTMLElement[] = []
+ const adds: HTMLElement[] = []
+ let j = i
+ while (j < lines.length && lines[j].dataset["diff"] === "remove") {
+ removes.push(lines[j])
+ j++
+ }
+ let k = j
+ while (k < lines.length && lines[k].dataset["diff"] === "add") {
+ adds.push(lines[k])
+ k++
+ }
+
+ const pairs = Math.min(removes.length, adds.length)
+ for (let p = 0; p < pairs; p++) {
+ left.code.appendChild(cloneSide(removes[p], "old"))
+ left.code.appendChild(document.createTextNode("\n"))
+ right.code.appendChild(cloneSide(adds[p], "new"))
+ right.code.appendChild(document.createTextNode("\n"))
+ }
+ for (let p = pairs; p < removes.length; p++) {
+ left.code.appendChild(cloneSide(removes[p], "old"))
+ left.code.appendChild(document.createTextNode("\n"))
+ right.code.appendChild(blankLine("new", "remove"))
+ right.code.appendChild(document.createTextNode("\n"))
+ }
+ for (let p = pairs; p < adds.length; p++) {
+ left.code.appendChild(blankLine("old", "add"))
+ left.code.appendChild(document.createTextNode("\n"))
+ right.code.appendChild(cloneSide(adds[p], "new"))
+ right.code.appendChild(document.createTextNode("\n"))
+ }
+
+ i = k
+ continue
+ }
+
+ if (kind === "add") {
+ // Run of adds not preceded by removes
+ const adds: HTMLElement[] = []
+ let j = i
+ while (j < lines.length && lines[j].dataset["diff"] === "add") {
+ adds.push(lines[j])
+ j++
+ }
+ for (let p = 0; p < adds.length; p++) {
+ left.code.appendChild(blankLine("old", "add"))
+ left.code.appendChild(document.createTextNode("\n"))
+ right.code.appendChild(cloneSide(adds[p], "new"))
+ right.code.appendChild(document.createTextNode("\n"))
+ }
+ i = j
+ continue
+ }
+
+ // Any other kind: mirror as context
+ left.code.appendChild(cloneSide(cur, "old"))
+ left.code.appendChild(document.createTextNode("\n"))
+ right.code.appendChild(cloneSide(cur, "new"))
+ right.code.appendChild(document.createTextNode("\n"))
+ i++
+ }
+
+ grid.appendChild(left.pre)
+ grid.appendChild(right.pre)
+ container.appendChild(grid)
+}
diff --git a/packages/desktop/src/components/editor-pane.tsx b/packages/desktop/src/components/editor-pane.tsx
new file mode 100644
index 000000000..faf70811d
--- /dev/null
+++ b/packages/desktop/src/components/editor-pane.tsx
@@ -0,0 +1,381 @@
+import { For, Match, Show, Switch, createSignal, splitProps } from "solid-js"
+import { Tabs } from "@/ui/tabs"
+import { FileIcon, Icon, IconButton, Logo, Tooltip } from "@/ui"
+import {
+ DragDropProvider,
+ DragDropSensors,
+ DragOverlay,
+ SortableProvider,
+ closestCenter,
+ createSortable,
+ useDragDropContext,
+} from "@thisbeyond/solid-dnd"
+import type { DragEvent, Transformer } from "@thisbeyond/solid-dnd"
+import type { LocalFile } from "@/context/local"
+import { Code } from "@/components/code"
+import PromptForm from "@/components/prompt-form"
+import { useLocal, useSDK, useSync } from "@/context"
+import { getFilename } from "@/utils"
+import type { JSX } from "solid-js"
+
+interface EditorPaneProps {
+ layoutKey: string
+ timelinePane: string
+ onFileClick: (file: LocalFile) => void
+ onOpenModelSelect: () => void
+ onInputRefChange: (element: HTMLTextAreaElement | null) => void
+}
+
+export default function EditorPane(props: EditorPaneProps): JSX.Element {
+ const [localProps] = splitProps(props, [
+ "layoutKey",
+ "timelinePane",
+ "onFileClick",
+ "onOpenModelSelect",
+ "onInputRefChange",
+ ])
+ const local = useLocal()
+ const sdk = useSDK()
+ const sync = useSync()
+ const [activeItem, setActiveItem] = createSignal(undefined)
+
+ const navigateChange = (dir: 1 | -1) => {
+ const active = local.file.active()
+ if (!active) return
+ const current = local.file.changeIndex(active.path)
+ const next = current === undefined ? (dir === 1 ? 0 : -1) : current + dir
+ local.file.setChangeIndex(active.path, next)
+ }
+
+ const handleTabChange = (path: string) => {
+ local.file.open(path)
+ }
+
+ const handleTabClose = (file: LocalFile) => {
+ local.file.close(file.path)
+ }
+
+ const handlePromptSubmit = async (prompt: string) => {
+ const existingSession = local.layout.visible(localProps.layoutKey, localProps.timelinePane)
+ ? local.session.active()
+ : undefined
+ let session = existingSession
+ if (!session) {
+ const created = await sdk.session.create()
+ session = created.data ?? undefined
+ }
+ if (!session) return
+ local.session.setActive(session.id)
+ local.layout.show(localProps.layoutKey, localProps.timelinePane)
+
+ await sdk.session.prompt({
+ path: { id: session.id },
+ body: {
+ agent: local.agent.current()!.name,
+ model: {
+ modelID: local.model.current()!.id,
+ providerID: local.model.current()!.provider.id,
+ },
+ parts: [
+ {
+ type: "text",
+ text: prompt,
+ },
+ ...(local.context.active()
+ ? [
+ {
+ type: "file" as const,
+ mime: "text/plain",
+ url: `file://${local.context.active()!.absolute}`,
+ filename: local.context.active()!.name,
+ source: {
+ type: "file" as const,
+ text: {
+ value: "@" + local.context.active()!.name,
+ start: 0,
+ end: 0,
+ },
+ path: local.context.active()!.absolute,
+ },
+ },
+ ]
+ : []),
+ ...local.context.all().flatMap((file) => [
+ {
+ type: "file" as const,
+ mime: "text/plain",
+ url: `file://${sync.absolute(file.path)}${file.selection ? `?start=${file.selection.startLine}&end=${file.selection.endLine}` : ""}`,
+ filename: getFilename(file.path),
+ source: {
+ type: "file" as const,
+ text: {
+ value: "@" + getFilename(file.path),
+ start: 0,
+ end: 0,
+ },
+ path: sync.absolute(file.path),
+ },
+ },
+ ]),
+ ],
+ },
+ })
+ }
+
+ const handleDragStart = (event: unknown) => {
+ const id = getDraggableId(event)
+ if (!id) return
+ setActiveItem(id)
+ }
+
+ const handleDragOver = (event: DragEvent) => {
+ const { draggable, droppable } = event
+ if (draggable && droppable) {
+ const currentFiles = local.file.opened().map((file) => file.path)
+ const fromIndex = currentFiles.indexOf(draggable.id.toString())
+ const toIndex = currentFiles.indexOf(droppable.id.toString())
+ if (fromIndex !== toIndex) {
+ local.file.move(draggable.id.toString(), toIndex)
+ }
+ }
+ }
+
+ const handleDragEnd = () => {
+ setActiveItem(undefined)
+ }
+
+ return (
+
+
+
+
+
+
+
+
+ file.path)}>
+
+ {(file) => (
+
+ )}
+
+
+
+
+
+ {(() => {
+ const activeFile = local.file.active()!
+ const view = local.file.view(activeFile.path)
+ return (
+
+
+
+
+ navigateChange(-1)}>
+
+
+
+
+ navigateChange(1)}>
+
+
+
+
+
+
+ local.file.setView(activeFile.path, "raw")}
+ >
+
+
+
+
+ local.file.setView(activeFile.path, "diff-unified")}
+ >
+
+
+
+
+ local.file.setView(activeFile.path, "diff-split")}
+ >
+
+
+
+
+ )
+ })()}
+
+
+ local.layout.toggle(localProps.layoutKey, localProps.timelinePane)}
+ >
+
+
+
+
+
+
+ {(file) => (
+
+ {(() => {
+ const view = local.file.view(file.path)
+ const showRaw = view === "raw" || !file.content?.diff
+ const code = showRaw ? (file.content?.content ?? "") : (file.content?.diff ?? "")
+ return
+ })()}
+
+ )}
+
+
+
+ {(() => {
+ const id = activeItem()
+ if (!id) return null
+ const draggedFile = local.file.node(id)
+ if (!draggedFile) return null
+ return (
+
+
+
+ )
+ })()}
+
+
+
localProps.onInputRefChange(element ?? null)}
+ />
+
+ )
+}
+
+function TabVisual(props: { file: LocalFile }): JSX.Element {
+ return (
+
+
+
+ {props.file.name}
+
+
+
+
+ M
+
+
+ A
+
+
+ D
+
+
+
+
+ )
+}
+
+function SortableTab(props: {
+ file: LocalFile
+ onTabClick: (file: LocalFile) => void
+ onTabClose: (file: LocalFile) => void
+}): JSX.Element {
+ const sortable = createSortable(props.file.path)
+
+ return (
+ // @ts-ignore
+
+
+
+ props.onTabClick(props.file)}>
+
+
+ props.onTabClose(props.file)}
+ >
+
+
+
+
+
+ )
+}
+
+function ConstrainDragYAxis(): JSX.Element {
+ const context = useDragDropContext()
+ if (!context) return <>>
+ const [, { onDragStart, onDragEnd, addTransformer, removeTransformer }] = context
+ const transformer: Transformer = {
+ id: "constrain-y-axis",
+ order: 100,
+ callback: (transform) => ({ ...transform, y: 0 }),
+ }
+ onDragStart((event) => {
+ const id = getDraggableId(event)
+ if (!id) return
+ addTransformer("draggables", id, transformer)
+ })
+ onDragEnd((event) => {
+ const id = getDraggableId(event)
+ if (!id) return
+ removeTransformer("draggables", id, transformer.id)
+ })
+ return <>>
+}
+
+const getDraggableId = (event: unknown): string | undefined => {
+ if (typeof event !== "object" || event === null) return undefined
+ if (!("draggable" in event)) return undefined
+ const draggable = (event as { draggable?: { id?: unknown } }).draggable
+ if (!draggable) return undefined
+ return typeof draggable.id === "string" ? draggable.id : undefined
+}
diff --git a/packages/desktop/src/components/file-tree.tsx b/packages/desktop/src/components/file-tree.tsx
new file mode 100644
index 000000000..d31255ced
--- /dev/null
+++ b/packages/desktop/src/components/file-tree.tsx
@@ -0,0 +1,110 @@
+import { useLocal } from "@/context"
+import type { LocalFile } from "@/context/local"
+import { Collapsible, FileIcon, Tooltip } from "@/ui"
+import { For, Match, Switch, Show, type ComponentProps, type ParentProps } from "solid-js"
+import { Dynamic } from "solid-js/web"
+
+export default function FileTree(props: {
+ path: string
+ class?: string
+ nodeClass?: string
+ level?: number
+ onFileClick?: (file: LocalFile) => void
+}) {
+ const local = useLocal()
+ const level = props.level ?? 0
+
+ const Node = (p: ParentProps & ComponentProps<"div"> & { node: LocalFile; as?: "div" | "button" }) => (
+ {
+ const evt = e as globalThis.DragEvent
+ evt.dataTransfer!.effectAllowed = "copy"
+ evt.dataTransfer!.setData("text/plain", `file:${p.node.path}`)
+
+ // Create custom drag image without margins
+ const dragImage = document.createElement("div")
+ dragImage.className =
+ "flex items-center gap-x-2 px-2 py-1 bg-background-element rounded-md border border-border-1"
+ dragImage.style.position = "absolute"
+ dragImage.style.top = "-1000px"
+
+ // Copy only the icon and text content without padding
+ const icon = e.currentTarget.querySelector("svg")
+ const text = e.currentTarget.querySelector("span")
+ if (icon && text) {
+ dragImage.innerHTML = icon.outerHTML + text.outerHTML
+ }
+
+ document.body.appendChild(dragImage)
+ evt.dataTransfer!.setDragImage(dragImage, 0, 12)
+ setTimeout(() => document.body.removeChild(dragImage), 0)
+ }}
+ {...p}
+ >
+ {p.children}
+
+ {p.node.name}
+
+
+
+
+
+ )
+
+ return (
+
+
+ {(node) => (
+
+
+
+ (open ? local.file.expand(node.path) : local.file.collapse(node.path))}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+ props.onFileClick?.(node)}>
+
+
+
+
+
+
+ )}
+
+
+ )
+}
diff --git a/packages/desktop/src/components/markdown.tsx b/packages/desktop/src/components/markdown.tsx
new file mode 100644
index 000000000..a60fad149
--- /dev/null
+++ b/packages/desktop/src/components/markdown.tsx
@@ -0,0 +1,23 @@
+import { useMarked } from "@/context"
+import { createResource } from "solid-js"
+
+function strip(text: string): string {
+ const wrappedRe = /^\s*<([A-Za-z]\w*)>\s*([\s\S]*?)\s*<\/\1>\s*$/
+ const match = text.match(wrappedRe)
+ return match ? match[2] : text
+}
+export function Markdown(props: { text: string; class?: string }) {
+ const marked = useMarked()
+ const [html] = createResource(
+ () => strip(props.text),
+ async (markdown) => {
+ return marked.parse(markdown)
+ },
+ )
+ return (
+
+ )
+}
diff --git a/packages/desktop/src/components/prompt-form.tsx b/packages/desktop/src/components/prompt-form.tsx
new file mode 100644
index 000000000..9d7c45a32
--- /dev/null
+++ b/packages/desktop/src/components/prompt-form.tsx
@@ -0,0 +1,295 @@
+import { For, Show, createEffect, createMemo, createSignal, onCleanup } from "solid-js"
+import { Button, FileIcon, Icon, IconButton, Tooltip } from "@/ui"
+import { Select } from "@/components/select"
+import { useLocal } from "@/context"
+import type { FileContext, LocalFile } from "@/context/local"
+import { getFilename } from "@/utils"
+import { createSpeechRecognition } from "@/utils/speech"
+
+interface PromptFormProps {
+ class?: string
+ classList?: Record
+ onSubmit: (prompt: string) => Promise | void
+ onOpenModelSelect: () => void
+ onInputRefChange?: (element: HTMLTextAreaElement | undefined) => void
+}
+
+export default function PromptForm(props: PromptFormProps) {
+ const local = useLocal()
+
+ const [prompt, setPrompt] = createSignal("")
+ const [isDragOver, setIsDragOver] = createSignal(false)
+
+ const placeholderText = "Start typing or speaking..."
+
+ const {
+ isSupported,
+ isRecording,
+ interim: interimTranscript,
+ start: startSpeech,
+ stop: stopSpeech,
+ } = createSpeechRecognition({
+ onFinal: (text) => setPrompt((prev) => (prev && !prev.endsWith(" ") ? prev + " " : prev) + text),
+ })
+
+ let inputRef: HTMLTextAreaElement | undefined = undefined
+ let overlayContainerRef: HTMLDivElement | undefined = undefined
+ let shouldAutoScroll = true
+
+ const promptContent = createMemo(() => {
+ const base = prompt() || ""
+ const interim = isRecording() ? interimTranscript() : ""
+ if (!base && !interim) {
+ return {placeholderText}
+ }
+ const needsSpace = base && interim && !base.endsWith(" ") && !interim.startsWith(" ")
+ return (
+ <>
+ {base}
+ {interim && (
+
+ {needsSpace ? " " : ""}
+ {interim}
+
+ )}
+ >
+ )
+ })
+
+ createEffect(() => {
+ prompt()
+ interimTranscript()
+ queueMicrotask(() => {
+ if (!inputRef) return
+ if (!overlayContainerRef) return
+ if (!shouldAutoScroll) {
+ overlayContainerRef.scrollTop = inputRef.scrollTop
+ return
+ }
+ scrollPromptToEnd()
+ })
+ })
+
+ const handlePromptKeyDown = (event: KeyboardEvent & { currentTarget: HTMLTextAreaElement }) => {
+ if (event.isComposing) return
+ if (event.key === "Enter" && !event.shiftKey) {
+ event.preventDefault()
+ inputRef?.form?.requestSubmit()
+ }
+ }
+
+ const handlePromptScroll = (event: Event & { currentTarget: HTMLTextAreaElement }) => {
+ const target = event.currentTarget
+ shouldAutoScroll = target.scrollTop + target.clientHeight >= target.scrollHeight - 4
+ if (overlayContainerRef) overlayContainerRef.scrollTop = target.scrollTop
+ }
+
+ const scrollPromptToEnd = () => {
+ if (!inputRef) return
+ const maxInputScroll = inputRef.scrollHeight - inputRef.clientHeight
+ const next = maxInputScroll > 0 ? maxInputScroll : 0
+ inputRef.scrollTop = next
+ if (overlayContainerRef) overlayContainerRef.scrollTop = next
+ shouldAutoScroll = true
+ }
+
+ const handleSubmit = async (event: SubmitEvent) => {
+ event.preventDefault()
+ const currentPrompt = prompt()
+ setPrompt("")
+ shouldAutoScroll = true
+ if (overlayContainerRef) overlayContainerRef.scrollTop = 0
+ if (inputRef) {
+ inputRef.scrollTop = 0
+ inputRef.blur()
+ }
+
+ await props.onSubmit(currentPrompt)
+ }
+
+ onCleanup(() => {
+ props.onInputRefChange?.(undefined)
+ })
+
+ return (
+
+ )
+}
+
+const ActiveTabContextTag = (props: { file: LocalFile; onClose: () => void }) => (
+
+
+
+
+
+
+ {getFilename(props.file.path)}
+
+
+)
+
+const FileTag = (props: { file: FileContext; onClose: () => void }) => (
+
+
+
+
+
+
+ {getFilename(props.file.path)}
+
+
+ ({props.file.selection!.startLine}-{props.file.selection!.endLine})
+
+
+
+
+)
diff --git a/packages/desktop/src/components/resizeable-pane.tsx b/packages/desktop/src/components/resizeable-pane.tsx
new file mode 100644
index 000000000..49ccc4e70
--- /dev/null
+++ b/packages/desktop/src/components/resizeable-pane.tsx
@@ -0,0 +1,217 @@
+import { batch, createContext, createMemo, createSignal, onCleanup, Show, useContext } from "solid-js"
+import type { ComponentProps, JSX } from "solid-js"
+import { createStore } from "solid-js/store"
+import { useLocal } from "@/context"
+
+type PaneDefault = number | { size: number; visible?: boolean }
+
+type LayoutContextValue = {
+ id: string
+ register: (pane: string, options: { min?: number | string; max?: number | string }) => void
+ size: (pane: string) => number
+ visible: (pane: string) => boolean
+ percent: (pane: string) => number
+ next: (pane: string) => string | undefined
+ startDrag: (left: string, right: string | undefined, event: MouseEvent) => void
+ dragging: () => string | undefined
+}
+
+const LayoutContext = createContext(undefined)
+
+export interface ResizeableLayoutProps {
+ id: string
+ defaults: Record
+ class?: ComponentProps<"div">["class"]
+ classList?: ComponentProps<"div">["classList"]
+ children: JSX.Element
+}
+
+export interface ResizeablePaneProps {
+ id: string
+ minSize?: number | string
+ maxSize?: number | string
+ class?: ComponentProps<"div">["class"]
+ classList?: ComponentProps<"div">["classList"]
+ children: JSX.Element
+}
+
+export function ResizeableLayout(props: ResizeableLayoutProps) {
+ const local = useLocal()
+ const [meta, setMeta] = createStore>({})
+ const [dragging, setDragging] = createSignal()
+ let container: HTMLDivElement | undefined
+
+ local.layout.ensure(props.id, props.defaults)
+
+ const order = createMemo(() => local.layout.order(props.id))
+ const visibleOrder = createMemo(() => order().filter((pane) => local.layout.visible(props.id, pane)))
+ const totalVisible = createMemo(() => {
+ const panes = visibleOrder()
+ if (!panes.length) return 0
+ return panes.reduce((total, pane) => total + local.layout.size(props.id, pane), 0)
+ })
+
+ const percent = (pane: string) => {
+ const panes = visibleOrder()
+ if (!panes.length) return 0
+ const total = totalVisible()
+ if (!total) return 100 / panes.length
+ return (local.layout.size(props.id, pane) / total) * 100
+ }
+
+ const nextPane = (pane: string) => {
+ const panes = visibleOrder()
+ const index = panes.indexOf(pane)
+ if (index === -1) return undefined
+ return panes[index + 1]
+ }
+
+ const minMax = (pane: string) => meta[pane] ?? { min: 5, max: 95 }
+
+ const pxToPercent = (px: number, total: number) => (px / total) * 100
+
+ const boundsForPair = (left: string, right: string, total: number) => {
+ const leftMeta = minMax(left)
+ const rightMeta = minMax(right)
+ const containerWidth = container?.getBoundingClientRect().width ?? 0
+
+ let minLeft = leftMeta.min
+ let maxLeft = leftMeta.max
+ let minRight = rightMeta.min
+ let maxRight = rightMeta.max
+
+ if (containerWidth && leftMeta.minPx !== undefined) minLeft = pxToPercent(leftMeta.minPx, containerWidth)
+ if (containerWidth && leftMeta.maxPx !== undefined) maxLeft = pxToPercent(leftMeta.maxPx, containerWidth)
+ if (containerWidth && rightMeta.minPx !== undefined) minRight = pxToPercent(rightMeta.minPx, containerWidth)
+ if (containerWidth && rightMeta.maxPx !== undefined) maxRight = pxToPercent(rightMeta.maxPx, containerWidth)
+
+ const finalMinLeft = Math.max(minLeft, total - maxRight)
+ const finalMaxLeft = Math.min(maxLeft, total - minRight)
+ return {
+ min: Math.min(finalMinLeft, finalMaxLeft),
+ max: Math.max(finalMinLeft, finalMaxLeft),
+ }
+ }
+
+ const setPair = (left: string, right: string, leftSize: number, rightSize: number) => {
+ batch(() => {
+ local.layout.setSize(props.id, left, leftSize)
+ local.layout.setSize(props.id, right, rightSize)
+ })
+ }
+
+ const startDrag = (left: string, right: string | undefined, event: MouseEvent) => {
+ if (!right) return
+ if (!container) return
+ const rect = container.getBoundingClientRect()
+ if (!rect.width) return
+ event.preventDefault()
+ const startX = event.clientX
+ const startLeft = local.layout.size(props.id, left)
+ const startRight = local.layout.size(props.id, right)
+ const total = startLeft + startRight
+ const bounds = boundsForPair(left, right, total)
+ const move = (moveEvent: MouseEvent) => {
+ const delta = ((moveEvent.clientX - startX) / rect.width) * 100
+ const nextLeft = Math.max(bounds.min, Math.min(bounds.max, startLeft + delta))
+ const nextRight = total - nextLeft
+ setPair(left, right, nextLeft, nextRight)
+ }
+ const stop = () => {
+ setDragging()
+ document.removeEventListener("mousemove", move)
+ document.removeEventListener("mouseup", stop)
+ }
+ setDragging(left)
+ document.addEventListener("mousemove", move)
+ document.addEventListener("mouseup", stop)
+ onCleanup(() => stop())
+ }
+
+ const register = (pane: string, options: { min?: number | string; max?: number | string }) => {
+ let min = 5
+ let max = 95
+ let minPx: number | undefined
+ let maxPx: number | undefined
+
+ if (typeof options.min === "string" && options.min.endsWith("px")) {
+ minPx = parseInt(options.min)
+ min = 0
+ } else if (typeof options.min === "number") {
+ min = options.min
+ }
+
+ if (typeof options.max === "string" && options.max.endsWith("px")) {
+ maxPx = parseInt(options.max)
+ max = 100
+ } else if (typeof options.max === "number") {
+ max = options.max
+ }
+
+ setMeta(pane, () => ({ min, max, minPx, maxPx }))
+ const fallback = props.defaults[pane]
+ local.layout.ensurePane(props.id, pane, fallback ?? { size: min, visible: true })
+ }
+
+ const contextValue: LayoutContextValue = {
+ id: props.id,
+ register,
+ size: (pane) => local.layout.size(props.id, pane),
+ visible: (pane) => local.layout.visible(props.id, pane),
+ percent,
+ next: nextPane,
+ startDrag,
+ dragging,
+ }
+
+ return (
+
+ {
+ container = node ?? undefined
+ }}
+ class={props.class ? `relative flex h-full w-full ${props.class}` : "relative flex h-full w-full"}
+ classList={props.classList}
+ >
+ {props.children}
+
+
+ )
+}
+
+export function ResizeablePane(props: ResizeablePaneProps) {
+ const context = useContext(LayoutContext)!
+ context.register(props.id, { min: props.minSize, max: props.maxSize })
+ const visible = () => context.visible(props.id)
+ const width = () => context.percent(props.id)
+ const next = () => context.next(props.id)
+ const dragging = () => context.dragging() === props.id
+
+ return (
+
+
+ {props.children}
+
+ context.startDrag(props.id, next(), event)}
+ >
+
+
+
+
+
+ )
+}
diff --git a/packages/desktop/src/components/select-dialog.tsx b/packages/desktop/src/components/select-dialog.tsx
new file mode 100644
index 000000000..315fe14e5
--- /dev/null
+++ b/packages/desktop/src/components/select-dialog.tsx
@@ -0,0 +1,225 @@
+import { createEffect, Show, For, createMemo, type JSX, createResource } from "solid-js"
+import { Dialog } from "@kobalte/core/dialog"
+import { Icon, IconButton } from "@/ui"
+import { createStore } from "solid-js/store"
+import { entries, flatMap, groupBy, map, pipe } from "remeda"
+import { createList } from "solid-list"
+import fuzzysort from "fuzzysort"
+
+interface SelectDialogProps {
+ items: T[] | ((filter: string) => Promise)
+ key: (item: T) => string
+ render: (item: T) => JSX.Element
+ filter?: string[]
+ current?: T
+ placeholder?: string
+ groupBy?: (x: T) => string
+ onSelect?: (value: T | undefined) => void
+ onClose?: () => void
+}
+
+export function SelectDialog(props: SelectDialogProps) {
+ let scrollRef: HTMLDivElement | undefined
+ const [store, setStore] = createStore({
+ filter: "",
+ mouseActive: false,
+ })
+
+ const [grouped] = createResource(
+ () => store.filter,
+ async (filter) => {
+ const needle = filter.toLowerCase()
+ const all = (typeof props.items === "function" ? await props.items(needle) : props.items) || []
+ const result = pipe(
+ all,
+ (x) => {
+ if (!needle) return x
+ if (!props.filter && Array.isArray(x) && x.every((e) => typeof e === "string")) {
+ return fuzzysort.go(needle, x).map((x) => x.target) as T[]
+ }
+ return fuzzysort.go(needle, x, { keys: props.filter! }).map((x) => x.obj)
+ },
+ groupBy((x) => (props.groupBy ? props.groupBy(x) : "")),
+ // mapValues((x) => x.sort((a, b) => props.key(a).localeCompare(props.key(b)))),
+ entries(),
+ map(([k, v]) => ({ category: k, items: v })),
+ )
+ return result
+ },
+ )
+ const flat = createMemo(() => {
+ return pipe(
+ grouped() || [],
+ flatMap((x) => x.items),
+ )
+ })
+ const list = createList({
+ items: () => flat().map(props.key),
+ initialActive: props.current ? props.key(props.current) : undefined,
+ loop: true,
+ })
+ const resetSelection = () => {
+ const all = flat()
+ if (all.length === 0) return
+ list.setActive(props.key(all[0]))
+ }
+
+ createEffect(() => {
+ store.filter
+ scrollRef?.scrollTo(0, 0)
+ resetSelection()
+ })
+
+ createEffect(() => {
+ const all = flat()
+ if (store.mouseActive || all.length === 0) return
+ if (list.active() === props.key(all[0])) {
+ scrollRef?.scrollTo(0, 0)
+ return
+ }
+ const element = scrollRef?.querySelector(`[data-key="${list.active()}"]`)
+ element?.scrollIntoView({ block: "nearest", behavior: "smooth" })
+ })
+
+ const handleInput = (value: string) => {
+ setStore("filter", value)
+ resetSelection()
+ }
+
+ const handleSelect = (item: T) => {
+ props.onSelect?.(item)
+ props.onClose?.()
+ }
+
+ const handleKey = (e: KeyboardEvent) => {
+ setStore("mouseActive", false)
+
+ if (e.key === "Enter") {
+ e.preventDefault()
+ const selected = flat().find((x) => props.key(x) === list.active())
+ if (selected) handleSelect(selected)
+ } else if (e.key === "Escape") {
+ e.preventDefault()
+ props.onClose?.()
+ } else {
+ list.onKeyDown(e)
+ }
+ }
+
+ return (
+
+ )
+}
diff --git a/packages/desktop/src/components/select.tsx b/packages/desktop/src/components/select.tsx
new file mode 100644
index 000000000..3df8c9999
--- /dev/null
+++ b/packages/desktop/src/components/select.tsx
@@ -0,0 +1,107 @@
+import { Select as KobalteSelect } from "@kobalte/core/select"
+import { createMemo } from "solid-js"
+import type { ComponentProps } from "solid-js"
+import { Icon } from "@/ui/icon"
+import { pipe, groupBy, entries, map } from "remeda"
+import { Button, type ButtonProps } from "@/ui"
+
+export interface SelectProps {
+ placeholder?: string
+ options: T[]
+ current?: T
+ value?: (x: T) => string
+ label?: (x: T) => string
+ groupBy?: (x: T) => string
+ onSelect?: (value: T | undefined) => void
+ class?: ComponentProps<"div">["class"]
+ classList?: ComponentProps<"div">["classList"]
+}
+
+export function Select(props: SelectProps & ButtonProps) {
+ const grouped = createMemo(() => {
+ const result = pipe(
+ props.options,
+ groupBy((x) => (props.groupBy ? props.groupBy(x) : "")),
+ // mapValues((x) => x.sort((a, b) => a.title.localeCompare(b.title))),
+ entries(),
+ map(([k, v]) => ({ category: k, options: v })),
+ )
+ return result
+ })
+
+ return (
+
+ value={props.current}
+ options={grouped()}
+ optionValue={(x) => (props.value ? props.value(x) : (x as string))}
+ optionTextValue={(x) => (props.label ? props.label(x) : (x as string))}
+ optionGroupChildren="options"
+ placeholder={props.placeholder}
+ sectionComponent={(props) => (
+
+ {props.section.rawValue.category}
+
+ )}
+ itemComponent={(itemProps) => (
+
+
+ {props.label ? props.label(itemProps.item.rawValue) : (itemProps.item.rawValue as string)}
+
+
+
+
+
+ )}
+ onChange={(v) => {
+ props.onSelect?.(v ?? undefined)
+ }}
+ >
+
+ >
+ {(state) => {
+ const selected = state.selectedOption() ?? props.current
+ if (!selected) return props.placeholder || ""
+ if (props.label) return props.label(selected)
+ return selected as string
+ }}
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/packages/desktop/src/components/session-list.tsx b/packages/desktop/src/components/session-list.tsx
new file mode 100644
index 000000000..e0819780d
--- /dev/null
+++ b/packages/desktop/src/components/session-list.tsx
@@ -0,0 +1,28 @@
+import { useSync, useLocal } from "@/context"
+import { Button, Tooltip } from "@/ui"
+import { VList } from "virtua/solid"
+
+export default function SessionList() {
+ const sync = useSync()
+ const local = useLocal()
+
+ return (
+
+ {(session) => (
+
+
+
+ )}
+
+ )
+}
diff --git a/packages/desktop/src/components/session-timeline.tsx b/packages/desktop/src/components/session-timeline.tsx
new file mode 100644
index 000000000..07d93031e
--- /dev/null
+++ b/packages/desktop/src/components/session-timeline.tsx
@@ -0,0 +1,459 @@
+import { useLocal, useSync } from "@/context"
+import { Collapsible, Icon } from "@/ui"
+import type { Part, ToolPart } from "@opencode-ai/sdk"
+import { DateTime } from "luxon"
+import {
+ createSignal,
+ onMount,
+ For,
+ Match,
+ splitProps,
+ Switch,
+ type ComponentProps,
+ type ParentProps,
+ createEffect,
+ createMemo,
+ Show,
+} from "solid-js"
+import { getFilename } from "@/utils"
+import { Markdown } from "./markdown"
+import { Code } from "./code"
+import { createElementSize } from "@solid-primitives/resize-observer"
+import { createScrollPosition } from "@solid-primitives/scroll"
+
+function Part(props: ParentProps & ComponentProps<"div">) {
+ const [local, others] = splitProps(props, ["class", "classList", "children"])
+ return (
+
+ )
+}
+
+function CollapsiblePart(props: { title: ParentProps["children"] } & ParentProps & ComponentProps) {
+ return (
+
+
+ {props.title}
+
+
+
+ {props.children}
+
+
+
+ )
+}
+
+function ReadToolPart(props: { part: ToolPart }) {
+ const sync = useSync()
+ const local = useLocal()
+ return (
+
+
+ Reading file...
+
+
+ {(state) => {
+ const path = state().input["filePath"] as string
+ return (
+ local.file.open(path)}>
+ Read {getFilename(path)}
+
+ )
+ }}
+
+
+ {(state) => (
+
+
+ Read {getFilename(state().input["filePath"] as string)}
+
+
{sync.sanitize(state().error)}
+
+ )}
+
+
+ )
+}
+
+function EditToolPart(props: { part: ToolPart }) {
+ const sync = useSync()
+ return (
+
+
+ Preparing edit...
+
+
+ {(state) => (
+
+ Edit {getFilename(state().input["filePath"] as string)}
+ >
+ }
+ >
+
+
+ )}
+
+
+ {(state) => (
+
+ Edit {getFilename(state().input["filePath"] as string)}
+ >
+ }
+ >
+ {sync.sanitize(state().error)}
+
+ )}
+
+
+ )
+}
+
+function WriteToolPart(props: { part: ToolPart }) {
+ const sync = useSync()
+ return (
+
+
+ Preparing write...
+
+
+ {(state) => (
+
+ Write {getFilename(state().input["filePath"] as string)}
+ >
+ }
+ >
+
+
+ )}
+
+
+ {(state) => (
+
+
+ Write {getFilename(state().input["filePath"] as string)}
+
+
{sync.sanitize(state().error)}
+
+ )}
+
+
+ )
+}
+
+function BashToolPart(props: { part: ToolPart }) {
+ const sync = useSync()
+ return (
+
+
+ Writing shell command...
+
+
+ {(state) => (
+
+ Run command: {state().input["command"]}
+ >
+ }
+ >
+
+
+ )}
+
+
+ {(state) => (
+
+ Shell {state().input["command"]}
+ >
+ }
+ >
+ {sync.sanitize(state().error)}
+
+ )}
+
+
+ )
+}
+
+function ToolPart(props: { part: ToolPart }) {
+ // read
+ // edit
+ // write
+ // bash
+ // ls
+ // glob
+ // grep
+ // todowrite
+ // todoread
+ // webfetch
+ // websearch
+ // patch
+ // task
+ return (
+
+
+ {props.part.type}:{props.part.tool}
+
+ }
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+export default function SessionTimeline(props: { session: string; class?: string }) {
+ const sync = useSync()
+ const [scrollElement, setScrollElement] = createSignal(undefined)
+ const [root, setRoot] = createSignal(undefined)
+ const [tail, setTail] = createSignal(true)
+ const size = createElementSize(root)
+ const scroll = createScrollPosition(scrollElement)
+
+ onMount(() => sync.session.sync(props.session))
+ const session = createMemo(() => sync.session.get(props.session))
+ const messages = createMemo(() => sync.data.message[props.session] ?? [])
+ const working = createMemo(() => {
+ const last = messages()[messages().length - 1]
+ if (!last) return false
+ if (last.role === "user") return true
+ return !last.time.completed
+ })
+
+ const getScrollParent = (el: HTMLElement | null): HTMLElement | undefined => {
+ let p = el?.parentElement
+ while (p && p !== document.body) {
+ const s = getComputedStyle(p)
+ if (s.overflowY === "auto" || s.overflowY === "scroll") return p
+ p = p.parentElement
+ }
+ return undefined
+ }
+
+ createEffect(() => {
+ if (!root()) return
+ setScrollElement(getScrollParent(root()!))
+ })
+
+ const scrollToBottom = () => {
+ const element = scrollElement()
+ if (!element) return
+ element.scrollTop = element.scrollHeight
+ }
+
+ createEffect(() => {
+ size.height
+ if (tail()) scrollToBottom()
+ })
+
+ createEffect(() => {
+ if (working()) {
+ setTail(true)
+ scrollToBottom()
+ }
+ })
+
+ let lastScrollY = 0
+ createEffect(() => {
+ if (scroll.y < lastScrollY) {
+ setTail(false)
+ }
+ lastScrollY = scroll.y
+ })
+
+ const valid = (part: Part) => {
+ if (!part) return false
+ switch (part.type) {
+ case "step-start":
+ case "step-finish":
+ case "file":
+ case "patch":
+ return false
+ case "text":
+ return !part.synthetic
+ case "reasoning":
+ return part.text.trim()
+ default:
+ return true
+ }
+ }
+
+ const duration = (part: Part) => {
+ switch (part.type) {
+ default:
+ if (
+ "time" in part &&
+ part.time &&
+ "start" in part.time &&
+ part.time.start &&
+ "end" in part.time &&
+ part.time.end
+ ) {
+ const start = DateTime.fromMillis(part.time.start)
+ const end = DateTime.fromMillis(part.time.end)
+ return end.diff(start).toFormat("s")
+ }
+ return ""
+ }
+ }
+
+ return (
+
+
+
+ {(message) => (
+
+ {(part) => (
+ -
+ {part.type}
}>
+
+ {(part) => (
+
+
+
+
+ {part().text}
+
+
+ {DateTime.fromMillis(message.time.created).toRelative()} ·{" "}
+ {sync.data.config.username ?? "user"}
+
+
+
+
+
+
+
+ )}
+
+
+ {(part) => (
+ Thinking}>
+
+ Thought for {duration(part())}s
+
+
+ }
+ >
+
+
+ )}
+
+ {(part) => }
+
+
+ )}
+
+ )}
+
+
+
+
+
+
+
+ Raw Session Data
+
+
+
+
+
+ -
+
+
+
+
+ session
+
+
+
+
+
+
+
+
+
+ {(message) => (
+ <>
+ -
+
+
+
+
+ {message.role === "user" ? "user" : "assistant"}
+
+
+
+
+
+
+
+
+
+ {(part) => (
+ -
+
+
+
+
+ {part.type}
+
+
+
+
+
+
+
+
+ )}
+
+ >
+ )}
+
+
+
+
+
+
+ )
+}
diff --git a/packages/desktop/src/components/sidebar-nav.tsx b/packages/desktop/src/components/sidebar-nav.tsx
new file mode 100644
index 000000000..24750bdba
--- /dev/null
+++ b/packages/desktop/src/components/sidebar-nav.tsx
@@ -0,0 +1,48 @@
+import { For } from "solid-js"
+import { Icon, Link, Logo, Tooltip } from "@/ui"
+import { useLocation } from "@solidjs/router"
+
+const navigation = [
+ { name: "Sessions", href: "/sessions", icon: "dashboard" as const },
+ { name: "Commands", href: "/commands", icon: "slash" as const },
+ { name: "Agents", href: "/agents", icon: "bolt" as const },
+ { name: "Providers", href: "/providers", icon: "cloud" as const },
+ { name: "Tools (MCP)", href: "/tools", icon: "hammer" as const },
+ { name: "LSP", href: "/lsp", icon: "code" as const },
+ { name: "Settings", href: "/settings", icon: "settings" as const },
+]
+
+export default function SidebarNav() {
+ const location = useLocation()
+ return (
+
+
+
+
+
+
+ )
+}
diff --git a/packages/desktop/src/context/event.tsx b/packages/desktop/src/context/event.tsx
new file mode 100644
index 000000000..a2aa54181
--- /dev/null
+++ b/packages/desktop/src/context/event.tsx
@@ -0,0 +1,34 @@
+import { createContext, useContext, type ParentProps } from "solid-js"
+import { createEventBus } from "@solid-primitives/event-bus"
+import type { Event as SDKEvent } from "@opencode-ai/sdk"
+import { useSDK } from "@/context"
+
+export type Event = SDKEvent // can extend with custom events later
+
+function init() {
+ const sdk = useSDK()
+ const bus = createEventBus()
+ sdk.event.subscribe().then(async (events) => {
+ for await (const event of events.stream) {
+ bus.emit(event)
+ }
+ })
+ return bus
+}
+
+type EventContext = ReturnType
+
+const ctx = createContext()
+
+export function EventProvider(props: ParentProps) {
+ const value = init()
+ return {props.children}
+}
+
+export function useEvent() {
+ const value = useContext(ctx)
+ if (!value) {
+ throw new Error("useEvent must be used within a EventProvider")
+ }
+ return value
+}
diff --git a/packages/desktop/src/context/index.ts b/packages/desktop/src/context/index.ts
new file mode 100644
index 000000000..bc4bf3b1d
--- /dev/null
+++ b/packages/desktop/src/context/index.ts
@@ -0,0 +1,7 @@
+export { EventProvider, useEvent } from "./event"
+export { LocalProvider, useLocal } from "./local"
+export { MarkedProvider, useMarked } from "./marked"
+export { SDKProvider, useSDK } from "./sdk"
+export { ShikiProvider, useShiki } from "./shiki"
+export { SyncProvider, useSync } from "./sync"
+export { ThemeProvider, useTheme } from "./theme"
diff --git a/packages/desktop/src/context/local.tsx b/packages/desktop/src/context/local.tsx
new file mode 100644
index 000000000..4c2a3d3be
--- /dev/null
+++ b/packages/desktop/src/context/local.tsx
@@ -0,0 +1,537 @@
+import { createStore, produce, reconcile } from "solid-js/store"
+import { batch, createContext, createEffect, createMemo, useContext, type ParentProps } from "solid-js"
+import { uniqueBy } from "remeda"
+import type { FileContent, FileNode, Model, Provider, File as FileStatus } from "@opencode-ai/sdk"
+import { useSDK, useEvent, useSync } from "@/context"
+
+export type LocalFile = FileNode &
+ Partial<{
+ loaded: boolean
+ pinned: boolean
+ expanded: boolean
+ content: FileContent
+ selection: { startLine: number; startChar: number; endLine: number; endChar: number }
+ scrollTop: number
+ view: "raw" | "diff-unified" | "diff-split"
+ folded: string[]
+ selectedChange: number
+ status: FileStatus
+ }>
+export type TextSelection = LocalFile["selection"]
+export type View = LocalFile["view"]
+
+export type LocalModel = Omit & {
+ provider: Provider
+}
+export type ModelKey = { providerID: string; modelID: string }
+
+export type FileContext = { type: "file"; path: string; selection?: TextSelection }
+export type ContextItem = FileContext
+
+function init() {
+ const sdk = useSDK()
+ const sync = useSync()
+
+ const agent = (() => {
+ const list = createMemo(() => sync.data.agent.filter((x) => x.mode !== "subagent"))
+ const [store, setStore] = createStore<{
+ current: string
+ }>({
+ current: list()[0].name,
+ })
+ return {
+ list,
+ current() {
+ return list().find((x) => x.name === store.current)!
+ },
+ set(name: string | undefined) {
+ setStore("current", name ?? list()[0].name)
+ },
+ move(direction: 1 | -1) {
+ let next = list().findIndex((x) => x.name === store.current) + direction
+ if (next < 0) next = list().length - 1
+ if (next >= list().length) next = 0
+ const value = list()[next]
+ setStore("current", value.name)
+ if (value.model)
+ model.set({
+ providerID: value.model.providerID,
+ modelID: value.model.modelID,
+ })
+ },
+ }
+ })()
+
+ const model = (() => {
+ const list = createMemo(() =>
+ sync.data.provider.flatMap((p) => Object.values(p.models).map((m) => ({ ...m, provider: p }) as LocalModel)),
+ )
+ const find = (key: ModelKey) => list().find((m) => m.id === key?.modelID && m.provider.id === key.providerID)
+
+ const [store, setStore] = createStore<{
+ model: Record
+ recent: ModelKey[]
+ }>({
+ model: {},
+ recent: [],
+ })
+
+ const value = localStorage.getItem("model")
+ setStore("recent", JSON.parse(value ?? "[]"))
+ createEffect(() => {
+ localStorage.setItem("model", JSON.stringify(store.recent))
+ })
+
+ const fallback = createMemo(() => {
+ if (store.recent.length) return store.recent[0]
+ const provider = sync.data.provider[0]
+ const model = Object.values(provider.models)[0]
+ return { modelID: model.id, providerID: provider.id }
+ })
+
+ const current = createMemo(() => {
+ const a = agent.current()
+ return find(store.model[agent.current().name]) ?? find(a.model ?? fallback())
+ })
+
+ const recent = createMemo(() => store.recent.map(find).filter(Boolean))
+
+ return {
+ list,
+ current,
+ recent,
+ set(model: ModelKey | undefined, options?: { recent?: boolean }) {
+ batch(() => {
+ setStore("model", agent.current().name, model ?? fallback())
+ if (options?.recent && model) {
+ const uniq = uniqueBy([model, ...store.recent], (x) => x.providerID + x.modelID)
+ if (uniq.length > 5) uniq.pop()
+ setStore("recent", uniq)
+ }
+ })
+ },
+ }
+ })()
+
+ const file = (() => {
+ const [store, setStore] = createStore<{
+ node: Record
+ opened: string[]
+ active?: string
+ }>({
+ node: Object.fromEntries(sync.data.node.map((x) => [x.path, x])),
+ opened: [],
+ })
+
+ const active = createMemo(() => {
+ if (!store.active) return undefined
+ return store.node[store.active]
+ })
+ const opened = createMemo(() => store.opened.map((x) => store.node[x]))
+ const changeset = createMemo(() => new Set(sync.data.changes.map((f) => f.path)))
+ const changes = createMemo(() => Array.from(changeset()).sort((a, b) => a.localeCompare(b)))
+
+ createEffect((prev: FileStatus[]) => {
+ const removed = prev.filter((p) => !sync.data.changes.find((c) => c.path === p.path))
+ for (const p of removed) {
+ setStore(
+ "node",
+ p.path,
+ produce((draft) => {
+ draft.status = undefined
+ draft.view = "raw"
+ }),
+ )
+ load(p.path)
+ }
+ for (const p of sync.data.changes) {
+ if (store.node[p.path] === undefined) {
+ fetch(p.path).then(() => setStore("node", p.path, "status", p))
+ } else {
+ setStore("node", p.path, "status", p)
+ }
+ }
+ return sync.data.changes
+ }, sync.data.changes)
+
+ const changed = (path: string) => {
+ const node = store.node[path]
+ if (node?.status) return true
+ const set = changeset()
+ if (set.has(path)) return true
+ for (const p of set) {
+ if (p.startsWith(path ? path + "/" : "")) return true
+ }
+ return false
+ }
+
+ const resetNode = (path: string) => {
+ setStore("node", path, {
+ loaded: undefined,
+ pinned: undefined,
+ content: undefined,
+ selection: undefined,
+ scrollTop: undefined,
+ folded: undefined,
+ view: undefined,
+ selectedChange: undefined,
+ })
+ }
+
+ const relative = (path: string) => path.replace(sync.data.path.directory + "/", "")
+
+ const load = async (path: string) => {
+ const relativePath = relative(path)
+ sdk.file.read({ query: { path: relativePath } }).then((x) => {
+ setStore(
+ "node",
+ relativePath,
+ produce((draft) => {
+ draft.loaded = true
+ draft.content = x.data
+ }),
+ )
+ })
+ }
+
+ const fetch = async (path: string) => {
+ const relativePath = relative(path)
+ const parent = relativePath.split("/").slice(0, -1).join("/")
+ if (parent) {
+ await list(parent)
+ }
+ }
+
+ const open = async (path: string, options?: { pinned?: boolean; view?: LocalFile["view"] }) => {
+ const relativePath = relative(path)
+ if (!store.node[relativePath]) await fetch(path)
+ setStore("opened", (x) => {
+ if (x.includes(relativePath)) return x
+ return [
+ ...opened()
+ .filter((x) => x.pinned)
+ .map((x) => x.path),
+ relativePath,
+ ]
+ })
+ setStore("active", relativePath)
+ context.addActive()
+ if (options?.pinned) setStore("node", path, "pinned", true)
+ if (options?.view && store.node[relativePath].view === undefined) setStore("node", path, "view", options.view)
+ if (store.node[relativePath].loaded) return
+ return load(relativePath)
+ }
+
+ const list = async (path: string) => {
+ return sdk.file.list({ query: { path: path + "/" } }).then((x) => {
+ setStore(
+ "node",
+ produce((draft) => {
+ x.data!.forEach((node) => {
+ if (node.path in draft) return
+ draft[node.path] = node
+ })
+ }),
+ )
+ })
+ }
+
+ const search = (query: string) => sdk.find.files({ query: { query } }).then((x) => x.data!)
+
+ const bus = useEvent()
+ bus.listen((event) => {
+ switch (event.type) {
+ case "message.part.updated":
+ const part = event.properties.part
+ if (part.type === "tool" && part.state.status === "completed") {
+ switch (part.tool) {
+ case "read":
+ break
+ case "edit":
+ // load(part.state.input["filePath"] as string)
+ break
+ default:
+ break
+ }
+ }
+ break
+ case "file.watcher.updated":
+ setTimeout(sync.load.changes, 1000)
+ const relativePath = relative(event.properties.file)
+ if (relativePath.startsWith(".git/")) return
+ load(relativePath)
+ break
+ }
+ })
+
+ return {
+ active,
+ opened,
+ node: (path: string) => store.node[path],
+ update: (path: string, node: LocalFile) => setStore("node", path, reconcile(node)),
+ open,
+ load,
+ close(path: string) {
+ setStore("opened", (opened) => opened.filter((x) => x !== path))
+ if (store.active === path) {
+ const index = store.opened.findIndex((f) => f === path)
+ const previous = store.opened[Math.max(0, index - 1)]
+ setStore("active", previous)
+ }
+ resetNode(path)
+ },
+ expand(path: string) {
+ setStore("node", path, "expanded", true)
+ if (store.node[path].loaded) return
+ setStore("node", path, "loaded", true)
+ list(path)
+ },
+ collapse(path: string) {
+ setStore("node", path, "expanded", false)
+ },
+ select(path: string, selection: TextSelection | undefined) {
+ setStore("node", path, "selection", selection)
+ },
+ scroll(path: string, scrollTop: number) {
+ setStore("node", path, "scrollTop", scrollTop)
+ },
+ move(path: string, to: number) {
+ const index = store.opened.findIndex((f) => f === path)
+ if (index === -1) return
+ setStore(
+ "opened",
+ produce((opened) => {
+ opened.splice(to, 0, opened.splice(index, 1)[0])
+ }),
+ )
+ setStore("node", path, "pinned", true)
+ },
+ view(path: string): View {
+ const n = store.node[path]
+ return n && n.view ? n.view : "raw"
+ },
+ setView(path: string, view: View) {
+ setStore("node", path, "view", view)
+ },
+ unfold(path: string, key: string) {
+ setStore("node", path, "folded", (xs) => {
+ const a = xs ?? []
+ if (a.includes(key)) return a
+ return [...a, key]
+ })
+ },
+ fold(path: string, key: string) {
+ setStore("node", path, "folded", (xs) => (xs ?? []).filter((k) => k !== key))
+ },
+ folded(path: string) {
+ const n = store.node[path]
+ return n && n.folded ? n.folded : []
+ },
+ changeIndex(path: string) {
+ return store.node[path]?.selectedChange
+ },
+ setChangeIndex(path: string, index: number | undefined) {
+ setStore("node", path, "selectedChange", index)
+ },
+ changes,
+ changed,
+ children(path: string) {
+ return Object.values(store.node).filter(
+ (x) =>
+ x.path.startsWith(path) &&
+ x.path !== path &&
+ !x.path.replace(new RegExp(`^${path + "/"}`), "").includes("/"),
+ )
+ },
+ search,
+ relative,
+ }
+ })()
+
+ const layout = (() => {
+ type PaneState = { size: number; visible: boolean }
+ type LayoutState = { panes: Record; order: string[] }
+ type PaneDefault = number | { size: number; visible?: boolean }
+
+ const [store, setStore] = createStore>({})
+
+ const raw = localStorage.getItem("layout")
+ if (raw) {
+ const data = JSON.parse(raw)
+ if (data && typeof data === "object" && !Array.isArray(data)) {
+ const first = Object.values(data)[0] as LayoutState
+ if (first && typeof first === "object" && "panes" in first) {
+ setStore(() => data as Record)
+ }
+ }
+ }
+
+ createEffect(() => {
+ localStorage.setItem("layout", JSON.stringify(store))
+ })
+
+ const normalize = (value: PaneDefault): PaneState => {
+ if (typeof value === "number") return { size: value, visible: true }
+ return { size: value.size, visible: value.visible ?? true }
+ }
+
+ const ensure = (id: string, defaults: Record) => {
+ const entries = Object.entries(defaults)
+ if (!entries.length) return
+ setStore(id, (current) => {
+ if (current) return current
+ return {
+ panes: Object.fromEntries(entries.map(([pane, config]) => [pane, normalize(config)])),
+ order: entries.map(([pane]) => pane),
+ }
+ })
+ for (const [pane, config] of entries) {
+ if (!store[id]?.panes[pane]) {
+ setStore(id, "panes", pane, () => normalize(config))
+ }
+ if (!(store[id]?.order ?? []).includes(pane)) {
+ setStore(id, "order", (list) => [...list, pane])
+ }
+ }
+ }
+
+ const ensurePane = (id: string, pane: string, fallback?: PaneDefault) => {
+ if (!store[id]) {
+ const value = normalize(fallback ?? { size: 0, visible: true })
+ setStore(id, () => ({
+ panes: { [pane]: value },
+ order: [pane],
+ }))
+ return
+ }
+ if (!store[id].panes[pane]) {
+ const value = normalize(fallback ?? { size: 0, visible: true })
+ setStore(id, "panes", pane, () => value)
+ }
+ if (!store[id].order.includes(pane)) {
+ setStore(id, "order", (list) => [...list, pane])
+ }
+ }
+
+ const size = (id: string, pane: string) => store[id]?.panes[pane]?.size ?? 0
+ const visible = (id: string, pane: string) => store[id]?.panes[pane]?.visible ?? false
+
+ const setSize = (id: string, pane: string, value: number) => {
+ if (!store[id]?.panes[pane]) return
+ const next = Number.isFinite(value) ? Math.max(0, Math.min(100, value)) : 0
+ setStore(id, "panes", pane, "size", next)
+ }
+
+ const setVisible = (id: string, pane: string, value: boolean) => {
+ if (!store[id]?.panes[pane]) return
+ setStore(id, "panes", pane, "visible", value)
+ }
+
+ const toggle = (id: string, pane: string) => {
+ setVisible(id, pane, !visible(id, pane))
+ }
+
+ const show = (id: string, pane: string) => setVisible(id, pane, true)
+ const hide = (id: string, pane: string) => setVisible(id, pane, false)
+ const order = (id: string) => store[id]?.order ?? []
+
+ return {
+ ensure,
+ ensurePane,
+ size,
+ visible,
+ setSize,
+ setVisible,
+ toggle,
+ show,
+ hide,
+ order,
+ }
+ })()
+
+ const session = (() => {
+ const [store, setStore] = createStore<{
+ active?: string
+ }>({})
+
+ const active = createMemo(() => {
+ if (!store.active) return undefined
+ return sync.session.get(store.active)
+ })
+
+ return {
+ active,
+ setActive(sessionId: string | undefined) {
+ setStore("active", sessionId)
+ },
+ clearActive() {
+ setStore("active", undefined)
+ },
+ }
+ })()
+
+ const context = (() => {
+ const [store, setStore] = createStore<{
+ activeTab: boolean
+ items: (ContextItem & { key: string })[]
+ }>({
+ activeTab: true,
+ items: [],
+ })
+
+ return {
+ all() {
+ return store.items
+ },
+ active() {
+ return store.activeTab ? file.active() : undefined
+ },
+ addActive() {
+ setStore("activeTab", true)
+ },
+ removeActive() {
+ setStore("activeTab", false)
+ },
+ add(item: ContextItem) {
+ let key = item.type
+ switch (item.type) {
+ case "file":
+ key += `${item.path}:${item.selection?.startLine}:${item.selection?.endLine}`
+ break
+ }
+ if (store.items.find((x) => x.key === key)) return
+ setStore("items", (x) => [...x, { key, ...item }])
+ },
+ remove(key: string) {
+ setStore("items", (x) => x.filter((x) => x.key !== key))
+ },
+ }
+ })()
+
+ const result = {
+ model,
+ agent,
+ file,
+ layout,
+ session,
+ context,
+ }
+ return result
+}
+
+type LocalContext = ReturnType
+
+const ctx = createContext()
+
+export function LocalProvider(props: ParentProps) {
+ const value = init()
+ return {props.children}
+}
+
+export function useLocal() {
+ const value = useContext(ctx)
+ if (!value) {
+ throw new Error("useLocal must be used within a LocalProvider")
+ }
+ return value
+}
diff --git a/packages/desktop/src/context/marked.tsx b/packages/desktop/src/context/marked.tsx
new file mode 100644
index 000000000..550a0456a
--- /dev/null
+++ b/packages/desktop/src/context/marked.tsx
@@ -0,0 +1,43 @@
+import { createContext, useContext, type ParentProps } from "solid-js"
+import { useShiki } from "@/context"
+import { marked } from "marked"
+import markedShiki from "marked-shiki"
+import { bundledLanguages, type BundledLanguage } from "shiki"
+
+function init(highlighter: ReturnType) {
+ return marked.use(
+ markedShiki({
+ async highlight(code, lang) {
+ if (!(lang in bundledLanguages)) {
+ lang = "text"
+ }
+ if (!highlighter.getLoadedLanguages().includes(lang)) {
+ await highlighter.loadLanguage(lang as BundledLanguage)
+ }
+ return highlighter.codeToHtml(code, {
+ lang: lang || "text",
+ theme: "opencode",
+ tabindex: false,
+ })
+ },
+ }),
+ )
+}
+
+type MarkedContext = ReturnType
+
+const ctx = createContext()
+
+export function MarkedProvider(props: ParentProps) {
+ const highlighter = useShiki()
+ const value = init(highlighter)
+ return {props.children}
+}
+
+export function useMarked() {
+ const value = useContext(ctx)
+ if (!value) {
+ throw new Error("useMarked must be used within a MarkedProvider")
+ }
+ return value
+}
diff --git a/packages/desktop/src/context/sdk.tsx b/packages/desktop/src/context/sdk.tsx
new file mode 100644
index 000000000..48595cf9d
--- /dev/null
+++ b/packages/desktop/src/context/sdk.tsx
@@ -0,0 +1,29 @@
+import { createContext, useContext, type ParentProps } from "solid-js"
+import { createOpencodeClient } from "@opencode-ai/sdk/client"
+
+const host = import.meta.env.VITE_OPENCODE_SERVER_HOST ?? "127.0.0.1"
+const port = import.meta.env.VITE_OPENCODE_SERVER_PORT ?? "4096"
+
+function init() {
+ const client = createOpencodeClient({
+ baseUrl: `http://${host}:${port}`,
+ })
+ return client
+}
+
+type SDKContext = ReturnType
+
+const ctx = createContext()
+
+export function SDKProvider(props: ParentProps) {
+ const value = init()
+ return {props.children}
+}
+
+export function useSDK() {
+ const value = useContext(ctx)
+ if (!value) {
+ throw new Error("useSDK must be used within a SDKProvider")
+ }
+ return value
+}
diff --git a/packages/desktop/src/context/shiki.tsx b/packages/desktop/src/context/shiki.tsx
new file mode 100644
index 000000000..1930b907c
--- /dev/null
+++ b/packages/desktop/src/context/shiki.tsx
@@ -0,0 +1,582 @@
+import { createHighlighter, type ThemeInput } from "shiki"
+import { createContext, useContext, type ParentProps } from "solid-js"
+
+const theme: ThemeInput = {
+ colors: {
+ "actionBar.toggledBackground": "var(--theme-background-element)",
+ "activityBarBadge.background": "var(--theme-accent)",
+ "checkbox.border": "var(--theme-border)",
+ "editor.background": "transparent",
+ "editor.foreground": "var(--theme-text)",
+ "editor.inactiveSelectionBackground": "var(--theme-background-element)",
+ "editor.selectionHighlightBackground": "var(--theme-border-active)",
+ "editorIndentGuide.activeBackground1": "var(--theme-border-subtle)",
+ "editorIndentGuide.background1": "var(--theme-border-subtle)",
+ "input.placeholderForeground": "var(--theme-text-muted)",
+ "list.activeSelectionIconForeground": "var(--theme-text)",
+ "list.dropBackground": "var(--theme-background-element)",
+ "menu.background": "var(--theme-background-panel)",
+ "menu.border": "var(--theme-border)",
+ "menu.foreground": "var(--theme-text)",
+ "menu.selectionBackground": "var(--theme-primary)",
+ "menu.separatorBackground": "var(--theme-border)",
+ "ports.iconRunningProcessForeground": "var(--theme-success)",
+ "sideBarSectionHeader.background": "transparent",
+ "sideBarSectionHeader.border": "var(--theme-border-subtle)",
+ "sideBarTitle.foreground": "var(--theme-text-muted)",
+ "statusBarItem.remoteBackground": "var(--theme-success)",
+ "statusBarItem.remoteForeground": "var(--theme-text)",
+ "tab.lastPinnedBorder": "var(--theme-border-subtle)",
+ "tab.selectedBackground": "var(--theme-background-element)",
+ "tab.selectedForeground": "var(--theme-text-muted)",
+ "terminal.inactiveSelectionBackground": "var(--theme-background-element)",
+ "widget.border": "var(--theme-border)",
+ },
+ displayName: "opencode",
+ name: "opencode",
+ semanticHighlighting: true,
+ semanticTokenColors: {
+ customLiteral: "var(--theme-syntax-function)",
+ newOperator: "var(--theme-syntax-operator)",
+ numberLiteral: "var(--theme-syntax-number)",
+ stringLiteral: "var(--theme-syntax-string)",
+ },
+ tokenColors: [
+ {
+ scope: [
+ "meta.embedded",
+ "source.groovy.embedded",
+ "string meta.image.inline.markdown",
+ "variable.legacy.builtin.python",
+ ],
+ settings: {
+ foreground: "var(--theme-text)",
+ },
+ },
+ {
+ scope: "emphasis",
+ settings: {
+ fontStyle: "italic",
+ },
+ },
+ {
+ scope: "strong",
+ settings: {
+ fontStyle: "bold",
+ },
+ },
+ {
+ scope: "header",
+ settings: {
+ foreground: "var(--theme-markdown-heading)",
+ },
+ },
+ {
+ scope: "comment",
+ settings: {
+ foreground: "var(--theme-syntax-comment)",
+ },
+ },
+ {
+ scope: "constant.language",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: [
+ "constant.numeric",
+ "variable.other.enummember",
+ "keyword.operator.plus.exponent",
+ "keyword.operator.minus.exponent",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-number)",
+ },
+ },
+ {
+ scope: "constant.regexp",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "entity.name.tag",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: ["entity.name.tag.css", "entity.name.tag.less"],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "entity.other.attribute-name",
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: [
+ "entity.other.attribute-name.class.css",
+ "source.css entity.other.attribute-name.class",
+ "entity.other.attribute-name.id.css",
+ "entity.other.attribute-name.parent-selector.css",
+ "entity.other.attribute-name.parent.less",
+ "source.css entity.other.attribute-name.pseudo-class",
+ "entity.other.attribute-name.pseudo-element.css",
+ "source.css.less entity.other.attribute-name.id",
+ "entity.other.attribute-name.scss",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "invalid",
+ settings: {
+ foreground: "var(--theme-error)",
+ },
+ },
+ {
+ scope: "markup.underline",
+ settings: {
+ fontStyle: "underline",
+ },
+ },
+ {
+ scope: "markup.bold",
+ settings: {
+ fontStyle: "bold",
+ foreground: "var(--theme-markdown-strong)",
+ },
+ },
+ {
+ scope: "markup.heading",
+ settings: {
+ fontStyle: "bold",
+ foreground: "var(--theme-markdown-heading)",
+ },
+ },
+ {
+ scope: "markup.italic",
+ settings: {
+ fontStyle: "italic",
+ },
+ },
+ {
+ scope: "markup.strikethrough",
+ settings: {
+ fontStyle: "strikethrough",
+ },
+ },
+ {
+ scope: "markup.inserted",
+ settings: {
+ foreground: "var(--theme-diff-added)",
+ },
+ },
+ {
+ scope: "markup.deleted",
+ settings: {
+ foreground: "var(--theme-diff-removed)",
+ },
+ },
+ {
+ scope: "markup.changed",
+ settings: {
+ foreground: "var(--theme-diff-context)",
+ },
+ },
+ {
+ scope: "punctuation.definition.quote.begin.markdown",
+ settings: {
+ foreground: "var(--theme-markdown-block-quote)",
+ },
+ },
+ {
+ scope: "punctuation.definition.list.begin.markdown",
+ settings: {
+ foreground: "var(--theme-markdown-list-enumeration)",
+ },
+ },
+ {
+ scope: "markup.inline.raw",
+ settings: {
+ foreground: "var(--theme-markdown-code)",
+ },
+ },
+ {
+ scope: "punctuation.definition.tag",
+ settings: {
+ foreground: "var(--theme-syntax-punctuation)",
+ },
+ },
+ {
+ scope: ["meta.preprocessor", "entity.name.function.preprocessor"],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "meta.preprocessor.string",
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: "meta.preprocessor.numeric",
+ settings: {
+ foreground: "var(--theme-syntax-number)",
+ },
+ },
+ {
+ scope: "meta.structure.dictionary.key.python",
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: "meta.diff.header",
+ settings: {
+ foreground: "var(--theme-diff-hunk-header)",
+ },
+ },
+ {
+ scope: "storage",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "storage.type",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: ["storage.modifier", "keyword.operator.noexcept"],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: ["string", "meta.embedded.assembly"],
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: "string.tag",
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: "string.value",
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: "string.regexp",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: [
+ "punctuation.definition.template-expression.begin",
+ "punctuation.definition.template-expression.end",
+ "punctuation.section.embedded",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: ["meta.template.expression"],
+ settings: {
+ foreground: "var(--theme-text)",
+ },
+ },
+ {
+ scope: [
+ "support.type.vendored.property-name",
+ "support.type.property-name",
+ "source.css variable",
+ "source.coffee.embedded",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: "keyword",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "keyword.control",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "keyword.operator",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: [
+ "keyword.operator.new",
+ "keyword.operator.expression",
+ "keyword.operator.cast",
+ "keyword.operator.sizeof",
+ "keyword.operator.alignof",
+ "keyword.operator.typeid",
+ "keyword.operator.alignas",
+ "keyword.operator.instanceof",
+ "keyword.operator.logical.python",
+ "keyword.operator.wordlike",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "keyword.other.unit",
+ settings: {
+ foreground: "var(--theme-syntax-number)",
+ },
+ },
+ {
+ scope: ["punctuation.section.embedded.begin.php", "punctuation.section.embedded.end.php"],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "support.function.git-rebase",
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: "constant.sha.git-rebase",
+ settings: {
+ foreground: "var(--theme-syntax-number)",
+ },
+ },
+ {
+ scope: ["storage.modifier.import.java", "variable.language.wildcard.java", "storage.modifier.package.java"],
+ settings: {
+ foreground: "var(--theme-text)",
+ },
+ },
+ {
+ scope: "variable.language",
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: [
+ "entity.name.function",
+ "support.function",
+ "support.constant.handlebars",
+ "source.powershell variable.other.member",
+ "entity.name.operator.custom-literal",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-function)",
+ },
+ },
+ {
+ scope: [
+ "support.class",
+ "support.type",
+ "entity.name.type",
+ "entity.name.namespace",
+ "entity.other.attribute",
+ "entity.name.scope-resolution",
+ "entity.name.class",
+ "storage.type.numeric.go",
+ "storage.type.byte.go",
+ "storage.type.boolean.go",
+ "storage.type.string.go",
+ "storage.type.uintptr.go",
+ "storage.type.error.go",
+ "storage.type.rune.go",
+ "storage.type.cs",
+ "storage.type.generic.cs",
+ "storage.type.modifier.cs",
+ "storage.type.variable.cs",
+ "storage.type.annotation.java",
+ "storage.type.generic.java",
+ "storage.type.java",
+ "storage.type.object.array.java",
+ "storage.type.primitive.array.java",
+ "storage.type.primitive.java",
+ "storage.type.token.java",
+ "storage.type.groovy",
+ "storage.type.annotation.groovy",
+ "storage.type.parameters.groovy",
+ "storage.type.generic.groovy",
+ "storage.type.object.array.groovy",
+ "storage.type.primitive.array.groovy",
+ "storage.type.primitive.groovy",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-type)",
+ },
+ },
+ {
+ scope: [
+ "meta.type.cast.expr",
+ "meta.type.new.expr",
+ "support.constant.math",
+ "support.constant.dom",
+ "support.constant.json",
+ "entity.other.inherited-class",
+ "punctuation.separator.namespace.ruby",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-type)",
+ },
+ },
+ {
+ scope: [
+ "keyword.control",
+ "source.cpp keyword.operator.new",
+ "keyword.operator.delete",
+ "keyword.other.using",
+ "keyword.other.directive.using",
+ "keyword.other.operator",
+ "entity.name.operator",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: [
+ "variable",
+ "meta.definition.variable.name",
+ "support.variable",
+ "entity.name.variable",
+ "constant.other.placeholder",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: ["variable.other.constant", "variable.other.enummember"],
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: ["meta.object-literal.key"],
+ settings: {
+ foreground: "var(--theme-syntax-variable)",
+ },
+ },
+ {
+ scope: [
+ "support.constant.property-value",
+ "support.constant.font-name",
+ "support.constant.media-type",
+ "support.constant.media",
+ "constant.other.color.rgb-value",
+ "constant.other.rgb-value",
+ "support.constant.color",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: [
+ "punctuation.definition.group.regexp",
+ "punctuation.definition.group.assertion.regexp",
+ "punctuation.definition.character-class.regexp",
+ "punctuation.character.set.begin.regexp",
+ "punctuation.character.set.end.regexp",
+ "keyword.operator.negation.regexp",
+ "support.other.parenthesis.regexp",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-string)",
+ },
+ },
+ {
+ scope: [
+ "constant.character.character-class.regexp",
+ "constant.other.character-class.set.regexp",
+ "constant.other.character-class.regexp",
+ "constant.character.set.regexp",
+ ],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: ["keyword.operator.or.regexp", "keyword.control.anchor.regexp"],
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "keyword.operator.quantifier.regexp",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: ["constant.character", "constant.other.option"],
+ settings: {
+ foreground: "var(--theme-syntax-keyword)",
+ },
+ },
+ {
+ scope: "constant.character.escape",
+ settings: {
+ foreground: "var(--theme-syntax-operator)",
+ },
+ },
+ {
+ scope: "entity.name.label",
+ settings: {
+ foreground: "var(--theme-text-muted)",
+ },
+ },
+ ],
+ type: "dark",
+}
+
+const highlighter = await createHighlighter({
+ themes: [theme],
+ langs: [],
+})
+
+type ShikiContext = typeof highlighter
+
+const ctx = createContext()
+
+export function ShikiProvider(props: ParentProps) {
+ return {props.children}
+}
+
+export function useShiki() {
+ const value = useContext(ctx)
+ if (!value) {
+ throw new Error("useShiki must be used within a ShikiProvider")
+ }
+ return value
+}
diff --git a/packages/desktop/src/context/sync.tsx b/packages/desktop/src/context/sync.tsx
new file mode 100644
index 000000000..5d64f3ee7
--- /dev/null
+++ b/packages/desktop/src/context/sync.tsx
@@ -0,0 +1,174 @@
+import type { Message, Agent, Provider, Session, Part, Config, Path, File, FileNode } from "@opencode-ai/sdk"
+import { createStore, produce, reconcile } from "solid-js/store"
+import { createContext, createMemo, Show, useContext, type ParentProps } from "solid-js"
+import { useSDK, useEvent } from "@/context"
+import { Binary } from "@/utils/binary"
+
+function init() {
+ const [store, setStore] = createStore<{
+ ready: boolean
+ provider: Provider[]
+ agent: Agent[]
+ config: Config
+ path: Path
+ session: Session[]
+ message: {
+ [sessionID: string]: Message[]
+ }
+ part: {
+ [messageID: string]: Part[]
+ }
+ node: FileNode[]
+ changes: File[]
+ }>({
+ config: {},
+ path: { state: "", config: "", worktree: "", directory: "" },
+ ready: false,
+ agent: [],
+ provider: [],
+ session: [],
+ message: {},
+ part: {},
+ node: [],
+ changes: [],
+ })
+
+ const bus = useEvent()
+ bus.listen((event) => {
+ switch (event.type) {
+ case "session.updated": {
+ const result = Binary.search(store.session, event.properties.info.id, (s) => s.id)
+ if (result.found) {
+ setStore("session", result.index, reconcile(event.properties.info))
+ break
+ }
+ setStore(
+ "session",
+ produce((draft) => {
+ draft.splice(result.index, 0, event.properties.info)
+ }),
+ )
+ break
+ }
+ case "message.updated": {
+ const messages = store.message[event.properties.info.sessionID]
+ if (!messages) {
+ setStore("message", event.properties.info.sessionID, [event.properties.info])
+ break
+ }
+ const result = Binary.search(messages, event.properties.info.id, (m) => m.id)
+ if (result.found) {
+ setStore("message", event.properties.info.sessionID, result.index, reconcile(event.properties.info))
+ break
+ }
+ setStore(
+ "message",
+ event.properties.info.sessionID,
+ produce((draft) => {
+ draft.splice(result.index, 0, event.properties.info)
+ }),
+ )
+ break
+ }
+ case "message.part.updated": {
+ const parts = store.part[event.properties.part.messageID]
+ if (!parts) {
+ setStore("part", event.properties.part.messageID, [event.properties.part])
+ break
+ }
+ const result = Binary.search(parts, event.properties.part.id, (p) => p.id)
+ if (result.found) {
+ setStore("part", event.properties.part.messageID, result.index, reconcile(event.properties.part))
+ break
+ }
+ setStore(
+ "part",
+ event.properties.part.messageID,
+ produce((draft) => {
+ draft.splice(result.index, 0, event.properties.part)
+ }),
+ )
+ break
+ }
+ }
+ })
+
+ const sdk = useSDK()
+
+ const load = {
+ provider: () => sdk.config.providers().then((x) => setStore("provider", x.data!.providers)),
+ path: () => sdk.path.get().then((x) => setStore("path", x.data!)),
+ agent: () => sdk.app.agents().then((x) => setStore("agent", x.data ?? [])),
+ session: () =>
+ sdk.session.list().then((x) =>
+ setStore(
+ "session",
+ (x.data ?? []).slice().sort((a, b) => a.id.localeCompare(b.id)),
+ ),
+ ),
+ config: () => sdk.config.get().then((x) => setStore("config", x.data!)),
+ changes: () => sdk.file.status().then((x) => setStore("changes", x.data!)),
+ node: () => sdk.file.list({ query: { path: "/" } }).then((x) => setStore("node", x.data!)),
+ }
+
+ Promise.all(Object.values(load).map((p) => p())).then(() => setStore("ready", true))
+
+ const sanitizer = createMemo(() => new RegExp(`${store.path.directory}/`, "g"))
+ const sanitize = (text: string) => text.replace(sanitizer(), "")
+ const absolute = (path: string) => (store.path.directory + "/" + path).replace("//", "/")
+
+ return {
+ data: store,
+ set: setStore,
+ session: {
+ get(sessionID: string) {
+ const match = Binary.search(store.session, sessionID, (s) => s.id)
+ if (match.found) return store.session[match.index]
+ return undefined
+ },
+ async sync(sessionID: string) {
+ const [session, messages] = await Promise.all([
+ sdk.session.get({ path: { id: sessionID } }),
+ sdk.session.messages({ path: { id: sessionID } }),
+ ])
+ setStore(
+ produce((draft) => {
+ const match = Binary.search(draft.session, sessionID, (s) => s.id)
+ draft.session[match.index] = session.data!
+ draft.message[sessionID] = messages
+ .data!.map((x) => x.info)
+ .slice()
+ .sort((a, b) => a.id.localeCompare(b.id))
+ for (const message of messages.data!) {
+ draft.part[message.info.id] = message.parts.slice().sort((a, b) => a.id.localeCompare(b.id))
+ }
+ }),
+ )
+ },
+ },
+ load,
+ absolute,
+ sanitize,
+ }
+}
+
+type SyncContext = ReturnType
+
+const ctx = createContext()
+
+export function SyncProvider(props: ParentProps) {
+ const value = init()
+ return (
+
+ {props.children}
+
+ )
+}
+
+export function useSync() {
+ const value = useContext(ctx)
+ if (!value) {
+ throw new Error("useSync must be used within a SyncProvider")
+ }
+ return value
+}
diff --git a/packages/desktop/src/context/theme.tsx b/packages/desktop/src/context/theme.tsx
new file mode 100644
index 000000000..0b344ea97
--- /dev/null
+++ b/packages/desktop/src/context/theme.tsx
@@ -0,0 +1,92 @@
+import {
+ createContext,
+ useContext,
+ createSignal,
+ createEffect,
+ onMount,
+ type ParentComponent,
+ onCleanup,
+} from "solid-js"
+
+export interface ThemeContextValue {
+ theme: string | undefined
+ isDark: boolean
+ setTheme: (themeName: string) => void
+ setDarkMode: (isDark: boolean) => void
+}
+
+const ThemeContext = createContext()
+
+export const useTheme = () => {
+ const context = useContext(ThemeContext)
+ if (!context) {
+ throw new Error("useTheme must be used within a ThemeProvider")
+ }
+ return context
+}
+
+interface ThemeProviderProps {
+ defaultTheme?: string
+ defaultDarkMode?: boolean
+}
+
+const themes = ["opencode", "tokyonight", "ayu", "nord", "catppuccin"]
+
+export const ThemeProvider: ParentComponent = (props) => {
+ const [theme, setThemeSignal] = createSignal()
+ const [isDark, setIsDark] = createSignal(props.defaultDarkMode ?? false)
+
+ const handleKeyDown = (event: KeyboardEvent) => {
+ if (event.key === "t" && event.ctrlKey) {
+ event.preventDefault()
+ const current = theme()
+ if (!current) return
+ const index = themes.indexOf(current)
+ const next = themes[(index + 1) % themes.length]
+ setTheme(next)
+ }
+ }
+
+ onMount(() => {
+ window.addEventListener("keydown", handleKeyDown)
+ })
+
+ onCleanup(() => {
+ window.removeEventListener("keydown", handleKeyDown)
+ })
+
+ onMount(() => {
+ const savedTheme = localStorage.getItem("theme") ?? "opencode"
+ const savedDarkMode = localStorage.getItem("darkMode") ?? "true"
+ setIsDark(savedDarkMode === "true")
+ setTheme(savedTheme)
+ })
+
+ createEffect(() => {
+ const currentTheme = theme()
+ const darkMode = isDark()
+ if (currentTheme) {
+ document.documentElement.setAttribute("data-theme", currentTheme)
+ document.documentElement.setAttribute("data-dark", darkMode.toString())
+ }
+ })
+
+ const setTheme = async (theme: string) => {
+ setThemeSignal(theme)
+ localStorage.setItem("theme", theme)
+ }
+
+ const setDarkMode = (dark: boolean) => {
+ setIsDark(dark)
+ localStorage.setItem("darkMode", dark.toString())
+ }
+
+ const contextValue: ThemeContextValue = {
+ theme: theme(),
+ isDark: isDark(),
+ setTheme,
+ setDarkMode,
+ }
+
+ return {props.children}
+}
diff --git a/packages/desktop/src/env.d.ts b/packages/desktop/src/env.d.ts
new file mode 100644
index 000000000..ad575e93b
--- /dev/null
+++ b/packages/desktop/src/env.d.ts
@@ -0,0 +1,8 @@
+interface ImportMetaEnv {
+ readonly VITE_OPENCODE_SERVER_HOST: string
+ readonly VITE_OPENCODE_SERVER_PORT: string
+}
+
+interface ImportMeta {
+ readonly env: ImportMetaEnv
+}
diff --git a/packages/desktop/src/index.css b/packages/desktop/src/index.css
new file mode 100644
index 000000000..cac2e91a6
--- /dev/null
+++ b/packages/desktop/src/index.css
@@ -0,0 +1,168 @@
+@import "tailwindcss";
+
+:root {
+ interpolate-size: allow-keywords;
+}
+
+@layer components {
+ [data-popper-positioner] {
+ pointer-events: none;
+ }
+
+ body {
+ line-height: 1;
+ }
+
+ ::selection {
+ background-color: color-mix(in srgb, var(--color-primary) 33%, transparent);
+ /* background-color: var(--color-primary); */
+ /* color: var(--color-background); */
+ }
+
+ ::-webkit-scrollbar-track {
+ background: var(--theme-background-panel);
+ }
+
+ ::-webkit-scrollbar-thumb {
+ background-color: var(--theme-border-subtle);
+ border-radius: 6px;
+ }
+
+ * {
+ scrollbar-color: var(--theme-border-subtle) var(--theme-background-panel);
+ }
+
+ .prose h1 {
+ color: var(--color-text);
+ font-size: var(--text-sm);
+ line-height: var(--text-sm--line-height);
+ margin-bottom: calc(var(--spacing) * 3);
+ }
+ .prose h2 {
+ color: var(--color-text);
+ font-size: var(--text-sm);
+ line-height: var(--text-sm--line-height);
+ margin-bottom: calc(var(--spacing) * 3);
+ }
+ .prose h3 {
+ color: var(--color-text);
+ font-size: var(--text-xs);
+ line-height: var(--text-xs--line-height);
+ margin-bottom: calc(var(--spacing) * 2);
+ }
+ .prose h4 {
+ color: var(--color-text);
+ font-size: var(--text-xs);
+ line-height: var(--text-xs--line-height);
+ margin-bottom: calc(var(--spacing) * 2);
+ }
+ .prose h5 {
+ color: var(--color-text);
+ font-size: var(--text-xs);
+ line-height: var(--text-xs--line-height);
+ margin-bottom: calc(var(--spacing) * 2);
+ }
+ .prose h6 {
+ color: var(--color-text);
+ font-size: var(--text-xs);
+ line-height: var(--text-xs--line-height);
+ margin-bottom: calc(var(--spacing) * 2);
+ }
+ .prose p {
+ font-size: var(--text-xs);
+ line-height: var(--text-xs--line-height);
+ margin-bottom: calc(var(--spacing) * 2);
+ }
+ .prose strong {
+ color: var(--color-text);
+ }
+ .prose ul,
+ ol {
+ list-style-type: disc;
+ list-style-position: inside;
+ margin-bottom: calc(var(--spacing) * 2);
+ }
+ .prose pre {
+ background-color: var(--color-background-panel);
+ padding: calc(var(--spacing) * 2);
+ border-radius: var(--radius-md);
+ border: 1px solid var(--color-border-subtle);
+ overflow-x: auto;
+ white-space: pre;
+ margin-bottom: calc(var(--spacing) * 2);
+ @apply no-scrollbar;
+ }
+ .prose code {
+ font-family: var(--font-mono);
+ font-size: var(--text-xs);
+ line-height: var(--text-xs--line-height);
+ }
+ .prose blockquote {
+ margin-bottom: calc(var(--spacing) * 2);
+ }
+}
+
+@utility no-scrollbar {
+ &::-webkit-scrollbar {
+ display: none;
+ }
+ /* Hide scrollbar for IE, Edge and Firefox */
+ & {
+ -ms-overflow-style: none; /* IE and Edge */
+ scrollbar-width: none; /* Firefox */
+ }
+}
+
+@theme {
+ --color-*: initial;
+ --color-primary: var(--theme-primary);
+ --color-secondary: var(--theme-secondary);
+ --color-accent: var(--theme-accent);
+ --color-error: var(--theme-error);
+ --color-warning: var(--theme-warning);
+ --color-success: var(--theme-success);
+ --color-info: var(--theme-info);
+ --color-text: var(--theme-text);
+ --color-text-muted: var(--theme-text-muted);
+ --color-background: var(--theme-background);
+ --color-background-panel: var(--theme-background-panel);
+ --color-background-element: var(--theme-background-element);
+ --color-border: var(--theme-border);
+ --color-border-active: var(--theme-border-active);
+ --color-border-subtle: var(--theme-border-subtle);
+ --color-diff-added: var(--theme-diff-added);
+ --color-diff-removed: var(--theme-diff-removed);
+ --color-diff-context: var(--theme-diff-context);
+ --color-diff-hunk-header: var(--theme-diff-hunk-header);
+ --color-diff-highlight-added: var(--theme-diff-highlight-added);
+ --color-diff-highlight-removed: var(--theme-diff-highlight-removed);
+ --color-diff-added-bg: var(--theme-diff-added-bg);
+ --color-diff-removed-bg: var(--theme-diff-removed-bg);
+ --color-diff-context-bg: var(--theme-diff-context-bg);
+ --color-diff-line-number: var(--theme-diff-line-number);
+ --color-diff-added-line-number-bg: var(--theme-diff-added-line-number-bg);
+ --color-diff-removed-line-number-bg: var(--theme-diff-removed-line-number-bg);
+ --color-markdown-text: var(--theme-markdown-text);
+ --color-markdown-heading: var(--theme-markdown-heading);
+ --color-markdown-link: var(--theme-markdown-link);
+ --color-markdown-link-text: var(--theme-markdown-link-text);
+ --color-markdown-code: var(--theme-markdown-code);
+ --color-markdown-block-quote: var(--theme-markdown-block-quote);
+ --color-markdown-emph: var(--theme-markdown-emph);
+ --color-markdown-strong: var(--theme-markdown-strong);
+ --color-markdown-horizontal-rule: var(--theme-markdown-horizontal-rule);
+ --color-markdown-list-item: var(--theme-markdown-list-item);
+ --color-markdown-list-enumeration: var(--theme-markdown-list-enumeration);
+ --color-markdown-image: var(--theme-markdown-image);
+ --color-markdown-image-text: var(--theme-markdown-image-text);
+ --color-markdown-code-block: var(--theme-markdown-code-block);
+ --color-syntax-comment: var(--theme-syntax-comment);
+ --color-syntax-keyword: var(--theme-syntax-keyword);
+ --color-syntax-function: var(--theme-syntax-function);
+ --color-syntax-variable: var(--theme-syntax-variable);
+ --color-syntax-string: var(--theme-syntax-string);
+ --color-syntax-number: var(--theme-syntax-number);
+ --color-syntax-type: var(--theme-syntax-type);
+ --color-syntax-operator: var(--theme-syntax-operator);
+ --color-syntax-punctuation: var(--theme-syntax-punctuation);
+}
diff --git a/packages/desktop/src/index.tsx b/packages/desktop/src/index.tsx
new file mode 100644
index 000000000..66ed93d3a
--- /dev/null
+++ b/packages/desktop/src/index.tsx
@@ -0,0 +1,48 @@
+/* @refresh reload */
+import { render } from "solid-js/web"
+import { Router, Route } from "@solidjs/router"
+import "@/index.css"
+import Layout from "@/pages/layout"
+import Home from "@/pages"
+import {
+ EventProvider,
+ SDKProvider,
+ SyncProvider,
+ LocalProvider,
+ ThemeProvider,
+ ShikiProvider,
+ MarkedProvider,
+} from "@/context"
+
+const root = document.getElementById("root")
+
+if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
+ throw new Error(
+ "Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got misspelled?",
+ )
+}
+
+render(
+ () => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ root!,
+)
diff --git a/packages/desktop/src/pages/index.tsx b/packages/desktop/src/pages/index.tsx
new file mode 100644
index 000000000..128c6adfd
--- /dev/null
+++ b/packages/desktop/src/pages/index.tsx
@@ -0,0 +1,278 @@
+import { FileIcon, Icon, IconButton, Tooltip } from "@/ui"
+import { Tabs } from "@/ui/tabs"
+import FileTree from "@/components/file-tree"
+import EditorPane from "@/components/editor-pane"
+import { For, Match, onCleanup, onMount, Show, Switch } from "solid-js"
+import { SelectDialog } from "@/components/select-dialog"
+import { useLocal } from "@/context"
+import { ResizeableLayout, ResizeablePane } from "@/components/resizeable-pane"
+import type { LocalFile } from "@/context/local"
+import SessionList from "@/components/session-list"
+import SessionTimeline from "@/components/session-timeline"
+import { createStore } from "solid-js/store"
+import { getDirectory, getFilename } from "@/utils"
+
+export default function Page() {
+ const local = useLocal()
+ const [store, setStore] = createStore({
+ clickTimer: undefined as number | undefined,
+ modelSelectOpen: false,
+ fileSelectOpen: false,
+ })
+
+ const layoutKey = "workspace"
+ const timelinePane = "timeline"
+
+ let inputRef: HTMLTextAreaElement | undefined = undefined
+
+ const MOD = typeof navigator === "object" && /(Mac|iPod|iPhone|iPad)/.test(navigator.platform) ? "Meta" : "Control"
+
+ onMount(() => {
+ document.addEventListener("keydown", handleKeyDown)
+ })
+
+ onCleanup(() => {
+ document.removeEventListener("keydown", handleKeyDown)
+ })
+
+ const handleKeyDown = (event: KeyboardEvent) => {
+ if (event.getModifierState(MOD) && event.shiftKey && event.key.toLowerCase() === "p") {
+ event.preventDefault()
+ // TODO: command palette
+ return
+ }
+ if (event.getModifierState(MOD) && event.key.toLowerCase() === "p") {
+ event.preventDefault()
+ setStore("fileSelectOpen", true)
+ return
+ }
+
+ const focused = document.activeElement === inputRef
+ if (focused) {
+ if (event.key === "Escape") {
+ inputRef?.blur()
+ }
+ return
+ }
+
+ if (local.file.active()) {
+ const active = local.file.active()!
+ if (event.key === "Enter" && active.selection) {
+ local.context.add({
+ type: "file",
+ path: active.path,
+ selection: { ...active.selection },
+ })
+ return
+ }
+
+ if (event.getModifierState(MOD)) {
+ if (event.key.toLowerCase() === "a") {
+ return
+ }
+ if (event.key.toLowerCase() === "c") {
+ return
+ }
+ }
+ }
+
+ if (event.key.length === 1 && event.key !== "Unidentified") {
+ inputRef?.focus()
+ }
+ }
+
+ const resetClickTimer = () => {
+ if (!store.clickTimer) return
+ clearTimeout(store.clickTimer)
+ setStore("clickTimer", undefined)
+ }
+
+ const startClickTimer = () => {
+ const newClickTimer = setTimeout(() => {
+ setStore("clickTimer", undefined)
+ }, 300)
+ setStore("clickTimer", newClickTimer as unknown as number)
+ }
+
+ const handleFileClick = async (file: LocalFile) => {
+ if (store.clickTimer) {
+ resetClickTimer()
+ local.file.update(file.path, { ...file, pinned: true })
+ } else {
+ local.file.open(file.path)
+ startClickTimer()
+ }
+ }
+
+ return (
+
+
+
+
+
+
+
+ Files
+
+
+ Changes
+
+
+
+
+
+
+
+ No changes }
+ >
+
+
+ {(path) => (
+ -
+
+
+ )}
+
+
+
+
+
+
+
+ setStore("modelSelectOpen", true)}
+ onInputRefChange={(element: HTMLTextAreaElement | null) => {
+ inputRef = element ?? undefined
+ }}
+ />
+
+
+
+
}>
+ {(activeSession) => (
+
+
+
+ local.session.clearActive()}
+ class="text-text-muted hover:text-text"
+ >
+
+
+
+ {activeSession().title || "Untitled Session"}
+
+
+
+
+
+ )}
+
+
+
+
+
+ `${x.provider.id}:${x.id}`}
+ items={local.model.list()}
+ current={local.model.current()}
+ render={(i) => (
+
+
+

+
{i.name}
+
+ {i.id}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {new Intl.NumberFormat("en-US", {
+ notation: "compact",
+ compactDisplay: "short",
+ }).format(i.limit.context)}
+
+
+
+
+ 10}>$$$
+ 1}>$$
+ 0.1}>$
+
+
+
+
+
+ )}
+ filter={["provider.name", "name", "id"]}
+ groupBy={(x) => x.provider.name}
+ onClose={() => setStore("modelSelectOpen", false)}
+ onSelect={(x) => local.model.set(x ? { modelID: x.id, providerID: x.provider.id } : undefined)}
+ />
+
+
+ x}
+ render={(i) => (
+
+
+
+ {getFilename(i)}
+
+ {getDirectory(i)}
+
+
+
+
+ )}
+ onClose={() => setStore("fileSelectOpen", false)}
+ onSelect={(x) => (x ? local.file.open(x, { pinned: true }) : undefined)}
+ />
+
+
+ )
+}
diff --git a/packages/desktop/src/pages/layout.tsx b/packages/desktop/src/pages/layout.tsx
new file mode 100644
index 000000000..d2e33a2ca
--- /dev/null
+++ b/packages/desktop/src/pages/layout.tsx
@@ -0,0 +1,5 @@
+import { type ParentProps } from "solid-js"
+
+export default function Layout(props: ParentProps) {
+ return {props.children}
+}
diff --git a/packages/desktop/src/sst-env.d.ts b/packages/desktop/src/sst-env.d.ts
new file mode 100644
index 000000000..47a8fbec7
--- /dev/null
+++ b/packages/desktop/src/sst-env.d.ts
@@ -0,0 +1,10 @@
+/* This file is auto-generated by SST. Do not edit. */
+/* tslint:disable */
+/* eslint-disable */
+///
+interface ImportMetaEnv {
+
+}
+interface ImportMeta {
+ readonly env: ImportMetaEnv
+}
\ No newline at end of file
diff --git a/packages/desktop/src/ui/button.tsx b/packages/desktop/src/ui/button.tsx
new file mode 100644
index 000000000..21d89fbee
--- /dev/null
+++ b/packages/desktop/src/ui/button.tsx
@@ -0,0 +1,36 @@
+import { Button as Kobalte } from "@kobalte/core/button"
+import { type ComponentProps, splitProps } from "solid-js"
+
+export interface ButtonProps {
+ variant?: "primary" | "secondary" | "ghost"
+ size?: "sm" | "md" | "lg"
+}
+
+export function Button(props: ComponentProps<"button"> & ButtonProps) {
+ const [split, rest] = splitProps(props, ["variant", "size", "class", "classList"])
+ return (
+
+ {props.children}
+
+ )
+}
diff --git a/packages/desktop/src/ui/collapsible.tsx b/packages/desktop/src/ui/collapsible.tsx
new file mode 100644
index 000000000..e0202f617
--- /dev/null
+++ b/packages/desktop/src/ui/collapsible.tsx
@@ -0,0 +1,62 @@
+import { Collapsible as KobalteCollapsible } from "@kobalte/core/collapsible"
+import { splitProps } from "solid-js"
+import type { ComponentProps, ParentProps } from "solid-js"
+import { Icon, type IconProps } from "./icon"
+
+export interface CollapsibleProps extends ComponentProps {}
+export interface CollapsibleTriggerProps extends ComponentProps {}
+export interface CollapsibleContentProps extends ComponentProps {}
+
+function CollapsibleRoot(props: CollapsibleProps) {
+ return
+}
+
+function CollapsibleTrigger(props: CollapsibleTriggerProps) {
+ const [local, others] = splitProps(props, ["class"])
+ return (
+
+ )
+}
+
+function CollapsibleContent(props: ParentProps) {
+ const [local, others] = splitProps(props, ["class", "children"])
+ return (
+
+ {local.children}
+
+ )
+}
+
+function CollapsibleArrow(props: Partial) {
+ const [local, others] = splitProps(props, ["class", "name"])
+ return (
+
+ )
+}
+
+export const Collapsible = Object.assign(CollapsibleRoot, {
+ Trigger: CollapsibleTrigger,
+ Content: CollapsibleContent,
+ Arrow: CollapsibleArrow,
+})
diff --git a/packages/desktop/src/ui/file-icon.tsx b/packages/desktop/src/ui/file-icon.tsx
new file mode 100644
index 000000000..d31a741e0
--- /dev/null
+++ b/packages/desktop/src/ui/file-icon.tsx
@@ -0,0 +1,582 @@
+import type { Component, JSX } from "solid-js"
+import { createMemo, splitProps } from "solid-js"
+import sprite from "@/ui/file-icons/sprite.svg"
+import type { IconName } from "@/ui/file-icons/types"
+
+export type FileIconProps = JSX.GSVGAttributes & {
+ node: { path: string; type: "file" | "directory" }
+ expanded?: boolean
+}
+
+export const FileIcon: Component = (props) => {
+ const [local, rest] = splitProps(props, ["node", "class", "expanded"])
+ const name = createMemo(() => chooseIconName(local.node.path, local.node.type, local.expanded || false))
+ return (
+
+
+
+ )
+}
+
+type IconMaps = {
+ fileNames: Record
+ fileExtensions: Record
+ folderNames: Record
+ defaults: {
+ file: IconName
+ folder: IconName
+ folderOpen: IconName
+ }
+}
+
+const ICON_MAPS: IconMaps = {
+ fileNames: {
+ // Documentation files
+ "readme.md": "Readme",
+ "changelog.md": "Changelog",
+ "contributing.md": "Contributing",
+ "conduct.md": "Conduct",
+ license: "Certificate",
+ authors: "Authors",
+ credits: "Credits",
+ install: "Installation",
+
+ // Node.js files
+ "package.json": "Nodejs",
+ "package-lock.json": "Nodejs",
+ "yarn.lock": "Yarn",
+ "pnpm-lock.yaml": "Pnpm",
+ "bun.lock": "Bun",
+ "bun.lockb": "Bun",
+ "bunfig.toml": "Bun",
+ ".nvmrc": "Nodejs",
+ ".node-version": "Nodejs",
+
+ // Docker files
+ dockerfile: "Docker",
+ "docker-compose.yml": "Docker",
+ "docker-compose.yaml": "Docker",
+ ".dockerignore": "Docker",
+
+ // Config files
+ "jest.config.js": "Jest",
+ "jest.config.ts": "Jest",
+ "jest.config.mjs": "Jest",
+ "vitest.config.js": "Vitest",
+ "vitest.config.ts": "Vitest",
+ "tailwind.config.js": "Tailwindcss",
+ "tailwind.config.ts": "Tailwindcss",
+ "turbo.json": "Turborepo",
+ "tsconfig.json": "Tsconfig",
+ "jsconfig.json": "Jsconfig",
+ ".eslintrc": "Eslint",
+ ".eslintrc.js": "Eslint",
+ ".eslintrc.json": "Eslint",
+ ".prettierrc": "Prettier",
+ ".prettierrc.js": "Prettier",
+ ".prettierrc.json": "Prettier",
+ "vite.config.js": "Vite",
+ "vite.config.ts": "Vite",
+ "webpack.config.js": "Webpack",
+ "rollup.config.js": "Rollup",
+ "astro.config.mjs": "AstroConfig",
+ "astro.config.js": "AstroConfig",
+ "next.config.js": "Next",
+ "next.config.mjs": "Next",
+ "nuxt.config.js": "Nuxt",
+ "nuxt.config.ts": "Nuxt",
+ "svelte.config.js": "Svelte",
+ "gatsby-config.js": "Gatsby",
+ "remix.config.js": "Remix",
+ "prisma.schema": "Prisma",
+ ".gitignore": "Git",
+ ".gitattributes": "Git",
+ makefile: "Makefile",
+ cmake: "Cmake",
+ "cargo.toml": "Rust",
+ "go.mod": "GoMod",
+ "go.sum": "GoMod",
+ "requirements.txt": "Python",
+ "pyproject.toml": "Python",
+ pipfile: "Python",
+ "poetry.lock": "Poetry",
+ gemfile: "Gemfile",
+ rakefile: "Ruby",
+ "composer.json": "Php",
+ "build.gradle": "Gradle",
+ "pom.xml": "Maven",
+ "deno.json": "Deno",
+ "deno.jsonc": "Deno",
+ "vercel.json": "Vercel",
+ "netlify.toml": "Netlify",
+ ".env": "Tune",
+ ".env.local": "Tune",
+ ".env.development": "Tune",
+ ".env.production": "Tune",
+ ".env.example": "Tune",
+ ".editorconfig": "Editorconfig",
+ "robots.txt": "Robots",
+ "favicon.ico": "Favicon",
+ browserlist: "Browserlist",
+ ".babelrc": "Babel",
+ "babel.config.js": "Babel",
+ "gulpfile.js": "Gulp",
+ "gruntfile.js": "Grunt",
+ "capacitor.config.json": "Capacitor",
+ "ionic.config.json": "Ionic",
+ "angular.json": "Angular",
+ ".storybook": "Storybook",
+ "storybook.config.js": "Storybook",
+ "cypress.config.js": "Cypress",
+ "playwright.config.js": "Playwright",
+ "puppeteer.config.js": "Puppeteer",
+ "wrangler.toml": "Wrangler",
+ "firebase.json": "Firebase",
+ supabase: "Supabase",
+ terraform: "Terraform",
+ kubernetes: "Kubernetes",
+ ".gitpod.yml": "Gitpod",
+ ".devcontainer": "Vscode",
+ "travis.yml": "Travis",
+ "appveyor.yml": "Appveyor",
+ ".circleci": "Circleci",
+ "renovate.json": "Renovate",
+ "dependabot.yml": "Dependabot",
+ "lerna.json": "Lerna",
+ "nx.json": "Nx",
+ },
+ fileExtensions: {
+ // Test files
+ "spec.ts": "TestTs",
+ "test.ts": "TestTs",
+ "spec.tsx": "TestJsx",
+ "test.tsx": "TestJsx",
+ "spec.js": "TestJs",
+ "test.js": "TestJs",
+ "spec.jsx": "TestJsx",
+ "test.jsx": "TestJsx",
+
+ // JavaScript/TypeScript
+ "js.map": "JavascriptMap",
+ "d.ts": "TypescriptDef",
+ ts: "Typescript",
+ tsx: "React_ts",
+ js: "Javascript",
+ jsx: "React",
+ mjs: "Javascript",
+ cjs: "Javascript",
+
+ // Web languages
+ html: "Html",
+ htm: "Html",
+ css: "Css",
+ scss: "Sass",
+ sass: "Sass",
+ less: "Less",
+ styl: "Stylus",
+
+ // Data formats
+ json: "Json",
+ xml: "Xml",
+ yml: "Yaml",
+ yaml: "Yaml",
+ toml: "Toml",
+ hjson: "Hjson",
+
+ // Documentation
+ md: "Markdown",
+ mdx: "Mdx",
+ tex: "Tex",
+
+ // Programming languages
+ py: "Python",
+ pyx: "Python",
+ pyw: "Python",
+ rs: "Rust",
+ go: "Go",
+ java: "Java",
+ kt: "Kotlin",
+ scala: "Scala",
+ php: "Php",
+ rb: "Ruby",
+ cs: "Csharp",
+ vb: "Visualstudio",
+ cpp: "Cpp",
+ cc: "Cpp",
+ cxx: "Cpp",
+ c: "C",
+ h: "H",
+ hpp: "Hpp",
+ swift: "Swift",
+ m: "ObjectiveC",
+ mm: "ObjectiveCpp",
+ dart: "Dart",
+ lua: "Lua",
+ pl: "Perl",
+ r: "R",
+ jl: "Julia",
+ hs: "Haskell",
+ elm: "Elm",
+ ml: "Ocaml",
+ clj: "Clojure",
+ cljs: "Clojure",
+ erl: "Erlang",
+ ex: "Elixir",
+ exs: "Elixir",
+ nim: "Nim",
+ zig: "Zig",
+ v: "Vlang",
+ odin: "Odin",
+ gleam: "Gleam",
+ grain: "Grain",
+ roc: "Rocket",
+ fs: "Fsharp",
+
+ // Shell scripts
+ sh: "Console",
+ bash: "Console",
+ zsh: "Console",
+ fish: "Console",
+ ps1: "Powershell",
+
+ // Config/build files
+ cfg: "Settings",
+ ini: "Settings",
+ conf: "Settings",
+ properties: "Settings",
+
+ // Media files
+ svg: "Svg",
+ png: "Image",
+ jpg: "Image",
+ jpeg: "Image",
+ gif: "Image",
+ webp: "Image",
+ bmp: "Image",
+ ico: "Favicon",
+ mp4: "Video",
+ mov: "Video",
+ avi: "Video",
+ webm: "Video",
+ mp3: "Audio",
+ wav: "Audio",
+ flac: "Audio",
+
+ // Archive files
+ zip: "Zip",
+ tar: "Zip",
+ gz: "Zip",
+ rar: "Zip",
+ "7z": "Zip",
+
+ // Document files
+ pdf: "Pdf",
+ doc: "Word",
+ docx: "Word",
+ ppt: "Powerpoint",
+ pptx: "Powerpoint",
+ xls: "Document",
+ xlsx: "Document",
+
+ // Database files
+ sql: "Database",
+ db: "Database",
+ sqlite: "Database",
+
+ // Other
+ env: "Tune",
+ log: "Log",
+ lock: "Lock",
+ key: "Key",
+ pem: "Certificate",
+ crt: "Certificate",
+ proto: "Proto",
+ graphql: "Graphql",
+ gql: "Graphql",
+ wasm: "Webassembly",
+ dockerfile: "Docker",
+ },
+ folderNames: {
+ // Source code
+ src: "FolderSrc",
+ source: "FolderSrc",
+ lib: "FolderLib",
+ libs: "FolderLib",
+
+ // Testing
+ test: "FolderTest",
+ tests: "FolderTest",
+ testing: "FolderTest",
+ spec: "FolderTest",
+ specs: "FolderTest",
+ __tests__: "FolderTest",
+ e2e: "FolderTest",
+ integration: "FolderTest",
+ unit: "FolderTest",
+ cypress: "FolderCypress",
+
+ // Dependencies
+ node_modules: "FolderNode",
+ vendor: "FolderPackages",
+ packages: "FolderPackages",
+ deps: "FolderPackages",
+
+ // Build/dist
+ build: "FolderBuildkite",
+ dist: "FolderDist",
+ out: "FolderDist",
+ output: "FolderDist",
+ target: "FolderTarget",
+
+ // Configuration
+ config: "FolderConfig",
+ configs: "FolderConfig",
+ configuration: "FolderConfig",
+ settings: "FolderConfig",
+ env: "FolderEnvironment",
+ environments: "FolderEnvironment",
+
+ // Docker
+ docker: "FolderDocker",
+ dockerfiles: "FolderDocker",
+ containers: "FolderDocker",
+
+ // Documentation
+ docs: "FolderDocs",
+ doc: "FolderDocs",
+ documentation: "FolderDocs",
+ readme: "FolderDocs",
+
+ // Public/assets
+ public: "FolderPublic",
+ static: "FolderPublic",
+ assets: "FolderImages",
+ images: "FolderImages",
+ img: "FolderImages",
+ icons: "FolderImages",
+ media: "FolderImages",
+ fonts: "FolderFont",
+ styles: "FolderCss",
+ stylesheets: "FolderCss",
+ css: "FolderCss",
+ sass: "FolderSass",
+ scss: "FolderSass",
+ less: "FolderLess",
+
+ // Scripts
+ scripts: "FolderScripts",
+ script: "FolderScripts",
+ tools: "FolderTools",
+ utils: "FolderUtils",
+ utilities: "FolderUtils",
+ helpers: "FolderHelper",
+
+ // Framework specific
+ components: "FolderComponents",
+ component: "FolderComponents",
+ views: "FolderViews",
+ view: "FolderViews",
+ layouts: "FolderLayout",
+ layout: "FolderLayout",
+ templates: "FolderTemplate",
+ template: "FolderTemplate",
+ hooks: "FolderHook",
+ hook: "FolderHook",
+ store: "FolderStore",
+ stores: "FolderStore",
+ state: "FolderNgrxStore",
+ reducers: "FolderReduxReducer",
+ reducer: "FolderReduxReducer",
+ services: "FolderApi",
+ service: "FolderApi",
+ api: "FolderApi",
+ apis: "FolderApi",
+ routes: "FolderRoutes",
+ route: "FolderRoutes",
+ routing: "FolderRoutes",
+ middleware: "FolderMiddleware",
+ middlewares: "FolderMiddleware",
+ controllers: "FolderController",
+ controller: "FolderController",
+ models: "FolderDatabase",
+ model: "FolderDatabase",
+ schemas: "FolderDatabase",
+ schema: "FolderDatabase",
+ migrations: "FolderDatabase",
+ migration: "FolderDatabase",
+ seeders: "FolderSeeders",
+ seeder: "FolderSeeders",
+
+ // TypeScript
+ types: "FolderTypescript",
+ typing: "FolderTypescript",
+ typings: "FolderTypescript",
+ "@types": "FolderTypescript",
+ interfaces: "FolderInterface",
+ interface: "FolderInterface",
+
+ // Mobile
+ android: "FolderAndroid",
+ ios: "FolderIos",
+ mobile: "FolderMobile",
+ flutter: "FolderFlutter",
+
+ // Infrastructure
+ kubernetes: "FolderKubernetes",
+ k8s: "FolderKubernetes",
+ terraform: "FolderTerraform",
+ aws: "FolderAws",
+ azure: "FolderAzurePipelines",
+ firebase: "FolderFirebase",
+ supabase: "FolderSupabase",
+ vercel: "FolderVercel",
+ netlify: "FolderNetlify",
+
+ // CI/CD
+ ".github": "FolderGithub",
+ ".gitlab": "FolderGitlab",
+ ".circleci": "FolderCircleci",
+ ci: "FolderCi",
+ ".ci": "FolderCi",
+ workflows: "FolderGhWorkflows",
+
+ // Git
+ ".git": "FolderGit",
+
+ // Development tools
+ ".vscode": "FolderVscode",
+ ".idea": "FolderIntellij",
+ ".cursor": "FolderCursor",
+ ".devcontainer": "FolderContainer",
+ ".storybook": "FolderStorybook",
+
+ // Localization
+ i18n: "FolderI18n",
+ locales: "FolderI18n",
+ locale: "FolderI18n",
+ lang: "FolderI18n",
+ languages: "FolderI18n",
+
+ // Other common patterns
+ temp: "FolderTemp",
+ tmp: "FolderTemp",
+ logs: "FolderLog",
+ log: "FolderLog",
+ backup: "FolderBackup",
+ backups: "FolderBackup",
+ examples: "FolderExamples",
+ example: "FolderExamples",
+ demo: "FolderExamples",
+ demos: "FolderExamples",
+ samples: "FolderExamples",
+ sample: "FolderExamples",
+ fixtures: "FolderTest",
+ mocks: "FolderMock",
+ mock: "FolderMock",
+ data: "FolderDatabase",
+ database: "FolderDatabase",
+ db: "FolderDatabase",
+ sql: "FolderDatabase",
+ prisma: "FolderPrisma",
+ drizzle: "FolderDrizzle",
+
+ // Security
+ security: "FolderSecure",
+ auth: "FolderSecure",
+ authentication: "FolderSecure",
+ authorization: "FolderSecure",
+ keys: "FolderKeys",
+ certs: "FolderKeys",
+ certificates: "FolderKeys",
+
+ // Content
+ content: "FolderContent",
+ posts: "FolderContent",
+ articles: "FolderContent",
+ blog: "FolderContent",
+
+ // Functions
+ functions: "FolderFunctions",
+ function: "FolderFunctions",
+ lambda: "FolderFunctions",
+ lambdas: "FolderFunctions",
+ serverless: "FolderServerless",
+
+ // Jobs/tasks
+ jobs: "FolderJob",
+ job: "FolderJob",
+ tasks: "FolderTasks",
+ task: "FolderTasks",
+ cron: "FolderTasks",
+ queue: "FolderQueue",
+ queues: "FolderQueue",
+
+ // Desktop platforms
+ desktop: "FolderDesktop",
+ windows: "FolderWindows",
+ macos: "FolderMacos",
+ linux: "FolderLinux",
+ },
+ defaults: {
+ file: "Document",
+ folder: "Folder",
+ folderOpen: "FolderOpen",
+ },
+}
+
+const toOpenVariant = (icon: IconName): IconName => {
+ if (!icon.startsWith("Folder")) return icon
+ if (icon.endsWith("_light")) return icon.replace("_light", "Open_light") as IconName
+ if (!icon.endsWith("Open")) return (icon + "Open") as IconName
+ return icon
+}
+
+const basenameOf = (p: string) =>
+ p
+ .replace(/[/\\]+$/, "")
+ .split(/[\\/]/)
+ .pop() ?? ""
+
+const folderNameVariants = (name: string) => {
+ const n = name.toLowerCase()
+ return [n, `.${n}`, `_${n}`, `__${n}__`]
+}
+
+const dottedSuffixesDesc = (name: string) => {
+ const n = name.toLowerCase()
+ const idxs: number[] = []
+ for (let i = 0; i < n.length; i++) if (n[i] === ".") idxs.push(i)
+ const out = new Set()
+ out.add(n) // allow exact whole-name "extensions" like "dockerfile"
+ for (const i of idxs) if (i + 1 < n.length) out.add(n.slice(i + 1))
+ return Array.from(out).sort((a, b) => b.length - a.length) // longest first
+}
+
+export function chooseIconName(path: string, type: "directory" | "file", expanded: boolean): IconName {
+ const base = basenameOf(path)
+ const baseLower = base.toLowerCase()
+
+ if (type === "directory") {
+ for (const cand of folderNameVariants(baseLower)) {
+ const icon = ICON_MAPS.folderNames[cand]
+ if (icon) return expanded ? toOpenVariant(icon) : icon
+ }
+ return expanded ? ICON_MAPS.defaults.folderOpen : ICON_MAPS.defaults.folder
+ }
+
+ const byName = ICON_MAPS.fileNames[baseLower]
+ if (byName) return byName
+
+ for (const ext of dottedSuffixesDesc(baseLower)) {
+ const icon = ICON_MAPS.fileExtensions[ext]
+ if (icon) return icon
+ }
+
+ return ICON_MAPS.defaults.file
+}
diff --git a/packages/desktop/src/ui/file-icons/sprite.svg b/packages/desktop/src/ui/file-icons/sprite.svg
new file mode 100644
index 000000000..619b2b58c
--- /dev/null
+++ b/packages/desktop/src/ui/file-icons/sprite.svg
@@ -0,0 +1,11707 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/desktop/src/ui/file-icons/types.ts b/packages/desktop/src/ui/file-icons/types.ts
new file mode 100644
index 000000000..5b47661f9
--- /dev/null
+++ b/packages/desktop/src/ui/file-icons/types.ts
@@ -0,0 +1,1095 @@
+// This file is generated by icon spritesheet generator
+
+export const iconNames = [
+ "Zip",
+ "Zig",
+ "Zeabur_light",
+ "Zeabur",
+ "Yarn",
+ "Yang",
+ "Yaml",
+ "Xml",
+ "Xmake",
+ "Xaml",
+ "Wxt",
+ "Wrangler",
+ "Word",
+ "Wolframlanguage",
+ "Windicss",
+ "Werf",
+ "Wepy",
+ "Webpack",
+ "Webhint",
+ "Webassembly",
+ "Watchman",
+ "Wally",
+ "Wallaby",
+ "Wakatime_light",
+ "Wakatime",
+ "VuexStore",
+ "Vue",
+ "VueConfig",
+ "Vscode",
+ "Vlang",
+ "Vitest",
+ "Vite",
+ "Visualstudio",
+ "Virtual",
+ "Vim",
+ "Video",
+ "Vfl",
+ "Verilog",
+ "Verified",
+ "Verdaccio",
+ "Vercel_light",
+ "Vercel",
+ "Velocity",
+ "Velite",
+ "Vedic",
+ "Varnish",
+ "VanillaExtract",
+ "Vala",
+ "Vagrant",
+ "Uv",
+ "Url",
+ "Unocss",
+ "Unity",
+ "Uml_light",
+ "Uml",
+ "Umi",
+ "Typst",
+ "Typescript",
+ "TypescriptDef",
+ "Twine",
+ "Twig",
+ "Turborepo_light",
+ "Turborepo",
+ "Tune",
+ "Tsil",
+ "Tsdoc",
+ "Tsconfig",
+ "Trigger",
+ "Tree",
+ "Travis",
+ "Toml_light",
+ "Toml",
+ "Todo",
+ "Tobimake",
+ "Tobi",
+ "Tldraw_light",
+ "Tldraw",
+ "Tilt",
+ "Textlint",
+ "Tex",
+ "TestTs",
+ "TestJsx",
+ "TestJs",
+ "Terraform",
+ "Template",
+ "Templ",
+ "Teal",
+ "Tcl",
+ "Taze",
+ "Tauri",
+ "Taskfile",
+ "Tailwindcss",
+ "Table",
+ "Systemd_light",
+ "Systemd",
+ "Syncpack",
+ "Swift",
+ "Swc",
+ "Sway",
+ "Swagger",
+ "Svgr",
+ "Svgo",
+ "Svg",
+ "Svelte",
+ "Supabase",
+ "Subtitles",
+ "Sublime",
+ "Stylus",
+ "Stylelint_light",
+ "Stylelint",
+ "Stylable",
+ "Stryker",
+ "Storybook",
+ "Stitches_light",
+ "Stitches",
+ "Stencil",
+ "Steadybit",
+ "Stan",
+ "Stackblitz",
+ "Spwn",
+ "Sonarcloud",
+ "Solidity",
+ "Snyk",
+ "Snowpack_light",
+ "Snowpack",
+ "Snapcraft",
+ "Snakemake",
+ "Sml",
+ "Smarty",
+ "Slug",
+ "Slint",
+ "Slim",
+ "Sketch",
+ "Siyuan",
+ "Simulink",
+ "Silverstripe",
+ "Shader",
+ "Settings",
+ "Serverless",
+ "Sequelize",
+ "Sentry",
+ "Semgrep",
+ "SemanticRelease_light",
+ "SemanticRelease",
+ "Search",
+ "Screwdriver",
+ "Scons_light",
+ "Scons",
+ "Scheme",
+ "Scala",
+ "Sbt",
+ "Sass",
+ "Sas",
+ "San",
+ "Salesforce",
+ "Rust",
+ "Ruff",
+ "Ruby",
+ "Rubocop_light",
+ "Rubocop",
+ "Rspec",
+ "Routing",
+ "Rome",
+ "Rollup",
+ "Rojo",
+ "Rocket",
+ "Robots",
+ "Robot",
+ "Roblox",
+ "Roadmap",
+ "Riot",
+ "Restql",
+ "Rescript",
+ "RescriptInterface",
+ "Replit",
+ "Renovate",
+ "Remix_light",
+ "Remix",
+ "Remark",
+ "Regedit",
+ "ReduxStore",
+ "ReduxSelector",
+ "ReduxReducer",
+ "ReduxAction",
+ "Red",
+ "Reason",
+ "Readme",
+ "React_ts",
+ "React",
+ "Rc",
+ "Rbxmk",
+ "Razor",
+ "Raml",
+ "Racket",
+ "R",
+ "Qwik",
+ "Quokka",
+ "Quasar",
+ "Quarto",
+ "Qsharp",
+ "Pytorch",
+ "Python",
+ "PythonMisc",
+ "Purescript",
+ "Puppeteer",
+ "Puppet",
+ "Pug",
+ "Protractor",
+ "Proto",
+ "Prompt",
+ "Prolog",
+ "Processing",
+ "Prisma",
+ "Prettier",
+ "PreCommit",
+ "Powershell",
+ "Powerpoint",
+ "Posthtml",
+ "Postcss",
+ "Poetry",
+ "Pnpm_light",
+ "Pnpm",
+ "Pm2Ecosystem",
+ "Plop",
+ "Playwright",
+ "Plastic",
+ "Pkl",
+ "Pipeline",
+ "Pinejs",
+ "Phpunit",
+ "Phpstan",
+ "Php_elephant_pink",
+ "Php_elephant",
+ "Php",
+ "PhpCsFixer",
+ "Perl",
+ "Percy",
+ "Pdm",
+ "Pdf",
+ "Payload_light",
+ "Payload",
+ "Pawn",
+ "Pascal",
+ "Parcel",
+ "Panda",
+ "Palette",
+ "Packship",
+ "Oxlint",
+ "Otne",
+ "Openapi_light",
+ "Openapi",
+ "Opam",
+ "Opa",
+ "Odin",
+ "Ocaml",
+ "ObjectiveCpp",
+ "ObjectiveC",
+ "Nx",
+ "Nuxt",
+ "Nunjucks",
+ "Nuget",
+ "Npm",
+ "Nodemon",
+ "Nodejs_alt",
+ "Nodejs",
+ "Nix",
+ "Nim",
+ "NgrxState",
+ "NgrxSelectors",
+ "NgrxReducer",
+ "NgrxEntity",
+ "NgrxEffects",
+ "NgrxActions",
+ "Nginx",
+ "Next_light",
+ "Next",
+ "Netlify_light",
+ "Netlify",
+ "Nest",
+ "Ndst",
+ "NanoStaged_light",
+ "NanoStaged",
+ "Mxml",
+ "Moonscript",
+ "Moon",
+ "Mojo",
+ "Modernizr",
+ "Mocha",
+ "Mjml",
+ "Mint",
+ "Minecraft",
+ "MinecraftFabric",
+ "Meson",
+ "Mermaid",
+ "Merlin",
+ "Mercurial",
+ "Mdx",
+ "Mdsvex",
+ "Maven",
+ "Matlab",
+ "Mathematica",
+ "Markojs",
+ "Markdownlint",
+ "Markdown",
+ "Markdoc",
+ "MarkdocConfig",
+ "Makefile",
+ "Lyric",
+ "Luau",
+ "Lua",
+ "Lottie",
+ "Lolcode",
+ "Log",
+ "Lock",
+ "Livescript",
+ "Lisp",
+ "Liquid",
+ "Lintstaged",
+ "Lilypond",
+ "Lighthouse",
+ "Lib",
+ "Liara",
+ "Less",
+ "Lerna",
+ "Lefthook",
+ "Lbx",
+ "Latexmk",
+ "Laravel",
+ "Label",
+ "Kusto",
+ "Kubernetes",
+ "Kotlin",
+ "Knip",
+ "Kl",
+ "Kivy",
+ "Keystatic",
+ "Key",
+ "Kcl",
+ "Karma",
+ "Just",
+ "Jupyter",
+ "Julia",
+ "Jsr_light",
+ "Jsr",
+ "Json",
+ "Jsconfig",
+ "Jinja_light",
+ "Jinja",
+ "Jest",
+ "Jenkins",
+ "Javascript",
+ "JavascriptMap",
+ "Javaclass",
+ "Java",
+ "Jar",
+ "Istanbul",
+ "Ionic",
+ "Installation",
+ "Imba",
+ "Image",
+ "IfanrCloud",
+ "Idris",
+ "I18n",
+ "Husky",
+ "Hurl",
+ "Huff_light",
+ "Huff",
+ "Http",
+ "Html",
+ "Hpp",
+ "Hosts_light",
+ "Hosts",
+ "Horusec",
+ "Hjson",
+ "Histoire",
+ "Hex",
+ "Heroku",
+ "Helm",
+ "Hcl_light",
+ "Hcl",
+ "Haxe",
+ "Haskell",
+ "Harmonix",
+ "Hardhat",
+ "Handlebars",
+ "Haml",
+ "Hadolint",
+ "Hack",
+ "H",
+ "Gulp",
+ "Grunt",
+ "Groovy",
+ "Gridsome",
+ "Graphql",
+ "Graphcool",
+ "Grain",
+ "GrafanaAlloy",
+ "Gradle",
+ "Godot",
+ "GodotAssets",
+ "Go_gopher",
+ "Go",
+ "GoMod",
+ "Gnuplot",
+ "Gleam",
+ "Gitpod",
+ "Gitlab",
+ "GithubSponsors",
+ "GithubActionsWorkflow",
+ "Git",
+ "Gemini",
+ "GeminiAi",
+ "Gemfile",
+ "Gcp",
+ "Gatsby",
+ "Garden",
+ "Gamemaker",
+ "Fusebox",
+ "Fsharp",
+ "Freemarker",
+ "Foxpro",
+ "Fortran",
+ "Forth",
+ "Font",
+ "Folder",
+ "FolderZeabur",
+ "FolderZeaburOpen",
+ "FolderYarn",
+ "FolderYarnOpen",
+ "FolderWordpress",
+ "FolderWordpressOpen",
+ "FolderWindows",
+ "FolderWindowsOpen",
+ "FolderWebpack",
+ "FolderWebpackOpen",
+ "FolderWakatime",
+ "FolderWakatimeOpen",
+ "FolderVuexStore",
+ "FolderVuexStoreOpen",
+ "FolderVuepress",
+ "FolderVuepressOpen",
+ "FolderVue",
+ "FolderVueOpen",
+ "FolderVueDirectives",
+ "FolderVueDirectivesOpen",
+ "FolderVscode",
+ "FolderVscodeOpen",
+ "FolderVm",
+ "FolderVmOpen",
+ "FolderViews",
+ "FolderViewsOpen",
+ "FolderVideo",
+ "FolderVideoOpen",
+ "FolderVerdaccio",
+ "FolderVerdaccioOpen",
+ "FolderVercel",
+ "FolderVercelOpen",
+ "FolderUtils",
+ "FolderUtilsOpen",
+ "FolderUpload",
+ "FolderUploadOpen",
+ "FolderUpdate",
+ "FolderUpdateOpen",
+ "FolderUnity",
+ "FolderUnityOpen",
+ "FolderUi",
+ "FolderUiOpen",
+ "FolderTypescript",
+ "FolderTypescriptOpen",
+ "FolderTurborepo",
+ "FolderTurborepoOpen",
+ "FolderTrigger",
+ "FolderTriggerOpen",
+ "FolderTrash",
+ "FolderTrashOpen",
+ "FolderTools",
+ "FolderToolsOpen",
+ "FolderTheme",
+ "FolderThemeOpen",
+ "FolderTest",
+ "FolderTestOpen",
+ "FolderTerraform",
+ "FolderTerraformOpen",
+ "FolderTemplate",
+ "FolderTemplateOpen",
+ "FolderTemp",
+ "FolderTempOpen",
+ "FolderTelevision",
+ "FolderTelevisionOpen",
+ "FolderTasks",
+ "FolderTasksOpen",
+ "FolderTaskfile",
+ "FolderTaskfileOpen",
+ "FolderTarget",
+ "FolderTargetOpen",
+ "FolderSyntax",
+ "FolderSyntaxOpen",
+ "FolderSvg",
+ "FolderSvgOpen",
+ "FolderSvelte",
+ "FolderSvelteOpen",
+ "FolderSupabase",
+ "FolderSupabaseOpen",
+ "FolderSublime",
+ "FolderSublimeOpen",
+ "FolderStylus",
+ "FolderStylusOpen",
+ "FolderStorybook",
+ "FolderStorybookOpen",
+ "FolderStore",
+ "FolderStoreOpen",
+ "FolderStencil",
+ "FolderStencilOpen",
+ "FolderStack",
+ "FolderStackOpen",
+ "FolderSrc",
+ "FolderSrcTauri",
+ "FolderSrcTauriOpen",
+ "FolderSrcOpen",
+ "FolderSnippet",
+ "FolderSnippetOpen",
+ "FolderSnapcraft",
+ "FolderSnapcraftOpen",
+ "FolderShared",
+ "FolderSharedOpen",
+ "FolderShader",
+ "FolderShaderOpen",
+ "FolderServerless",
+ "FolderServerlessOpen",
+ "FolderServer",
+ "FolderServerOpen",
+ "FolderSeeders",
+ "FolderSeedersOpen",
+ "FolderSecure",
+ "FolderSecureOpen",
+ "FolderScripts",
+ "FolderScriptsOpen",
+ "FolderScons",
+ "FolderSconsOpen",
+ "FolderScala",
+ "FolderScalaOpen",
+ "FolderSass",
+ "FolderSassOpen",
+ "FolderSandbox",
+ "FolderSandboxOpen",
+ "FolderRust",
+ "FolderRustOpen",
+ "FolderRules",
+ "FolderRulesOpen",
+ "FolderRoutes",
+ "FolderRoutesOpen",
+ "FolderRobot",
+ "FolderRobotOpen",
+ "FolderReview",
+ "FolderReviewOpen",
+ "FolderResource",
+ "FolderResourceOpen",
+ "FolderResolver",
+ "FolderResolverOpen",
+ "FolderRepository",
+ "FolderRepositoryOpen",
+ "FolderReduxReducer",
+ "FolderReduxReducerOpen",
+ "FolderReactComponents",
+ "FolderReactComponentsOpen",
+ "FolderQueue",
+ "FolderQueueOpen",
+ "FolderQuasar",
+ "FolderQuasarOpen",
+ "FolderPytorch",
+ "FolderPytorchOpen",
+ "FolderPython",
+ "FolderPythonOpen",
+ "FolderPublic",
+ "FolderPublicOpen",
+ "FolderProto",
+ "FolderProtoOpen",
+ "FolderPrompts",
+ "FolderPromptsOpen",
+ "FolderProject",
+ "FolderProjectOpen",
+ "FolderPrivate",
+ "FolderPrivateOpen",
+ "FolderPrisma",
+ "FolderPrismaOpen",
+ "FolderPowershell",
+ "FolderPowershellOpen",
+ "FolderPolicy",
+ "FolderPolicyOpen",
+ "FolderPlugin",
+ "FolderPluginOpen",
+ "FolderPlastic",
+ "FolderPlasticOpen",
+ "FolderPipe",
+ "FolderPipeOpen",
+ "FolderPhpmailer",
+ "FolderPhpmailerOpen",
+ "FolderPhp",
+ "FolderPhpOpen",
+ "FolderPdm",
+ "FolderPdmOpen",
+ "FolderPdf",
+ "FolderPdfOpen",
+ "FolderPackages",
+ "FolderPackagesOpen",
+ "FolderOther",
+ "FolderOtherOpen",
+ "FolderOrganism",
+ "FolderOrganismOpen",
+ "FolderOpen",
+ "FolderObsidian",
+ "FolderObsidianOpen",
+ "FolderNuxt",
+ "FolderNuxtOpen",
+ "FolderNode",
+ "FolderNodeOpen",
+ "FolderNgrxStore",
+ "FolderNgrxStoreOpen",
+ "FolderNext",
+ "FolderNextOpen",
+ "FolderNetlify",
+ "FolderNetlifyOpen",
+ "FolderMoon",
+ "FolderMoonOpen",
+ "FolderMolecule",
+ "FolderMoleculeOpen",
+ "FolderMojo",
+ "FolderMojoOpen",
+ "FolderMock",
+ "FolderMockOpen",
+ "FolderMobile",
+ "FolderMobileOpen",
+ "FolderMjml",
+ "FolderMjmlOpen",
+ "FolderMiddleware",
+ "FolderMiddlewareOpen",
+ "FolderMeta",
+ "FolderMetaOpen",
+ "FolderMessages",
+ "FolderMessagesOpen",
+ "FolderMercurial",
+ "FolderMercurialOpen",
+ "FolderMarkdown",
+ "FolderMarkdownOpen",
+ "FolderMappings",
+ "FolderMappingsOpen",
+ "FolderMail",
+ "FolderMailOpen",
+ "FolderMacos",
+ "FolderMacosOpen",
+ "FolderLuau",
+ "FolderLuauOpen",
+ "FolderLua",
+ "FolderLuaOpen",
+ "FolderLottie",
+ "FolderLottieOpen",
+ "FolderLog",
+ "FolderLogOpen",
+ "FolderLiquibase",
+ "FolderLiquibaseOpen",
+ "FolderLinux",
+ "FolderLinuxOpen",
+ "FolderLink",
+ "FolderLinkOpen",
+ "FolderLib",
+ "FolderLibOpen",
+ "FolderLess",
+ "FolderLessOpen",
+ "FolderLefthook",
+ "FolderLefthookOpen",
+ "FolderLayout",
+ "FolderLayoutOpen",
+ "FolderKusto",
+ "FolderKustoOpen",
+ "FolderKubernetes",
+ "FolderKubernetesOpen",
+ "FolderKeys",
+ "FolderKeysOpen",
+ "FolderJupyter",
+ "FolderJupyterOpen",
+ "FolderJson",
+ "FolderJsonOpen",
+ "FolderJob",
+ "FolderJobOpen",
+ "FolderJinja_light",
+ "FolderJinja",
+ "FolderJinjaOpen_light",
+ "FolderJinjaOpen",
+ "FolderJavascript",
+ "FolderJavascriptOpen",
+ "FolderJava",
+ "FolderJavaOpen",
+ "FolderIos",
+ "FolderIosOpen",
+ "FolderInterface",
+ "FolderInterfaceOpen",
+ "FolderInterceptor",
+ "FolderInterceptorOpen",
+ "FolderIntellij_light",
+ "FolderIntellij",
+ "FolderIntellijOpen_light",
+ "FolderIntellijOpen",
+ "FolderInclude",
+ "FolderIncludeOpen",
+ "FolderImport",
+ "FolderImportOpen",
+ "FolderImages",
+ "FolderImagesOpen",
+ "FolderI18n",
+ "FolderI18nOpen",
+ "FolderHusky",
+ "FolderHuskyOpen",
+ "FolderHook",
+ "FolderHookOpen",
+ "FolderHome",
+ "FolderHomeOpen",
+ "FolderHelper",
+ "FolderHelperOpen",
+ "FolderHelm",
+ "FolderHelmOpen",
+ "FolderGulp",
+ "FolderGulpOpen",
+ "FolderGuard",
+ "FolderGuardOpen",
+ "FolderGraphql",
+ "FolderGraphqlOpen",
+ "FolderGradle",
+ "FolderGradleOpen",
+ "FolderGodot",
+ "FolderGodotOpen",
+ "FolderGlobal",
+ "FolderGlobalOpen",
+ "FolderGitlab",
+ "FolderGitlabOpen",
+ "FolderGithub",
+ "FolderGithubOpen",
+ "FolderGitea",
+ "FolderGiteaOpen",
+ "FolderGit",
+ "FolderGitOpen",
+ "FolderGhWorkflows",
+ "FolderGhWorkflowsOpen",
+ "FolderGenerator",
+ "FolderGeneratorOpen",
+ "FolderGamemaker",
+ "FolderGamemakerOpen",
+ "FolderFunctions",
+ "FolderFunctionsOpen",
+ "FolderForgejo",
+ "FolderForgejoOpen",
+ "FolderFont",
+ "FolderFontOpen",
+ "FolderFlutter",
+ "FolderFlutterOpen",
+ "FolderFlow",
+ "FolderFlowOpen",
+ "FolderFirestore",
+ "FolderFirestoreOpen",
+ "FolderFirebase",
+ "FolderFirebaseOpen",
+ "FolderFavicon",
+ "FolderFaviconOpen",
+ "FolderFastlane",
+ "FolderFastlaneOpen",
+ "FolderExport",
+ "FolderExportOpen",
+ "FolderExpo",
+ "FolderExpoOpen",
+ "FolderExamples",
+ "FolderExamplesOpen",
+ "FolderEvent",
+ "FolderEventOpen",
+ "FolderError",
+ "FolderErrorOpen",
+ "FolderEnvironment",
+ "FolderEnvironmentOpen",
+ "FolderEnum",
+ "FolderEnumOpen",
+ "FolderElement",
+ "FolderElementOpen",
+ "FolderDump",
+ "FolderDumpOpen",
+ "FolderDrizzle",
+ "FolderDrizzleOpen",
+ "FolderDownload",
+ "FolderDownloadOpen",
+ "FolderDocs",
+ "FolderDocsOpen",
+ "FolderDocker",
+ "FolderDockerOpen",
+ "FolderDist",
+ "FolderDistOpen",
+ "FolderDirective",
+ "FolderDirectiveOpen",
+ "FolderDesktop",
+ "FolderDesktopOpen",
+ "FolderDelta",
+ "FolderDeltaOpen",
+ "FolderDecorators",
+ "FolderDecoratorsOpen",
+ "FolderDebug",
+ "FolderDebugOpen",
+ "FolderDatabase",
+ "FolderDatabaseOpen",
+ "FolderDart",
+ "FolderDartOpen",
+ "FolderCypress",
+ "FolderCypressOpen",
+ "FolderCustom",
+ "FolderCustomOpen",
+ "FolderCursor_light",
+ "FolderCursor",
+ "FolderCursorOpen_light",
+ "FolderCursorOpen",
+ "FolderCss",
+ "FolderCssOpen",
+ "FolderCoverage",
+ "FolderCoverageOpen",
+ "FolderCore",
+ "FolderCoreOpen",
+ "FolderController",
+ "FolderControllerOpen",
+ "FolderContract",
+ "FolderContractOpen",
+ "FolderContext",
+ "FolderContextOpen",
+ "FolderContent",
+ "FolderContentOpen",
+ "FolderContainer",
+ "FolderContainerOpen",
+ "FolderConstant",
+ "FolderConstantOpen",
+ "FolderConsole",
+ "FolderConsoleOpen",
+ "FolderConnection",
+ "FolderConnectionOpen",
+ "FolderConfig",
+ "FolderConfigOpen",
+ "FolderComponents",
+ "FolderComponentsOpen",
+ "FolderCommand",
+ "FolderCommandOpen",
+ "FolderCobol",
+ "FolderCobolOpen",
+ "FolderCluster",
+ "FolderClusterOpen",
+ "FolderCloudflare",
+ "FolderCloudflareOpen",
+ "FolderCloudFunctions",
+ "FolderCloudFunctionsOpen",
+ "FolderCline",
+ "FolderClineOpen",
+ "FolderClient",
+ "FolderClientOpen",
+ "FolderClaude",
+ "FolderClaudeOpen",
+ "FolderClass",
+ "FolderClassOpen",
+ "FolderCircleci",
+ "FolderCircleciOpen",
+ "FolderCi",
+ "FolderCiOpen",
+ "FolderChangesets",
+ "FolderChangesetsOpen",
+ "FolderCart",
+ "FolderCartOpen",
+ "FolderBuildkite",
+ "FolderBuildkiteOpen",
+ "FolderBower",
+ "FolderBowerOpen",
+ "FolderBloc",
+ "FolderBlocOpen",
+ "FolderBlender",
+ "FolderBlenderOpen",
+ "FolderBicep",
+ "FolderBicepOpen",
+ "FolderBibliography",
+ "FolderBibliographyOpen",
+ "FolderBenchmark",
+ "FolderBenchmarkOpen",
+ "FolderBatch",
+ "FolderBatchOpen",
+ "FolderBase",
+ "FolderBaseOpen",
+ "FolderBackup",
+ "FolderBackupOpen",
+ "FolderAzurePipelines",
+ "FolderAzurePipelinesOpen",
+ "FolderAws",
+ "FolderAwsOpen",
+ "FolderAurelia",
+ "FolderAureliaOpen",
+ "FolderAudio",
+ "FolderAudioOpen",
+ "FolderAttachment",
+ "FolderAttachmentOpen",
+ "FolderAtom",
+ "FolderAtomOpen",
+ "FolderAstro",
+ "FolderAstroOpen",
+ "FolderArchive",
+ "FolderArchiveOpen",
+ "FolderApp",
+ "FolderAppOpen",
+ "FolderApollo",
+ "FolderApolloOpen",
+ "FolderApi",
+ "FolderApiOpen",
+ "FolderAnsible",
+ "FolderAnsibleOpen",
+ "FolderAnimation",
+ "FolderAnimationOpen",
+ "FolderAngular",
+ "FolderAngularOpen",
+ "FolderAndroid",
+ "FolderAndroidOpen",
+ "FolderAdmin",
+ "FolderAdminOpen",
+ "Flow",
+ "Flash",
+ "Firebase",
+ "Figma",
+ "Favicon",
+ "Fastlane",
+ "Exe",
+ "Excalidraw",
+ "Eslint",
+ "Esbuild",
+ "Erlang",
+ "Epub",
+ "Ember",
+ "Email",
+ "Elm",
+ "Elixir",
+ "Ejs",
+ "Editorconfig",
+ "Edge",
+ "Dune",
+ "Duc",
+ "Drone_light",
+ "Drone",
+ "Drizzle",
+ "Drawio",
+ "Dotjs",
+ "Document",
+ "DoctexInstaller",
+ "Docker",
+ "Dll",
+ "Django",
+ "Disc",
+ "Dinophp",
+ "Diff",
+ "Dhall",
+ "DependenciesUpdate",
+ "Dependabot",
+ "Deno_light",
+ "Deno",
+ "Denizenscript",
+ "Deepsource",
+ "Database",
+ "Dart_generated",
+ "Dart",
+ "D",
+ "Cypress",
+ "Cursor_light",
+ "Cursor",
+ "Cuda",
+ "Cucumber",
+ "Css",
+ "CssMap",
+ "Csharp",
+ "Crystal_light",
+ "Crystal",
+ "Credits",
+ "Craco",
+ "Cpp",
+ "Copilot_light",
+ "Copilot",
+ "Controller",
+ "Contributing",
+ "Context",
+ "Contentlayer",
+ "Console",
+ "Conduct",
+ "Concourse",
+ "Commitlint",
+ "Commitizen",
+ "Command",
+ "Coloredpetrinets",
+ "Coldfusion",
+ "Coffee",
+ "CoderabbitAi",
+ "Codeowners",
+ "Codecov",
+ "CodeClimate_light",
+ "CodeClimate",
+ "Coconut",
+ "Cobol",
+ "Coala",
+ "Cmake",
+ "Cloudfoundry",
+ "Clojure",
+ "Cline",
+ "Claude",
+ "Clangd",
+ "Citation",
+ "Circleci_light",
+ "Circleci",
+ "Chrome",
+ "Chess_light",
+ "Chess",
+ "Changelog",
+ "Certificate",
+ "Cds",
+ "Cbx",
+ "Capnp",
+ "Capacitor",
+ "Cake",
+ "Cairo",
+ "Cadence",
+ "Caddy",
+ "Cabal",
+ "C3",
+ "C",
+ "Bun_light",
+ "Bun",
+ "Buildkite",
+ "Bucklescript",
+ "Buck",
+ "Bruno",
+ "Browserlist_light",
+ "Browserlist",
+ "Brainfuck",
+ "Bower",
+ "Blitz",
+ "Blink_light",
+ "Blink",
+ "Blender",
+ "Bithound",
+ "Bitbucket",
+ "Biome",
+ "Bicep",
+ "BibtexStyle",
+ "Bibliography",
+ "BenchTs",
+ "BenchJsx",
+ "BenchJs",
+ "Beancount",
+ "Bbx",
+ "Bazel",
+ "Ballerina",
+ "Babel",
+ "Azure",
+ "AzurePipelines",
+ "Autoit",
+ "Autohotkey",
+ "Auto_light",
+ "Auto",
+ "Authors",
+ "Aurelia",
+ "Audio",
+ "Astyle",
+ "Astro",
+ "AstroConfig",
+ "Assembly",
+ "Asciidoc",
+ "Arduino",
+ "Architecture",
+ "Appveyor",
+ "AppsScript",
+ "Applescript",
+ "Apollo",
+ "Apiblueprint",
+ "Antlr",
+ "Angular",
+ "Android",
+ "Amplify",
+ "Advpl",
+ "Adonis",
+ "AdobeSwc",
+ "AdobePhotoshop_light",
+ "AdobePhotoshop",
+ "AdobeIllustrator_light",
+ "AdobeIllustrator",
+ "Ada",
+ "Actionscript",
+ "Abc",
+ "Abap",
+ "3d",
+] as const
+
+export type IconName = (typeof iconNames)[number]
diff --git a/packages/desktop/src/ui/icon-button.tsx b/packages/desktop/src/ui/icon-button.tsx
new file mode 100644
index 000000000..7e9e3e6e2
--- /dev/null
+++ b/packages/desktop/src/ui/icon-button.tsx
@@ -0,0 +1,38 @@
+import { Button as KobalteButton } from "@kobalte/core/button"
+import { splitProps } from "solid-js"
+import type { ComponentProps, JSX } from "solid-js"
+
+export interface IconButtonProps extends ComponentProps {
+ variant?: "primary" | "secondary" | "outline" | "ghost"
+ size?: "xs" | "sm" | "md" | "lg"
+ children: JSX.Element
+}
+
+export function IconButton(props: IconButtonProps) {
+ const [local, others] = splitProps(props, ["variant", "size", "class", "classList"])
+ return (
+
+ )
+}
diff --git a/packages/desktop/src/ui/icon.tsx b/packages/desktop/src/ui/icon.tsx
new file mode 100644
index 000000000..35c77c078
--- /dev/null
+++ b/packages/desktop/src/ui/icon.tsx
@@ -0,0 +1,155 @@
+import { splitProps, type ComponentProps } from "solid-js"
+
+export interface IconProps extends ComponentProps<"svg"> {
+ name: keyof typeof icons
+ size?: number
+}
+
+// prettier-ignore
+const icons = {
+ close: '',
+ menu: ' ',
+ "chevron-right": '',
+ "chevron-left": '',
+ "chevron-down": '',
+ "chevron-up": '',
+ "chevron-down-square": '',
+ "chevron-up-square": '',
+ "chevron-right-square": '',
+ "chevron-left-square": '',
+ settings: '',
+ globe: '',
+ github: '',
+ hammer: '',
+ "avatar-square": '',
+ slash: '',
+ robot: '',
+ cloud: '',
+ "file-text": '',
+ file: '',
+ "file-checkmark": '',
+ "file-code": '',
+ "file-important": '',
+ "file-minus": '',
+ "file-plus": '',
+ files: '',
+ "file-zip": '',
+ jpg: '',
+ pdf: '',
+ png: '',
+ gif: '',
+ archive: '',
+ sun: '',
+ moon: '',
+ monitor: '',
+ command: '',
+ link: '',
+ share: '',
+ branch: '',
+ logout: '',
+ login: '',
+ keys: '',
+ key: '',
+ info: '',
+ warning: '',
+ checkmark: '',
+ "checkmark-square": '',
+ plus: '',
+ minus: '',
+ undo: '',
+ merge: '',
+ redo: '',
+ refresh: '',
+ rotate: '',
+ "arrow-left": '',
+ "arrow-down": '',
+ "arrow-right": '',
+ "arrow-up": '',
+ enter: '',
+ trash: '',
+ package: '',
+ box: '',
+ lock: '',
+ unlocked: '',
+ activity: '',
+ asterisk: '',
+ bell: '',
+ "bell-off": '',
+ bolt: '',
+ bookmark: '',
+ brain: '',
+ browser: '',
+ "browser-cursor": '',
+ bug: '',
+ "carat-down": '',
+ "carat-left": '',
+ "carat-right": '',
+ "carat-up": '',
+ cards: '',
+ chart: '',
+ "check-circle": '',
+ checklist: '',
+ "checklist-cards": '',
+ lab: '',
+ circle: '',
+ "circle-dotted": '',
+ clipboard: '',
+ clock: '',
+ "close-circle": '',
+ terminal: '',
+ code: '',
+ components: '',
+ copy: '',
+ cpu: '',
+ dashboard: '',
+ transfer: '',
+ devices: '',
+ diamond: '',
+ dice: '',
+ discord: '',
+ dots: '',
+ expand: '',
+ droplet: '',
+ "chevron-double-down": '',
+ "chevron-double-left": '',
+ "chevron-double-right": '',
+ "chevron-double-up": '',
+ "speech-bubble": '',
+ message: '',
+ annotation: '',
+ square: '',
+ "pull-request": '',
+ pencil: '',
+ sparkles: '',
+ photo: '',
+ columns: '',
+ "open-pane": '',
+ "close-pane": '',
+ "file-search": '',
+ "folder-search": '',
+ search: '',
+ "web-search": '',
+ loading: '',
+ mic: '',
+ } as const
+
+export function Icon(props: IconProps) {
+ const [local, others] = splitProps(props, ["name", "size", "class", "classList"])
+ const size = local.size ?? 24
+ return (
+
+ )
+}
diff --git a/packages/desktop/src/ui/index.ts b/packages/desktop/src/ui/index.ts
new file mode 100644
index 000000000..d3f24a192
--- /dev/null
+++ b/packages/desktop/src/ui/index.ts
@@ -0,0 +1,13 @@
+export { Button, type ButtonProps } from "./button"
+export {
+ Collapsible,
+ type CollapsibleProps,
+ type CollapsibleTriggerProps,
+ type CollapsibleContentProps,
+} from "./collapsible"
+export { FileIcon, type FileIconProps } from "./file-icon"
+export { Icon, type IconProps } from "./icon"
+export { IconButton, type IconButtonProps } from "./icon-button"
+export { Link, type LinkProps } from "./link"
+export { Logo, type LogoProps } from "./logo"
+export { Tooltip, type TooltipProps } from "./tooltip"
diff --git a/packages/desktop/src/ui/link.tsx b/packages/desktop/src/ui/link.tsx
new file mode 100644
index 000000000..461206d58
--- /dev/null
+++ b/packages/desktop/src/ui/link.tsx
@@ -0,0 +1,13 @@
+import { A } from "@solidjs/router"
+import { splitProps } from "solid-js"
+import type { ComponentProps } from "solid-js"
+
+export interface LinkProps extends ComponentProps {
+ variant?: "primary" | "secondary" | "ghost"
+ size?: "sm" | "md" | "lg"
+}
+
+export function Link(props: LinkProps) {
+ const [, others] = splitProps(props, ["variant", "size", "class"])
+ return
+}
diff --git a/packages/desktop/src/ui/logo.tsx b/packages/desktop/src/ui/logo.tsx
new file mode 100644
index 000000000..0bbaba835
--- /dev/null
+++ b/packages/desktop/src/ui/logo.tsx
@@ -0,0 +1,125 @@
+import type { ComponentProps } from "solid-js"
+
+export interface LogoProps extends ComponentProps<"svg"> {
+ variant?: "mark" | "full" | "ornate"
+ size?: number
+}
+
+export function Logo(props: LogoProps) {
+ const { variant = "mark", size = 64, ...others } = props
+
+ if (variant === "mark") {
+ return (
+
+
+
+
+ )
+ }
+
+ if (variant === "full") {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/packages/desktop/src/ui/tabs.tsx b/packages/desktop/src/ui/tabs.tsx
new file mode 100644
index 000000000..d82d3327a
--- /dev/null
+++ b/packages/desktop/src/ui/tabs.tsx
@@ -0,0 +1,71 @@
+import { Tabs as KobalteTabs } from "@kobalte/core/tabs"
+import { splitProps } from "solid-js"
+import type { ComponentProps, ParentProps } from "solid-js"
+
+export interface TabsProps extends ComponentProps {}
+export interface TabsListProps extends ComponentProps {}
+export interface TabsTriggerProps extends ComponentProps {}
+export interface TabsContentProps extends ComponentProps {}
+
+function TabsRoot(props: TabsProps) {
+ return
+}
+
+function TabsList(props: TabsListProps) {
+ const [local, others] = splitProps(props, ["class"])
+ return (
+
+ )
+}
+
+function TabsTrigger(props: ParentProps) {
+ const [local, others] = splitProps(props, ["class", "children"])
+ return (
+
+ {local.children}
+
+ )
+}
+
+function TabsContent(props: ParentProps) {
+ const [local, others] = splitProps(props, ["class", "children"])
+ return (
+
+ {local.children}
+
+ )
+}
+
+export const Tabs = Object.assign(TabsRoot, {
+ List: TabsList,
+ Trigger: TabsTrigger,
+ Content: TabsContent,
+})
diff --git a/packages/desktop/src/ui/tooltip.tsx b/packages/desktop/src/ui/tooltip.tsx
new file mode 100644
index 000000000..8bf1dc429
--- /dev/null
+++ b/packages/desktop/src/ui/tooltip.tsx
@@ -0,0 +1,58 @@
+import { Tooltip as KobalteTooltip } from "@kobalte/core/tooltip"
+import { children, createEffect, createSignal, splitProps } from "solid-js"
+import type { ComponentProps } from "solid-js"
+
+export interface TooltipProps extends ComponentProps {
+ value: string | (() => string)
+ class?: string
+}
+
+export function Tooltip(props: TooltipProps) {
+ const [open, setOpen] = createSignal(false)
+ const [local, others] = splitProps(props, ["class", "children"])
+
+ const c = children(() => local.children)
+
+ createEffect(() => {
+ const childElements = c()
+ if (childElements instanceof HTMLElement) {
+ childElements.addEventListener("focus", () => setOpen(true))
+ childElements.addEventListener("blur", () => setOpen(false))
+ } else if (Array.isArray(childElements)) {
+ for (const child of childElements) {
+ if (child instanceof HTMLElement) {
+ child.addEventListener("focus", () => setOpen(true))
+ child.addEventListener("blur", () => setOpen(false))
+ }
+ }
+ }
+ })
+
+ return (
+
+
+ {c()}
+
+
+
+ {typeof others.value === "function" ? others.value() : others.value}
+
+
+
+
+ )
+}
diff --git a/packages/desktop/src/utils/binary.ts b/packages/desktop/src/utils/binary.ts
new file mode 100644
index 000000000..3d8f61851
--- /dev/null
+++ b/packages/desktop/src/utils/binary.ts
@@ -0,0 +1,41 @@
+export namespace Binary {
+ export function search(array: T[], id: string, compare: (item: T) => string): { found: boolean; index: number } {
+ let left = 0
+ let right = array.length - 1
+
+ while (left <= right) {
+ const mid = Math.floor((left + right) / 2)
+ const midId = compare(array[mid])
+
+ if (midId === id) {
+ return { found: true, index: mid }
+ } else if (midId < id) {
+ left = mid + 1
+ } else {
+ right = mid - 1
+ }
+ }
+
+ return { found: false, index: left }
+ }
+
+ export function insert(array: T[], item: T, compare: (item: T) => string): T[] {
+ const id = compare(item)
+ let left = 0
+ let right = array.length
+
+ while (left < right) {
+ const mid = Math.floor((left + right) / 2)
+ const midId = compare(array[mid])
+
+ if (midId < id) {
+ left = mid + 1
+ } else {
+ right = mid
+ }
+ }
+
+ array.splice(left, 0, item)
+ return array
+ }
+}
diff --git a/packages/desktop/src/utils/dom.ts b/packages/desktop/src/utils/dom.ts
new file mode 100644
index 000000000..4f3724c7c
--- /dev/null
+++ b/packages/desktop/src/utils/dom.ts
@@ -0,0 +1,51 @@
+export function getCharacterOffsetInLine(lineElement: Element, targetNode: Node, offset: number): number {
+ const r = document.createRange()
+ r.selectNodeContents(lineElement)
+ r.setEnd(targetNode, offset)
+ return r.toString().length
+}
+
+export function getNodeOffsetInLine(lineElement: Element, charIndex: number): { node: Node; offset: number } | null {
+ const walker = document.createTreeWalker(lineElement, NodeFilter.SHOW_TEXT, null)
+ let remaining = Math.max(0, charIndex)
+ let lastText: Node | null = null
+ let lastLen = 0
+ let node: Node | null
+ while ((node = walker.nextNode())) {
+ const len = node.textContent?.length || 0
+ lastText = node
+ lastLen = len
+ if (remaining <= len) return { node, offset: remaining }
+ remaining -= len
+ }
+ if (lastText) return { node: lastText, offset: lastLen }
+ if (lineElement.firstChild) return { node: lineElement.firstChild, offset: 0 }
+ return null
+}
+
+export function getSelectionInContainer(
+ container: HTMLElement,
+): { sl: number; sch: number; el: number; ech: number } | null {
+ const s = window.getSelection()
+ if (!s || s.rangeCount === 0) return null
+ const r = s.getRangeAt(0)
+ const sc = r.startContainer
+ const ec = r.endContainer
+ const getLineElement = (n: Node) =>
+ (n.nodeType === Node.TEXT_NODE ? (n.parentElement as Element) : (n as Element))?.closest(".line")
+ const sle = getLineElement(sc)
+ const ele = getLineElement(ec)
+ if (!sle || !ele) return null
+ if (!container.contains(sle as Node) || !container.contains(ele as Node)) return null
+ const cc = container.querySelector("code") as HTMLElement | null
+ if (!cc) return null
+ const lines = Array.from(cc.querySelectorAll(".line"))
+ const sli = lines.indexOf(sle as Element)
+ const eli = lines.indexOf(ele as Element)
+ if (sli === -1 || eli === -1) return null
+ const sl = sli + 1
+ const el = eli + 1
+ const sch = getCharacterOffsetInLine(sle as Element, sc, r.startOffset)
+ const ech = getCharacterOffsetInLine(ele as Element, ec, r.endOffset)
+ return { sl, sch, el, ech }
+}
diff --git a/packages/desktop/src/utils/index.ts b/packages/desktop/src/utils/index.ts
new file mode 100644
index 000000000..ae89e4417
--- /dev/null
+++ b/packages/desktop/src/utils/index.ts
@@ -0,0 +1,2 @@
+export * from "./path"
+export * from "./dom"
diff --git a/packages/desktop/src/utils/path.ts b/packages/desktop/src/utils/path.ts
new file mode 100644
index 000000000..9c026ca41
--- /dev/null
+++ b/packages/desktop/src/utils/path.ts
@@ -0,0 +1,14 @@
+export function getFilename(path: string) {
+ const parts = path.split("/")
+ return parts[parts.length - 1]
+}
+
+export function getDirectory(path: string) {
+ const parts = path.split("/")
+ return parts.slice(0, parts.length - 1).join("/")
+}
+
+export function getFileExtension(path: string) {
+ const parts = path.split(".")
+ return parts[parts.length - 1]
+}
diff --git a/packages/desktop/src/utils/speech.ts b/packages/desktop/src/utils/speech.ts
new file mode 100644
index 000000000..921e0a159
--- /dev/null
+++ b/packages/desktop/src/utils/speech.ts
@@ -0,0 +1,302 @@
+import { createSignal, onCleanup } from "solid-js"
+
+// Minimal types to avoid relying on non-standard DOM typings
+type RecognitionResult = {
+ 0: { transcript: string }
+ isFinal: boolean
+}
+
+type RecognitionEvent = {
+ results: RecognitionResult[]
+ resultIndex: number
+}
+
+interface Recognition {
+ continuous: boolean
+ interimResults: boolean
+ lang: string
+ start: () => void
+ stop: () => void
+ onresult: ((e: RecognitionEvent) => void) | null
+ onerror: ((e: { error: string }) => void) | null
+ onend: (() => void) | null
+ onstart: (() => void) | null
+}
+
+const COMMIT_DELAY = 250
+
+const appendSegment = (base: string, addition: string) => {
+ const trimmed = addition.trim()
+ if (!trimmed) return base
+ if (!base) return trimmed
+ const needsSpace = /\S$/.test(base) && !/^[,.;!?]/.test(trimmed)
+ return `${base}${needsSpace ? " " : ""}${trimmed}`
+}
+
+const extractSuffix = (committed: string, hypothesis: string) => {
+ const cleanHypothesis = hypothesis.trim()
+ if (!cleanHypothesis) return ""
+ const baseTokens = committed.trim() ? committed.trim().split(/\s+/) : []
+ const hypothesisTokens = cleanHypothesis.split(/\s+/)
+ let index = 0
+ while (
+ index < baseTokens.length &&
+ index < hypothesisTokens.length &&
+ baseTokens[index] === hypothesisTokens[index]
+ ) {
+ index += 1
+ }
+ if (index < baseTokens.length) return ""
+ return hypothesisTokens.slice(index).join(" ")
+}
+
+export function createSpeechRecognition(opts?: {
+ lang?: string
+ onFinal?: (text: string) => void
+ onInterim?: (text: string) => void
+}) {
+ const hasSupport =
+ typeof window !== "undefined" &&
+ Boolean((window as any).webkitSpeechRecognition || (window as any).SpeechRecognition)
+
+ const [isRecording, setIsRecording] = createSignal(false)
+ const [committed, setCommitted] = createSignal("")
+ const [interim, setInterim] = createSignal("")
+
+ let recognition: Recognition | undefined
+ let shouldContinue = false
+ let committedText = ""
+ let sessionCommitted = ""
+ let pendingHypothesis = ""
+ let lastInterimSuffix = ""
+ let shrinkCandidate: string | undefined
+ let commitTimer: number | undefined
+
+ const cancelPendingCommit = () => {
+ if (commitTimer === undefined) return
+ clearTimeout(commitTimer)
+ commitTimer = undefined
+ }
+
+ const commitSegment = (segment: string) => {
+ const nextCommitted = appendSegment(committedText, segment)
+ if (nextCommitted === committedText) return
+ committedText = nextCommitted
+ setCommitted(committedText)
+ if (opts?.onFinal) opts.onFinal(segment.trim())
+ }
+
+ const promotePending = () => {
+ if (!pendingHypothesis) return
+ const suffix = extractSuffix(sessionCommitted, pendingHypothesis)
+ if (!suffix) {
+ pendingHypothesis = ""
+ return
+ }
+ sessionCommitted = appendSegment(sessionCommitted, suffix)
+ commitSegment(suffix)
+ pendingHypothesis = ""
+ lastInterimSuffix = ""
+ shrinkCandidate = undefined
+ setInterim("")
+ if (opts?.onInterim) opts.onInterim("")
+ }
+
+ const applyInterim = (suffix: string, hypothesis: string) => {
+ cancelPendingCommit()
+ pendingHypothesis = hypothesis
+ lastInterimSuffix = suffix
+ shrinkCandidate = undefined
+ setInterim(suffix)
+ if (opts?.onInterim) {
+ opts.onInterim(suffix ? appendSegment(committedText, suffix) : "")
+ }
+ if (!suffix) return
+ const snapshot = hypothesis
+ commitTimer = window.setTimeout(() => {
+ if (pendingHypothesis !== snapshot) return
+ const currentSuffix = extractSuffix(sessionCommitted, pendingHypothesis)
+ if (!currentSuffix) return
+ sessionCommitted = appendSegment(sessionCommitted, currentSuffix)
+ commitSegment(currentSuffix)
+ pendingHypothesis = ""
+ lastInterimSuffix = ""
+ shrinkCandidate = undefined
+ setInterim("")
+ if (opts?.onInterim) opts.onInterim("")
+ }, COMMIT_DELAY)
+ }
+
+ if (hasSupport) {
+ const Ctor: new () => Recognition = (window as any).webkitSpeechRecognition || (window as any).SpeechRecognition
+
+ recognition = new Ctor()
+ recognition.continuous = false
+ recognition.interimResults = true
+ recognition.lang = opts?.lang || (typeof navigator !== "undefined" ? navigator.language : "en-US")
+
+ recognition.onresult = (event: RecognitionEvent) => {
+ if (!event.results.length) return
+
+ let aggregatedFinal = ""
+ let latestHypothesis = ""
+
+ for (let i = 0; i < event.results.length; i += 1) {
+ const result = event.results[i]
+ const transcript = (result[0]?.transcript || "").trim()
+ if (!transcript) continue
+ if (result.isFinal) {
+ aggregatedFinal = appendSegment(aggregatedFinal, transcript)
+ } else {
+ latestHypothesis = transcript
+ }
+ }
+
+ if (aggregatedFinal) {
+ cancelPendingCommit()
+ const finalSuffix = extractSuffix(sessionCommitted, aggregatedFinal)
+ if (finalSuffix) {
+ sessionCommitted = appendSegment(sessionCommitted, finalSuffix)
+ commitSegment(finalSuffix)
+ }
+ pendingHypothesis = ""
+ lastInterimSuffix = ""
+ shrinkCandidate = undefined
+ setInterim("")
+ if (opts?.onInterim) opts.onInterim("")
+ return
+ }
+
+ cancelPendingCommit()
+
+ if (!latestHypothesis) {
+ shrinkCandidate = undefined
+ applyInterim("", "")
+ return
+ }
+
+ const suffix = extractSuffix(sessionCommitted, latestHypothesis)
+
+ if (!suffix) {
+ if (!lastInterimSuffix) {
+ shrinkCandidate = undefined
+ applyInterim("", latestHypothesis)
+ return
+ }
+ if (shrinkCandidate === "") {
+ applyInterim("", latestHypothesis)
+ return
+ }
+ shrinkCandidate = ""
+ pendingHypothesis = latestHypothesis
+ return
+ }
+
+ if (lastInterimSuffix && suffix.length < lastInterimSuffix.length) {
+ if (shrinkCandidate === suffix) {
+ applyInterim(suffix, latestHypothesis)
+ return
+ }
+ shrinkCandidate = suffix
+ pendingHypothesis = latestHypothesis
+ return
+ }
+
+ shrinkCandidate = undefined
+ applyInterim(suffix, latestHypothesis)
+ }
+
+ recognition.onerror = (e: { error: string }) => {
+ cancelPendingCommit()
+ lastInterimSuffix = ""
+ shrinkCandidate = undefined
+ if (e.error === "no-speech" && shouldContinue) {
+ setInterim("")
+ if (opts?.onInterim) opts.onInterim("")
+ setTimeout(() => {
+ try {
+ recognition?.start()
+ } catch {}
+ }, 150)
+ return
+ }
+ shouldContinue = false
+ setIsRecording(false)
+ }
+
+ recognition.onstart = () => {
+ sessionCommitted = ""
+ pendingHypothesis = ""
+ cancelPendingCommit()
+ lastInterimSuffix = ""
+ shrinkCandidate = undefined
+ setInterim("")
+ if (opts?.onInterim) opts.onInterim("")
+ setIsRecording(true)
+ }
+
+ recognition.onend = () => {
+ cancelPendingCommit()
+ lastInterimSuffix = ""
+ shrinkCandidate = undefined
+ setIsRecording(false)
+ if (shouldContinue) {
+ setTimeout(() => {
+ try {
+ recognition?.start()
+ } catch {}
+ }, 150)
+ }
+ }
+ }
+
+ const start = () => {
+ if (!recognition) return
+ shouldContinue = true
+ sessionCommitted = ""
+ pendingHypothesis = ""
+ cancelPendingCommit()
+ lastInterimSuffix = ""
+ shrinkCandidate = undefined
+ setInterim("")
+ try {
+ recognition.start()
+ } catch {}
+ }
+
+ const stop = () => {
+ if (!recognition) return
+ shouldContinue = false
+ promotePending()
+ cancelPendingCommit()
+ lastInterimSuffix = ""
+ shrinkCandidate = undefined
+ setInterim("")
+ if (opts?.onInterim) opts.onInterim("")
+ try {
+ recognition.stop()
+ } catch {}
+ }
+
+ onCleanup(() => {
+ shouldContinue = false
+ promotePending()
+ cancelPendingCommit()
+ lastInterimSuffix = ""
+ shrinkCandidate = undefined
+ setInterim("")
+ if (opts?.onInterim) opts.onInterim("")
+ try {
+ recognition?.stop()
+ } catch {}
+ })
+
+ return {
+ isSupported: () => hasSupport,
+ isRecording,
+ committed,
+ interim,
+ start,
+ stop,
+ }
+}
diff --git a/packages/desktop/sst-env.d.ts b/packages/desktop/sst-env.d.ts
new file mode 100644
index 000000000..b6a7e9066
--- /dev/null
+++ b/packages/desktop/sst-env.d.ts
@@ -0,0 +1,9 @@
+/* This file is auto-generated by SST. Do not edit. */
+/* tslint:disable */
+/* eslint-disable */
+/* deno-fmt-ignore-file */
+
+///
+
+import "sst"
+export {}
\ No newline at end of file
diff --git a/packages/desktop/tsconfig.json b/packages/desktop/tsconfig.json
new file mode 100644
index 000000000..d86b8ca46
--- /dev/null
+++ b/packages/desktop/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "extends": "@tsconfig/bun/tsconfig.json",
+ "compilerOptions": {
+ "jsx": "preserve",
+ "jsxImportSource": "solid-js",
+ "types": ["vite/client"],
+ "lib": ["DOM", "DOM.Iterable"],
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ }
+}
diff --git a/packages/desktop/vite.config.ts b/packages/desktop/vite.config.ts
new file mode 100644
index 000000000..e0a62f5f5
--- /dev/null
+++ b/packages/desktop/vite.config.ts
@@ -0,0 +1,32 @@
+import { defineConfig } from "vite"
+import solidPlugin from "vite-plugin-solid"
+import tailwindcss from "@tailwindcss/vite"
+import path from "path"
+import { iconsSpritesheet } from "vite-plugin-icons-spritesheet"
+import { generateThemeCSS } from "./scripts/vite-theme-plugin"
+
+export default defineConfig({
+ resolve: {
+ alias: {
+ "@": path.resolve(__dirname, "./src"),
+ },
+ },
+ plugins: [
+ generateThemeCSS(),
+ tailwindcss(),
+ solidPlugin(),
+ iconsSpritesheet({
+ withTypes: true,
+ inputDir: "src/assets/file-icons",
+ outputDir: "src/ui/file-icons",
+ formatter: "prettier",
+ }),
+ ],
+ server: {
+ host: "0.0.0.0",
+ port: 3000,
+ },
+ build: {
+ target: "esnext",
+ },
+})
--
cgit v1.2.3