From efc2ad8c3fac4a74c17549fc7859b418ea68551a Mon Sep 17 00:00:00 2001 From: intergrav Date: Mon, 6 Jul 2026 05:01:24 -0400 Subject: [PATCH] refactor: remove wails i don't think it's worth maintaining desktop support right now. it makes the build system and project structure too complex and i wanted to keep this simple later i want to maybe switch the project over to deno in the future, as deno desktop is looking really cool and we could support that: https://docs.deno.com/runtime/desktop --- .gitignore | 13 +- README.md | 4 +- Taskfile.yml | 58 - frontend/biome.json => biome.json | 3 +- build/Taskfile.yml | 369 ----- build/android/Taskfile.yml | 290 ---- build/android/app/build.gradle | 83 -- build/android/app/proguard-rules.pro | 12 - .../android/app/src/main/AndroidManifest.xml | 63 - .../main/java/com/wails/app/MainActivity.java | 806 ---------- .../main/java/com/wails/app/WailsBridge.java | 1310 ----------------- .../com/wails/app/WailsForegroundService.java | 74 - .../java/com/wails/app/WailsJSBridge.java | 151 -- .../java/com/wails/app/WailsPathHandler.java | 68 - .../app/src/main/res/layout/activity_main.xml | 12 - .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 2338 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 2338 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 1652 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 1652 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 3276 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 3276 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 5202 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 5202 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 7198 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 7198 -> 0 bytes .../app/src/main/res/values/colors.xml | 8 - .../app/src/main/res/values/strings.xml | 4 - .../app/src/main/res/values/themes.xml | 14 - .../app/src/main/res/xml/file_paths.xml | 6 - build/android/build.gradle | 4 - build/android/gradle.properties | 26 - .../android/gradle/wrapper/gradle-wrapper.jar | Bin 45633 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 - build/android/gradlew | 248 ---- build/android/gradlew.bat | 93 -- build/android/main_android.go | 11 - build/android/scripts/deps/install_deps.go | 151 -- build/android/settings.gradle | 18 - build/appicon.icon/Assets/bg.svg | 12 - build/appicon.icon/Assets/fg.svg | 5 - build/appicon.icon/icon.json | 47 - build/appicon.png | Bin 85218 -> 0 bytes build/config.yml | 79 - build/darwin/Assets.car | Bin 1403144 -> 0 bytes build/darwin/Info.dev.plist | 35 - build/darwin/Info.plist | 30 - build/darwin/Taskfile.yml | 193 --- build/darwin/icons.icns | Bin 47205 -> 0 bytes build/docker/Dockerfile.cross | 220 --- build/docker/Dockerfile.server | 41 - build/ios/Assets.xcassets | 116 -- build/ios/Info.dev.plist | 56 - build/ios/Info.plist | 54 - build/ios/LaunchScreen.storyboard | 53 - build/ios/Taskfile.yml | 365 ----- build/ios/app_options_default.go | 10 - build/ios/app_options_ios.go | 11 - build/ios/entitlements.plist | 8 - build/ios/icon.png | 3 - build/ios/main.m | 22 - build/ios/main_ios.go | 23 - build/ios/project.pbxproj | 222 --- build/ios/scripts/deps/install_deps.go | 319 ---- build/linux/Taskfile.yml | 224 --- build/linux/appimage/build.sh | 35 - build/linux/desktop | 13 - build/linux/nfpm/nfpm.yaml | 80 - build/linux/nfpm/scripts/postinstall.sh | 21 - build/linux/nfpm/scripts/postremove.sh | 1 - build/linux/nfpm/scripts/preinstall.sh | 1 - build/linux/nfpm/scripts/preremove.sh | 1 - build/windows/Taskfile.yml | 197 --- build/windows/icon.ico | Bin 21625 -> 0 bytes build/windows/info.json | 15 - build/windows/msix/app_manifest.xml | 55 - build/windows/msix/template.xml | 54 - build/windows/nsis/project.nsi | 119 -- build/windows/nsis/wails_tools.nsh | 261 ---- build/windows/wails.exe.manifest | 22 - contextmenu_service.go | 54 - dialog_service.go | 27 - flake.nix | 33 +- frontend/.gitignore | 3 - .../wailsapp/wails/v3/internal/eventcreate.js | 9 - .../wailsapp/wails/v3/internal/eventdata.d.ts | 2 - .../bindings/tinysub/contextmenuservice.js | 21 - frontend/bindings/tinysub/dialogservice.js | 23 - frontend/bindings/tinysub/index.js | 16 - frontend/bindings/tinysub/models.js | 64 - frontend/bindings/tinysub/windowservice.js | 32 - frontend/knip.json | 4 - frontend/src/lib/dialogs/index.ts | 24 - frontend/src/lib/nativeMenu.ts | 28 - frontend/src/lib/wails.ts | 15 - frontend/svelte.config.js | 2 - go.mod | 17 - go.sum | 36 - frontend/index.html => index.html | 0 knip.json | 4 + main.go | 74 - .../package-lock.json => package-lock.json | 841 ++++++----- frontend/package.json => package.json | 22 +- .../apple-touch-icon-180x180.png | Bin {frontend/public => public}/favicon.ico | Bin {frontend/public => public}/favicon.svg | 0 .../maskable-icon-512x512.png | Bin {frontend/public => public}/pwa-192x192.png | Bin {frontend/public => public}/pwa-512x512.png | Bin {frontend/public => public}/pwa-64x64.png | Bin {frontend/public => public}/robots.txt | 0 ...a-assets.config.ts => pwa-assets.config.ts | 0 scripts/version.mjs | 63 - {frontend/src => src}/App.svelte | 51 - {frontend/src => src}/app.css | 34 - .../assets/famfamfam-silk-svg/LICENSE | 0 .../assets/famfamfam-silk-svg/README.md | 0 .../famfamfam-silk-svg/decorators/add.svg | 0 .../decorators/arrow come.svg | 0 .../decorators/arrow down.svg | 0 .../decorators/arrow go.svg | 0 .../decorators/arrow left down.svg | 0 .../decorators/arrow refresh.svg | 0 .../decorators/arrow up.svg | 0 .../famfamfam-silk-svg/decorators/attach.svg | 0 .../decorators/audio wave.svg | 0 .../famfamfam-silk-svg/decorators/bell.svg | 0 .../famfamfam-silk-svg/decorators/black.svg | 0 .../decorators/blue gray.svg | 0 .../famfamfam-silk-svg/decorators/blue.svg | 0 .../decorators/brick gray.svg | 0 .../decorators/brick red.svg | 0 .../decorators/brick white.svg | 0 .../famfamfam-silk-svg/decorators/brush.svg | 0 .../famfamfam-silk-svg/decorators/bug.svg | 0 .../famfamfam-silk-svg/decorators/camera.svg | 0 .../decorators/carret bottom.svg | 0 .../decorators/carret down.svg | 0 .../decorators/carret top.svg | 0 .../decorators/carret up.svg | 0 .../famfamfam-silk-svg/decorators/cd.svg | 0 .../decorators/chart bars.svg | 0 .../decorators/chevron blue.svg | 0 .../decorators/chevron red.svg | 0 .../famfamfam-silk-svg/decorators/cog.svg | 0 .../decorators/collapse.svg | 0 .../famfamfam-silk-svg/decorators/comment.svg | 0 .../decorators/compress.svg | 0 .../famfamfam-silk-svg/decorators/cup.svg | 0 .../decorators/database.svg | 0 .../famfamfam-silk-svg/decorators/disk.svg | 0 .../famfamfam-silk-svg/decorators/dvd.svg | 0 .../famfamfam-silk-svg/decorators/eject.svg | 0 .../famfamfam-silk-svg/decorators/error.svg | 0 .../famfamfam-silk-svg/decorators/excel.svg | 0 .../famfamfam-silk-svg/decorators/expand.svg | 0 .../decorators/feed square.svg | 0 .../famfamfam-silk-svg/decorators/feed.svg | 0 .../famfamfam-silk-svg/decorators/flame.svg | 0 .../decorators/foutain pen.svg | 0 .../famfamfam-silk-svg/decorators/goggles.svg | 0 .../famfamfam-silk-svg/decorators/green.svg | 0 .../famfamfam-silk-svg/decorators/heart.svg | 0 .../famfamfam-silk-svg/decorators/house.svg | 0 .../decorators/image decorator blue.svg | 0 .../decorators/image decorator green.svg | 0 .../decorators/image decorator red.svg | 0 .../famfamfam-silk-svg/decorators/key.svg | 0 .../decorators/lightbulb.svg | 0 .../decorators/lightning.svg | 0 .../famfamfam-silk-svg/decorators/link.svg | 0 .../famfamfam-silk-svg/decorators/lock.svg | 0 .../decorators/magnifier.svg | 0 .../famfamfam-silk-svg/decorators/minus.svg | 0 .../decorators/next item.svg | 0 .../decorators/office 2012.svg | 0 .../decorators/office 365.svg | 0 .../famfamfam-silk-svg/decorators/onenote.svg | 0 .../famfamfam-silk-svg/decorators/orange.svg | 0 .../decorators/outlook-1.svg | 0 .../famfamfam-silk-svg/decorators/outlook.svg | 0 .../decorators/page blue.svg | 0 .../decorators/page white.svg | 0 .../famfamfam-silk-svg/decorators/palette.svg | 0 .../famfamfam-silk-svg/decorators/pause.svg | 0 .../famfamfam-silk-svg/decorators/pen.svg | 0 .../famfamfam-silk-svg/decorators/photo.svg | 0 .../famfamfam-silk-svg/decorators/picture.svg | 0 .../famfamfam-silk-svg/decorators/pink.svg | 0 .../famfamfam-silk-svg/decorators/play.svg | 0 .../famfamfam-silk-svg/decorators/plug.svg | 0 .../famfamfam-silk-svg/decorators/plus.svg | 0 .../decorators/powerpoint-1.svg | 0 .../decorators/powerpoint.svg | 0 .../decorators/previous item.svg | 0 .../famfamfam-silk-svg/decorators/purple.svg | 0 .../famfamfam-silk-svg/decorators/red.svg | 0 .../famfamfam-silk-svg/decorators/remove.svg | 0 .../famfamfam-silk-svg/decorators/star.svg | 0 .../famfamfam-silk-svg/decorators/stop.svg | 0 .../famfamfam-silk-svg/decorators/table.svg | 0 .../famfamfam-silk-svg/decorators/teams.svg | 0 .../famfamfam-silk-svg/decorators/text.svg | 0 .../famfamfam-silk-svg/decorators/time.svg | 0 .../decorators/trash lid.svg | 0 .../famfamfam-silk-svg/decorators/tux.svg | 0 .../decorators/uncompress.svg | 0 .../famfamfam-silk-svg/decorators/unlink.svg | 0 .../decorators/user blue.svg | 0 .../decorators/user gray.svg | 0 .../decorators/user green.svg | 0 .../decorators/visual studio.svg | 0 .../famfamfam-silk-svg/decorators/white.svg | 0 .../famfamfam-silk-svg/decorators/word.svg | 0 .../decorators/world deco.svg | 0 .../famfamfam-silk-svg/decorators/wrench.svg | 0 .../famfamfam-silk-svg/decorators/yellow.svg | 0 .../famfamfam-silk-svg/icons/Accept.svg | 0 .../assets/famfamfam-silk-svg/icons/Add.svg | 0 .../famfamfam-silk-svg/icons/Anchor.svg | 0 .../icons/Application XP.svg | 0 .../icons/Application add.svg | 0 .../icons/Application cascade.svg | 0 .../icons/Application delete.svg | 0 .../icons/Application double.svg | 0 .../icons/Application edit.svg | 0 .../icons/Application error.svg | 0 .../icons/Application form add.svg | 0 .../icons/Application form delete.svg | 0 .../icons/Application form edit.svg | 0 .../icons/Application form magnify.svg | 0 .../icons/Application form.svg | 0 .../icons/Application get.svg | 0 .../icons/Application go.svg | 0 .../icons/Application home.svg | 0 .../icons/Application key.svg | 0 .../icons/Application lightning.svg | 0 .../icons/Application link.svg | 0 .../icons/Application macOS.svg | 0 .../icons/Application put.svg | 0 .../icons/Application side box.svg | 0 .../icons/Application side collapse.svg | 0 .../icons/Application side expand.svg | 0 .../icons/Application side list.svg | 0 .../icons/Application side tree.svg | 0 .../icons/Application split.svg | 0 .../icons/Application tile horizontal.svg | 0 .../icons/Application tile vertical.svg | 0 .../icons/Application view column.svg | 0 .../icons/Application view detail.svg | 0 .../icons/Application view gallery.svg | 0 .../icons/Application view icons.svg | 0 .../icons/Application view list.svg | 0 .../icons/Application view tile.svg | 0 .../famfamfam-silk-svg/icons/Application.svg | 0 .../famfamfam-silk-svg/icons/Arrow Branch.svg | 0 .../famfamfam-silk-svg/icons/Arrow Divide.svg | 0 .../famfamfam-silk-svg/icons/Arrow Down.svg | 0 .../famfamfam-silk-svg/icons/Arrow In out.svg | 0 .../famfamfam-silk-svg/icons/Arrow In.svg | 0 .../famfamfam-silk-svg/icons/Arrow Join.svg | 0 .../famfamfam-silk-svg/icons/Arrow Left.svg | 0 .../famfamfam-silk-svg/icons/Arrow Merge.svg | 0 .../famfamfam-silk-svg/icons/Arrow Out.svg | 0 .../famfamfam-silk-svg/icons/Arrow Redo.svg | 0 .../icons/Arrow Refresh.svg | 0 .../famfamfam-silk-svg/icons/Arrow Right.svg | 0 .../icons/Arrow Rotate ACW.svg | 0 .../icons/Arrow Rotate CW.svg | 0 .../famfamfam-silk-svg/icons/Arrow Switch.svg | 0 .../icons/Arrow Turn left.svg | 0 .../icons/Arrow Turn right.svg | 0 .../famfamfam-silk-svg/icons/Arrow Undo.svg | 0 .../famfamfam-silk-svg/icons/Arrow Up.svg | 0 .../icons/Asterisk orange.svg | 0 .../icons/Asterisk yellow.svg | 0 .../famfamfam-silk-svg/icons/Attach.svg | 0 .../icons/Award star add.svg | 0 .../icons/Award star bronze blue.svg | 0 .../icons/Award star bronze green.svg | 0 .../icons/Award star bronze red.svg | 0 .../icons/Award star delete.svg | 0 .../icons/Award star gold blue.svg | 0 .../icons/Award star gold green.svg | 0 .../icons/Award star gold red.svg | 0 .../icons/Award star silver blue.svg | 0 .../icons/Award star silver green.svg | 0 .../icons/Award star silver red.svg | 0 .../famfamfam-silk-svg/icons/Basket add.svg | 0 .../icons/Basket delete.svg | 0 .../famfamfam-silk-svg/icons/Basket edit.svg | 0 .../famfamfam-silk-svg/icons/Basket error.svg | 0 .../famfamfam-silk-svg/icons/Basket go.svg | 0 .../famfamfam-silk-svg/icons/Basket put.svg | 0 .../icons/Basket remove.svg | 0 .../famfamfam-silk-svg/icons/Basket.svg | 0 .../famfamfam-silk-svg/icons/Bell add.svg | 0 .../famfamfam-silk-svg/icons/Bell delete.svg | 0 .../famfamfam-silk-svg/icons/Bell error.svg | 0 .../famfamfam-silk-svg/icons/Bell go.svg | 0 .../famfamfam-silk-svg/icons/Bell link.svg | 0 .../assets/famfamfam-silk-svg/icons/Bell.svg | 0 .../famfamfam-silk-svg/icons/Bin closed.svg | 0 .../famfamfam-silk-svg/icons/Bin empty.svg | 0 .../assets/famfamfam-silk-svg/icons/Bin.svg | 0 .../assets/famfamfam-silk-svg/icons/Bomb.svg | 0 .../famfamfam-silk-svg/icons/Book add.svg | 0 .../icons/Book addresses.svg | 0 .../famfamfam-silk-svg/icons/Book delete.svg | 0 .../famfamfam-silk-svg/icons/Book edit.svg | 0 .../famfamfam-silk-svg/icons/Book error.svg | 0 .../famfamfam-silk-svg/icons/Book go.svg | 0 .../famfamfam-silk-svg/icons/Book key.svg | 0 .../famfamfam-silk-svg/icons/Book link.svg | 0 .../famfamfam-silk-svg/icons/Book next.svg | 0 .../famfamfam-silk-svg/icons/Book open.svg | 0 .../icons/Book previous.svg | 0 .../assets/famfamfam-silk-svg/icons/Book.svg | 0 .../assets/famfamfam-silk-svg/icons/Box.svg | 0 .../famfamfam-silk-svg/icons/Brick add.svg | 0 .../famfamfam-silk-svg/icons/Brick delete.svg | 0 .../famfamfam-silk-svg/icons/Brick edit.svg | 0 .../famfamfam-silk-svg/icons/Brick error.svg | 0 .../famfamfam-silk-svg/icons/Brick go.svg | 0 .../famfamfam-silk-svg/icons/Brick link.svg | 0 .../assets/famfamfam-silk-svg/icons/Brick.svg | 0 .../famfamfam-silk-svg/icons/Bricks.svg | 0 .../famfamfam-silk-svg/icons/Briefcase.svg | 0 .../famfamfam-silk-svg/icons/Bug add.svg | 0 .../famfamfam-silk-svg/icons/Bug delete.svg | 0 .../famfamfam-silk-svg/icons/Bug edit.svg | 0 .../famfamfam-silk-svg/icons/Bug error.svg | 0 .../famfamfam-silk-svg/icons/Bug go.svg | 0 .../famfamfam-silk-svg/icons/Bug link.svg | 0 .../assets/famfamfam-silk-svg/icons/Bug.svg | 0 .../famfamfam-silk-svg/icons/Building add.svg | 0 .../icons/Building delete.svg | 0 .../icons/Building edit.svg | 0 .../icons/Building error.svg | 0 .../famfamfam-silk-svg/icons/Building go.svg | 0 .../famfamfam-silk-svg/icons/Building key.svg | 0 .../icons/Building link.svg | 0 .../famfamfam-silk-svg/icons/Building.svg | 0 .../famfamfam-silk-svg/icons/Bullet add.svg | 0 .../famfamfam-silk-svg/icons/Bullet black.svg | 0 .../famfamfam-silk-svg/icons/Bullet blue.svg | 0 .../icons/Bullet carret bottom.svg | 0 .../icons/Bullet carret down.svg | 0 .../icons/Bullet carret top.svg | 0 .../icons/Bullet carret up.svg | 0 .../icons/Bullet delete.svg | 0 .../famfamfam-silk-svg/icons/Bullet disk.svg | 0 .../famfamfam-silk-svg/icons/Bullet error.svg | 0 .../famfamfam-silk-svg/icons/Bullet feed.svg | 0 .../famfamfam-silk-svg/icons/Bullet go.svg | 0 .../famfamfam-silk-svg/icons/Bullet green.svg | 0 .../famfamfam-silk-svg/icons/Bullet key.svg | 0 .../icons/Bullet orange.svg | 0 .../icons/Bullet picture.svg | 0 .../famfamfam-silk-svg/icons/Bullet pink.svg | 0 .../icons/Bullet purple.svg | 0 .../famfamfam-silk-svg/icons/Bullet red.svg | 0 .../famfamfam-silk-svg/icons/Bullet star.svg | 0 .../icons/Bullet toggle minus.svg | 0 .../icons/Bullet toggle plus.svg | 0 .../famfamfam-silk-svg/icons/Bullet white.svg | 0 .../icons/Bullet wrench.svg | 0 .../icons/Bullet yellow.svg | 0 .../famfamfam-silk-svg/icons/CD add.svg | 0 .../famfamfam-silk-svg/icons/CD burn.svg | 0 .../famfamfam-silk-svg/icons/CD delete.svg | 0 .../famfamfam-silk-svg/icons/CD edit.svg | 0 .../famfamfam-silk-svg/icons/CD eject.svg | 0 .../assets/famfamfam-silk-svg/icons/CD go.svg | 0 .../assets/famfamfam-silk-svg/icons/CD.svg | 0 .../famfamfam-silk-svg/icons/CSS add.svg | 0 .../famfamfam-silk-svg/icons/CSS delete.svg | 0 .../famfamfam-silk-svg/icons/CSS go.svg | 0 .../famfamfam-silk-svg/icons/CSS valid.svg | 0 .../assets/famfamfam-silk-svg/icons/CSS.svg | 0 .../assets/famfamfam-silk-svg/icons/Cake.svg | 0 .../icons/Calculator add.svg | 0 .../icons/Calculator delete.svg | 0 .../icons/Calculator edit.svg | 0 .../icons/Calculator error.svg | 0 .../icons/Calculator link.svg | 0 .../famfamfam-silk-svg/icons/Calculator.svg | 0 .../famfamfam-silk-svg/icons/Calendar add.svg | 0 .../icons/Calendar delete.svg | 0 .../icons/Calendar edit.svg | 0 .../icons/Calendar link.svg | 0 .../icons/Calendar view day.svg | 0 .../icons/Calendar view month.svg | 0 .../icons/Calendar view week.svg | 0 .../famfamfam-silk-svg/icons/Calendar.svg | 0 .../famfamfam-silk-svg/icons/Camera Add.svg | 0 .../icons/Camera Delete.svg | 0 .../famfamfam-silk-svg/icons/Camera Edit.svg | 0 .../famfamfam-silk-svg/icons/Camera Error.svg | 0 .../famfamfam-silk-svg/icons/Camera Go.svg | 0 .../famfamfam-silk-svg/icons/Camera Link.svg | 0 .../famfamfam-silk-svg/icons/Camera Small.svg | 0 .../famfamfam-silk-svg/icons/Camera.svg | 0 .../famfamfam-silk-svg/icons/Cancel.svg | 0 .../famfamfam-silk-svg/icons/Car add.svg | 0 .../famfamfam-silk-svg/icons/Car delete.svg | 0 .../assets/famfamfam-silk-svg/icons/Car.svg | 0 .../famfamfam-silk-svg/icons/Cart add.svg | 0 .../famfamfam-silk-svg/icons/Cart delete.svg | 0 .../famfamfam-silk-svg/icons/Cart edit.svg | 0 .../famfamfam-silk-svg/icons/Cart error.svg | 0 .../famfamfam-silk-svg/icons/Cart go.svg | 0 .../famfamfam-silk-svg/icons/Cart put.svg | 0 .../famfamfam-silk-svg/icons/Cart remove.svg | 0 .../assets/famfamfam-silk-svg/icons/Cart.svg | 0 .../icons/Chart Organisation add.svg | 0 .../icons/Chart Organisation delete.svg | 0 .../icons/Chart Organisation.svg | 0 .../icons/Chart Pie Add.svg | 0 .../icons/Chart Pie Delete.svg | 0 .../icons/Chart Pie Edit.svg | 0 .../icons/Chart Pie Error.svg | 0 .../icons/Chart Pie Link.svg | 0 .../famfamfam-silk-svg/icons/Chart Pie.svg | 0 .../icons/Chart bar add.svg | 0 .../icons/Chart bar delete.svg | 0 .../icons/Chart bar edit.svg | 0 .../icons/Chart bar error.svg | 0 .../icons/Chart bar link.svg | 0 .../famfamfam-silk-svg/icons/Chart bar.svg | 0 .../icons/Chart curve add.svg | 0 .../icons/Chart curve delete.svg | 0 .../icons/Chart curve edit.svg | 0 .../icons/Chart curve error.svg | 0 .../icons/Chart curve go.svg | 0 .../icons/Chart curve link.svg | 0 .../famfamfam-silk-svg/icons/Chart curve.svg | 0 .../icons/Chart line add.svg | 0 .../icons/Chart line delete.svg | 0 .../icons/Chart line edit.svg | 0 .../icons/Chart line error.svg | 0 .../icons/Chart line link.svg | 0 .../famfamfam-silk-svg/icons/Chart line.svg | 0 .../famfamfam-silk-svg/icons/Clock add.svg | 0 .../famfamfam-silk-svg/icons/Clock delete.svg | 0 .../famfamfam-silk-svg/icons/Clock edit.svg | 0 .../famfamfam-silk-svg/icons/Clock error.svg | 0 .../famfamfam-silk-svg/icons/Clock go.svg | 0 .../famfamfam-silk-svg/icons/Clock link.svg | 0 .../famfamfam-silk-svg/icons/Clock pause.svg | 0 .../famfamfam-silk-svg/icons/Clock play.svg | 0 .../famfamfam-silk-svg/icons/Clock red.svg | 0 .../famfamfam-silk-svg/icons/Clock stop.svg | 0 .../assets/famfamfam-silk-svg/icons/Clock.svg | 0 .../famfamfam-silk-svg/icons/Cog add.svg | 0 .../famfamfam-silk-svg/icons/Cog delete.svg | 0 .../famfamfam-silk-svg/icons/Cog edit.svg | 0 .../famfamfam-silk-svg/icons/Cog error.svg | 0 .../famfamfam-silk-svg/icons/Cog go.svg | 0 .../assets/famfamfam-silk-svg/icons/Cog.svg | 0 .../famfamfam-silk-svg/icons/Coins add.svg | 0 .../famfamfam-silk-svg/icons/Coins delete.svg | 0 .../assets/famfamfam-silk-svg/icons/Coins.svg | 0 .../famfamfam-silk-svg/icons/Color swatch.svg | 0 .../famfamfam-silk-svg/icons/Color wheel.svg | 0 .../famfamfam-silk-svg/icons/Comment add.svg | 0 .../icons/Comment delete.svg | 0 .../famfamfam-silk-svg/icons/Comment edit.svg | 0 .../famfamfam-silk-svg/icons/Comment.svg | 0 .../famfamfam-silk-svg/icons/Comments add.svg | 0 .../icons/Comments delete.svg | 0 .../famfamfam-silk-svg/icons/Comments.svg | 0 .../famfamfam-silk-svg/icons/Compress.svg | 0 .../famfamfam-silk-svg/icons/Computer add.svg | 0 .../icons/Computer delete.svg | 0 .../icons/Computer edit.svg | 0 .../icons/Computer error.svg | 0 .../famfamfam-silk-svg/icons/Computer go.svg | 0 .../famfamfam-silk-svg/icons/Computer key.svg | 0 .../icons/Computer link.svg | 0 .../famfamfam-silk-svg/icons/Computer.svg | 0 .../famfamfam-silk-svg/icons/Connect.svg | 0 .../icons/Contrast decrease.svg | 0 .../icons/Contrast high.svg | 0 .../icons/Contrast increase.svg | 0 .../famfamfam-silk-svg/icons/Contrast low.svg | 0 .../famfamfam-silk-svg/icons/Contrast.svg | 0 .../icons/Control eject blue.svg | 0 .../icons/Control eject.svg | 0 .../icons/Control end blue.svg | 0 .../famfamfam-silk-svg/icons/Control end.svg | 0 .../icons/Control equalizer blue.svg | 0 .../icons/Control equalizer.svg | 0 .../icons/Control fastforward blue.svg | 0 .../icons/Control fastforward.svg | 0 .../icons/Control pause blue.svg | 0 .../icons/Control pause.svg | 0 .../icons/Control play blue.svg | 0 .../famfamfam-silk-svg/icons/Control play.svg | 0 .../icons/Control repeat blue.svg | 0 .../icons/Control repeat.svg | 0 .../icons/Control rewind blue.svg | 0 .../icons/Control rewind.svg | 0 .../icons/Control start blue.svg | 0 .../icons/Control start.svg | 0 .../icons/Control stop blue.svg | 0 .../famfamfam-silk-svg/icons/Control stop.svg | 0 .../icons/Controller add.svg | 0 .../icons/Controller delete.svg | 0 .../icons/Controller error.svg | 0 .../famfamfam-silk-svg/icons/Controller.svg | 0 .../famfamfam-silk-svg/icons/Credit Card.svg | 0 .../assets/famfamfam-silk-svg/icons/Cross.svg | 0 .../famfamfam-silk-svg/icons/Cup add.svg | 0 .../famfamfam-silk-svg/icons/Cup delete.svg | 0 .../famfamfam-silk-svg/icons/Cup edit.svg | 0 .../famfamfam-silk-svg/icons/Cup error.svg | 0 .../famfamfam-silk-svg/icons/Cup go.svg | 0 .../famfamfam-silk-svg/icons/Cup key.svg | 0 .../famfamfam-silk-svg/icons/Cup link.svg | 0 .../assets/famfamfam-silk-svg/icons/Cup.svg | 0 .../famfamfam-silk-svg/icons/Cursor.svg | 0 .../famfamfam-silk-svg/icons/Cut red.svg | 0 .../assets/famfamfam-silk-svg/icons/Cut.svg | 0 .../famfamfam-silk-svg/icons/DVD add.svg | 0 .../famfamfam-silk-svg/icons/DVD delete.svg | 0 .../famfamfam-silk-svg/icons/DVD edit.svg | 0 .../famfamfam-silk-svg/icons/DVD error.svg | 0 .../famfamfam-silk-svg/icons/DVD go.svg | 0 .../famfamfam-silk-svg/icons/DVD key.svg | 0 .../famfamfam-silk-svg/icons/DVD link.svg | 0 .../assets/famfamfam-silk-svg/icons/DVD.svg | 0 .../famfamfam-silk-svg/icons/Database add.svg | 0 .../icons/Database connect.svg | 0 .../icons/Database delete.svg | 0 .../icons/Database edit.svg | 0 .../icons/Database error.svg | 0 .../icons/Database gear.svg | 0 .../famfamfam-silk-svg/icons/Database go.svg | 0 .../famfamfam-silk-svg/icons/Database key.svg | 0 .../icons/Database lightning.svg | 0 .../icons/Database link.svg | 0 .../icons/Database refresh.svg | 0 .../icons/Database save.svg | 0 .../icons/Database table.svg | 0 .../famfamfam-silk-svg/icons/Database.svg | 0 .../famfamfam-silk-svg/icons/Date add.svg | 0 .../famfamfam-silk-svg/icons/Date delete.svg | 0 .../famfamfam-silk-svg/icons/Date edit.svg | 0 .../famfamfam-silk-svg/icons/Date error.svg | 0 .../famfamfam-silk-svg/icons/Date go.svg | 0 .../famfamfam-silk-svg/icons/Date link.svg | 0 .../famfamfam-silk-svg/icons/Date magnify.svg | 0 .../famfamfam-silk-svg/icons/Date next.svg | 0 .../icons/Date previous.svg | 0 .../assets/famfamfam-silk-svg/icons/Date.svg | 0 .../famfamfam-silk-svg/icons/Delete.svg | 0 .../famfamfam-silk-svg/icons/Disconnect.svg | 0 .../icons/Disk multiple.svg | 0 .../assets/famfamfam-silk-svg/icons/Disk.svg | 0 .../famfamfam-silk-svg/icons/Door in.svg | 0 .../famfamfam-silk-svg/icons/Door open.svg | 0 .../famfamfam-silk-svg/icons/Door out.svg | 0 .../assets/famfamfam-silk-svg/icons/Door.svg | 0 .../famfamfam-silk-svg/icons/Drink empty.svg | 0 .../assets/famfamfam-silk-svg/icons/Drink.svg | 0 .../icons/Drive CD empty.svg | 0 .../famfamfam-silk-svg/icons/Drive CD.svg | 0 .../famfamfam-silk-svg/icons/Drive add.svg | 0 .../famfamfam-silk-svg/icons/Drive burn.svg | 0 .../famfamfam-silk-svg/icons/Drive delete.svg | 0 .../famfamfam-silk-svg/icons/Drive disk.svg | 0 .../famfamfam-silk-svg/icons/Drive edit.svg | 0 .../famfamfam-silk-svg/icons/Drive error.svg | 0 .../famfamfam-silk-svg/icons/Drive go.svg | 0 .../famfamfam-silk-svg/icons/Drive key.svg | 0 .../famfamfam-silk-svg/icons/Drive link.svg | 0 .../icons/Drive magnify.svg | 0 .../icons/Drive network.svg | 0 .../famfamfam-silk-svg/icons/Drive rename.svg | 0 .../famfamfam-silk-svg/icons/Drive user.svg | 0 .../famfamfam-silk-svg/icons/Drive web.svg | 0 .../assets/famfamfam-silk-svg/icons/Drive.svg | 0 .../famfamfam-silk-svg/icons/Email add.svg | 0 .../famfamfam-silk-svg/icons/Email attach.svg | 0 .../famfamfam-silk-svg/icons/Email delete.svg | 0 .../famfamfam-silk-svg/icons/Email edit.svg | 0 .../famfamfam-silk-svg/icons/Email error.svg | 0 .../famfamfam-silk-svg/icons/Email go.svg | 0 .../famfamfam-silk-svg/icons/Email link.svg | 0 .../icons/Email open image.svg | 0 .../famfamfam-silk-svg/icons/Email open.svg | 0 .../assets/famfamfam-silk-svg/icons/Email.svg | 0 .../icons/Emoticon evilgrin.svg | 0 .../icons/Emoticon grin.svg | 0 .../icons/Emoticon happy.svg | 0 .../icons/Emoticon smile.svg | 0 .../icons/Emoticon surprised.svg | 0 .../icons/Emoticon tongue.svg | 0 .../icons/Emoticon unhappy.svg | 0 .../icons/Emoticon waii.svg | 0 .../icons/Emoticon wink.svg | 0 .../famfamfam-silk-svg/icons/Error add.svg | 0 .../famfamfam-silk-svg/icons/Error delete.svg | 0 .../famfamfam-silk-svg/icons/Error go.svg | 0 .../assets/famfamfam-silk-svg/icons/Error.svg | 0 .../famfamfam-silk-svg/icons/Exclamation.svg | 0 .../assets/famfamfam-silk-svg/icons/Eye.svg | 0 .../famfamfam-silk-svg/icons/Feed add.svg | 0 .../famfamfam-silk-svg/icons/Feed delete.svg | 0 .../famfamfam-silk-svg/icons/Feed disk.svg | 0 .../famfamfam-silk-svg/icons/Feed edit.svg | 0 .../famfamfam-silk-svg/icons/Feed error.svg | 0 .../famfamfam-silk-svg/icons/Feed go.svg | 0 .../famfamfam-silk-svg/icons/Feed key.svg | 0 .../famfamfam-silk-svg/icons/Feed link.svg | 0 .../famfamfam-silk-svg/icons/Feed magnify.svg | 0 .../assets/famfamfam-silk-svg/icons/Feed.svg | 0 .../famfamfam-silk-svg/icons/Female.svg | 0 .../famfamfam-silk-svg/icons/Film add.svg | 0 .../famfamfam-silk-svg/icons/Film delete.svg | 0 .../famfamfam-silk-svg/icons/Film edit.svg | 0 .../famfamfam-silk-svg/icons/Film error.svg | 0 .../famfamfam-silk-svg/icons/Film go.svg | 0 .../famfamfam-silk-svg/icons/Film key.svg | 0 .../famfamfam-silk-svg/icons/Film link.svg | 0 .../famfamfam-silk-svg/icons/Film save.svg | 0 .../assets/famfamfam-silk-svg/icons/Film.svg | 0 .../assets/famfamfam-silk-svg/icons/Find.svg | 0 .../famfamfam-silk-svg/icons/Flag blue.svg | 0 .../famfamfam-silk-svg/icons/Flag green.svg | 0 .../famfamfam-silk-svg/icons/Flag orange.svg | 0 .../famfamfam-silk-svg/icons/Flag pink.svg | 0 .../famfamfam-silk-svg/icons/Flag purple.svg | 0 .../famfamfam-silk-svg/icons/Flag red.svg | 0 .../famfamfam-silk-svg/icons/Flag yellow.svg | 0 .../icons/Folder Camera.svg | 0 .../famfamfam-silk-svg/icons/Folder add.svg | 0 .../famfamfam-silk-svg/icons/Folder bell.svg | 0 .../famfamfam-silk-svg/icons/Folder brick.svg | 0 .../famfamfam-silk-svg/icons/Folder bug.svg | 0 .../icons/Folder database.svg | 0 .../icons/Folder delete.svg | 0 .../famfamfam-silk-svg/icons/Folder edit.svg | 0 .../famfamfam-silk-svg/icons/Folder error.svg | 0 .../icons/Folder explore.svg | 0 .../famfamfam-silk-svg/icons/Folder feed.svg | 0 .../famfamfam-silk-svg/icons/Folder find.svg | 0 .../famfamfam-silk-svg/icons/Folder go.svg | 0 .../famfamfam-silk-svg/icons/Folder heart.svg | 0 .../famfamfam-silk-svg/icons/Folder image.svg | 0 .../famfamfam-silk-svg/icons/Folder key.svg | 0 .../icons/Folder lightbulb.svg | 0 .../famfamfam-silk-svg/icons/Folder link.svg | 0 .../icons/Folder magnify.svg | 0 .../icons/Folder page white.svg | 0 .../famfamfam-silk-svg/icons/Folder page.svg | 0 .../icons/Folder palette.svg | 0 .../icons/Folder picture.svg | 0 .../famfamfam-silk-svg/icons/Folder star.svg | 0 .../famfamfam-silk-svg/icons/Folder table.svg | 0 .../famfamfam-silk-svg/icons/Folder user.svg | 0 .../icons/Folder wrench.svg | 0 .../famfamfam-silk-svg/icons/Folder.svg | 0 .../famfamfam-silk-svg/icons/Font add.svg | 0 .../famfamfam-silk-svg/icons/Font delete.svg | 0 .../famfamfam-silk-svg/icons/Font go.svg | 0 .../assets/famfamfam-silk-svg/icons/Font.svg | 0 .../famfamfam-silk-svg/icons/Group add.svg | 0 .../famfamfam-silk-svg/icons/Group delete.svg | 0 .../famfamfam-silk-svg/icons/Group edit.svg | 0 .../famfamfam-silk-svg/icons/Group error.svg | 0 .../famfamfam-silk-svg/icons/Group gear.svg | 0 .../famfamfam-silk-svg/icons/Group go.svg | 0 .../famfamfam-silk-svg/icons/Group key.svg | 0 .../famfamfam-silk-svg/icons/Group link.svg | 0 .../assets/famfamfam-silk-svg/icons/Group.svg | 0 .../famfamfam-silk-svg/icons/HTML add.svg | 0 .../famfamfam-silk-svg/icons/HTML delete.svg | 0 .../famfamfam-silk-svg/icons/HTML go.svg | 0 .../famfamfam-silk-svg/icons/HTML valid.svg | 0 .../assets/famfamfam-silk-svg/icons/HTML.svg | 0 .../famfamfam-silk-svg/icons/Heart add.svg | 0 .../famfamfam-silk-svg/icons/Heart delete.svg | 0 .../assets/famfamfam-silk-svg/icons/Heart.svg | 0 .../assets/famfamfam-silk-svg/icons/Help.svg | 0 .../icons/Hourglass add.svg | 0 .../icons/Hourglass delete.svg | 0 .../famfamfam-silk-svg/icons/Hourglass go.svg | 0 .../icons/Hourglass link.svg | 0 .../famfamfam-silk-svg/icons/Hourglass.svg | 0 .../famfamfam-silk-svg/icons/House go.svg | 0 .../famfamfam-silk-svg/icons/House link.svg | 0 .../assets/famfamfam-silk-svg/icons/House.svg | 0 .../famfamfam-silk-svg/icons/Image add.svg | 0 .../famfamfam-silk-svg/icons/Image delete.svg | 0 .../famfamfam-silk-svg/icons/Image edit.svg | 0 .../famfamfam-silk-svg/icons/Image link.svg | 0 .../assets/famfamfam-silk-svg/icons/Image.svg | 0 .../famfamfam-silk-svg/icons/Images.svg | 0 .../famfamfam-silk-svg/icons/Information.svg | 0 .../famfamfam-silk-svg/icons/Joystick add.svg | 0 .../icons/Joystick delete.svg | 0 .../icons/Joystick error.svg | 0 .../famfamfam-silk-svg/icons/Joystick.svg | 0 .../famfamfam-silk-svg/icons/Key add.svg | 0 .../famfamfam-silk-svg/icons/Key delete.svg | 0 .../famfamfam-silk-svg/icons/Key go.svg | 0 .../assets/famfamfam-silk-svg/icons/Key.svg | 0 .../famfamfam-silk-svg/icons/Keyboard add.svg | 0 .../icons/Keyboard delete.svg | 0 .../icons/Keyboard magnify.svg | 0 .../famfamfam-silk-svg/icons/Keyboard.svg | 0 .../famfamfam-silk-svg/icons/Layers.svg | 0 .../famfamfam-silk-svg/icons/Layout add.svg | 0 .../icons/Layout content.svg | 0 .../icons/Layout delete.svg | 0 .../famfamfam-silk-svg/icons/Layout edit.svg | 0 .../famfamfam-silk-svg/icons/Layout error.svg | 0 .../icons/Layout header.svg | 0 .../famfamfam-silk-svg/icons/Layout link.svg | 0 .../icons/Layout sidebar.svg | 0 .../famfamfam-silk-svg/icons/Layout.svg | 0 .../icons/Lightbulb add.svg | 0 .../icons/Lightbulb delete.svg | 0 .../icons/Lightbulb off.svg | 0 .../famfamfam-silk-svg/icons/Lightbulb.svg | 0 .../icons/Lightning add.svg | 0 .../icons/Lightning delete.svg | 0 .../famfamfam-silk-svg/icons/Lightning go.svg | 0 .../famfamfam-silk-svg/icons/Lightning.svg | 0 .../famfamfam-silk-svg/icons/Link add.svg | 0 .../famfamfam-silk-svg/icons/Link break.svg | 0 .../famfamfam-silk-svg/icons/Link delete.svg | 0 .../famfamfam-silk-svg/icons/Link edit.svg | 0 .../famfamfam-silk-svg/icons/Link error.svg | 0 .../famfamfam-silk-svg/icons/Link go.svg | 0 .../assets/famfamfam-silk-svg/icons/Link.svg | 0 .../famfamfam-silk-svg/icons/Lock add.svg | 0 .../famfamfam-silk-svg/icons/Lock break.svg | 0 .../famfamfam-silk-svg/icons/Lock delete.svg | 0 .../famfamfam-silk-svg/icons/Lock edit.svg | 0 .../famfamfam-silk-svg/icons/Lock go.svg | 0 .../famfamfam-silk-svg/icons/Lock open.svg | 0 .../assets/famfamfam-silk-svg/icons/Lock.svg | 0 .../famfamfam-silk-svg/icons/Lorry add.svg | 0 .../famfamfam-silk-svg/icons/Lorry delete.svg | 0 .../famfamfam-silk-svg/icons/Lorry error.svg | 0 .../icons/Lorry flatbed.svg | 0 .../famfamfam-silk-svg/icons/Lorry go.svg | 0 .../famfamfam-silk-svg/icons/Lorry link.svg | 0 .../assets/famfamfam-silk-svg/icons/Lorry.svg | 0 .../icons/Magnifier zoom in.svg | 0 .../icons/Magnifier zoom out.svg | 0 .../famfamfam-silk-svg/icons/Magnifier.svg | 0 .../assets/famfamfam-silk-svg/icons/Male.svg | 0 .../famfamfam-silk-svg/icons/Map add.svg | 0 .../famfamfam-silk-svg/icons/Map delete.svg | 0 .../famfamfam-silk-svg/icons/Map edit.svg | 0 .../famfamfam-silk-svg/icons/Map go.svg | 0 .../famfamfam-silk-svg/icons/Map magnify.svg | 0 .../assets/famfamfam-silk-svg/icons/Map.svg | 0 .../icons/Medal bronze add.svg | 0 .../icons/Medal bronze blue.svg | 0 .../icons/Medal bronze delete.svg | 0 .../icons/Medal bronze green.svg | 0 .../icons/Medal bronze red.svg | 0 .../icons/Medal gold add.svg | 0 .../icons/Medal gold blue.svg | 0 .../icons/Medal gold delete.svg | 0 .../icons/Medal gold green.svg | 0 .../icons/Medal gold red.svg | 0 .../icons/Medal silver add.svg | 0 .../icons/Medal silver blue.svg | 0 .../icons/Medal silver green.svg | 0 .../icons/Medal silver red.svg | 0 .../icons/Medal silver remove.svg | 0 .../famfamfam-silk-svg/icons/Money add.svg | 0 .../famfamfam-silk-svg/icons/Money delete.svg | 0 .../famfamfam-silk-svg/icons/Money dollar.svg | 0 .../famfamfam-silk-svg/icons/Money euro.svg | 0 .../famfamfam-silk-svg/icons/Money pound.svg | 0 .../famfamfam-silk-svg/icons/Money yen.svg | 0 .../assets/famfamfam-silk-svg/icons/Money.svg | 0 .../famfamfam-silk-svg/icons/Monitor add.svg | 0 .../icons/Monitor delete.svg | 0 .../famfamfam-silk-svg/icons/Monitor edit.svg | 0 .../icons/Monitor error.svg | 0 .../famfamfam-silk-svg/icons/Monitor go.svg | 0 .../icons/Monitor lighting.svg | 0 .../famfamfam-silk-svg/icons/Monitor link.svg | 0 .../famfamfam-silk-svg/icons/Monitor.svg | 0 .../famfamfam-silk-svg/icons/Mouse add.svg | 0 .../famfamfam-silk-svg/icons/Mouse delete.svg | 0 .../famfamfam-silk-svg/icons/Mouse error.svg | 0 .../assets/famfamfam-silk-svg/icons/Mouse.svg | 0 .../assets/famfamfam-silk-svg/icons/Music.svg | 0 .../assets/famfamfam-silk-svg/icons/New.svg | 0 .../icons/Newspaper add.svg | 0 .../icons/Newspaper delete.svg | 0 .../famfamfam-silk-svg/icons/Newspaper go.svg | 0 .../icons/Newspaper link.svg | 0 .../famfamfam-silk-svg/icons/Newspaper.svg | 0 .../famfamfam-silk-svg/icons/Note add.svg | 0 .../famfamfam-silk-svg/icons/Note delete.svg | 0 .../famfamfam-silk-svg/icons/Note edit.svg | 0 .../famfamfam-silk-svg/icons/Note error.svg | 0 .../famfamfam-silk-svg/icons/Note go.svg | 0 .../assets/famfamfam-silk-svg/icons/Note.svg | 0 .../famfamfam-silk-svg/icons/Package add.svg | 0 .../icons/Package delete.svg | 0 .../famfamfam-silk-svg/icons/Package go.svg | 0 .../icons/Package green.svg | 0 .../famfamfam-silk-svg/icons/Package link.svg | 0 .../famfamfam-silk-svg/icons/Package.svg | 0 .../famfamfam-silk-svg/icons/Page add-1.svg | 0 .../famfamfam-silk-svg/icons/Page add.svg | 0 .../famfamfam-silk-svg/icons/Page attach.svg | 0 .../famfamfam-silk-svg/icons/Page code.svg | 0 .../famfamfam-silk-svg/icons/Page copy.svg | 0 .../famfamfam-silk-svg/icons/Page edit.svg | 0 .../famfamfam-silk-svg/icons/Page error.svg | 0 .../famfamfam-silk-svg/icons/Page excel.svg | 0 .../famfamfam-silk-svg/icons/Page find.svg | 0 .../famfamfam-silk-svg/icons/Page gear.svg | 0 .../famfamfam-silk-svg/icons/Page go.svg | 0 .../famfamfam-silk-svg/icons/Page green.svg | 0 .../famfamfam-silk-svg/icons/Page key.svg | 0 .../icons/Page lightning.svg | 0 .../famfamfam-silk-svg/icons/Page link.svg | 0 .../icons/Page paintbrush.svg | 0 .../famfamfam-silk-svg/icons/Page paste.svg | 0 .../famfamfam-silk-svg/icons/Page red.svg | 0 .../famfamfam-silk-svg/icons/Page refresh.svg | 0 .../famfamfam-silk-svg/icons/Page save.svg | 0 .../famfamfam-silk-svg/icons/Page white C.svg | 0 .../icons/Page white CD.svg | 0 .../icons/Page white CPP.svg | 0 .../icons/Page white Csharp.svg | 0 .../icons/Page white DVD.svg | 0 .../icons/Page white Paste.svg | 0 .../icons/Page white acrobat.svg | 0 .../icons/Page white actionscript.svg | 0 .../icons/Page white add.svg | 0 .../icons/Page white camera.svg | 0 .../icons/Page white code red.svg | 0 .../icons/Page white code.svg | 0 .../icons/Page white coldfusion.svg | 0 .../icons/Page white compressed.svg | 0 .../icons/Page white copy.svg | 0 .../icons/Page white cup.svg | 0 .../icons/Page white database.svg | 0 .../icons/Page white delete.svg | 0 .../icons/Page white edit.svg | 0 .../icons/Page white error.svg | 0 .../icons/Page white excel.svg | 0 .../icons/Page white find.svg | 0 .../icons/Page white flash.svg | 0 .../icons/Page white freehand.svg | 0 .../icons/Page white gear.svg | 0 .../icons/Page white get.svg | 0 .../icons/Page white go.svg | 0 .../famfamfam-silk-svg/icons/Page white h.svg | 0 .../icons/Page white horizontal.svg | 0 .../icons/Page white key.svg | 0 .../icons/Page white lightning.svg | 0 .../icons/Page white link.svg | 0 .../icons/Page white magnify.svg | 0 .../icons/Page white medal.svg | 0 .../icons/Page white office.svg | 0 .../icons/Page white paint.svg | 0 .../icons/Page white paintbrush.svg | 0 .../icons/Page white php.svg | 0 .../icons/Page white picture.svg | 0 .../icons/Page white powerpoint.svg | 0 .../icons/Page white put.svg | 0 .../icons/Page white ruby.svg | 0 .../icons/Page white stack.svg | 0 .../icons/Page white star.svg | 0 .../icons/Page white swoosh.svg | 0 .../icons/Page white text width.svg | 0 .../icons/Page white text.svg | 0 .../icons/Page white tux.svg | 0 .../icons/Page white vector.svg | 0 .../icons/Page white visualstudio.svg | 0 .../icons/Page white width.svg | 0 .../icons/Page white word.svg | 0 .../icons/Page white world.svg | 0 .../icons/Page white wrench.svg | 0 .../icons/Page white zip.svg | 0 .../famfamfam-silk-svg/icons/Page white.svg | 0 .../famfamfam-silk-svg/icons/Page word.svg | 0 .../famfamfam-silk-svg/icons/Page world.svg | 0 .../assets/famfamfam-silk-svg/icons/Page.svg | 0 .../famfamfam-silk-svg/icons/Paintbrush.svg | 0 .../famfamfam-silk-svg/icons/Paintcan.svg | 0 .../famfamfam-silk-svg/icons/Palette.svg | 0 .../famfamfam-silk-svg/icons/Paste word.svg | 0 .../famfamfam-silk-svg/icons/Pencil add.svg | 0 .../icons/Pencil delete.svg | 0 .../famfamfam-silk-svg/icons/Pencil go.svg | 0 .../famfamfam-silk-svg/icons/Pencil.svg | 0 .../famfamfam-silk-svg/icons/Phone add.svg | 0 .../famfamfam-silk-svg/icons/Phone delete.svg | 0 .../famfamfam-silk-svg/icons/Phone sound.svg | 0 .../assets/famfamfam-silk-svg/icons/Phone.svg | 0 .../famfamfam-silk-svg/icons/Photo add.svg | 0 .../famfamfam-silk-svg/icons/Photo delete.svg | 0 .../famfamfam-silk-svg/icons/Photo link.svg | 0 .../assets/famfamfam-silk-svg/icons/Photo.svg | 0 .../famfamfam-silk-svg/icons/Photos.svg | 0 .../famfamfam-silk-svg/icons/Picture add.svg | 0 .../icons/Picture delete.svg | 0 .../famfamfam-silk-svg/icons/Picture edit.svg | 0 .../icons/Picture empty.svg | 0 .../icons/Picture error.svg | 0 .../famfamfam-silk-svg/icons/Picture go.svg | 0 .../famfamfam-silk-svg/icons/Picture key.svg | 0 .../famfamfam-silk-svg/icons/Picture link.svg | 0 .../famfamfam-silk-svg/icons/Picture save.svg | 0 .../famfamfam-silk-svg/icons/Picture.svg | 0 .../famfamfam-silk-svg/icons/Pictures.svg | 0 .../famfamfam-silk-svg/icons/Pilcrow.svg | 0 .../famfamfam-silk-svg/icons/Pill add.svg | 0 .../famfamfam-silk-svg/icons/Pill delete.svg | 0 .../famfamfam-silk-svg/icons/Pill go.svg | 0 .../assets/famfamfam-silk-svg/icons/Pill.svg | 0 .../famfamfam-silk-svg/icons/Plugin add.svg | 0 .../icons/Plugin delete.svg | 0 .../icons/Plugin disabled.svg | 0 .../famfamfam-silk-svg/icons/Plugin edit.svg | 0 .../famfamfam-silk-svg/icons/Plugin error.svg | 0 .../famfamfam-silk-svg/icons/Plugin go.svg | 0 .../famfamfam-silk-svg/icons/Plugin link.svg | 0 .../famfamfam-silk-svg/icons/Plugin.svg | 0 .../famfamfam-silk-svg/icons/Printer add.svg | 0 .../icons/Printer delete.svg | 0 .../icons/Printer empty.svg | 0 .../icons/Printer error.svg | 0 .../famfamfam-silk-svg/icons/Printer.svg | 0 .../famfamfam-silk-svg/icons/RSS add.svg | 0 .../famfamfam-silk-svg/icons/RSS delete.svg | 0 .../famfamfam-silk-svg/icons/RSS go.svg | 0 .../famfamfam-silk-svg/icons/RSS valid.svg | 0 .../assets/famfamfam-silk-svg/icons/RSS.svg | 0 .../famfamfam-silk-svg/icons/Rainbow.svg | 0 .../famfamfam-silk-svg/icons/Report add.svg | 0 .../icons/Report delete.svg | 0 .../famfamfam-silk-svg/icons/Report disk.svg | 0 .../famfamfam-silk-svg/icons/Report edit.svg | 0 .../famfamfam-silk-svg/icons/Report go.svg | 0 .../famfamfam-silk-svg/icons/Report key.svg | 0 .../famfamfam-silk-svg/icons/Report link.svg | 0 .../icons/Report magnify.svg | 0 .../icons/Report picture.svg | 0 .../famfamfam-silk-svg/icons/Report user.svg | 0 .../famfamfam-silk-svg/icons/Report word.svg | 0 .../famfamfam-silk-svg/icons/Report.svg | 0 .../icons/Resultset first.svg | 0 .../icons/Resultset last.svg | 0 .../icons/Resultset next.svg | 0 .../icons/Resultset previous.svg | 0 .../famfamfam-silk-svg/icons/Rosette.svg | 0 .../famfamfam-silk-svg/icons/Ruby add.svg | 0 .../famfamfam-silk-svg/icons/Ruby delete.svg | 0 .../famfamfam-silk-svg/icons/Ruby gear.svg | 0 .../famfamfam-silk-svg/icons/Ruby get.svg | 0 .../famfamfam-silk-svg/icons/Ruby go.svg | 0 .../famfamfam-silk-svg/icons/Ruby key.svg | 0 .../famfamfam-silk-svg/icons/Ruby link.svg | 0 .../famfamfam-silk-svg/icons/Ruby put.svg | 0 .../assets/famfamfam-silk-svg/icons/Ruby.svg | 0 .../famfamfam-silk-svg/icons/Script add.svg | 0 .../icons/Script code red.svg | 0 .../famfamfam-silk-svg/icons/Script code.svg | 0 .../icons/Script delete.svg | 0 .../famfamfam-silk-svg/icons/Script edit.svg | 0 .../famfamfam-silk-svg/icons/Script error.svg | 0 .../famfamfam-silk-svg/icons/Script gear.svg | 0 .../famfamfam-silk-svg/icons/Script go.svg | 0 .../famfamfam-silk-svg/icons/Script key.svg | 0 .../icons/Script lightning.svg | 0 .../famfamfam-silk-svg/icons/Script link.svg | 0 .../icons/Script palette.svg | 0 .../famfamfam-silk-svg/icons/Script save.svg | 0 .../famfamfam-silk-svg/icons/Script.svg | 0 .../famfamfam-silk-svg/icons/Server add.svg | 0 .../famfamfam-silk-svg/icons/Server chart.svg | 0 .../icons/Server compressed.svg | 0 .../icons/Server connect.svg | 0 .../icons/Server database.svg | 0 .../icons/Server delete.svg | 0 .../famfamfam-silk-svg/icons/Server edit.svg | 0 .../famfamfam-silk-svg/icons/Server error.svg | 0 .../famfamfam-silk-svg/icons/Server go.svg | 0 .../famfamfam-silk-svg/icons/Server key.svg | 0 .../icons/Server lightning.svg | 0 .../famfamfam-silk-svg/icons/Server link.svg | 0 .../icons/Server uncompressed.svg | 0 .../famfamfam-silk-svg/icons/Server.svg | 0 .../famfamfam-silk-svg/icons/Shading.svg | 0 .../icons/Shape align bottom.svg | 0 .../icons/Shape align center.svg | 0 .../icons/Shape align left.svg | 0 .../icons/Shape align middle.svg | 0 .../icons/Shape align right.svg | 0 .../icons/Shape align top.svg | 0 .../icons/Shape flip horizontal.svg | 0 .../icons/Shape flip vertical.svg | 0 .../famfamfam-silk-svg/icons/Shape group.svg | 0 .../icons/Shape handles.svg | 0 .../icons/Shape move back.svg | 0 .../icons/Shape move backwards.svg | 0 .../icons/Shape move forwards.svg | 0 .../icons/Shape move front.svg | 0 .../icons/Shape rotate anticlockwise.svg | 0 .../icons/Shape rotate clockwise.svg | 0 .../icons/Shape square add.svg | 0 .../icons/Shape square delete.svg | 0 .../icons/Shape square edit.svg | 0 .../icons/Shape square error.svg | 0 .../icons/Shape square go.svg | 0 .../icons/Shape square key.svg | 0 .../icons/Shape square link.svg | 0 .../famfamfam-silk-svg/icons/Shape square.svg | 0 .../icons/Shape ungroup.svg | 0 .../famfamfam-silk-svg/icons/Shield add.svg | 0 .../icons/Shield delete.svg | 0 .../famfamfam-silk-svg/icons/Shield go.svg | 0 .../famfamfam-silk-svg/icons/Shield.svg | 0 .../icons/Sitemap color.svg | 0 .../famfamfam-silk-svg/icons/Sitemap.svg | 0 .../famfamfam-silk-svg/icons/Sound add.svg | 0 .../famfamfam-silk-svg/icons/Sound delete.svg | 0 .../famfamfam-silk-svg/icons/Sound low.svg | 0 .../famfamfam-silk-svg/icons/Sound mute.svg | 0 .../famfamfam-silk-svg/icons/Sound none.svg | 0 .../assets/famfamfam-silk-svg/icons/Sound.svg | 0 .../famfamfam-silk-svg/icons/Spellcheck.svg | 0 .../famfamfam-silk-svg/icons/Sport 8ball.svg | 0 .../icons/Sport basketball.svg | 0 .../icons/Sport football.svg | 0 .../famfamfam-silk-svg/icons/Sport golf.svg | 0 .../famfamfam-silk-svg/icons/Sport raquet.svg | 0 .../icons/Sport shuttlecock.svg | 0 .../famfamfam-silk-svg/icons/Sport soccer.svg | 0 .../famfamfam-silk-svg/icons/Sport tennis.svg | 0 .../assets/famfamfam-silk-svg/icons/Star.svg | 0 .../famfamfam-silk-svg/icons/Status away.svg | 0 .../famfamfam-silk-svg/icons/Status busy.svg | 0 .../icons/Status offline.svg | 0 .../icons/Status online.svg | 0 .../assets/famfamfam-silk-svg/icons/Stop.svg | 0 .../famfamfam-silk-svg/icons/Style add.svg | 0 .../famfamfam-silk-svg/icons/Style delete.svg | 0 .../famfamfam-silk-svg/icons/Style edit.svg | 0 .../famfamfam-silk-svg/icons/Style go.svg | 0 .../assets/famfamfam-silk-svg/icons/Style.svg | 0 .../assets/famfamfam-silk-svg/icons/Sum.svg | 0 .../famfamfam-silk-svg/icons/Tab add.svg | 0 .../famfamfam-silk-svg/icons/Tab delete.svg | 0 .../famfamfam-silk-svg/icons/Tab edit.svg | 0 .../famfamfam-silk-svg/icons/Tab go.svg | 0 .../assets/famfamfam-silk-svg/icons/Tab.svg | 0 .../famfamfam-silk-svg/icons/Table add.svg | 0 .../famfamfam-silk-svg/icons/Table delete.svg | 0 .../famfamfam-silk-svg/icons/Table edit.svg | 0 .../famfamfam-silk-svg/icons/Table error.svg | 0 .../famfamfam-silk-svg/icons/Table gear.svg | 0 .../famfamfam-silk-svg/icons/Table go.svg | 0 .../famfamfam-silk-svg/icons/Table key.svg | 0 .../icons/Table lightning.svg | 0 .../famfamfam-silk-svg/icons/Table link.svg | 0 .../icons/Table multiple.svg | 0 .../icons/Table refresh.svg | 0 .../icons/Table relationship.svg | 0 .../icons/Table row delete.svg | 0 .../icons/Table row insert.svg | 0 .../famfamfam-silk-svg/icons/Table save.svg | 0 .../famfamfam-silk-svg/icons/Table sort.svg | 0 .../assets/famfamfam-silk-svg/icons/Table.svg | 0 .../famfamfam-silk-svg/icons/Tag blue add.svg | 0 .../icons/Tag blue delete.svg | 0 .../icons/Tag blue edit.svg | 0 .../famfamfam-silk-svg/icons/Tag blue.svg | 0 .../famfamfam-silk-svg/icons/Tag green.svg | 0 .../famfamfam-silk-svg/icons/Tag orange.svg | 0 .../famfamfam-silk-svg/icons/Tag pink.svg | 0 .../famfamfam-silk-svg/icons/Tag purple.svg | 0 .../famfamfam-silk-svg/icons/Tag red.svg | 0 .../famfamfam-silk-svg/icons/Tag yellow.svg | 0 .../assets/famfamfam-silk-svg/icons/Tag.svg | 0 .../icons/Telephone add.svg | 0 .../icons/Telephone delete.svg | 0 .../icons/Telephone edit.svg | 0 .../icons/Telephone error.svg | 0 .../famfamfam-silk-svg/icons/Telephone go.svg | 0 .../icons/Telephone key.svg | 0 .../icons/Telephone link.svg | 0 .../famfamfam-silk-svg/icons/Telephone.svg | 0 .../icons/Television add.svg | 0 .../icons/Television delete.svg | 0 .../famfamfam-silk-svg/icons/Television.svg | 0 .../famfamfam-silk-svg/icons/Terminal XP.svg | 0 .../icons/Terminal macOS.svg | 0 .../icons/Text align center.svg | 0 .../icons/Text align justify.svg | 0 .../icons/Text align left.svg | 0 .../icons/Text align right.svg | 0 .../famfamfam-silk-svg/icons/Text allcaps.svg | 0 .../famfamfam-silk-svg/icons/Text bold.svg | 0 .../famfamfam-silk-svg/icons/Text columns.svg | 0 .../icons/Text dropcaps.svg | 0 .../icons/Text heading 1.svg | 0 .../icons/Text heading 2.svg | 0 .../icons/Text heading 3.svg | 0 .../icons/Text heading 4.svg | 0 .../icons/Text heading 5.svg | 0 .../icons/Text heading 6.svg | 0 .../icons/Text horizontalrule.svg | 0 .../icons/Text indent remove.svg | 0 .../famfamfam-silk-svg/icons/Text indent.svg | 0 .../famfamfam-silk-svg/icons/Text italic.svg | 0 .../famfamfam-silk-svg/icons/Text kerning.svg | 0 .../icons/Text letter omega.svg | 0 .../icons/Text letterspacing.svg | 0 .../icons/Text linespacing.svg | 0 .../icons/Text list bullets.svg | 0 .../icons/Text list numbers.svg | 0 .../icons/Text lowercase.svg | 0 .../icons/Text padding bottom.svg | 0 .../icons/Text padding left.svg | 0 .../icons/Text padding right.svg | 0 .../icons/Text padding top.svg | 0 .../famfamfam-silk-svg/icons/Text replace.svg | 0 .../icons/Text signature.svg | 0 .../icons/Text smallcaps.svg | 0 .../icons/Text strikethrough.svg | 0 .../icons/Text subscript.svg | 0 .../icons/Text superscript.svg | 0 .../icons/Text underline.svg | 0 .../icons/Text uppercase.svg | 0 .../icons/Textfield add.svg | 0 .../icons/Textfield delete.svg | 0 .../icons/Textfield key.svg | 0 .../icons/Textfield rename.svg | 0 .../famfamfam-silk-svg/icons/Textfield.svg | 0 .../famfamfam-silk-svg/icons/Thumb down.svg | 0 .../famfamfam-silk-svg/icons/Thumb up.svg | 0 .../assets/famfamfam-silk-svg/icons/Tick.svg | 0 .../famfamfam-silk-svg/icons/Time add.svg | 0 .../famfamfam-silk-svg/icons/Time delete.svg | 0 .../famfamfam-silk-svg/icons/Time go.svg | 0 .../assets/famfamfam-silk-svg/icons/Time.svg | 0 .../icons/Timeline Marker.svg | 0 .../famfamfam-silk-svg/icons/Transmit add.svg | 0 .../icons/Transmit blue.svg | 0 .../icons/Transmit delete.svg | 0 .../icons/Transmit edit.svg | 0 .../icons/Transmit error.svg | 0 .../famfamfam-silk-svg/icons/Transmit go.svg | 0 .../famfamfam-silk-svg/icons/Transmit.svg | 0 .../assets/famfamfam-silk-svg/icons/Tux.svg | 0 .../famfamfam-silk-svg/icons/User add.svg | 0 .../famfamfam-silk-svg/icons/User comment.svg | 0 .../famfamfam-silk-svg/icons/User delete.svg | 0 .../famfamfam-silk-svg/icons/User edit.svg | 0 .../famfamfam-silk-svg/icons/User female.svg | 0 .../famfamfam-silk-svg/icons/User go.svg | 0 .../famfamfam-silk-svg/icons/User gray.svg | 0 .../famfamfam-silk-svg/icons/User green.svg | 0 .../famfamfam-silk-svg/icons/User orange.svg | 0 .../famfamfam-silk-svg/icons/User red.svg | 0 .../famfamfam-silk-svg/icons/User suit.svg | 0 .../assets/famfamfam-silk-svg/icons/User.svg | 0 .../famfamfam-silk-svg/icons/Vcard add.svg | 0 .../famfamfam-silk-svg/icons/Vcard delete.svg | 0 .../famfamfam-silk-svg/icons/Vcard edit.svg | 0 .../assets/famfamfam-silk-svg/icons/Vcard.svg | 0 .../famfamfam-silk-svg/icons/Vector add.svg | 0 .../icons/Vector delete.svg | 0 .../famfamfam-silk-svg/icons/Vector.svg | 0 .../assets/famfamfam-silk-svg/icons/Wand.svg | 0 .../icons/Weather clouds.svg | 0 .../icons/Weather cloudy.svg | 0 .../icons/Weather lightning.svg | 0 .../famfamfam-silk-svg/icons/Weather rain.svg | 0 .../famfamfam-silk-svg/icons/Weather snow.svg | 0 .../famfamfam-silk-svg/icons/Weather sun.svg | 0 .../famfamfam-silk-svg/icons/Webcam add.svg | 0 .../icons/Webcam delete.svg | 0 .../famfamfam-silk-svg/icons/Webcam error.svg | 0 .../famfamfam-silk-svg/icons/Webcam.svg | 0 .../famfamfam-silk-svg/icons/World add.svg | 0 .../famfamfam-silk-svg/icons/World delete.svg | 0 .../famfamfam-silk-svg/icons/World edit.svg | 0 .../famfamfam-silk-svg/icons/World go.svg | 0 .../famfamfam-silk-svg/icons/World link.svg | 0 .../assets/famfamfam-silk-svg/icons/World.svg | 0 .../icons/Wrench orange.svg | 0 .../famfamfam-silk-svg/icons/Wrench.svg | 0 .../famfamfam-silk-svg/icons/XHTML add.svg | 0 .../famfamfam-silk-svg/icons/XHTML delete.svg | 0 .../famfamfam-silk-svg/icons/XHTML go.svg | 0 .../famfamfam-silk-svg/icons/XHTML valid.svg | 0 .../assets/famfamfam-silk-svg/icons/XHTML.svg | 0 .../famfamfam-silk-svg/icons/Zoom in.svg | 0 .../famfamfam-silk-svg/icons/Zoom out.svg | 0 .../assets/famfamfam-silk-svg/icons/Zoom.svg | 0 .../icons/iPod cast add.svg | 0 .../icons/iPod cast delete.svg | 0 .../famfamfam-silk-svg/icons/iPod cast.svg | 0 .../famfamfam-silk-svg/icons/iPod sound.svg | 0 .../assets/famfamfam-silk-svg/icons/iPod.svg | 0 {frontend/src => src}/lib/Controls.svelte | 8 +- {frontend/src => src}/lib/Library.svelte | 0 {frontend/src => src}/lib/NowPlaying.svelte | 0 {frontend/src => src}/lib/Queue.svelte | 8 +- {frontend/src => src}/lib/Sidebar.svelte | 0 {frontend/src => src}/lib/TreeItem.svelte | 10 +- {frontend/src => src}/lib/Visualizer.svelte | 0 {frontend/src => src}/lib/app.svelte.ts | 0 {frontend/src => src}/lib/auth.svelte.ts | 0 {frontend/src => src}/lib/client.svelte.ts | 0 .../lib/components/ContextMenu.svelte | 0 .../lib/components/VirtualList.svelte | 0 .../src => src}/lib/dialogs/AuthModal.svelte | 0 .../src => src}/lib/dialogs/Modal.svelte | 0 .../lib/dialogs/PlaylistModals.svelte | 9 +- .../lib/dialogs/RadioModals.svelte | 5 +- .../lib/dialogs/SettingsModal.svelte | 11 +- .../src => src}/lib/dialogs/ShareModal.svelte | 0 .../lib/dialogs/ShortcutsModal.svelte | 0 .../lib/dialogs/UnsyncedChangesModal.svelte | 3 +- .../lib/dialogs/UpdateModal.svelte | 0 {frontend/src => src}/lib/icons/Icon.svelte | 0 {frontend/src => src}/lib/icons/index.ts | 0 .../src => src}/lib/icons/packs.svelte.ts | 0 .../lib/icons/packs/heroicons16solid.ts | 0 .../lib/icons/packs/heroicons20solid.ts | 0 .../lib/icons/packs/heroicons24outline.ts | 0 .../lib/icons/packs/heroicons24solid.ts | 0 .../src => src}/lib/icons/packs/lucide24.ts | 0 .../src => src}/lib/icons/packs/silk16.ts | 0 {frontend/src => src}/lib/languages/index.ts | 0 .../lib/languages/locales.svelte.ts | 0 .../src => src}/lib/languages/locales/ar.ts | 0 .../src => src}/lib/languages/locales/bn.ts | 0 .../src => src}/lib/languages/locales/cs.ts | 0 .../src => src}/lib/languages/locales/da.ts | 0 .../src => src}/lib/languages/locales/de.ts | 0 .../src => src}/lib/languages/locales/el.ts | 0 .../src => src}/lib/languages/locales/en.ts | 0 .../src => src}/lib/languages/locales/es.ts | 0 .../src => src}/lib/languages/locales/fi.ts | 0 .../src => src}/lib/languages/locales/fr.ts | 0 .../src => src}/lib/languages/locales/he.ts | 0 .../src => src}/lib/languages/locales/hi.ts | 0 .../src => src}/lib/languages/locales/id.ts | 0 .../src => src}/lib/languages/locales/it.ts | 0 .../src => src}/lib/languages/locales/ja.ts | 0 .../src => src}/lib/languages/locales/ko.ts | 0 .../src => src}/lib/languages/locales/nl.ts | 0 .../src => src}/lib/languages/locales/no.ts | 0 .../src => src}/lib/languages/locales/pl.ts | 0 .../src => src}/lib/languages/locales/pt.ts | 0 .../src => src}/lib/languages/locales/ro.ts | 0 .../src => src}/lib/languages/locales/ru.ts | 0 .../src => src}/lib/languages/locales/sv.ts | 0 .../src => src}/lib/languages/locales/th.ts | 0 .../src => src}/lib/languages/locales/tl.ts | 0 .../src => src}/lib/languages/locales/tr.ts | 0 .../src => src}/lib/languages/locales/uk.ts | 0 .../src => src}/lib/languages/locales/vi.ts | 0 .../src => src}/lib/languages/locales/zhcn.ts | 0 .../src => src}/lib/languages/locales/zhtw.ts | 0 .../lib/languages/translate.svelte.ts | 0 {frontend/src => src}/lib/library.svelte.ts | 0 .../lib/offline/indexedDbStore.svelte.ts | 0 .../lib/offline/offlineManager.svelte.ts | 0 .../src => src}/lib/offline/opfsStorage.ts | 0 {frontend/src => src}/lib/player.svelte.ts | 0 {frontend/src => src}/lib/queue.svelte.ts | 0 {frontend/src => src}/lib/settings.svelte.ts | 0 {frontend/src => src}/lib/theme.svelte.ts | 0 {frontend/src => src}/lib/ui.svelte.ts | 0 {frontend/src => src}/main.ts | 0 .../tsconfig.app.json => tsconfig.app.json | 0 frontend/tsconfig.json => tsconfig.json | 0 .../tsconfig.node.json => tsconfig.node.json | 0 frontend/vite.config.ts => vite.config.ts | 8 - window_service.go | 42 - 1291 files changed, 448 insertions(+), 8084 deletions(-) delete mode 100644 Taskfile.yml rename frontend/biome.json => biome.json (91%) delete mode 100644 build/Taskfile.yml delete mode 100644 build/android/Taskfile.yml delete mode 100644 build/android/app/build.gradle delete mode 100644 build/android/app/proguard-rules.pro delete mode 100644 build/android/app/src/main/AndroidManifest.xml delete mode 100644 build/android/app/src/main/java/com/wails/app/MainActivity.java delete mode 100644 build/android/app/src/main/java/com/wails/app/WailsBridge.java delete mode 100644 build/android/app/src/main/java/com/wails/app/WailsForegroundService.java delete mode 100644 build/android/app/src/main/java/com/wails/app/WailsJSBridge.java delete mode 100644 build/android/app/src/main/java/com/wails/app/WailsPathHandler.java delete mode 100644 build/android/app/src/main/res/layout/activity_main.xml delete mode 100644 build/android/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 build/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 build/android/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 build/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 build/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 build/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 build/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 build/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 build/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 build/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 build/android/app/src/main/res/values/colors.xml delete mode 100644 build/android/app/src/main/res/values/strings.xml delete mode 100644 build/android/app/src/main/res/values/themes.xml delete mode 100644 build/android/app/src/main/res/xml/file_paths.xml delete mode 100644 build/android/build.gradle delete mode 100644 build/android/gradle.properties delete mode 100644 build/android/gradle/wrapper/gradle-wrapper.jar delete mode 100644 build/android/gradle/wrapper/gradle-wrapper.properties delete mode 100644 build/android/gradlew delete mode 100644 build/android/gradlew.bat delete mode 100644 build/android/main_android.go delete mode 100644 build/android/scripts/deps/install_deps.go delete mode 100644 build/android/settings.gradle delete mode 100644 build/appicon.icon/Assets/bg.svg delete mode 100644 build/appicon.icon/Assets/fg.svg delete mode 100644 build/appicon.icon/icon.json delete mode 100644 build/appicon.png delete mode 100644 build/config.yml delete mode 100644 build/darwin/Assets.car delete mode 100644 build/darwin/Info.dev.plist delete mode 100644 build/darwin/Info.plist delete mode 100644 build/darwin/Taskfile.yml delete mode 100644 build/darwin/icons.icns delete mode 100644 build/docker/Dockerfile.cross delete mode 100644 build/docker/Dockerfile.server delete mode 100644 build/ios/Assets.xcassets delete mode 100644 build/ios/Info.dev.plist delete mode 100644 build/ios/Info.plist delete mode 100644 build/ios/LaunchScreen.storyboard delete mode 100644 build/ios/Taskfile.yml delete mode 100644 build/ios/app_options_default.go delete mode 100644 build/ios/app_options_ios.go delete mode 100644 build/ios/entitlements.plist delete mode 100644 build/ios/icon.png delete mode 100644 build/ios/main.m delete mode 100644 build/ios/main_ios.go delete mode 100644 build/ios/project.pbxproj delete mode 100644 build/ios/scripts/deps/install_deps.go delete mode 100644 build/linux/Taskfile.yml delete mode 100644 build/linux/appimage/build.sh delete mode 100644 build/linux/desktop delete mode 100644 build/linux/nfpm/nfpm.yaml delete mode 100644 build/linux/nfpm/scripts/postinstall.sh delete mode 100644 build/linux/nfpm/scripts/postremove.sh delete mode 100644 build/linux/nfpm/scripts/preinstall.sh delete mode 100644 build/linux/nfpm/scripts/preremove.sh delete mode 100644 build/windows/Taskfile.yml delete mode 100644 build/windows/icon.ico delete mode 100644 build/windows/info.json delete mode 100644 build/windows/msix/app_manifest.xml delete mode 100644 build/windows/msix/template.xml delete mode 100644 build/windows/nsis/project.nsi delete mode 100644 build/windows/nsis/wails_tools.nsh delete mode 100644 build/windows/wails.exe.manifest delete mode 100644 contextmenu_service.go delete mode 100644 dialog_service.go delete mode 100644 frontend/.gitignore delete mode 100644 frontend/bindings/github.com/wailsapp/wails/v3/internal/eventcreate.js delete mode 100644 frontend/bindings/github.com/wailsapp/wails/v3/internal/eventdata.d.ts delete mode 100644 frontend/bindings/tinysub/contextmenuservice.js delete mode 100644 frontend/bindings/tinysub/dialogservice.js delete mode 100644 frontend/bindings/tinysub/index.js delete mode 100644 frontend/bindings/tinysub/models.js delete mode 100644 frontend/bindings/tinysub/windowservice.js delete mode 100644 frontend/knip.json delete mode 100644 frontend/src/lib/dialogs/index.ts delete mode 100644 frontend/src/lib/nativeMenu.ts delete mode 100644 frontend/src/lib/wails.ts delete mode 100644 frontend/svelte.config.js delete mode 100644 go.mod delete mode 100644 go.sum rename frontend/index.html => index.html (100%) create mode 100644 knip.json delete mode 100644 main.go rename frontend/package-lock.json => package-lock.json (91%) rename frontend/package.json => package.json (63%) rename {frontend/public => public}/apple-touch-icon-180x180.png (100%) rename {frontend/public => public}/favicon.ico (100%) rename {frontend/public => public}/favicon.svg (100%) rename {frontend/public => public}/maskable-icon-512x512.png (100%) rename {frontend/public => public}/pwa-192x192.png (100%) rename {frontend/public => public}/pwa-512x512.png (100%) rename {frontend/public => public}/pwa-64x64.png (100%) rename {frontend/public => public}/robots.txt (100%) rename frontend/pwa-assets.config.ts => pwa-assets.config.ts (100%) delete mode 100644 scripts/version.mjs rename {frontend/src => src}/App.svelte (72%) rename {frontend/src => src}/app.css (81%) rename {frontend/src => src}/assets/famfamfam-silk-svg/LICENSE (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/README.md (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/arrow come.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/arrow down.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/arrow go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/arrow left down.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/arrow refresh.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/arrow up.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/attach.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/audio wave.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/bell.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/black.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/blue gray.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/brick gray.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/brick red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/brick white.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/brush.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/bug.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/camera.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/carret bottom.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/carret down.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/carret top.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/carret up.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/cd.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/chart bars.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/chevron blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/chevron red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/cog.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/collapse.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/comment.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/compress.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/cup.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/database.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/disk.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/dvd.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/eject.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/excel.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/expand.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/feed square.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/feed.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/flame.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/foutain pen.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/goggles.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/heart.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/house.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/image decorator blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/image decorator green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/image decorator red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/lightbulb.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/lightning.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/lock.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/magnifier.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/minus.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/next item.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/office 2012.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/office 365.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/onenote.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/orange.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/outlook-1.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/outlook.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/page blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/page white.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/palette.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/pause.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/pen.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/photo.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/picture.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/pink.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/play.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/plug.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/plus.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/powerpoint-1.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/powerpoint.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/previous item.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/purple.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/remove.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/star.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/stop.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/table.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/teams.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/text.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/time.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/trash lid.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/tux.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/uncompress.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/unlink.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/user blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/user gray.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/user green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/visual studio.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/white.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/word.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/world deco.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/wrench.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/decorators/yellow.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Accept.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Anchor.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application XP.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application cascade.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application double.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application form add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application form delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application form edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application form magnify.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application form.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application get.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application home.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application lightning.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application macOS.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application put.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application side box.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application side collapse.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application side expand.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application side list.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application side tree.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application split.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application tile horizontal.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application tile vertical.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application view column.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application view detail.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application view gallery.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application view icons.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application view list.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application view tile.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Application.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Branch.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Divide.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Down.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow In out.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow In.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Join.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Left.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Merge.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Out.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Redo.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Refresh.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Right.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Rotate ACW.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Rotate CW.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Switch.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Turn left.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Turn right.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Undo.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Arrow Up.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Asterisk orange.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Asterisk yellow.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Attach.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Award star add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Award star bronze blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Award star bronze green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Award star bronze red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Award star delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Award star gold blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Award star gold green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Award star gold red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Award star silver blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Award star silver green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Award star silver red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Basket add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Basket delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Basket edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Basket error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Basket go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Basket put.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Basket remove.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Basket.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bell add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bell delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bell error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bell go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bell link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bell.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bin closed.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bin empty.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bin.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bomb.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Book add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Book addresses.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Book delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Book edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Book error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Book go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Book key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Book link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Book next.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Book open.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Book previous.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Book.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Box.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Brick add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Brick delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Brick edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Brick error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Brick go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Brick link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Brick.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bricks.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Briefcase.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bug add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bug delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bug edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bug error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bug go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bug link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bug.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Building add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Building delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Building edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Building error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Building go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Building key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Building link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Building.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet black.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet carret bottom.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet carret down.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet carret top.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet carret up.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet disk.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet feed.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet orange.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet picture.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet pink.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet purple.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet star.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet toggle minus.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet toggle plus.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet white.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet wrench.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Bullet yellow.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/CD add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/CD burn.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/CD delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/CD edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/CD eject.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/CD go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/CD.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/CSS add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/CSS delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/CSS go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/CSS valid.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/CSS.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cake.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Calculator add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Calculator delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Calculator edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Calculator error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Calculator link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Calculator.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Calendar add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Calendar delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Calendar edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Calendar link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Calendar view day.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Calendar view month.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Calendar view week.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Calendar.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Camera Add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Camera Delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Camera Edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Camera Error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Camera Go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Camera Link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Camera Small.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Camera.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cancel.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Car add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Car delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Car.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cart add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cart delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cart edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cart error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cart go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cart put.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cart remove.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cart.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart Organisation add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart Organisation delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart Organisation.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart Pie Add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart Pie Delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart Pie Edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart Pie Error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart Pie Link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart Pie.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart bar add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart bar delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart bar edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart bar error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart bar link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart bar.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart curve add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart curve delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart curve edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart curve error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart curve go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart curve link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart curve.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart line add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart line delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart line edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart line error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart line link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Chart line.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Clock add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Clock delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Clock edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Clock error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Clock go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Clock link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Clock pause.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Clock play.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Clock red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Clock stop.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Clock.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cog add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cog delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cog edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cog error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cog go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cog.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Coins add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Coins delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Coins.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Color swatch.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Color wheel.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Comment add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Comment delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Comment edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Comment.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Comments add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Comments delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Comments.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Compress.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Computer add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Computer delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Computer edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Computer error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Computer go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Computer key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Computer link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Computer.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Connect.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Contrast decrease.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Contrast high.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Contrast increase.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Contrast low.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Contrast.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control eject blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control eject.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control end blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control end.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control equalizer blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control equalizer.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control fastforward blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control fastforward.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control pause blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control pause.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control play blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control play.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control repeat blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control repeat.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control rewind blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control rewind.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control start blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control start.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control stop blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Control stop.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Controller add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Controller delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Controller error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Controller.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Credit Card.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cross.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cup add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cup delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cup edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cup error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cup go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cup key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cup link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cup.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cursor.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cut red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Cut.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/DVD add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/DVD delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/DVD edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/DVD error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/DVD go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/DVD key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/DVD link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/DVD.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Database add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Database connect.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Database delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Database edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Database error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Database gear.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Database go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Database key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Database lightning.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Database link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Database refresh.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Database save.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Database table.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Database.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Date add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Date delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Date edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Date error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Date go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Date link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Date magnify.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Date next.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Date previous.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Date.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Disconnect.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Disk multiple.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Disk.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Door in.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Door open.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Door out.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Door.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drink empty.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drink.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive CD empty.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive CD.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive burn.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive disk.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive magnify.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive network.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive rename.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive user.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive web.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Drive.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Email add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Email attach.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Email delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Email edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Email error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Email go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Email link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Email open image.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Email open.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Email.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Emoticon evilgrin.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Emoticon grin.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Emoticon happy.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Emoticon smile.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Emoticon surprised.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Emoticon tongue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Emoticon unhappy.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Emoticon waii.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Emoticon wink.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Error add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Error delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Error go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Exclamation.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Eye.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Feed add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Feed delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Feed disk.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Feed edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Feed error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Feed go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Feed key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Feed link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Feed magnify.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Feed.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Female.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Film add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Film delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Film edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Film error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Film go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Film key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Film link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Film save.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Film.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Find.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Flag blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Flag green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Flag orange.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Flag pink.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Flag purple.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Flag red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Flag yellow.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder Camera.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder bell.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder brick.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder bug.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder database.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder explore.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder feed.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder find.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder heart.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder image.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder lightbulb.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder magnify.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder page white.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder page.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder palette.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder picture.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder star.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder table.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder user.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder wrench.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Folder.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Font add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Font delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Font go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Font.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Group add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Group delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Group edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Group error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Group gear.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Group go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Group key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Group link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Group.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/HTML add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/HTML delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/HTML go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/HTML valid.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/HTML.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Heart add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Heart delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Heart.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Help.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Hourglass add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Hourglass delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Hourglass go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Hourglass link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Hourglass.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/House go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/House link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/House.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Image add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Image delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Image edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Image link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Image.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Images.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Information.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Joystick add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Joystick delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Joystick error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Joystick.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Key add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Key delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Key go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Keyboard add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Keyboard delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Keyboard magnify.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Keyboard.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Layers.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Layout add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Layout content.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Layout delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Layout edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Layout error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Layout header.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Layout link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Layout sidebar.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Layout.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lightbulb add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lightbulb delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lightbulb off.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lightbulb.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lightning add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lightning delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lightning go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lightning.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Link add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Link break.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Link delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Link edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Link error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Link go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lock add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lock break.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lock delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lock edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lock go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lock open.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lock.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lorry add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lorry delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lorry error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lorry flatbed.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lorry go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lorry link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Lorry.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Magnifier zoom in.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Magnifier zoom out.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Magnifier.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Male.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Map add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Map delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Map edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Map go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Map magnify.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Map.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal bronze add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal bronze blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal bronze delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal bronze green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal bronze red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal gold add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal gold blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal gold delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal gold green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal gold red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal silver add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal silver blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal silver green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal silver red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Medal silver remove.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Money add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Money delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Money dollar.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Money euro.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Money pound.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Money yen.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Money.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Monitor add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Monitor delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Monitor edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Monitor error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Monitor go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Monitor lighting.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Monitor link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Monitor.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Mouse add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Mouse delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Mouse error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Mouse.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Music.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/New.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Newspaper add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Newspaper delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Newspaper go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Newspaper link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Newspaper.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Note add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Note delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Note edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Note error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Note go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Note.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Package add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Package delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Package go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Package green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Package link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Package.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page add-1.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page attach.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page code.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page copy.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page excel.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page find.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page gear.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page lightning.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page paintbrush.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page paste.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page refresh.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page save.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white C.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white CD.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white CPP.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white Csharp.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white DVD.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white Paste.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white acrobat.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white actionscript.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white camera.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white code red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white code.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white coldfusion.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white compressed.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white copy.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white cup.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white database.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white excel.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white find.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white flash.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white freehand.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white gear.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white get.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white h.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white horizontal.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white lightning.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white magnify.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white medal.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white office.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white paint.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white paintbrush.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white php.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white picture.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white powerpoint.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white put.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white ruby.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white stack.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white star.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white swoosh.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white text width.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white text.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white tux.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white vector.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white visualstudio.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white width.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white word.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white world.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white wrench.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white zip.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page white.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page word.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page world.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Page.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Paintbrush.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Paintcan.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Palette.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Paste word.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Pencil add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Pencil delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Pencil go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Pencil.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Phone add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Phone delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Phone sound.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Phone.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Photo add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Photo delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Photo link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Photo.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Photos.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Picture add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Picture delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Picture edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Picture empty.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Picture error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Picture go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Picture key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Picture link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Picture save.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Picture.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Pictures.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Pilcrow.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Pill add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Pill delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Pill go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Pill.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Plugin add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Plugin delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Plugin disabled.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Plugin edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Plugin error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Plugin go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Plugin link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Plugin.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Printer add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Printer delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Printer empty.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Printer error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Printer.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/RSS add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/RSS delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/RSS go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/RSS valid.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/RSS.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Rainbow.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Report add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Report delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Report disk.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Report edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Report go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Report key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Report link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Report magnify.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Report picture.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Report user.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Report word.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Report.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Resultset first.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Resultset last.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Resultset next.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Resultset previous.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Rosette.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Ruby add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Ruby delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Ruby gear.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Ruby get.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Ruby go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Ruby key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Ruby link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Ruby put.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Ruby.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Script add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Script code red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Script code.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Script delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Script edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Script error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Script gear.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Script go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Script key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Script lightning.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Script link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Script palette.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Script save.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Script.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Server add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Server chart.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Server compressed.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Server connect.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Server database.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Server delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Server edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Server error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Server go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Server key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Server lightning.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Server link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Server uncompressed.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Server.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shading.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape align bottom.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape align center.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape align left.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape align middle.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape align right.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape align top.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape flip horizontal.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape flip vertical.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape group.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape handles.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape move back.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape move backwards.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape move forwards.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape move front.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape rotate anticlockwise.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape rotate clockwise.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape square add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape square delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape square edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape square error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape square go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape square key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape square link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape square.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shape ungroup.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shield add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shield delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shield go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Shield.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sitemap color.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sitemap.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sound add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sound delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sound low.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sound mute.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sound none.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sound.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Spellcheck.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sport 8ball.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sport basketball.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sport football.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sport golf.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sport raquet.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sport shuttlecock.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sport soccer.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sport tennis.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Star.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Status away.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Status busy.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Status offline.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Status online.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Stop.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Style add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Style delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Style edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Style go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Style.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Sum.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tab add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tab delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tab edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tab go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tab.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table gear.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table lightning.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table multiple.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table refresh.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table relationship.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table row delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table row insert.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table save.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table sort.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Table.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tag blue add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tag blue delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tag blue edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tag blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tag green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tag orange.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tag pink.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tag purple.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tag red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tag yellow.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tag.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Telephone add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Telephone delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Telephone edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Telephone error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Telephone go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Telephone key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Telephone link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Telephone.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Television add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Television delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Television.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Terminal XP.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Terminal macOS.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text align center.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text align justify.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text align left.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text align right.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text allcaps.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text bold.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text columns.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text dropcaps.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text heading 1.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text heading 2.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text heading 3.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text heading 4.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text heading 5.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text heading 6.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text horizontalrule.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text indent remove.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text indent.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text italic.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text kerning.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text letter omega.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text letterspacing.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text linespacing.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text list bullets.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text list numbers.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text lowercase.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text padding bottom.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text padding left.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text padding right.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text padding top.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text replace.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text signature.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text smallcaps.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text strikethrough.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text subscript.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text superscript.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text underline.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Text uppercase.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Textfield add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Textfield delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Textfield key.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Textfield rename.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Textfield.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Thumb down.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Thumb up.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tick.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Time add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Time delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Time go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Time.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Timeline Marker.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Transmit add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Transmit blue.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Transmit delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Transmit edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Transmit error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Transmit go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Transmit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Tux.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/User add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/User comment.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/User delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/User edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/User female.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/User go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/User gray.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/User green.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/User orange.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/User red.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/User suit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/User.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Vcard add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Vcard delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Vcard edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Vcard.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Vector add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Vector delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Vector.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Wand.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Weather clouds.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Weather cloudy.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Weather lightning.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Weather rain.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Weather snow.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Weather sun.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Webcam add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Webcam delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Webcam error.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Webcam.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/World add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/World delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/World edit.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/World go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/World link.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/World.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Wrench orange.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Wrench.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/XHTML add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/XHTML delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/XHTML go.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/XHTML valid.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/XHTML.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Zoom in.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Zoom out.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/Zoom.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/iPod cast add.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/iPod cast delete.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/iPod cast.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/iPod sound.svg (100%) rename {frontend/src => src}/assets/famfamfam-silk-svg/icons/iPod.svg (100%) rename {frontend/src => src}/lib/Controls.svelte (98%) rename {frontend/src => src}/lib/Library.svelte (100%) rename {frontend/src => src}/lib/NowPlaying.svelte (100%) rename {frontend/src => src}/lib/Queue.svelte (99%) rename {frontend/src => src}/lib/Sidebar.svelte (100%) rename {frontend/src => src}/lib/TreeItem.svelte (98%) rename {frontend/src => src}/lib/Visualizer.svelte (100%) rename {frontend/src => src}/lib/app.svelte.ts (100%) rename {frontend/src => src}/lib/auth.svelte.ts (100%) rename {frontend/src => src}/lib/client.svelte.ts (100%) rename {frontend/src => src}/lib/components/ContextMenu.svelte (100%) rename {frontend/src => src}/lib/components/VirtualList.svelte (100%) rename {frontend/src => src}/lib/dialogs/AuthModal.svelte (100%) rename {frontend/src => src}/lib/dialogs/Modal.svelte (100%) rename {frontend/src => src}/lib/dialogs/PlaylistModals.svelte (95%) rename {frontend/src => src}/lib/dialogs/RadioModals.svelte (96%) rename {frontend/src => src}/lib/dialogs/SettingsModal.svelte (98%) rename {frontend/src => src}/lib/dialogs/ShareModal.svelte (100%) rename {frontend/src => src}/lib/dialogs/ShortcutsModal.svelte (100%) rename {frontend/src => src}/lib/dialogs/UnsyncedChangesModal.svelte (98%) rename {frontend/src => src}/lib/dialogs/UpdateModal.svelte (100%) rename {frontend/src => src}/lib/icons/Icon.svelte (100%) rename {frontend/src => src}/lib/icons/index.ts (100%) rename {frontend/src => src}/lib/icons/packs.svelte.ts (100%) rename {frontend/src => src}/lib/icons/packs/heroicons16solid.ts (100%) rename {frontend/src => src}/lib/icons/packs/heroicons20solid.ts (100%) rename {frontend/src => src}/lib/icons/packs/heroicons24outline.ts (100%) rename {frontend/src => src}/lib/icons/packs/heroicons24solid.ts (100%) rename {frontend/src => src}/lib/icons/packs/lucide24.ts (100%) rename {frontend/src => src}/lib/icons/packs/silk16.ts (100%) rename {frontend/src => src}/lib/languages/index.ts (100%) rename {frontend/src => src}/lib/languages/locales.svelte.ts (100%) rename {frontend/src => src}/lib/languages/locales/ar.ts (100%) rename {frontend/src => src}/lib/languages/locales/bn.ts (100%) rename {frontend/src => src}/lib/languages/locales/cs.ts (100%) rename {frontend/src => src}/lib/languages/locales/da.ts (100%) rename {frontend/src => src}/lib/languages/locales/de.ts (100%) rename {frontend/src => src}/lib/languages/locales/el.ts (100%) rename {frontend/src => src}/lib/languages/locales/en.ts (100%) rename {frontend/src => src}/lib/languages/locales/es.ts (100%) rename {frontend/src => src}/lib/languages/locales/fi.ts (100%) rename {frontend/src => src}/lib/languages/locales/fr.ts (100%) rename {frontend/src => src}/lib/languages/locales/he.ts (100%) rename {frontend/src => src}/lib/languages/locales/hi.ts (100%) rename {frontend/src => src}/lib/languages/locales/id.ts (100%) rename {frontend/src => src}/lib/languages/locales/it.ts (100%) rename {frontend/src => src}/lib/languages/locales/ja.ts (100%) rename {frontend/src => src}/lib/languages/locales/ko.ts (100%) rename {frontend/src => src}/lib/languages/locales/nl.ts (100%) rename {frontend/src => src}/lib/languages/locales/no.ts (100%) rename {frontend/src => src}/lib/languages/locales/pl.ts (100%) rename {frontend/src => src}/lib/languages/locales/pt.ts (100%) rename {frontend/src => src}/lib/languages/locales/ro.ts (100%) rename {frontend/src => src}/lib/languages/locales/ru.ts (100%) rename {frontend/src => src}/lib/languages/locales/sv.ts (100%) rename {frontend/src => src}/lib/languages/locales/th.ts (100%) rename {frontend/src => src}/lib/languages/locales/tl.ts (100%) rename {frontend/src => src}/lib/languages/locales/tr.ts (100%) rename {frontend/src => src}/lib/languages/locales/uk.ts (100%) rename {frontend/src => src}/lib/languages/locales/vi.ts (100%) rename {frontend/src => src}/lib/languages/locales/zhcn.ts (100%) rename {frontend/src => src}/lib/languages/locales/zhtw.ts (100%) rename {frontend/src => src}/lib/languages/translate.svelte.ts (100%) rename {frontend/src => src}/lib/library.svelte.ts (100%) rename {frontend/src => src}/lib/offline/indexedDbStore.svelte.ts (100%) rename {frontend/src => src}/lib/offline/offlineManager.svelte.ts (100%) rename {frontend/src => src}/lib/offline/opfsStorage.ts (100%) rename {frontend/src => src}/lib/player.svelte.ts (100%) rename {frontend/src => src}/lib/queue.svelte.ts (100%) rename {frontend/src => src}/lib/settings.svelte.ts (100%) rename {frontend/src => src}/lib/theme.svelte.ts (100%) rename {frontend/src => src}/lib/ui.svelte.ts (100%) rename {frontend/src => src}/main.ts (100%) rename frontend/tsconfig.app.json => tsconfig.app.json (100%) rename frontend/tsconfig.json => tsconfig.json (100%) rename frontend/tsconfig.node.json => tsconfig.node.json (100%) rename frontend/vite.config.ts => vite.config.ts (83%) delete mode 100644 window_service.go diff --git a/.gitignore b/.gitignore index 3e311c2..baf0a69 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,5 @@ -# nix .direnv -result - -# system .DS_Store - -# wails -.task -bin -build/linux/appimage/build -build/windows/nsis/MicrosoftEdgeWebview2Setup.exe +dist +node_modules +result diff --git a/README.md b/README.md index 4ef34de..ec650ff 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ _tinysub_ is a simple but full-featured web player for _OpenSubsonic compatible music servers_, such as [Navidrome](https://github.com/navidrome/navidrome) and [Gonic](https://github.com/sentriz/gonic). i don't really like Navidrome's web client for various reasons, and i wanted something akin to [Strawberry Music Player](https://www.strawberrymusicplayer.org) that i could run anywhere. -it's written in Svelte, and aims to be extremely performant and lightweight (as much as a web app can be), while also having all of the typical features you'd expect. it's also meant to look and feel similar to a desktop application. +it's written in Svelte, and aims to be extremely performant and lightweight (as much as a web app can be), while also having all of the typical features you'd expect. for more information, see https://devins.page/tinysub. @@ -16,8 +16,6 @@ this project is still a **work-in-progress** and i am working on it in my free t if you are trying to connect with `http` on local network/Tailscale rather than `https`, it may not work out of the box on browsers other than Chromium-based browsers, such as Firefox and Safari. you likely need to serve your Subsonic server on `https`. -a solution to this is using the desktop version of tinysub built with [Wails v3](https://v3.wails.io) - currently these builds are not automated, but if you have `go` and `nodejs` installed you can manually compile it yourself after [installing Wails v3](https://v3.wails.io/quick-start/installation). just run `wails3 package`. these will be automated through CI in the future! - ### mobile support? sorta, but it's not a priority. you may experience some weird mobile UX issues. diff --git a/Taskfile.yml b/Taskfile.yml deleted file mode 100644 index f2041d8..0000000 --- a/Taskfile.yml +++ /dev/null @@ -1,58 +0,0 @@ -version: "3" - -vars: - APP_NAME: "tinysub" - BIN_DIR: "bin" - VITE_PORT: "{{.WAILS_VITE_PORT | default 9245}}" - -includes: - common: ./build/Taskfile.yml - windows: ./build/windows/Taskfile.yml - darwin: ./build/darwin/Taskfile.yml - linux: ./build/linux/Taskfile.yml - -tasks: - build: - summary: Builds the application - cmds: - - task: "{{OS}}:build" - - package: - summary: Packages a production build of the application - cmds: - - task: "{{OS}}:package" - - run: - summary: Runs the application - cmds: - - task: "{{OS}}:run" - - dev: - summary: Runs the application in development mode - cmds: - - wails3 dev -config ./build/config.yml -port {{.VITE_PORT}} - - setup:docker: - summary: Builds Docker image for cross-compilation (~800MB download) - cmds: - - task: common:setup:docker - - build:server: - summary: Builds the application in server mode (no GUI, HTTP server only) - cmds: - - task: common:build:server - - run:server: - summary: Runs the application in server mode - cmds: - - task: common:run:server - - build:docker: - summary: Builds a Docker image for server mode deployment - cmds: - - task: common:build:docker - - run:docker: - summary: Builds and runs the Docker image - cmds: - - task: common:run:docker diff --git a/frontend/biome.json b/biome.json similarity index 91% rename from frontend/biome.json rename to biome.json index 3b68026..7ec4861 100644 --- a/frontend/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.5.0/schema.json", + "$schema": "https://biomejs.dev/schemas/2.5.2/schema.json", "vcs": { "enabled": true, "clientKind": "git", @@ -11,7 +11,6 @@ "!!**/dist", "!!**/result", "!src/assets/famfamfam-silk-svg", - "!bindings", "!public" ] }, diff --git a/build/Taskfile.yml b/build/Taskfile.yml deleted file mode 100644 index 00a49e3..0000000 --- a/build/Taskfile.yml +++ /dev/null @@ -1,369 +0,0 @@ -version: '3' - -vars: - PACKAGE_MANAGER: npm - -tasks: - go:mod:tidy: - summary: Runs `go mod tidy` - internal: true - # Universal/multi-arch builds invoke this concurrently from parallel deps; - # two `go mod tidy` processes racing on go.mod can corrupt it (#4637). - run: once - cmds: - - go mod tidy - - install:frontend:deps: - summary: Install frontend dependencies - run: once - cmds: - - task: install:frontend:deps:{{.PACKAGE_MANAGER}} - - install:frontend:deps:npm: - dir: frontend - sources: - - package.json - - package-lock.json - generates: - - node_modules - preconditions: - - sh: npm version - msg: "Looks like npm isn't installed. Npm is part of the Node installer: https://nodejs.org/en/download/" - cmds: - - npm install - - install:frontend:deps:bun: - dir: frontend - sources: - - package.json - - bun.lock - - bun.lockb - generates: - - node_modules - preconditions: - - sh: bun --version - msg: "bun not found" - cmds: - - bun install - - install:frontend:deps:pnpm: - dir: frontend - sources: - - package.json - - pnpm-lock.yaml - generates: - - node_modules - preconditions: - - sh: pnpm --version - msg: "pnpm not found" - cmds: - - pnpm install - - install:frontend:deps:yarn: - dir: frontend - sources: - - package.json - - yarn.lock - status: - - test -d node_modules || test -f .pnp.cjs - preconditions: - - sh: yarn --version - msg: "yarn not found" - cmds: - - yarn install - - build:frontend: - label: build:frontend (DEV={{.DEV}} RUNNER={{.PACKAGE_MANAGER}}) - summary: Build the frontend project - # darwin:build:universal runs its per-arch builds as parallel deps, each of - # which depends on this task. Without run:once the two executions race: - # one regenerates frontend/bindings (-clean deletes it first) while the - # other's bundler is reading it, failing intermittently with - # 'Could not resolve "./bindings/"' (#4637). - run: once - dir: frontend - sources: - - "**/*" - - exclude: node_modules/**/* - generates: - - dist/**/* - deps: - - task: install:frontend:deps - - task: generate:bindings - vars: - BUILD_FLAGS: - ref: .BUILD_FLAGS - OBFUSCATED: - ref: .OBFUSCATED - cmds: - - task: frontend:run - vars: - SCRIPT: '{{if eq .DEV "true"}}build:dev{{else}}build{{end}}' - env: - PRODUCTION: '{{if eq .DEV "true"}}false{{else}}true{{end}}' - - frontend:run: - summary: Run a frontend script with selected runner - cmds: - - task: frontend:run:{{.PACKAGE_MANAGER}} - vars: - SCRIPT: "{{.SCRIPT}}" - vars: - SCRIPT: "{{.SCRIPT}}" - - frontend:run:npm: - dir: frontend - cmds: - - npm run {{.SCRIPT}} -q - vars: - SCRIPT: "{{.SCRIPT}}" - - frontend:run:yarn: - dir: frontend - cmds: - - yarn {{.SCRIPT}} - vars: - SCRIPT: "{{.SCRIPT}}" - - frontend:run:pnpm: - dir: frontend - cmds: - - pnpm run {{.SCRIPT}} - vars: - SCRIPT: "{{.SCRIPT}}" - - frontend:run:bun: - dir: frontend - cmds: - - bun run {{.SCRIPT}} - vars: - SCRIPT: "{{.SCRIPT}}" - - frontend:vendor:puppertino: - summary: Fetches Puppertino CSS into frontend/public for consistent mobile styling - sources: - - frontend/public/puppertino/puppertino.css - generates: - - frontend/public/puppertino/puppertino.css - cmds: - - | - set -euo pipefail - mkdir -p frontend/public/puppertino - # If bundled Puppertino exists, prefer it. Otherwise, try to fetch, but don't fail build on error. - if [ ! -f frontend/public/puppertino/puppertino.css ]; then - echo "No bundled Puppertino found. Attempting to fetch from GitHub..." - if curl -fsSL https://raw.githubusercontent.com/codedgar/Puppertino/main/dist/css/full.css -o frontend/public/puppertino/puppertino.css; then - curl -fsSL https://raw.githubusercontent.com/codedgar/Puppertino/main/LICENSE -o frontend/public/puppertino/LICENSE || true - echo "Puppertino CSS downloaded to frontend/public/puppertino/puppertino.css" - else - echo "Warning: Could not fetch Puppertino CSS. Proceeding without download since template may bundle it." - fi - else - echo "Using bundled Puppertino at frontend/public/puppertino/puppertino.css" - fi - # Ensure index.html includes Puppertino CSS and button classes - INDEX_HTML=frontend/index.html - if [ -f "$INDEX_HTML" ]; then - if ! grep -q 'href="/puppertino/puppertino.css"' "$INDEX_HTML"; then - # Insert Puppertino link tag after style.css link - awk ' - /href="\/style.css"\/?/ && !x { print; print " "; x=1; next }1 - ' "$INDEX_HTML" > "$INDEX_HTML.tmp" && mv "$INDEX_HTML.tmp" "$INDEX_HTML" - fi - # Replace default .btn with Puppertino primary button classes if present - sed -E -i'' 's/class=\"btn\"/class=\"p-btn p-prim-col\"/g' "$INDEX_HTML" || true - fi - - - - generate:bindings: - summary: Generates bindings for the frontend - run: once - deps: - - task: go:mod:tidy - sources: - - "**/*.[jt]s" - - exclude: frontend/**/* - - frontend/bindings/**/* # Rerun when switching between dev/production mode causes changes in output - - "**/*.go" - - go.mod - - go.sum - generates: - - frontend/bindings/**/* - cmds: - - wails3 generate bindings -f '{{.BUILD_FLAGS}}' -clean=true{{if eq .OBFUSCATED "true"}} -obfuscated{{end}} - - generate:icons: - summary: Generates Windows `.ico` and Mac `.icns` from an image; on macOS, `-iconcomposerinput appicon.icon -macassetdir darwin` also produces `Assets.car` from a `.icon` file (skipped on other platforms). - run: once - dir: build - sources: - - "appicon.png" - - "appicon.icon" - generates: - - "darwin/icons.icns" - - "windows/icon.ico" - cmds: - - wails3 generate icons -input appicon.png -macfilename darwin/icons.icns -windowsfilename windows/icon.ico -iconcomposerinput appicon.icon -macassetdir darwin - - dev:frontend: - summary: Runs the frontend in development mode - deps: - - task: install:frontend:deps - cmds: - - task: frontend:dev:{{.PACKAGE_MANAGER}} - - frontend:dev:npm: - dir: frontend - cmds: - - npm run dev -- --port {{.VITE_PORT}} --strictPort - - frontend:dev:yarn: - dir: frontend - cmds: - - yarn dev --port {{.VITE_PORT}} --strictPort - - frontend:dev:pnpm: - dir: frontend - cmds: - - pnpm dev --port {{.VITE_PORT}} --strictPort - - frontend:dev:bun: - dir: frontend - cmds: - - bun run dev --port {{.VITE_PORT}} --strictPort - - update:build-assets: - summary: Updates the build assets - dir: build - cmds: - - wails3 update build-assets -name "{{.APP_NAME}}" -binaryname "{{.APP_NAME}}" -config config.yml -dir . - - build:server: - summary: Builds the application in server mode (no GUI, HTTP server only) - desc: | - Builds the application with the server build tag enabled. - Server mode runs as a pure HTTP server without native GUI dependencies. - Usage: task build:server - deps: - - task: build:frontend - vars: - BUILD_FLAGS: - ref: .BUILD_FLAGS - cmds: - - go build -tags server {{.BUILD_FLAGS}} -o {{.BIN_DIR}}/{{.APP_NAME}}-server{{exeExt}} - vars: - BUILD_FLAGS: "{{.BUILD_FLAGS}}" - - run:server: - summary: Builds and runs the application in server mode - deps: - - task: build:server - cmds: - - ./{{.BIN_DIR}}/{{.APP_NAME}}-server{{exeExt}} - - build:docker: - summary: Builds a Docker image for server mode deployment - desc: | - Creates a minimal Docker image containing the server mode binary. - The image is based on distroless for security and small size. - Usage: task build:docker [TAG=myapp:latest] - cmds: - - docker build -t {{.TAG | default (printf "%s:latest" .APP_NAME)}} -f build/docker/Dockerfile.server . - vars: - TAG: "{{.TAG}}" - preconditions: - - sh: docker info > /dev/null 2>&1 - msg: "Docker is required. Please install Docker first." - - sh: test -f build/docker/Dockerfile.server - msg: "Dockerfile.server not found. Run 'wails3 update build-assets' to generate it." - - run:docker: - summary: Builds and runs the Docker image - desc: | - Builds the Docker image and runs it, exposing port 8080. - Usage: task run:docker [TAG=myapp:latest] [PORT=8080] - Note: The internal container port is always 8080. The PORT variable - only changes the host port mapping. Ensure your app uses port 8080 - or modify the Dockerfile to match your ServerOptions.Port setting. - deps: - - task: build:docker - vars: - TAG: - ref: .TAG - cmds: - - docker run --rm -p {{.PORT | default "8080"}}:8080 {{.TAG | default (printf "%s:latest" .APP_NAME)}} - vars: - TAG: "{{.TAG}}" - PORT: "{{.PORT}}" - - setup:docker: - summary: Builds Docker image for cross-compilation (~800MB download) - desc: | - Builds the Docker image needed for cross-compiling to any platform. - Run this once to enable cross-platform builds from any OS. - cmds: - - docker build -t wails-cross -f build/docker/Dockerfile.cross build/docker/ - preconditions: - - sh: docker info > /dev/null 2>&1 - msg: "Docker is required. Please install Docker first." - - ios:device:list: - summary: Lists connected iOS devices (UDIDs) - cmds: - - xcrun xcdevice list - - ios:run:device: - summary: Build, install, and launch on a physical iPhone using Apple tools (xcodebuild/devicectl) - vars: - PROJECT: '{{.PROJECT}}' # e.g., build/ios/xcode/.xcodeproj - SCHEME: '{{.SCHEME}}' # e.g., ios.dev - CONFIG: '{{.CONFIG | default "Debug"}}' - DERIVED: '{{.DERIVED | default "build/ios/DerivedData"}}' - UDID: '{{.UDID}}' # from `task ios:device:list` - BUNDLE_ID: '{{.BUNDLE_ID}}' # e.g., com.yourco.wails.ios.dev - TEAM_ID: '{{.TEAM_ID}}' # optional, if your project is not already set up for signing - preconditions: - - sh: xcrun -f xcodebuild - msg: "xcodebuild not found. Please install Xcode." - - sh: xcrun -f devicectl - msg: "devicectl not found. Please update to Xcode 15+ (which includes devicectl)." - - sh: test -n '{{.PROJECT}}' - msg: "Set PROJECT to your .xcodeproj path (e.g., PROJECT=build/ios/xcode/App.xcodeproj)." - - sh: test -n '{{.SCHEME}}' - msg: "Set SCHEME to your app scheme (e.g., SCHEME=ios.dev)." - - sh: test -n '{{.UDID}}' - msg: "Set UDID to your device UDID (see: task ios:device:list)." - - sh: test -n '{{.BUNDLE_ID}}' - msg: "Set BUNDLE_ID to your app's bundle identifier (e.g., com.yourco.wails.ios.dev)." - cmds: - - | - set -euo pipefail - echo "Building for device: UDID={{.UDID}} SCHEME={{.SCHEME}} PROJECT={{.PROJECT}}" - XCB_ARGS=( - -project "{{.PROJECT}}" - -scheme "{{.SCHEME}}" - -configuration "{{.CONFIG}}" - -destination "id={{.UDID}}" - -derivedDataPath "{{.DERIVED}}" - -allowProvisioningUpdates - -allowProvisioningDeviceRegistration - ) - # Optionally inject signing identifiers if provided - if [ -n '{{.TEAM_ID}}' ]; then XCB_ARGS+=(DEVELOPMENT_TEAM={{.TEAM_ID}}); fi - if [ -n '{{.BUNDLE_ID}}' ]; then XCB_ARGS+=(PRODUCT_BUNDLE_IDENTIFIER={{.BUNDLE_ID}}); fi - xcodebuild "${XCB_ARGS[@]}" build | xcpretty || true - # If xcpretty isn't installed, run without it - if [ "${PIPESTATUS[0]}" -ne 0 ]; then - xcodebuild "${XCB_ARGS[@]}" build - fi - # Find built .app - APP_PATH=$(find "{{.DERIVED}}/Build/Products" -type d -name "*.app" -maxdepth 3 | head -n 1) - if [ -z "$APP_PATH" ]; then - echo "Could not locate built .app under {{.DERIVED}}/Build/Products" >&2 - exit 1 - fi - echo "Installing: $APP_PATH" - xcrun devicectl device install app --device "{{.UDID}}" "$APP_PATH" - echo "Launching: {{.BUNDLE_ID}}" - xcrun devicectl device process launch --device "{{.UDID}}" --stderr console --stdout console "{{.BUNDLE_ID}}" diff --git a/build/android/Taskfile.yml b/build/android/Taskfile.yml deleted file mode 100644 index 800acd8..0000000 --- a/build/android/Taskfile.yml +++ /dev/null @@ -1,290 +0,0 @@ -version: '3' - -includes: - common: ../Taskfile.yml - -vars: - APP_ID: '{{.APP_ID | default "com.wails.app"}}' - MIN_SDK: '21' - TARGET_SDK: '34' - # The emulator runs the host architecture; physical devices are arm64 - HOST_ARCH: - sh: '[ "$(uname -m)" = "x86_64" ] && echo "amd64" || echo "arm64"' - # System-image ABI for the host, used in the "create an AVD" hint below. - ANDROID_ABI: - sh: '[ "$(uname -m)" = "arm64" ] && echo "arm64-v8a" || echo "x86_64"' - # SDK location: $ANDROID_HOME / $ANDROID_SDK_ROOT, else the per-OS default - # (macOS: ~/Library/Android/sdk, Linux/other: ~/Android/Sdk) - SDK_ROOT: - sh: 'echo "${ANDROID_HOME:-${ANDROID_SDK_ROOT:-$([ -d "$HOME/Library/Android/sdk" ] && echo "$HOME/Library/Android/sdk" || echo "$HOME/Android/Sdk")}}"' - ADB: - sh: 'command -v adb || echo "${ANDROID_HOME:-${ANDROID_SDK_ROOT:-$([ -d "$HOME/Library/Android/sdk" ] && echo "$HOME/Library/Android/sdk" || echo "$HOME/Android/Sdk")}}/platform-tools/adb"' - EMULATOR: - sh: 'command -v emulator || echo "${ANDROID_HOME:-${ANDROID_SDK_ROOT:-$([ -d "$HOME/Library/Android/sdk" ] && echo "$HOME/Library/Android/sdk" || echo "$HOME/Android/Sdk")}}/emulator/emulator"' - -tasks: - install:deps: - summary: Check and install Android development dependencies - cmds: - - go run build/android/scripts/deps/install_deps.go - env: - TASK_FORCE_YES: '{{if .YES}}true{{else}}false{{end}}' - prompt: This will check and install Android development dependencies. Continue? - - build: - summary: Creates a debug build of the application for Android - deps: - - task: common:go:mod:tidy - - task: generate:android:overlay - - task: common:build:frontend - vars: - BUILD_FLAGS: - ref: .BUILD_FLAGS - PRODUCTION: - ref: .PRODUCTION - cmds: - - echo "Building Android app {{.APP_NAME}}..." - - task: compile:go:shared - vars: - ARCH: '{{.ARCH | default .HOST_ARCH}}' - vars: - BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production,android -trimpath -buildvcs=false -ldflags="-w -s"{{else}}-tags android,debug -buildvcs=false -gcflags=all="-l"{{end}}' - env: - PRODUCTION: '{{.PRODUCTION | default "false"}}' - - compile:go:shared: - summary: Compile Go code to shared library (.so) - cmds: - - | - # Locate the NDK: $ANDROID_NDK_HOME, or the newest installed NDK - NDK_ROOT="$ANDROID_NDK_HOME" - if [ -z "$NDK_ROOT" ]; then - SDK_ROOT="{{.SDK_ROOT}}" - NDK_ROOT=$(ls -d "$SDK_ROOT"/ndk/* 2>/dev/null | sort -V | tail -1) - fi - if [ -z "$NDK_ROOT" ] || [ ! -d "$NDK_ROOT" ]; then - echo "Error: Android NDK not found" - echo "Install one with: sdkmanager 'ndk;26.3.11579264' (or set ANDROID_NDK_HOME)" - exit 1 - fi - - # Determine toolchain based on host OS - case "$(uname -s)" in - Darwin) HOST_TAG="darwin-x86_64" ;; - Linux) HOST_TAG="linux-x86_64" ;; - *) echo "Unsupported host OS"; exit 1 ;; - esac - - TOOLCHAIN="$NDK_ROOT/toolchains/llvm/prebuilt/$HOST_TAG" - - # Set compiler based on architecture - case "{{.ARCH}}" in - arm64) - export CC="$TOOLCHAIN/bin/aarch64-linux-android{{.MIN_SDK}}-clang" - export CXX="$TOOLCHAIN/bin/aarch64-linux-android{{.MIN_SDK}}-clang++" - export GOARCH=arm64 - JNI_DIR="arm64-v8a" - ;; - amd64|x86_64) - export CC="$TOOLCHAIN/bin/x86_64-linux-android{{.MIN_SDK}}-clang" - export CXX="$TOOLCHAIN/bin/x86_64-linux-android{{.MIN_SDK}}-clang++" - export GOARCH=amd64 - JNI_DIR="x86_64" - ;; - *) - echo "Unsupported architecture: {{.ARCH}}" - exit 1 - ;; - esac - - export CGO_ENABLED=1 - export GOOS=android - - mkdir -p {{.BIN_DIR}} - mkdir -p build/android/app/src/main/jniLibs/$JNI_DIR - - go build -buildmode=c-shared -overlay build/android/overlay.json {{.BUILD_FLAGS}} \ - -o build/android/app/src/main/jniLibs/$JNI_DIR/libwails.so - vars: - BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production,android -trimpath -buildvcs=false -ldflags="-w -s"{{else}}-tags android,debug -buildvcs=false -gcflags=all="-l"{{end}}' - - compile:go:all-archs: - summary: Compile Go code for all Android architectures (fat APK) - cmds: - - task: compile:go:shared - vars: - ARCH: arm64 - - task: compile:go:shared - vars: - ARCH: amd64 - - package: - summary: Packages a production build of the application into a signed release APK - deps: - - task: build - vars: - PRODUCTION: "true" - ARCH: '{{.ARCH | default .HOST_ARCH}}' - cmds: - - task: assemble:apk:release - - package:fat: - summary: Packages a production build for all architectures (fat APK) - deps: - - task: build - vars: - PRODUCTION: "true" - ARCH: arm64 - cmds: - - task: compile:go:shared - vars: - ARCH: amd64 - PRODUCTION: "true" - - task: assemble:apk:release - - assemble:apk: - summary: Assembles a debug APK using Gradle - preconditions: - - sh: 'command -v java >/dev/null || [ -n "$JAVA_HOME" ]' - msg: "Java not found. Install a JDK (e.g. brew install openjdk@21) and/or set JAVA_HOME" - cmds: - - | - cd build/android - # The exec bit is lost when gradlew is extracted from the embedded - # build assets, so restore it before invoking the wrapper. - chmod +x ./gradlew - ./gradlew assembleDebug - cp app/build/outputs/apk/debug/app-debug.apk "../../{{.BIN_DIR}}/{{.APP_NAME}}.apk" - echo "APK created: {{.BIN_DIR}}/{{.APP_NAME}}.apk" - - assemble:apk:release: - summary: Assembles a release APK using Gradle (signed with the debug keystore unless ANDROID_KEYSTORE_FILE is set) - preconditions: - - sh: 'command -v java >/dev/null || [ -n "$JAVA_HOME" ]' - msg: "Java not found. Install a JDK (e.g. brew install openjdk@21) and/or set JAVA_HOME" - cmds: - - | - cd build/android - # The exec bit is lost when gradlew is extracted from the embedded - # build assets, so restore it before invoking the wrapper. - chmod +x ./gradlew - ./gradlew assembleRelease - cp app/build/outputs/apk/release/app-release.apk "../../{{.BIN_DIR}}/{{.APP_NAME}}.apk" - echo "Release APK created: {{.BIN_DIR}}/{{.APP_NAME}}.apk" - - generate:android:overlay: - internal: true - summary: Generate Go build overlay that registers the Android main - sources: - - build/config.yml - generates: - - build/android/overlay.json - - build/android/gen/main_android.gen.go - cmds: - - wails3 android overlay:gen -out build/android/overlay.json -config build/config.yml - - generate:android:bindings: - internal: true - summary: Generates bindings for Android - sources: - - "**/*.go" - - go.mod - - go.sum - generates: - - frontend/bindings/**/* - cmds: - # Bindings are generated from the Go AST; CGO is disabled so the NDK - # is not required for this step - - wails3 generate bindings -f '-tags android' -clean=true - env: - GOOS: android - CGO_ENABLED: 0 - - ensure-emulator: - internal: true - summary: Ensure Android Emulator is running - silent: true - cmds: - - | - # Check if an emulator is already running - if "{{.ADB}}" devices | grep -q "emulator"; then - echo "Emulator already running" - exit 0 - fi - - # Get first available AVD - AVD_NAME=$("{{.EMULATOR}}" -list-avds | tail -1) - if [ -z "$AVD_NAME" ]; then - echo "No Android Virtual Devices found. Create one with:" - echo " avdmanager create avd --name wails --package 'system-images;android-34;google_apis;{{.ANDROID_ABI}}' --device pixel_7" - exit 1 - fi - - echo "Starting emulator: $AVD_NAME" - # Start the emulator daemonized so it outlives this task step. go-task's - # shell tracks background jobs by PID and reaps them when the command's - # interpreter finishes (which nohup/setsid alone don't prevent — the kill - # is direct), so a bare `emulator &` is gone before the later - # install/launch steps run. Launch it from a short-lived child shell that - # backgrounds the emulator and exits immediately: the emulator is then - # reparented to init/launchd and go-task's shell has no handle to reap it. - nohup sh -c "'{{.EMULATOR}}' -avd '$AVD_NAME' -no-snapshot-load /dev/null 2>&1 &" >/dev/null 2>&1 - - # Wait for emulator to boot (max 120 seconds) - echo "Waiting for emulator to boot..." - "{{.ADB}}" wait-for-device - - for i in $(seq 1 120); do - BOOT_COMPLETED=$("{{.ADB}}" shell getprop sys.boot_completed 2>/dev/null | tr -d '\r') - if [ "$BOOT_COMPLETED" = "1" ]; then - echo "Emulator booted successfully" - exit 0 - fi - sleep 1 - done - - echo "Emulator boot timeout" - exit 1 - preconditions: - - sh: '[ -x "{{.ADB}}" ] || command -v adb' - msg: "adb not found. Install the Android SDK platform-tools (or set ANDROID_HOME)" - - sh: '[ -x "{{.EMULATOR}}" ] || command -v emulator' - msg: "emulator not found. Install the Android SDK emulator package (or set ANDROID_HOME)" - - deploy-emulator: - summary: Deploy the packaged release APK to the Android Emulator - deps: [package] - cmds: - - task: ensure-emulator - - '"{{.ADB}}" uninstall {{.APP_ID}} 2>/dev/null || true' - - '"{{.ADB}}" install "{{.BIN_DIR}}/{{.APP_NAME}}.apk"' - - '"{{.ADB}}" shell am start -n {{.APP_ID}}/com.wails.app.MainActivity' - - run: - summary: Build, install and launch a debug build in the Android Emulator - deps: - - task: ensure-emulator - - task: build - cmds: - - task: assemble:apk - - '"{{.ADB}}" uninstall {{.APP_ID}} 2>/dev/null || true' - - '"{{.ADB}}" install "{{.BIN_DIR}}/{{.APP_NAME}}.apk"' - - '"{{.ADB}}" shell am start -n {{.APP_ID}}/com.wails.app.MainActivity' - - logs: - summary: Stream Android logcat filtered to this app - cmds: - - '"{{.ADB}}" logcat -v time | grep -E "(Wails|{{.APP_NAME}})" || true' - - logs:all: - summary: Stream all Android logcat (verbose) - cmds: - - '"{{.ADB}}" logcat -v time' - - clean: - summary: Clean build artifacts - cmds: - - rm -rf {{.BIN_DIR}} - - rm -rf build/android/app/build - - rm -rf build/android/app/src/main/jniLibs/*/libwails.so - - rm -rf build/android/.gradle diff --git a/build/android/app/build.gradle b/build/android/app/build.gradle deleted file mode 100644 index 630f03e..0000000 --- a/build/android/app/build.gradle +++ /dev/null @@ -1,83 +0,0 @@ -plugins { - id 'com.android.application' -} - -android { - namespace 'com.wails.app' - compileSdk 34 - - buildFeatures { - buildConfig = true - } - - defaultConfig { - applicationId "com.wails.app" - minSdk 21 - targetSdk 34 - versionCode 1 - versionName "1.0" - - // Configure supported ABIs - ndk { - abiFilters 'arm64-v8a', 'x86_64' - } - } - - def keystoreFile = System.getenv("ANDROID_KEYSTORE_FILE") - def hasKeystore = keystoreFile != null && !keystoreFile.trim().isEmpty() - - signingConfigs { - // A real keystore can be provided via environment variables; without - // one, release builds are signed with the debug keystore so they can - // be installed for testing (not suitable for Play Store uploads). - release { - if (hasKeystore) { - storeFile file(keystoreFile) - storePassword System.getenv("ANDROID_KEYSTORE_PASSWORD") - keyAlias System.getenv("ANDROID_KEY_ALIAS") - keyPassword System.getenv("ANDROID_KEY_PASSWORD") - } - } - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - signingConfig hasKeystore ? signingConfigs.release : signingConfigs.debug - } - debug { - debuggable true - } - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 - } - - // Source sets configuration - sourceSets { - main { - // JNI libraries are in jniLibs folder - jniLibs.srcDirs = ['src/main/jniLibs'] - // Assets for the WebView - assets.srcDirs = ['src/main/assets'] - } - } - - // Packaging options - packagingOptions { - // Don't strip Go symbols in debug builds - doNotStrip '*/arm64-v8a/libwails.so' - doNotStrip '*/x86_64/libwails.so' - } -} - -dependencies { - implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'androidx.webkit:webkit:1.9.0' - implementation 'com.google.android.material:material:1.11.0' - implementation 'androidx.biometric:biometric:1.1.0' - implementation 'androidx.security:security-crypto:1.1.0-alpha06' -} diff --git a/build/android/app/proguard-rules.pro b/build/android/app/proguard-rules.pro deleted file mode 100644 index 8b88c3d..0000000 --- a/build/android/app/proguard-rules.pro +++ /dev/null @@ -1,12 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. - -# Keep native methods --keepclasseswithmembernames class * { - native ; -} - -# Keep Wails bridge classes --keep class com.wails.app.WailsBridge { *; } --keep class com.wails.app.WailsJSBridge { *; } diff --git a/build/android/app/src/main/AndroidManifest.xml b/build/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 03d343a..0000000 --- a/build/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/android/app/src/main/java/com/wails/app/MainActivity.java b/build/android/app/src/main/java/com/wails/app/MainActivity.java deleted file mode 100644 index 4d7b204..0000000 --- a/build/android/app/src/main/java/com/wails/app/MainActivity.java +++ /dev/null @@ -1,806 +0,0 @@ -package com.wails.app; - -import android.annotation.SuppressLint; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.res.Configuration; -import android.database.Cursor; -import android.net.ConnectivityManager; -import android.net.Network; -import android.net.NetworkCapabilities; -import android.net.Uri; -import android.os.BatteryManager; -import android.os.Build; -import android.os.Bundle; -import android.os.PowerManager; -import android.content.pm.PackageManager; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.provider.MediaStore; -import android.provider.OpenableColumns; -import android.util.Base64; -import android.util.Log; -import android.webkit.WebResourceRequest; -import android.webkit.WebResourceResponse; -import android.webkit.WebSettings; -import android.webkit.WebView; -import android.webkit.WebViewClient; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.FileProvider; -import androidx.webkit.WebViewAssetLoader; - -import org.json.JSONObject; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.ByteArrayOutputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.List; - -/** - * MainActivity hosts the WebView and manages the Wails application lifecycle. - * It uses WebViewAssetLoader to serve assets from the Go library without - * requiring a network server. - */ -public class MainActivity extends AppCompatActivity { - private static final String TAG = "WailsActivity"; - private static final boolean DEBUG = BuildConfig.DEBUG; - private static final String WAILS_SCHEME = "https"; - private static final String WAILS_HOST = "wails.localhost"; - private static final int FILE_PICKER_REQUEST = 7001; - - private WebView webView; - private WailsBridge bridge; - // Battery: system-event receivers are registered only while the activity is - // in the foreground (onStart) and torn down in onStop, so background battery/ - // network/screen broadcasts don't wake the app. - private boolean systemReceiversRegistered = false; - private WebViewAssetLoader assetLoader; - - // The Go-side dialog ID of the in-flight file picker (-1 when idle) - private int pendingFilePickerCallbackID = -1; - private static final int PHOTO_CAPTURE_REQUEST = 7002; - private static final int VIDEO_CAPTURE_REQUEST = 7003; - private static final int CAMERA_PERMISSION_REQUEST = 7010; - private File pendingCaptureFile; - private boolean pendingCaptureIsVideo; - - // System-event sources (battery/power, screen lock, network). Registered in - // onCreate, torn down in onDestroy. Each forwards a "system:*" event to JS - // via the bridge. - private BroadcastReceiver batteryReceiver; - private BroadcastReceiver screenReceiver; - private BroadcastReceiver powerSaveReceiver; - private ConnectivityManager connectivityManager; - private ConnectivityManager.NetworkCallback networkCallback; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - // Initialize the native Go library - bridge = new WailsBridge(this); - bridge.initialize(); - - // Set up WebView - setupWebView(); - - // Load the application - loadApplication(); - } - - @SuppressLint("SetJavaScriptEnabled") - private void setupWebView() { - webView = findViewById(R.id.webview); - bridge.setWebView(webView); - - // Configure WebView settings - WebSettings settings = webView.getSettings(); - settings.setJavaScriptEnabled(true); - settings.setDomStorageEnabled(true); - settings.setDatabaseEnabled(true); - settings.setAllowFileAccess(false); - settings.setAllowContentAccess(false); - settings.setMediaPlaybackRequiresUserGesture(false); - settings.setMixedContentMode(WebSettings.MIXED_CONTENT_NEVER_ALLOW); - - // Enable debugging in debug builds - if (DEBUG) { - WebView.setWebContentsDebuggingEnabled(true); - } - - // Set up asset loader for serving local assets - assetLoader = new WebViewAssetLoader.Builder() - .setDomain(WAILS_HOST) - .addPathHandler("/", new WailsPathHandler(bridge)) - .build(); - - // Set up WebView client to intercept requests - webView.setWebViewClient(new WebViewClient() { - @Nullable - @Override - public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { - // Handle wails.localhost requests - if (request.getUrl().getHost() != null && - request.getUrl().getHost().equals(WAILS_HOST)) { - - // For wails API calls (runtime, capabilities, etc.) pass the - // full URL including the query string, because - // WebViewAssetLoader.PathHandler strips query params - String path = request.getUrl().getPath(); - if (path != null && path.startsWith("/wails/")) { - String fullPath = path; - String query = request.getUrl().getQuery(); - if (query != null && !query.isEmpty()) { - fullPath = path + "?" + query; - } - if (DEBUG) Log.d(TAG, "Wails API call: " + fullPath); - - byte[] data = bridge.serveAsset(fullPath, request.getMethod(), "{}"); - if (data != null && data.length > 0) { - java.io.InputStream inputStream = new java.io.ByteArrayInputStream(data); - java.util.Map headers = new java.util.HashMap<>(); - headers.put("Access-Control-Allow-Origin", "*"); - headers.put("Cache-Control", "no-cache"); - headers.put("Content-Type", "application/json"); - - return new WebResourceResponse( - "application/json", - "UTF-8", - 200, - "OK", - headers, - inputStream - ); - } - // Return error response if data is null - return new WebResourceResponse( - "application/json", - "UTF-8", - 500, - "Internal Error", - new java.util.HashMap<>(), - new java.io.ByteArrayInputStream("{}".getBytes()) - ); - } - - // Stream captured photos/videos from the cache with HTTP Range - // support so