Distribución: lanzador de escritorio, README del fork y gitignore
- strudel-launcher.sh portable (sirve la build estática y abre el navegador; rutas relativas, puerto configurable, detecta node/nvm) - README-HACKLAB.md: qué añade el fork, instalación en Linux, icono de escritorio, packs propios y cómo seguir a upstream - gitignore: patterns personales, remixes generados y logs fuera del repo
This commit is contained in:
parent
7b9f1155b4
commit
b6dbe97a62
4 changed files with 134 additions and 0 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -145,3 +145,8 @@ fabric.properties
|
|||
samples/*
|
||||
!samples/README.md
|
||||
.idea/
|
||||
|
||||
# --- fork hacklab: material personal que no se publica ---
|
||||
my-patterns/
|
||||
strudel-server.log
|
||||
website/src/repl/components/panel/remix-projects.mjs
|
||||
|
|
|
|||
81
README-HACKLAB.md
Normal file
81
README-HACKLAB.md
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
# Strudel · fork del hacklab
|
||||
|
||||
Fork de [Strudel](https://codeberg.org/uzu/strudel) (live coding de música en
|
||||
el navegador, port de TidalCycles a JavaScript) con mejoras de usabilidad
|
||||
pensadas para pinchar en directo y para gente que empieza.
|
||||
|
||||
Upstream: <https://codeberg.org/uzu/strudel> · Licencia: AGPL-3.0 (la misma,
|
||||
ver `LICENSE`). Gracias al equipo de Strudel/TidalCycles por la base ♥
|
||||
|
||||
## Qué añade este fork
|
||||
|
||||
- **Interfaz multiidioma** (`website/src/i18n.mjs`): castellano, inglés,
|
||||
francés, alemán, italiano, portugués y más. Se cambia desde el selector del
|
||||
header y se guarda en los ajustes.
|
||||
- **Pestaña Projects**: gestor de proyectos locales (localStorage) con
|
||||
carpetas, buscador y una librería de tracks de fábrica lista para pinchar
|
||||
(bases techno/acid originales, de la casa).
|
||||
- **Barra de transporte** estilo reproductor bajo el editor: anterior /
|
||||
play-pausa / siguiente, tiempo transcurrido y **barra de progreso
|
||||
arrastrable** (seek real: se añadió `Cyclist.setCycle()` en
|
||||
`packages/core`).
|
||||
- **Pestaña Guía**: chuleta de síntesis y sonidos para tener a mano mientras
|
||||
se pincha.
|
||||
- **Packs de temas** para el editor (`neon-madrid` + `hacklab-pack`: 5 neón
|
||||
sobre negro y 5 estándar).
|
||||
- **Lanzador de escritorio** (`strudel-launcher.sh`): sirve la build estática
|
||||
en local y abre el navegador. Ideal para un icono clicable.
|
||||
|
||||
## Instalación (Linux)
|
||||
|
||||
Requisitos: `git`, `node` >= 20 y `pnpm` (`corepack enable` lo activa).
|
||||
|
||||
```bash
|
||||
git clone https://gitea.laenre.net/hacklab/strudel.git
|
||||
cd strudel
|
||||
pnpm i # instala las dependencias del monorepo
|
||||
```
|
||||
|
||||
### Modo desarrollo (recarga en vivo)
|
||||
|
||||
```bash
|
||||
pnpm dev # abre http://localhost:4321
|
||||
```
|
||||
|
||||
### Modo "aparato" (build estática + lanzador)
|
||||
|
||||
```bash
|
||||
pnpm build # genera la web estática
|
||||
./strudel-launcher.sh # la sirve en http://127.0.0.1:3009 y abre el navegador
|
||||
```
|
||||
|
||||
Para el icono de escritorio, crea `~/.local/share/applications/strudel.desktop`:
|
||||
|
||||
```ini
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Strudel
|
||||
Comment=Live coding de música
|
||||
Exec=/ruta/a/strudel/strudel-launcher.sh
|
||||
Icon=audio-x-generic
|
||||
Terminal=false
|
||||
Categories=AudioVideo;Audio;
|
||||
```
|
||||
|
||||
## Añadir tus propios packs de proyectos
|
||||
|
||||
La librería de fábrica vive en
|
||||
`website/src/repl/components/panel/default-projects.mjs`. Para un pack
|
||||
personal sin tocar el repo, crea un módulo local con el mismo formato
|
||||
`{name, folder, code}` y concaténalo en `DEFAULT_PROJECTS` (los packs
|
||||
personales están en `.gitignore`). También puedes crear y organizar proyectos
|
||||
directamente desde la pestaña Projects de la interfaz.
|
||||
|
||||
## Mantenerse al día con upstream
|
||||
|
||||
El remoto `upstream` apunta al Strudel original:
|
||||
|
||||
```bash
|
||||
git fetch upstream
|
||||
git merge upstream/main # y resolver conflictos si los hay
|
||||
```
|
||||
|
|
@ -1,5 +1,10 @@
|
|||
# strudel
|
||||
|
||||
> **Fork del hacklab** con interfaz multiidioma, pestaña de proyectos, barra
|
||||
> de transporte con seek, guía de sonidos y lanzador de escritorio.
|
||||
> Ver [README-HACKLAB.md](./README-HACKLAB.md). Upstream:
|
||||
> <https://codeberg.org/uzu/strudel>
|
||||
|
||||
Live coding patterns on the web
|
||||
|
||||
|
||||
|
|
|
|||
43
strudel-launcher.sh
Executable file
43
strudel-launcher.sh
Executable file
|
|
@ -0,0 +1,43 @@
|
|||
#!/usr/bin/env bash
|
||||
# Strudel launcher — sirve la build estática local y abre el navegador.
|
||||
# Pensado para el lanzador de escritorio (icono clicable): si el servidor ya
|
||||
# está corriendo solo abre la pestaña; si no, lo arranca desacoplado.
|
||||
#
|
||||
# ./strudel-launcher.sh # puerto 3009
|
||||
# STRUDEL_PORT=4000 ./strudel-launcher.sh
|
||||
#
|
||||
# Requiere haber hecho antes: pnpm i && pnpm build (ver README-HACKLAB.md)
|
||||
set -u
|
||||
|
||||
DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
APP_DIR="${DIR}/website"
|
||||
ASTRO="${APP_DIR}/node_modules/.bin/astro"
|
||||
PORT="${STRUDEL_PORT:-3009}"
|
||||
URL="http://127.0.0.1:${PORT}/"
|
||||
LOG="${DIR}/strudel-server.log"
|
||||
|
||||
# Si node no está en el PATH (sesión de escritorio), prueba con nvm
|
||||
if ! command -v node >/dev/null 2>&1 && [ -d "${HOME}/.nvm/versions/node" ]; then
|
||||
NODE_BIN="$(ls -d "${HOME}"/.nvm/versions/node/*/bin 2>/dev/null | sort -V | tail -1)"
|
||||
[ -n "${NODE_BIN}" ] && export PATH="${NODE_BIN}:${PATH}"
|
||||
fi
|
||||
|
||||
if [ ! -x "${ASTRO}" ]; then
|
||||
echo "Falta la instalación. Ejecuta en ${DIR}:"
|
||||
echo " pnpm i && pnpm build"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Si el servidor no está ya escuchando, lo arrancamos desacoplado del lanzador.
|
||||
if ! curl -fsS -o /dev/null "${URL}" 2>/dev/null; then
|
||||
cd "${APP_DIR}" || exit 1
|
||||
setsid "${ASTRO}" preview --port "${PORT}" --host 127.0.0.1 > "${LOG}" 2>&1 &
|
||||
# Espera hasta ~30s a que responda
|
||||
for _ in $(seq 1 30); do
|
||||
curl -fsS -o /dev/null "${URL}" 2>/dev/null && break
|
||||
sleep 1
|
||||
done
|
||||
fi
|
||||
|
||||
# Abre en el navegador por defecto
|
||||
xdg-open "${URL}" >/dev/null 2>&1 &
|
||||
Loading…
Add table
Add a link
Reference in a new issue