Compare commits
8 Commits
v0.0.2
...
c5c9f84222
| Author | SHA1 | Date | |
|---|---|---|---|
|
c5c9f84222
|
|||
|
0fd27b2bf6
|
|||
|
d01038f927
|
|||
|
f88b9052b1
|
|||
|
aaec37a9d8
|
|||
|
c3764872e8
|
|||
|
731a9683e7
|
|||
|
91492c0696
|
@@ -61,24 +61,3 @@ jobs:
|
|||||||
body_path: CHANGELOG.md
|
body_path: CHANGELOG.md
|
||||||
draft: false
|
draft: false
|
||||||
prerelease: false
|
prerelease: false
|
||||||
|
|
||||||
- name: 🔑 Configure rclone
|
|
||||||
if: github.ref_type == 'tag'
|
|
||||||
run: |
|
|
||||||
echo "$SSH_PRIVATE_KEY" > /tmp/id_rsa
|
|
||||||
chmod 600 /tmp/id_rsa
|
|
||||||
mkdir -p ~/.config/rclone
|
|
||||||
echo -e "[sftp-remote]\ntype = sftp\nhost = ${SSH_HOST}\nuser = ${SSH_USER}\nport = ${SSH_PORT}\nkey_file = /tmp/id_rsa" > ~/.config/rclone/rclone.conf
|
|
||||||
env:
|
|
||||||
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
|
|
||||||
SSH_HOST: ${{ vars.SSH_HOST }}
|
|
||||||
SSH_PORT: ${{ vars.SSH_PORT }}
|
|
||||||
SSH_USER: ${{ vars.SSH_USER }}
|
|
||||||
|
|
||||||
- name: 🚀 Deploy Changed Files via rclone
|
|
||||||
if: github.ref_type == 'tag'
|
|
||||||
run: |
|
|
||||||
echo "Uploading the rest"
|
|
||||||
rclone sync --update -v --progress --exclude _astro/** --stats 2s --stats-one-line ./app/build/ sftp-remote:${REMOTE_DIR} --transfers 4
|
|
||||||
env:
|
|
||||||
REMOTE_DIR: ${{ vars.REMOTE_DIR }}
|
|
||||||
|
|||||||
14
CHANGELOG.md
14
CHANGELOG.md
@@ -1,17 +1,3 @@
|
|||||||
## v0.0.2 (2026-02-03)
|
|
||||||
|
|
||||||
fix(ci): actually deploy on tags
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## v0.0.2 (2026-02-03)
|
|
||||||
|
|
||||||
fix(app): correctly handle false value in settings
|
|
||||||
|
|
||||||
This caused a bug where random seed could not be false.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## v0.0.1 (2026-02-03)
|
## v0.0.1 (2026-02-03)
|
||||||
|
|
||||||
chore: format
|
chore: format
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@nodarium/app",
|
"name": "@nodarium/app",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.2",
|
"version": "0.0.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite dev",
|
"dev": "vite dev",
|
||||||
|
|||||||
@@ -98,7 +98,7 @@
|
|||||||
&& typeof internalValue === 'number'
|
&& typeof internalValue === 'number'
|
||||||
) {
|
) {
|
||||||
value[key] = node?.options?.[internalValue];
|
value[key] = node?.options?.[internalValue];
|
||||||
} else if (internalValue !== undefined) {
|
} else if (internalValue) {
|
||||||
value[key] = internalValue;
|
value[key] = internalValue;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -124,6 +124,7 @@
|
|||||||
|
|
||||||
{#if key && isNodeInput(type?.[key])}
|
{#if key && isNodeInput(type?.[key])}
|
||||||
{@const inputType = type[key]}
|
{@const inputType = type[key]}
|
||||||
|
<!-- Leaf input -->
|
||||||
<div class="input input-{inputType.type}" class:first-level={depth === 1}>
|
<div class="input input-{inputType.type}" class:first-level={depth === 1}>
|
||||||
{#if inputType.type === 'button'}
|
{#if inputType.type === 'button'}
|
||||||
<button onclick={handleClick}>
|
<button onclick={handleClick}>
|
||||||
@@ -137,6 +138,7 @@
|
|||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
{:else if depth === 0}
|
{:else if depth === 0}
|
||||||
|
<!-- Root: iterate over top-level keys -->
|
||||||
{#each Object.keys(type ?? {}).filter((k) => k !== 'title') as childKey (childKey)}
|
{#each Object.keys(type ?? {}).filter((k) => k !== 'title') as childKey (childKey)}
|
||||||
<NestedSettings
|
<NestedSettings
|
||||||
id={`${id}.${childKey}`}
|
id={`${id}.${childKey}`}
|
||||||
@@ -148,6 +150,7 @@
|
|||||||
{/each}
|
{/each}
|
||||||
<hr />
|
<hr />
|
||||||
{:else if key && type?.[key]}
|
{:else if key && type?.[key]}
|
||||||
|
<!-- Group -->
|
||||||
{#if depth > 0}
|
{#if depth > 0}
|
||||||
<hr />
|
<hr />
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"version": "0.0.2",
|
"version": "0.0.1",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postinstall": "pnpm run -r --filter 'ui' build",
|
"postinstall": "pnpm run -r --filter 'ui' build",
|
||||||
"build": "pnpm build:nodes && pnpm build:app",
|
"build": "pnpm build:nodes && pnpm build:app",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@nodarium/types",
|
"name": "@nodarium/types",
|
||||||
"version": "0.0.2",
|
"version": "0.0.1",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@nodarium/ui",
|
"name": "@nodarium/ui",
|
||||||
"version": "0.0.2",
|
"version": "0.0.1",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "vite build && npm run package",
|
"build": "vite build && npm run package",
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import adapter from '@sveltejs/adapter-static';
|
import adapter from '@sveltejs/adapter-static';
|
||||||
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
||||||
|
|
||||||
const { BASE_URL = '' } = process.env;
|
|
||||||
|
|
||||||
/** @type {import('@sveltejs/kit').Config} */
|
/** @type {import('@sveltejs/kit').Config} */
|
||||||
const config = {
|
const config = {
|
||||||
// Consult https://kit.svelte.dev/docs/integrations#preprocessors
|
// Consult https://kit.svelte.dev/docs/integrations#preprocessors
|
||||||
@@ -10,9 +8,6 @@ const config = {
|
|||||||
preprocess: vitePreprocess(),
|
preprocess: vitePreprocess(),
|
||||||
|
|
||||||
kit: {
|
kit: {
|
||||||
paths: {
|
|
||||||
base: BASE_URL === '/' ? '' : BASE_URL
|
|
||||||
},
|
|
||||||
// adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
|
// adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
|
||||||
// If your environment is not supported, or you settled on a specific environment, switch out the adapter.
|
// If your environment is not supported, or you settled on a specific environment, switch out the adapter.
|
||||||
// See https://kit.svelte.dev/docs/adapters for more information about adapters.
|
// See https://kit.svelte.dev/docs/adapters for more information about adapters.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@nodarium/utils",
|
"name": "@nodarium/utils",
|
||||||
"version": "0.0.2",
|
"version": "0.0.1",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -21,6 +21,24 @@ test('fastHashArray doesnt product collisions', () => {
|
|||||||
expect(hash_a).not.toEqual(hash_b);
|
expect(hash_a).not.toEqual(hash_b);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('fastHashArray is fast(ish) < 20ms', () => {
|
||||||
|
const a = new Int32Array(10_000);
|
||||||
|
|
||||||
|
const t0 = performance.now();
|
||||||
|
fastHashArrayBuffer(a);
|
||||||
|
|
||||||
|
const t1 = performance.now();
|
||||||
|
|
||||||
|
a[0] = 1;
|
||||||
|
|
||||||
|
fastHashArrayBuffer(a);
|
||||||
|
|
||||||
|
const t2 = performance.now();
|
||||||
|
|
||||||
|
expect(t1 - t0).toBeLessThan(20);
|
||||||
|
expect(t2 - t1).toBeLessThan(20);
|
||||||
|
});
|
||||||
|
|
||||||
// test if the fastHashArray function is deterministic
|
// test if the fastHashArray function is deterministic
|
||||||
test('fastHashArray is deterministic', () => {
|
test('fastHashArray is deterministic', () => {
|
||||||
const a = new Int32Array(1000);
|
const a = new Int32Array(1000);
|
||||||
|
|||||||
Reference in New Issue
Block a user