9 Commits
Author SHA1 Message Date
valerio 7083525779 Update build.yml
publish / publish-tauri (, windows-latest) (push) Waiting to run
publish / publish-tauri (, ubuntu-22.04) (push) Failing after 4m17s
2026-03-13 22:10:16 +01:00
valerio 1cada661a2 Update build.yml
publish / publish-tauri (, windows-latest) (push) Waiting to run
publish / publish-tauri (, ubuntu-22.04) (push) Failing after 6s
2026-03-13 22:07:19 +01:00
valerio 1c7fae729f Update build.yml
publish / publish-tauri (, windows-latest) (push) Waiting to run
publish / publish-tauri (, ubuntu-22.04) (push) Failing after 4m18s
2026-03-13 21:15:55 +01:00
valerio 17cd12666b Update build.yml
publish / publish-tauri (, windows-latest) (push) Waiting to run
publish / publish-tauri (, ubuntu-22.04) (push) Failing after 4m28s
2026-03-13 21:06:35 +01:00
valerio 78add4880e Update build.yml
publish / publish-tauri (, windows-latest) (push) Waiting to run
publish / publish-tauri (, ubuntu-22.04) (push) Failing after 4m14s
2026-03-13 20:36:51 +01:00
valerio 3f6aaef447 Update build.yml
publish / publish-tauri (, windows-latest) (push) Waiting to run
publish / publish-tauri (, ubuntu-22.04) (push) Failing after 3m39s
2026-03-13 20:29:19 +01:00
valerio b41240e455 Update build.yml
publish / publish-tauri (, windows-latest) (push) Waiting to run
publish / publish-tauri (, ubuntu-22.04) (push) Failing after 1m40s
2026-03-13 20:25:04 +01:00
valerio 3b1143a7c0 Update build.yml
publish / publish-tauri (, windows-latest) (push) Waiting to run
publish / publish-tauri (, ubuntu-22.04) (push) Failing after 4s
2026-03-13 20:23:39 +01:00
valerio d58f71aac1 Update build.yml
publish / publish-tauri (, windows-latest) (push) Waiting to run
publish / publish-tauri (--target aarch64-apple-darwin, macos-latest) (push) Waiting to run
publish / publish-tauri (, ubuntu-22.04) (push) Failing after 41s
2026-03-13 20:21:21 +01:00
5 changed files with 38 additions and 113 deletions
+3 -2
View File
@@ -17,6 +17,8 @@ jobs:
include:
- platform: 'ubuntu-22.04'
args: ''
- platform: 'windows-latest'
args: ''
runs-on: ${{ matrix.platform }}
steps:
@@ -39,8 +41,7 @@ jobs:
- name: install frontend dependencies
run: bun install # change this to npm, pnpm or bun depending on which one you use.
- name: build tauri packages and release
uses: ValerioMeschi/tauri-action@9f8b32da04b4d228756d93dc93b9f16869e4f105
- uses: ValerioMeschi/tauri-action@dev
env:
GITHUB_TOKEN: ${{ secrets.SMOOTHIE_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
+4 -19
View File
@@ -1,22 +1,7 @@
```
▄▄▄▄▄
██▀▀▀▀█▄ █▄ █▄
▀██▄ ▄▀ ▄ ▄██▄██ ▀▀
▀██▄▄ ███▄███▄ ▄███▄ ▄███▄ ██ ████▄ ██ ▄█▀█▄
▄ ▀██▄ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▄█▀
▀██████▀▄██ ██ ▀█▄▀███▀▄▀███▀▄██▄██ ██▄██▄▀█▄▄▄
```
# Tauri + SvelteKit
# Smoothie - Blender Version Manager
This template should help get you started developing with Tauri and SvelteKit in Vite.
Smoothie is a simple launcher that allows you to download, install and manage all your blender Versions.
## Recommended IDE Setup
## Features
* **Download:** Easily fetch official Blender builds for your operating system.
* **Manage:** Install, Remove, Fav and switch between, easily and without messing with your system files and configs
* **Unified Library:** All your blender Installs, Configs, Plugins and Libraries in ONE folder. Easily mantain, backup, share or transfer your whole blender setup.
* **Set as Default:** Quickly choose which version is used to open .blend files
* **Simple Interface:** A Straigforward GUI
* **Templates:** Manage as many instances of a same version of Blender as you want. Each with different its own Layout, Startup file and Plugins.
* **Custom Icons:** Smoothie Creates custom icons for all your blender installs so you can quickly fin
[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer).
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "smoothie",
"version": "0.1.1",
"version": "0.1.0",
"description": "",
"type": "module",
"scripts": {
-37
View File
@@ -1,37 +0,0 @@
<script>
import { load } from '@tauri-apps/plugin-store';
let { loadingState } = $props();
</script>
<div class="splash">
<div class="spinner">
<pre class="monospace">
▄▄▄▄▄
██▀▀▀▀█▄ █▄ █▄
▀██▄ ▄▀ ▄ ▄██▄██ ▀▀
▀██▄▄ ███▄███▄ ▄███▄ ▄███▄ ██ ████▄ ██ ▄█▀█▄
▄ ▀██▄ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▄█▀
▀██████▀▄██ ██ ▀█▄▀███▀▄▀███▀▄██▄██ ██▄██▄▀█▄▄▄
</pre>
</div>
<p>{loadingState}</p>
</div>
<style>
.splash {
align-items: center;
justify-content: center;
flex-direction: column;
display: flex;
width: 100%;
height: 100%;
}
.spinner {
}
.monospace {
font-family: monospace;
color: var(--black);
letter-spacing: 1px;
}
</style>
+30 -54
View File
@@ -1,38 +1,28 @@
<script>
// LIBS
import { getVersion } from '@tauri-apps/api/app';
import { onMount } from 'svelte';
import { fade } from 'svelte/transition';
import '@webtui/css/components/spinner.css';
// MODULES
import { setupTrayIcon } from '$lib/trayicon';
import { getSettings, currentSettings } from '$lib/settings';
import { getInstalledVersions, currentInstalledVersions } from '$lib/library';
import { fade } from 'svelte/transition';
import { onMount } from 'svelte';
import { getSettings, currentSettings } from '$lib/settings.js';
import { getBlenderReleases, blenderReleases } from '$lib/blenderfetch';
import { downloadTasksStore } from '$lib/download';
// COMPONENTS
import { getInstalledVersions, currentInstalledVersions } from '$lib/library.js';
import { downloadTasksStore } from '$lib/download.js';
import Library from '$lib/components/Library.svelte';
import Download from '$lib/components/Download.svelte';
import Settings from '$lib/components/Settings.svelte';
import Popup from '$lib/components/Popup.svelte';
import Dialog from '$lib/components/Dialog.svelte';
import Splash from '$lib/components/Splash.svelte';
// states
let fadeInSettings = { duration: 100 };
let fadeOutSettings = { duration: 100, delay: fadeInSettings.duration };
let activeTab = $state('library');
let blenderVersions = $state([]);
let installedVersions = $state([]);
let downloadTasks = $state([]);
let settings = $state();
let initialized = $state(false);
let version = $state('');
let loadingState = $state('loading'); // load, update, initialized
let activeTab = 'library';
let blenderVersions = [];
let installedVersions = [];
let downloadTasks = [];
let settings = {};
let initialized = false;
async function initStoresListeners() {
function initStoresListeners() {
currentSettings.subscribe((value) => {
settings = value;
console.log('Loaded settings:', settings);
@@ -52,20 +42,26 @@
}
onMount(async () => {
loadingState = 'Checking for Updates';
version = await getVersion();
loadingState = 'Loading Settings';
const startTime = Date.now();
await getSettings();
loadingState = 'Fetching Blender Releases';
await getBlenderReleases();
loadingState = 'Loading your installs';
await getInstalledVersions();
loadingState = 'Setting up Tray';
await setupTrayIcon();
loadingState = 'initializing';
await initStoresListeners();
await setTimeout(() => {}, 1000);
loadingState = 'initialized';
initStoresListeners();
const elapsed = Date.now() - startTime;
if (elapsed < 2000) {
initialized = true;
/* setTimeout(() => {
initialized = true;
}, 2000 - elapsed);*/
} else {
initialized = true;
}
//await getInstalledVersions();
//
});
</script>
@@ -73,7 +69,7 @@
<Dialog />
<div id="main">
{#if loadingState == 'initialized'}
{#if initialized}
<div class="tablist" role="tablist">
<div
role="tab"
@@ -126,11 +122,8 @@
{/if}
</div>
</div>
<div class="version">v{version}</div>
{:else}
<div class="splash-wrapper" in:fade={{ duration: 100 }} out:fade={{ delay: 50, duration: 200 }}>
<Splash {loadingState} />
</div>
LOADING...
{/if}
</div>
@@ -214,21 +207,4 @@
width: 100%;
height: 100%;
}
.version {
position: fixed;
bottom: 2rem;
right: 2rem;
z-index: 2;
text-align: right;
color: var(--light-accent);
}
.splash-wrapper {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: var(--white);
z-index: 1;
}
</style>