fix(magic): always show supervised + lock profile true/false; company from exists
This commit is contained in:
parent
dd84f8ec38
commit
e6fad4f51e
1
.sixth/skills/ui-ux-pro-max
Submodule
1
.sixth/skills/ui-ux-pro-max
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit b7e3af80f6e331f6fb456667b82b12cade7c9d35
|
||||
@ -270,12 +270,10 @@ const backendRows = computed(() => {
|
||||
},
|
||||
{
|
||||
label: "Supervised",
|
||||
value: data?.enrolled ? (data.supervised ? "Ja" : "Nein") : "—",
|
||||
valueClass: data?.enrolled
|
||||
? data.supervised
|
||||
? "text-green-600 dark:text-green-400 font-medium"
|
||||
: "text-red-600 dark:text-red-400 font-medium"
|
||||
: "text-gray-400 dark:text-gray-500",
|
||||
value: data?.supervised ? "Ja" : "Nein",
|
||||
valueClass: data?.supervised
|
||||
? "text-green-600 dark:text-green-400 font-medium"
|
||||
: "text-red-600 dark:text-red-400 font-medium",
|
||||
},
|
||||
{
|
||||
label: "Organisation",
|
||||
@ -286,16 +284,10 @@ const backendRows = computed(() => {
|
||||
},
|
||||
{
|
||||
label: "Lock-Profil",
|
||||
value: data?.enrolled
|
||||
? data.lockProfileInstalled
|
||||
? "Installiert"
|
||||
: "Fehlt"
|
||||
: "—",
|
||||
valueClass: data?.enrolled
|
||||
? data.lockProfileInstalled
|
||||
? "text-green-600 dark:text-green-400 font-medium"
|
||||
: "text-red-600 dark:text-red-400 font-medium"
|
||||
: "text-gray-400 dark:text-gray-500",
|
||||
value: data?.lockProfileInstalled ? "Installiert" : "Fehlt",
|
||||
valueClass: data?.lockProfileInstalled
|
||||
? "text-green-600 dark:text-green-400 font-medium"
|
||||
: "text-red-600 dark:text-red-400 font-medium",
|
||||
},
|
||||
{
|
||||
label: "ReBreak App",
|
||||
|
||||
@ -85,7 +85,7 @@ export default defineEventHandler(async (event) => {
|
||||
success: true,
|
||||
data: {
|
||||
enrolled: status.enrolled,
|
||||
company: status.enrolled ? "ReBreak" : null,
|
||||
company: status.exists ? "ReBreak" : null,
|
||||
supervised: status.supervised,
|
||||
lockProfileInstalled: lockState?.active ?? false,
|
||||
lastAppPushAt: status.lastAppPushAt?.toISOString() ?? null,
|
||||
|
||||
437
docs/superpowers/plans/2026-06-18-self-hosted-github-runner.md
Normal file
437
docs/superpowers/plans/2026-06-18-self-hosted-github-runner.md
Normal file
@ -0,0 +1,437 @@
|
||||
# Self-Hosted GitHub Actions Runner Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** Betreiben eines self-hosted GitHub Actions Runners auf `api.trucko.org` (128.140.47.53) mit dem Label `raynis-builder`, um Backend- und Admin-Builds für das rebreak-monorepo kostenlos auszuführen und weiterhin auf `staging.rebreak.org` zu deployen.
|
||||
|
||||
**Architecture:** Code-Hosting bleibt auf GitHub. GitHub Actions Workflows werden auf `runs-on: [self-hosted, raynis-builder]` umgestellt. Der Runner auf `api.trucko.org` checkt aus, baut das Artifact und kopiert es per SCP auf `staging.rebreak.org`. Dort übernimmt das bestehende `deploy-from-artifact.sh` das Entpacken, Migrations-Check und PM2-Restart.
|
||||
|
||||
**Tech Stack:** GitHub Actions, self-hosted Runner, Hetzner VPS, pnpm, Node.js 24.11.1, SSH/SCP, PM2.
|
||||
|
||||
---
|
||||
|
||||
## File Structure
|
||||
|
||||
| File / Pfad | Verantwortung | Aktion |
|
||||
|---|---|---|
|
||||
| `api.trucko.org` (Server) | Self-hosted Runner + Build-Umgebung | Einrichten |
|
||||
| `staging.rebreak.org` (Server) | Production/Staging + Deploy-Script | SSH-Key hinzufügen |
|
||||
| `.github/workflows/deploy-staging.yml` | Backend-Deploy-Workflow | Ändern: `runs-on` + SSH-Secret |
|
||||
| `.github/workflows/deploy-admin-staging.yml` | Admin-Deploy-Workflow | Ändern: `runs-on` + SSH-Secret |
|
||||
| GitHub Repo → Settings → Environments → staging | Secrets/Variables | `STAGING_DEPLOY_KEY` hinzufügen |
|
||||
|
||||
---
|
||||
|
||||
### Task 1: Server `api.trucko.org` vorbereiten
|
||||
|
||||
**Files:**
|
||||
- Ausführen auf: `api.trucko.org` (per SSH)
|
||||
|
||||
- [ ] **Step 1: SSH auf Server verbinden**
|
||||
|
||||
```bash
|
||||
ssh root@128.140.47.53
|
||||
```
|
||||
|
||||
- [ ] **Step 2: System aktualisieren und Basis-Tools installieren**
|
||||
|
||||
```bash
|
||||
apt-get update && apt-get install -y curl git build-essential
|
||||
```
|
||||
|
||||
- [ ] **Step 3: Node.js 24.11.1 installieren (via nvm)**
|
||||
|
||||
```bash
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||||
source ~/.bashrc
|
||||
nvm install 24.11.1
|
||||
nvm use 24.11.1
|
||||
node -v
|
||||
```
|
||||
|
||||
Expected output: `v24.11.1`
|
||||
|
||||
- [ ] **Step 4: pnpm 10.23.0 installieren**
|
||||
|
||||
```bash
|
||||
corepack enable
|
||||
corepack prepare pnpm@10.23.0 --activate
|
||||
pnpm -v
|
||||
```
|
||||
|
||||
Expected output: `10.23.0`
|
||||
|
||||
- [ ] **Step 5: Git-Config für den Runner setzen**
|
||||
|
||||
```bash
|
||||
git config --global user.name "Raynis Builder"
|
||||
git config --global user.email "builder@raynis.dev"
|
||||
```
|
||||
|
||||
- [ ] **Step 6: Workspace-Verzeichnis anlegen**
|
||||
|
||||
```bash
|
||||
mkdir -p /srv/raynis-builder
|
||||
chown root:root /srv/raynis-builder
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 2: GitHub Actions Runner installieren und registrieren
|
||||
|
||||
**Files:**
|
||||
- Ausführen auf: `api.trucko.org`
|
||||
- Zu prüfen in GitHub: Settings → Actions → Runners
|
||||
|
||||
- [ ] **Step 1: Runner-Version ermitteln (aktuellste)**
|
||||
|
||||
```bash
|
||||
RUNNER_VERSION=$(curl -sL https://api.github.com/repos/actions/runner/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||
echo "$RUNNER_VERSION"
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Runner herunterladen und entpacken**
|
||||
|
||||
```bash
|
||||
cd /srv/raynis-builder
|
||||
curl -o actions-runner-linux-x64-${RUNNER_VERSION}.tar.gz -L https://github.com/actions/runner/releases/download/v${RUNNER_VERSION}/actions-runner-linux-x64-${RUNNER_VERSION}.tar.gz
|
||||
tar xzf actions-runner-linux-x64-${RUNNER_VERSION}.tar.gz
|
||||
rm actions-runner-linux-x64-${RUNNER_VERSION}.tar.gz
|
||||
```
|
||||
|
||||
- [ ] **Step 3: Runner konfigurieren (Token aus GitHub holen)**
|
||||
|
||||
In GitHub: Repository `rebreak-monorepo` → Settings → Actions → Runners → New self-hosted runner → Linux → x64.
|
||||
|
||||
Dort angezeigte `config.sh`-Befehle auf dem Server ausführen, z. B.:
|
||||
|
||||
```bash
|
||||
cd /srv/raynis-builder
|
||||
./config.sh --url https://github.com/RaynisDev/rebreak --token <TOKEN_AUS_GITHUB> --name raynis-builder-01 --labels raynis-builder --work _work
|
||||
```
|
||||
|
||||
- [ ] **Step 4: Runner als systemd-Service registrieren**
|
||||
|
||||
```bash
|
||||
cd /srv/raynis-builder
|
||||
./svc.sh install
|
||||
./svc.sh start
|
||||
./svc.sh status
|
||||
```
|
||||
|
||||
Expected: `active (running)`
|
||||
|
||||
- [ ] **Step 5: Runner in GitHub UI als Online verifizieren**
|
||||
|
||||
In GitHub: Settings → Actions → Runners → Status muss `Idle` oder `Online` zeigen.
|
||||
|
||||
---
|
||||
|
||||
### Task 3: SSH-Deploy-Key zwischen Servern einrichten
|
||||
|
||||
**Files:**
|
||||
- Ausführen auf: `api.trucko.org` und `staging.rebreak.org`
|
||||
|
||||
- [ ] **Step 1: SSH-Key auf `api.trucko.org` erzeugen**
|
||||
|
||||
```bash
|
||||
ssh-keygen -t ed25519 -f /root/.ssh/rebreak-deploy -C "raynis-builder@api.trucko.org" -N ""
|
||||
cat /root/.ssh/rebreak-deploy.pub
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Public Key auf `staging.rebreak.org` autorisieren**
|
||||
|
||||
```bash
|
||||
ssh root@staging.rebreak.org
|
||||
mkdir -p /root/.ssh
|
||||
cat >> /root/.ssh/authorized_keys << 'EOF'
|
||||
<PUBLIC_KEY_VON_OBEN>
|
||||
EOF
|
||||
chmod 600 /root/.ssh/authorized_keys
|
||||
```
|
||||
|
||||
- [ ] **Step 3: Verbindung vom Builder zum Staging testen**
|
||||
|
||||
```bash
|
||||
ssh -i /root/.ssh/rebreak-deploy root@staging.rebreak.org "whoami"
|
||||
```
|
||||
|
||||
Expected output: `root`
|
||||
|
||||
- [ ] **Step 4: SSH-Konfiguration für einfacheren Zugriff anlegen**
|
||||
|
||||
Auf `api.trucko.org`:
|
||||
|
||||
```bash
|
||||
cat >> /root/.ssh/config << 'EOF'
|
||||
Host rebreak-staging
|
||||
HostName staging.rebreak.org
|
||||
User root
|
||||
IdentityFile ~/.ssh/rebreak-deploy
|
||||
StrictHostKeyChecking no
|
||||
UserKnownHostsFile /dev/null
|
||||
EOF
|
||||
chmod 600 /root/.ssh/config
|
||||
```
|
||||
|
||||
- [ ] **Step 5: Verbindung mit Alias testen**
|
||||
|
||||
```bash
|
||||
ssh rebreak-staging "whoami"
|
||||
```
|
||||
|
||||
Expected output: `root`
|
||||
|
||||
---
|
||||
|
||||
### Task 4: GitHub Secrets aktualisieren
|
||||
|
||||
**Files:**
|
||||
- GitHub Repository: Settings → Environments → staging
|
||||
|
||||
- [ ] **Step 1: Neuen Private Key als Secret hinzufügen**
|
||||
|
||||
Auf `api.trucko.org`:
|
||||
|
||||
```bash
|
||||
cat /root/.ssh/rebreak-deploy
|
||||
```
|
||||
|
||||
Inhalt kopieren und in GitHub einfügen:
|
||||
|
||||
- Environment: `staging`
|
||||
- Secret-Name: `STAGING_DEPLOY_KEY`
|
||||
- Wert: Inhalt von `/root/.ssh/rebreak-deploy`
|
||||
|
||||
- [ ] **Step 2: Bestehende Secrets überprüfen**
|
||||
|
||||
In GitHub prüfen, dass folgende Secrets/Vars im Environment `staging` vorhanden sind:
|
||||
|
||||
- `HETZNER_SSH_KEY` → kann später entfernt werden, wenn neuer Key funktioniert
|
||||
- `HETZNER_HOST` → `staging.rebreak.org`
|
||||
- `HETZNER_USER` → `root`
|
||||
|
||||
- [ ] **Step 3: Altes Secret nicht löschen (Fallback)**
|
||||
|
||||
`HETZNER_SSH_KEY` erst nach erfolgreichem Test-Deploy entfernen.
|
||||
|
||||
---
|
||||
|
||||
### Task 5: Workflows auf self-hosted Runner umstellen
|
||||
|
||||
**Files:**
|
||||
- Modify: `.github/workflows/deploy-staging.yml`
|
||||
- Modify: `.github/workflows/deploy-admin-staging.yml`
|
||||
|
||||
- [ ] **Step 1: `deploy-staging.yml` anpassen**
|
||||
|
||||
Ändere in beiden Jobs `runs-on: ubuntu-latest` zu:
|
||||
|
||||
```yaml
|
||||
runs-on: [self-hosted, raynis-builder]
|
||||
```
|
||||
|
||||
Ändere den SSH-Setup-Step, sodass er `STAGING_DEPLOY_KEY` verwendet:
|
||||
|
||||
```yaml
|
||||
- name: Setup SSH
|
||||
env:
|
||||
SSH_PRIVATE_KEY: ${{ secrets.STAGING_DEPLOY_KEY }}
|
||||
SSH_HOST: ${{ vars.HETZNER_HOST }}
|
||||
run: |
|
||||
if [ -z "$SSH_PRIVATE_KEY" ] || [ -z "$SSH_HOST" ]; then
|
||||
echo "FATAL: STAGING_DEPLOY_KEY oder HETZNER_HOST nicht gesetzt"
|
||||
exit 1
|
||||
fi
|
||||
mkdir -p ~/.ssh
|
||||
printf '%s\n' "$SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519
|
||||
chmod 600 ~/.ssh/id_ed25519
|
||||
ssh-keyscan -H "$SSH_HOST" >> ~/.ssh/known_hosts
|
||||
```
|
||||
|
||||
- [ ] **Step 2: `deploy-admin-staging.yml` analog anpassen**
|
||||
|
||||
Gleiche Änderungen wie bei `deploy-staging.yml`:
|
||||
|
||||
```yaml
|
||||
runs-on: [self-hosted, raynis-builder]
|
||||
```
|
||||
|
||||
und SSH-Setup-Step auf `STAGING_DEPLOY_KEY` umstellen.
|
||||
|
||||
- [ ] **Step 3: Node-Setup überprüfen**
|
||||
|
||||
Da der Runner Node.js 24.11.1 und pnpm 10.23.0 bereits hat, kann der Schritt `actions/setup-node` theoretisch entfallen. Für Robustheit aber beibehalten:
|
||||
|
||||
```yaml
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 24.11.1
|
||||
cache: pnpm
|
||||
```
|
||||
|
||||
**Hinweis:** `cache: pnpm` funktioniert auf self-hosted Runnern nur, wenn der Runner persistent ist. Da der Server nicht bei jedem Job neu aufgesetzt wird, ist das gegeben.
|
||||
|
||||
- [ ] **Step 4: Beide Dateien lokal validieren**
|
||||
|
||||
```bash
|
||||
cd /Users/chahinebrini/mono/rebreak-monorepo
|
||||
git diff .github/workflows/deploy-staging.yml .github/workflows/deploy-admin-staging.yml
|
||||
```
|
||||
|
||||
- [ ] **Step 5: Änderungen commiten**
|
||||
|
||||
```bash
|
||||
git add .github/workflows/deploy-staging.yml .github/workflows/deploy-admin-staging.yml
|
||||
git commit -m "ci: use self-hosted runner raynis-builder on api.trucko.org"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 6: Test-Deploy durchführen
|
||||
|
||||
**Files:**
|
||||
- GitHub Actions UI
|
||||
- Server-Logs auf `api.trucko.org` und `staging.rebreak.org`
|
||||
|
||||
- [ ] **Step 1: Workflow manuell triggern**
|
||||
|
||||
In GitHub: Actions → Deploy Staging → Run workflow → Branch: main → Run.
|
||||
|
||||
- [ ] **Step 2: Build-Logs auf Runner verfolgen**
|
||||
|
||||
Auf `api.trucko.org`:
|
||||
|
||||
```bash
|
||||
tail -f /srv/raynis-builder/_diag/Worker_*.log
|
||||
tail -f /srv/raynis-builder/_diag/SelfUpdate-*.log
|
||||
```
|
||||
|
||||
- [ ] **Step 3: Deploy-Logs auf Staging verfolgen**
|
||||
|
||||
Auf `staging.rebreak.org`:
|
||||
|
||||
```bash
|
||||
pm2 logs rebreak-staging --lines 50
|
||||
```
|
||||
|
||||
- [ ] **Step 4: Health-Check manuell ausführen**
|
||||
|
||||
Lokal oder auf `api.trucko.org`:
|
||||
|
||||
```bash
|
||||
for i in $(seq 1 12); do
|
||||
STATUS=$(curl -sS -o /dev/null -w '%{http_code}' https://staging.rebreak.org/api/auth/me 2>/dev/null || echo "000")
|
||||
echo "Attempt $i: $STATUS"
|
||||
[ "$STATUS" = "401" ] || [ "$STATUS" = "200" ] && echo "PASSED" && break
|
||||
sleep 5
|
||||
done
|
||||
```
|
||||
|
||||
Expected: `PASSED`
|
||||
|
||||
- [ ] **Step 5: Admin-Deploy testen**
|
||||
|
||||
In GitHub: Actions → Deploy Admin Staging → Run workflow.
|
||||
|
||||
Health-Check:
|
||||
|
||||
```bash
|
||||
curl -sS -o /dev/null -w '%{http_code}' https://admin.staging.rebreak.org/
|
||||
```
|
||||
|
||||
Expected: Nicht `000`, `502` oder `503`.
|
||||
|
||||
---
|
||||
|
||||
### Task 7: Alten Webhook-Deploy abschalten (optional, nach stabilem Betrieb)
|
||||
|
||||
**Files:**
|
||||
- Ausführen auf: `staging.rebreak.org`
|
||||
- GitHub Repo: Settings → Webhooks
|
||||
|
||||
- [ ] **Step 1: Mindestens 3–5 erfolgreiche Deploys über neuen Runner abwarten**
|
||||
|
||||
- [ ] **Step 2: GitHub-Webhook deaktivieren**
|
||||
|
||||
In GitHub: Settings → Webhooks → `https://staging.rebreak.org/webhook` → Active: aus.
|
||||
|
||||
- [ ] **Step 3: Webhook-Service auf Server stoppen**
|
||||
|
||||
```bash
|
||||
ssh root@staging.rebreak.org
|
||||
pm2 stop rebreak-webhook
|
||||
pm2 save
|
||||
```
|
||||
|
||||
- [ ] **Step 4: Legacy-Dateien archivieren (nicht löschen)**
|
||||
|
||||
```bash
|
||||
cd /srv/rebreak
|
||||
mkdir -p scripts/legacy
|
||||
mv scripts/deploy.sh scripts/legacy/deploy.sh
|
||||
mv scripts/deploy-webhook scripts/legacy/deploy-webhook
|
||||
```
|
||||
|
||||
- [ ] **Step 5: `ecosystem.config.js` bereinigen**
|
||||
|
||||
Entferne den Block für `rebreak-webhook` aus `ecosystem.config.js` und deploye die Änderung.
|
||||
|
||||
---
|
||||
|
||||
### Task 8: Cleanup und Monitoring
|
||||
|
||||
- [ ] **Step 1: Altes `HETZNER_SSH_KEY` Secret aus GitHub entfernen**
|
||||
|
||||
Nur nachdem `STAGING_DEPLOY_KEY` erfolgreich getestet wurde.
|
||||
|
||||
- [ ] **Step 2: Runner-Verfügbarkeit überwachen**
|
||||
|
||||
In GitHub: Settings → Actions → Runners → Status regelmäßig prüfen.
|
||||
|
||||
- [ ] **Step 3: Log-Rotation auf Runner einrichten**
|
||||
|
||||
```bash
|
||||
logrotate --version || apt-get install -y logrotate
|
||||
cat > /etc/logrotate.d/github-runner << 'EOF'
|
||||
/srv/raynis-builder/_diag/*.log {
|
||||
daily
|
||||
rotate 7
|
||||
compress
|
||||
missingok
|
||||
notifempty
|
||||
}
|
||||
EOF
|
||||
```
|
||||
|
||||
- [ ] **Step 4: pnpm-Store auf Runner bereinigen (monatlich)**
|
||||
|
||||
```bash
|
||||
pnpm store prune
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Self-Review
|
||||
|
||||
### Spec coverage
|
||||
|
||||
- Self-hosted Runner auf `api.trucko.org`: Task 1 + 2
|
||||
- Label `raynis-builder`: Task 2
|
||||
- Code-Hosting bleibt auf GitHub: implizit durch GitHub Actions
|
||||
- Workflows auf `runs-on: [self-hosted, raynis-builder]`: Task 5
|
||||
- Deploy zu `staging.rebreak.org`: Task 3 + 4 + 6
|
||||
- Sicherheit (kein PR-Trigger): Task 5 (Workflow-Trigger bleibt `push: branches: [main]`)
|
||||
- Webhook abschalten: Task 7
|
||||
|
||||
### Placeholder scan
|
||||
|
||||
Keine TBD/TODO. Alle Befehle sind konkret.
|
||||
|
||||
### Konsistenz
|
||||
|
||||
- Label durchgehend `raynis-builder`
|
||||
- Secret-Name durchgehend `STAGING_DEPLOY_KEY`
|
||||
- Node-Version durchgehend `24.11.1`
|
||||
- pnpm-Version durchgehend `10.23.0`
|
||||
- Server-IP durchgehend `128.140.47.53`
|
||||
@ -0,0 +1,242 @@
|
||||
# Self-Hosted GitHub Actions Runner für rebreak-monorepo
|
||||
|
||||
**Datum:** 2026-06-18
|
||||
**Status:** Genehmigt — bereit für Implementierungsplanung
|
||||
**Autor:** Kimi Code (Brainstorming-Session)
|
||||
**Ziel:** GitHub-Actions-Buildkosten eliminieren, indem Backend- und Admin-Builds auf den bereits vorhandenen Hetzner-Server `api.trucko.org` (128.140.47.53) verlagert werden.
|
||||
|
||||
---
|
||||
|
||||
## 1. Zusammenfassung
|
||||
|
||||
Derzeit laufen Backend- und Admin-Builds auf kostenpflichtigen GitHub-gehosteten Runnern (`ubuntu-latest`). Bei einem privaten Repository führt das bei hoher Push-Frequenz zu Kosten von über 200 €/Monat.
|
||||
|
||||
Dieses Design schlägt vor, einen **self-hosted GitHub Actions Runner** auf dem bereits vorhandenen, aktuell ungenutzten Hetzner-Server `api.trucko.org` (128.140.47.53, 8 GB RAM) zu betreiben. Der Code-Hosting-Aspekt bleibt vollständig auf GitHub; nur die Build- und Deploy-Ausführung wird auf die eigene Infrastruktur verlagert.
|
||||
|
||||
Das Runner-Label `raynis-builder` ist bewusst generisch gewählt, damit später weitere Raynis-Apps (Mutterfirma von ReBreak) denselben Runner nutzen können.
|
||||
|
||||
---
|
||||
|
||||
## 2. Kontext & Ausgangslage
|
||||
|
||||
### Aktueller Flow
|
||||
|
||||
```
|
||||
local dev → push to main
|
||||
↓
|
||||
GitHub Actions (ubuntu-latest)
|
||||
↓
|
||||
Build Backend / Admin
|
||||
↓
|
||||
Upload Artifact
|
||||
↓
|
||||
Deploy-Job (ubuntu-latest)
|
||||
↓
|
||||
SCP + SSH zu staging.rebreak.org
|
||||
↓
|
||||
deploy-from-artifact.sh
|
||||
```
|
||||
|
||||
### Bestehende Komponenten (werden wiederverwendet)
|
||||
|
||||
- `.github/workflows/deploy-staging.yml`
|
||||
- `.github/workflows/deploy-admin-staging.yml`
|
||||
- `scripts/deploy-from-artifact.sh`
|
||||
- `scripts/deploy-admin-from-artifact.sh`
|
||||
- `ecosystem.config.js` auf `staging.rebreak.org`
|
||||
|
||||
### Probleme mit dem aktuellen Setup
|
||||
|
||||
- GitHub Actions Minuten kosten bei privatem Repo über 200 €/Monat.
|
||||
- Keine Notwendigkeit für die ursprüngliche Entscheidung, Builds auf GitHub laufen zu lassen (Server-OOM auf CX23) — `api.trucko.org` hat 8 GB RAM.
|
||||
|
||||
---
|
||||
|
||||
## 3. Ziele
|
||||
|
||||
1. **Kosten eliminieren:** Keine kostenpflichtigen GitHub Actions Minuten mehr für Backend-/Admin-Builds.
|
||||
2. **Minimaler Änderungsaufwand:** Bestehende Workflows und Deploy-Scripts bleiben weitgehend erhalten.
|
||||
3. **Sicherheit:** Self-hosted Runner wird nicht für Pull Requests von Forks genutzt.
|
||||
4. **Zuverlässigkeit:** Concurrency-Group, Health-Check und atomic deploy bleiben erhalten.
|
||||
|
||||
## 4. Nicht-Ziele
|
||||
|
||||
- Kein Wechsel des Code-Hostings (GitHub bleibt).
|
||||
- Kein Ersatz für Windows- oder iOS-Builds (diese bleiben bei GitHub Actions oder werden lokal gebaut).
|
||||
- Keine Einführung zusätzlicher CI-Tools wie Gitea, GitLab oder Woodpecker.
|
||||
- Keine Änderung an der Production-Infrastruktur auf `staging.rebreak.org` über das Nötige hinaus.
|
||||
|
||||
---
|
||||
|
||||
## 5. Architektur
|
||||
|
||||
```
|
||||
GitHub Push (main)
|
||||
↓
|
||||
GitHub Actions Workflow
|
||||
↓
|
||||
Self-hosted Runner auf api.trucko.org
|
||||
↓
|
||||
Checkout → pnpm install → pnpm build → tar artifact
|
||||
↓
|
||||
SCP artifact zu staging.rebreak.org
|
||||
↓
|
||||
SSH: bash /srv/rebreak/scripts/deploy-from-artifact.sh
|
||||
↓
|
||||
Atomic swap .output-staging + pm2 restart + health-check
|
||||
```
|
||||
|
||||
### Komponenten
|
||||
|
||||
| Komponente | Ort | Verantwortung |
|
||||
|---|---|---|
|
||||
| GitHub Repository | GitHub Cloud | Code-Hosting, Workflow-Definitionen |
|
||||
| GitHub Actions Runner | `api.trucko.org` | Workflow-Ausführung, Build, Deploy-Trigger |
|
||||
| Build-Umgebung | `api.trucko.org` | `pnpm install`, `pnpm build`, Artifact-Erstellung |
|
||||
| Production-Server | `staging.rebreak.org` | Artifact entpacken, Migrationen, PM2-Restart |
|
||||
| Deploy-Script | `staging.rebreak.org` | `scripts/deploy-from-artifact.sh` / `deploy-admin-from-artifact.sh` |
|
||||
|
||||
---
|
||||
|
||||
## 6. Datenfluss (detailliert)
|
||||
|
||||
### 6.1 Backend-Deploy
|
||||
|
||||
1. Push auf `main` triggert `.github/workflows/deploy-staging.yml`.
|
||||
2. Workflow-Job `build` läuft auf `runs-on: self-hosted` (Runner auf `api.trucko.org`).
|
||||
3. Runner checkt Repo mit `actions/checkout@v4` aus.
|
||||
4. `pnpm install --frozen-lockfile` wird ausgeführt.
|
||||
5. `cd backend && pnpm build` erzeugt `backend/.output`.
|
||||
6. Artifact wird gepackt: `tar czf backend-output.tar.gz -C backend/.output .`.
|
||||
7. Artifact wird per SCP auf `staging.rebreak.org:/srv/rebreak/backend/.output-incoming.tar.gz` kopiert.
|
||||
8. `imap-idle/` wird per SCP synchronisiert.
|
||||
9. Runner führt per SSH `bash /srv/rebreak/scripts/deploy-from-artifact.sh` aus.
|
||||
10. Server entpackt Artifact atomisch, führt ggf. Prisma-Migrationen aus und restartet `rebreak-staging`.
|
||||
11. Health-Check gegen `https://staging.rebreak.org/api/auth/me` prüft Erreichbarkeit.
|
||||
|
||||
### 6.2 Admin-Deploy
|
||||
|
||||
- Analog zu Backend über `.github/workflows/deploy-admin-staging.yml`.
|
||||
- Ziel: `staging.rebreak.org:/srv/rebreak/apps/admin/.output-incoming.tar.gz`.
|
||||
- Script: `scripts/deploy-admin-from-artifact.sh`.
|
||||
- Health-Check: `https://admin.staging.rebreak.org/`.
|
||||
|
||||
---
|
||||
|
||||
## 7. Sicherheit
|
||||
|
||||
### Runner-Isolation
|
||||
|
||||
- Der Runner wird als **Repository-Level Runner** im `rebreak-monorepo` registriert, damit nur dieses Repo ihn nutzen kann.
|
||||
- Der Runner bekommt ein dediziertes Label: `raynis-builder`.
|
||||
- Der Workflow fordert das Label explizit an: `runs-on: [self-hosted, raynis-builder]`.
|
||||
- Der Runner reagiert **nicht** auf Pull-Request-Events — nur auf `push` zu `main` und `workflow_dispatch`.
|
||||
|
||||
### SSH-Zugriff
|
||||
|
||||
- Ein neuer SSH-Deploy-Key wird auf `api.trucko.org` erzeugt.
|
||||
- Der Public Key wird auf `staging.rebreak.org` in `/root/.ssh/authorized_keys` eingetragen.
|
||||
- Der Private Key wird als GitHub Secret (z. B. `STAGING_DEPLOY_KEY`) im Environment `staging` hinterlegt.
|
||||
|
||||
### Secrets
|
||||
|
||||
- Keine Secrets im Runner-Image.
|
||||
- Alle sensiblen Daten kommen weiterhin aus GitHub Environments oder Infisical (auf `staging.rebreak.org`).
|
||||
|
||||
---
|
||||
|
||||
## 8. Fehlerbehandlung
|
||||
|
||||
### Build-Fehler
|
||||
|
||||
- Wenn `pnpm build` fehlschlägt, bricht der Workflow ab.
|
||||
- Es wird nichts auf `staging.rebreak.org` kopiert.
|
||||
|
||||
### Deploy-Fehler
|
||||
|
||||
- `deploy-from-artifact.sh` bricht bei fehlgeschlagenen Prisma-Migrationen ab.
|
||||
- Der alte `.output-staging`-Ordner bleibt durch atomisches `mv` erhalten.
|
||||
- Health-Check muss bestehen, sonst schlägt der Workflow fehl.
|
||||
|
||||
### Parallelität
|
||||
|
||||
- Concurrency-Group bleibt erhalten:
|
||||
```yaml
|
||||
concurrency:
|
||||
group: deploy-staging
|
||||
cancel-in-progress: false
|
||||
```
|
||||
- Parallele Deploys queueen sich, statt sich gegenseitig abzubrechen.
|
||||
|
||||
---
|
||||
|
||||
## 9. Tests in CI
|
||||
|
||||
Aktuell laufen keine automatisierten Tests in den Deploy-Workflows. Mit dem eigenen Runner entstehen hierfür keine zusätzlichen Kosten.
|
||||
|
||||
**Empfohlener optionaler nächster Schritt:**
|
||||
- Vitest-Unit-Tests vor dem Build-Schritt ausführen.
|
||||
- Reihenfolge: `install → lint → test → build → deploy`.
|
||||
|
||||
Dies ist **nicht Teil dieses Designs** und wird in einem separaten Plan behandelt.
|
||||
|
||||
---
|
||||
|
||||
## 10. Migrationsschritte
|
||||
|
||||
1. **Runner auf `api.trucko.org` installieren**
|
||||
- Node.js 24.11.1, pnpm 10.23.0, git einrichten.
|
||||
- GitHub Actions Runner herunterladen und konfigurieren.
|
||||
- Als Service registrieren (`./svc.sh install && ./svc.sh start`).
|
||||
- Label `raynis-builder` zuweisen.
|
||||
|
||||
2. **SSH-Verbindung einrichten**
|
||||
- Auf `api.trucko.org`: `ssh-keygen -t ed25519 -f ~/.ssh/rebreak-deploy`.
|
||||
- Public Key auf `staging.rebreak.org` in `/root/.ssh/authorized_keys` eintragen.
|
||||
- Private Key als GitHub Secret `STAGING_DEPLOY_KEY` im Environment `staging` hinterlegen.
|
||||
|
||||
3. **Workflows anpassen**
|
||||
- `runs-on: ubuntu-latest` → `runs-on: [self-hosted, raynis-builder]`.
|
||||
- SSH-Setup-Step an neues Secret `STAGING_DEPLOY_KEY` anpassen.
|
||||
- Node-Setup beibehalten (Version 24.11.1).
|
||||
|
||||
4. **Test-Deploy durchführen**
|
||||
- `workflow_dispatch` auf `main` auslösen.
|
||||
- Logs auf `api.trucko.org` und `staging.rebreak.org` prüfen.
|
||||
- Health-Check bestätigen.
|
||||
|
||||
5. **Alte Pfade abschalten**
|
||||
- Nach erfolgreichen Test-Deploys können die alten Webhook-basierten Deploys deaktiviert werden.
|
||||
- `pm2 stop rebreak-webhook && pm2 save` auf `staging.rebreak.org` (nur auf User-Approval).
|
||||
|
||||
---
|
||||
|
||||
## 11. Risiken & Mitigationen
|
||||
|
||||
| Risiko | Wahrscheinlichkeit | Auswirkung | Mitigation |
|
||||
|---|---|---|---|
|
||||
| Runner-Prozess stürzt ab | Niedrig | Hoch | Runner als systemd-Service laufen lassen; GitHub zeigt Runner offline an. |
|
||||
| Build auf `api.trucko.org` zu langsam | Mittel | Mittel | 8 GB RAM + 8 GB Swap einrichten; SSD statt HDD prüfen. |
|
||||
| SSH-Verbindung zwischen Servern failt | Niedrig | Hoch | SSH-Key testen; `ssh-keyscan` im Workflow nutzen. |
|
||||
| Runner wird versehentlich für PRs genutzt | Niedrig | Hoch | Trigger auf `push: branches: [main]` beschränken; kein `pull_request`. |
|
||||
| Windows-/Native-Builds bleiben kostenpflichtig | Sicher | Niedrig | In separatem Schritt evaluieren (nicht Teil dieses Designs). |
|
||||
|
||||
---
|
||||
|
||||
## 12. Offene Punkte
|
||||
|
||||
1. Exakte Spezifikation von `api.trucko.org` bestätigen (CPU, SSD, OS).
|
||||
2. Soll der Runner unter einem dedizierten User laufen oder als `root`?
|
||||
3. Sollen bestehende Webhook-Deploys sofort abgeschaltet oder parallel als Fallback laufen?
|
||||
4. Sollen Vitest-Tests vor dem Build integriert werden (separater Plan)?
|
||||
|
||||
---
|
||||
|
||||
## 13. Erwartetes Ergebnis
|
||||
|
||||
Nach der Umstellung:
|
||||
|
||||
- Backend- und Admin-Builds laufen auf `api.trucko.org`.
|
||||
- GitHub-Actions-Minutenkosten für diese Workflows fallen nahezu auf null.
|
||||
- Die Deploy-Mechanik auf `staging.rebreak.org` bleibt unverändert.
|
||||
- Windows-/Native-Builds bleiben bei GitHub Actions oder werden separat betrachtet.
|
||||
File diff suppressed because it is too large
Load Diff
491110
graphify-out/graph.json
491110
graphify-out/graph.json
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
511
pnpm-lock.yaml
generated
511
pnpm-lock.yaml
generated
@ -36,7 +36,7 @@ importers:
|
||||
version: 1.15.0(magicast@0.5.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.34(typescript@5.9.3))
|
||||
'@nuxt/ui':
|
||||
specifier: ^4.5.1
|
||||
version: 4.7.1(@internationalized/date@3.12.1)(@internationalized/number@3.6.6)(@tiptap/extensions@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(embla-carousel@8.6.0)(ioredis@5.10.1)(magicast@0.5.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.2.4)(typescript@5.9.3)(valibot@1.4.1(typescript@5.9.3))(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-router@4.6.4(vue@3.5.34(typescript@5.9.3)))(vue@3.5.34(typescript@5.9.3))(yjs@13.6.30)(zod@3.25.76)
|
||||
version: 4.7.1(@internationalized/date@3.12.1)(@internationalized/number@3.6.6)(@tiptap/extensions@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(embla-carousel@8.6.0)(ioredis@5.10.1)(magicast@0.5.3)(qrcode@1.5.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.2.4)(typescript@5.9.3)(valibot@1.4.1(typescript@5.9.3))(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-router@4.6.4(vue@3.5.34(typescript@5.9.3)))(vue@3.5.34(typescript@5.9.3))(yjs@13.6.30)(zod@3.25.76)
|
||||
'@nuxtjs/supabase':
|
||||
specifier: ^2.0.4
|
||||
version: 2.0.6
|
||||
@ -45,7 +45,7 @@ importers:
|
||||
version: 14.3.0(vue@3.5.34(typescript@5.9.3))
|
||||
'@vueuse/nuxt':
|
||||
specifier: ^14.2.1
|
||||
version: 14.3.0(magicast@0.5.3)(nuxt@4.1.3(@electric-sql/pglite@0.4.1)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@parcel/watcher@2.5.6)(@types/node@22.19.17)(@vue/compiler-sfc@3.5.35)(cac@6.7.14)(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(eslint@10.3.0(jiti@2.7.0))(ioredis@5.10.1)(lightningcss@1.32.0)(magicast@0.5.3)(mysql2@3.15.3)(optionator@0.9.4)(rollup@4.60.3)(terser@5.46.2)(typescript@5.9.3)(yaml@2.8.4))(vue@3.5.34(typescript@5.9.3))
|
||||
version: 14.3.0(magicast@0.5.3)(nuxt@4.1.3(@electric-sql/pglite@0.4.1)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@parcel/watcher@2.5.6)(@types/node@22.19.17)(@vue/compiler-sfc@3.5.35)(cac@6.7.14)(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(eslint@10.3.0(jiti@2.7.0))(ioredis@5.10.1)(lightningcss@1.32.0)(magicast@0.5.3)(mysql2@3.15.3)(optionator@0.9.4)(rollup@4.60.3)(terser@5.46.2)(typescript@5.9.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4))(vue@3.5.34(typescript@5.9.3))
|
||||
nuxt:
|
||||
specifier: 4.1.3
|
||||
version: 4.1.3(@electric-sql/pglite@0.4.1)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@parcel/watcher@2.5.6)(@types/node@22.19.17)(@vue/compiler-sfc@3.5.35)(cac@6.7.14)(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(eslint@10.3.0(jiti@2.7.0))(ioredis@5.10.1)(lightningcss@1.32.0)(magicast@0.5.3)(mysql2@3.15.3)(optionator@0.9.4)(rollup@4.60.3)(terser@5.46.2)(typescript@5.9.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4)
|
||||
@ -76,7 +76,7 @@ importers:
|
||||
version: 1.2.3
|
||||
'@nuxt/fonts':
|
||||
specifier: ^0.11.4
|
||||
version: 0.11.4(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(ioredis@5.10.1)(magicast@0.5.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))
|
||||
version: 0.11.4(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(ioredis@5.10.1)(magicast@0.5.3)
|
||||
'@nuxt/icon':
|
||||
specifier: ^1.10.0
|
||||
version: 1.15.0(magicast@0.5.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.34(typescript@5.9.3))
|
||||
@ -85,7 +85,7 @@ importers:
|
||||
version: 1.11.0(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(ioredis@5.10.1)(magicast@0.5.3)
|
||||
'@nuxt/ui':
|
||||
specifier: ^4.5.1
|
||||
version: 4.7.1(@internationalized/date@3.12.1)(@internationalized/number@3.6.6)(@tiptap/extensions@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(embla-carousel@8.6.0)(ioredis@5.10.1)(magicast@0.5.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.2.4)(typescript@5.9.3)(valibot@1.4.1(typescript@5.9.3))(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-router@4.6.4(vue@3.5.34(typescript@5.9.3)))(vue@3.5.34(typescript@5.9.3))(yjs@13.6.30)(zod@3.25.76)
|
||||
version: 4.7.1(@internationalized/date@3.12.1)(@internationalized/number@3.6.6)(@tiptap/extensions@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(embla-carousel@8.6.0)(ioredis@5.10.1)(magicast@0.5.3)(qrcode@1.5.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.2.4)(typescript@5.9.3)(valibot@1.4.1(typescript@5.9.3))(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-router@4.6.4(vue@3.5.34(typescript@5.9.3)))(vue@3.5.34(typescript@5.9.3))(yjs@13.6.30)(zod@3.25.76)
|
||||
'@nuxtjs/i18n':
|
||||
specifier: ^9.5.6
|
||||
version: 9.5.6(@vue/compiler-dom@3.5.35)(eslint@10.3.0(jiti@2.7.0))(magicast@0.5.3)(rollup@4.60.3)(vue@3.5.34(typescript@5.9.3))
|
||||
@ -94,7 +94,7 @@ importers:
|
||||
version: 3.0.3(magicast@0.5.3)(vue@3.5.34(typescript@5.9.3))
|
||||
'@vueuse/nuxt':
|
||||
specifier: ^14.2.1
|
||||
version: 14.3.0(magicast@0.5.3)(nuxt@4.1.3(@electric-sql/pglite@0.4.1)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@parcel/watcher@2.5.6)(@types/node@22.19.17)(@vue/compiler-sfc@3.5.35)(cac@6.7.14)(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(eslint@10.3.0(jiti@2.7.0))(ioredis@5.10.1)(lightningcss@1.32.0)(magicast@0.5.3)(mysql2@3.15.3)(optionator@0.9.4)(rollup@4.60.3)(terser@5.46.2)(typescript@5.9.3)(yaml@2.8.4))(vue@3.5.34(typescript@5.9.3))
|
||||
version: 14.3.0(magicast@0.5.3)(nuxt@4.1.3(@electric-sql/pglite@0.4.1)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@parcel/watcher@2.5.6)(@types/node@22.19.17)(@vue/compiler-sfc@3.5.35)(cac@6.7.14)(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(eslint@10.3.0(jiti@2.7.0))(ioredis@5.10.1)(lightningcss@1.32.0)(magicast@0.5.3)(mysql2@3.15.3)(optionator@0.9.4)(rollup@4.60.3)(terser@5.46.2)(typescript@5.9.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4))(vue@3.5.34(typescript@5.9.3))
|
||||
chart.js:
|
||||
specifier: ^4.5.1
|
||||
version: 4.5.1
|
||||
@ -124,6 +124,52 @@ importers:
|
||||
specifier: ^5.9.3
|
||||
version: 5.9.3
|
||||
|
||||
apps/rebreak-magic:
|
||||
dependencies:
|
||||
'@nuxt/icon':
|
||||
specifier: ^1.10.0
|
||||
version: 1.15.0(magicast@0.5.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.35(typescript@5.9.3))
|
||||
'@nuxt/ui':
|
||||
specifier: ^4.5.1
|
||||
version: 4.7.1(@internationalized/date@3.12.1)(@internationalized/number@3.6.6)(@tiptap/extensions@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(embla-carousel@8.6.0)(ioredis@5.10.1)(magicast@0.5.3)(qrcode@1.5.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.2.4)(typescript@5.9.3)(valibot@1.4.1(typescript@5.9.3))(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-router@4.6.4(vue@3.5.35(typescript@5.9.3)))(vue@3.5.35(typescript@5.9.3))(yjs@13.6.30)(zod@3.25.76)
|
||||
'@vueuse/core':
|
||||
specifier: ^14.2.1
|
||||
version: 14.3.0(vue@3.5.35(typescript@5.9.3))
|
||||
'@vueuse/nuxt':
|
||||
specifier: ^14.2.1
|
||||
version: 14.3.0(magicast@0.5.3)(nuxt@4.1.3(@electric-sql/pglite@0.4.1)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@parcel/watcher@2.5.6)(@types/node@22.19.17)(@vue/compiler-sfc@3.5.35)(cac@6.7.14)(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(eslint@10.3.0(jiti@2.7.0))(ioredis@5.10.1)(lightningcss@1.32.0)(magicast@0.5.3)(mysql2@3.15.3)(optionator@0.9.4)(rollup@4.60.3)(terser@5.46.2)(typescript@5.9.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4))(vue@3.5.35(typescript@5.9.3))
|
||||
nuxt:
|
||||
specifier: 4.1.3
|
||||
version: 4.1.3(@electric-sql/pglite@0.4.1)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@parcel/watcher@2.5.6)(@types/node@22.19.17)(@vue/compiler-sfc@3.5.35)(cac@6.7.14)(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(eslint@10.3.0(jiti@2.7.0))(ioredis@5.10.1)(lightningcss@1.32.0)(magicast@0.5.3)(mysql2@3.15.3)(optionator@0.9.4)(rollup@4.60.3)(terser@5.46.2)(typescript@5.9.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4)
|
||||
qrcode:
|
||||
specifier: ^1.5.4
|
||||
version: 1.5.4
|
||||
tailwindcss:
|
||||
specifier: ^4.1.18
|
||||
version: 4.2.4
|
||||
vue:
|
||||
specifier: ^3.5.22
|
||||
version: 3.5.35(typescript@5.9.3)
|
||||
vue-router:
|
||||
specifier: ^4.5.1
|
||||
version: 4.6.4(vue@3.5.35(typescript@5.9.3))
|
||||
devDependencies:
|
||||
'@iconify-json/heroicons':
|
||||
specifier: ^1.2.3
|
||||
version: 1.2.3
|
||||
'@tauri-apps/api':
|
||||
specifier: ^2.0.0
|
||||
version: 2.11.0
|
||||
'@tauri-apps/cli':
|
||||
specifier: ^2.0.0
|
||||
version: 2.11.2
|
||||
'@types/qrcode':
|
||||
specifier: ^1.5.5
|
||||
version: 1.5.6
|
||||
typescript:
|
||||
specifier: ^5.9.3
|
||||
version: 5.9.3
|
||||
|
||||
apps/rebreak-magic-win:
|
||||
dependencies:
|
||||
'@fontsource/nunito':
|
||||
@ -4054,6 +4100,9 @@ packages:
|
||||
'@types/prop-types@15.7.15':
|
||||
resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==}
|
||||
|
||||
'@types/qrcode@1.5.6':
|
||||
resolution: {integrity: sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==}
|
||||
|
||||
'@types/react-dom@18.3.7':
|
||||
resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==}
|
||||
peerDependencies:
|
||||
@ -4959,6 +5008,9 @@ packages:
|
||||
client-only@0.0.1:
|
||||
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
|
||||
|
||||
cliui@6.0.0:
|
||||
resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
|
||||
|
||||
cliui@8.0.1:
|
||||
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
|
||||
engines: {node: '>=12'}
|
||||
@ -5246,6 +5298,10 @@ packages:
|
||||
supports-color:
|
||||
optional: true
|
||||
|
||||
decamelize@1.2.0:
|
||||
resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
decode-uri-component@0.2.2:
|
||||
resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
|
||||
engines: {node: '>=0.10'}
|
||||
@ -5359,6 +5415,9 @@ packages:
|
||||
resolution: {integrity: sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==}
|
||||
engines: {node: '>=0.3.1'}
|
||||
|
||||
dijkstrajs@1.0.3:
|
||||
resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==}
|
||||
|
||||
dlv@1.1.3:
|
||||
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
|
||||
|
||||
@ -7705,6 +7764,10 @@ packages:
|
||||
resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==}
|
||||
engines: {node: '>=4.0.0'}
|
||||
|
||||
pngjs@5.0.0:
|
||||
resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
|
||||
popmotion@11.0.5:
|
||||
resolution: {integrity: sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==}
|
||||
|
||||
@ -8091,6 +8154,11 @@ packages:
|
||||
resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==}
|
||||
hasBin: true
|
||||
|
||||
qrcode@1.5.4:
|
||||
resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
hasBin: true
|
||||
|
||||
qs@6.15.1:
|
||||
resolution: {integrity: sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==}
|
||||
engines: {node: '>=0.6'}
|
||||
@ -8433,6 +8501,9 @@ packages:
|
||||
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
require-main-filename@2.0.0:
|
||||
resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
|
||||
|
||||
requireg@0.2.2:
|
||||
resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==}
|
||||
engines: {node: '>= 4.0.0'}
|
||||
@ -8631,6 +8702,9 @@ packages:
|
||||
server-only@0.0.1:
|
||||
resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==}
|
||||
|
||||
set-blocking@2.0.0:
|
||||
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
|
||||
|
||||
set-function-length@1.2.2:
|
||||
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@ -9797,6 +9871,9 @@ packages:
|
||||
resolution: {integrity: sha512-f+Gy33Oa5Z14XY9679Zze+7VFhbsQfBFXodnU2x589l4kxGM9L5Y8zETTmcMR5pWOPQyRv4Z0lNax6xCO0NSlA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
which-module@2.0.1:
|
||||
resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
|
||||
|
||||
which-typed-array@1.1.20:
|
||||
resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@ -9828,6 +9905,10 @@ packages:
|
||||
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
wrap-ansi@6.2.0:
|
||||
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
wrap-ansi@7.0.0:
|
||||
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
|
||||
engines: {node: '>=10'}
|
||||
@ -9933,6 +10014,9 @@ packages:
|
||||
peerDependencies:
|
||||
yjs: ^13.0.0
|
||||
|
||||
y18n@4.0.3:
|
||||
resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
|
||||
|
||||
y18n@5.0.8:
|
||||
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
|
||||
engines: {node: '>=10'}
|
||||
@ -9953,6 +10037,10 @@ packages:
|
||||
engines: {node: '>= 14.6'}
|
||||
hasBin: true
|
||||
|
||||
yargs-parser@18.1.3:
|
||||
resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
yargs-parser@21.1.1:
|
||||
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
|
||||
engines: {node: '>=12'}
|
||||
@ -9961,6 +10049,10 @@ packages:
|
||||
resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==}
|
||||
engines: {node: ^20.19.0 || ^22.12.0 || >=23}
|
||||
|
||||
yargs@15.4.1:
|
||||
resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
yargs@17.7.2:
|
||||
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
|
||||
engines: {node: '>=12'}
|
||||
@ -11414,6 +11506,15 @@ snapshots:
|
||||
- '@vue/composition-api'
|
||||
- vue
|
||||
|
||||
'@floating-ui/vue@1.1.11(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@floating-ui/dom': 1.7.6
|
||||
'@floating-ui/utils': 0.2.11
|
||||
vue-demi: 0.14.10(vue@3.5.35(typescript@5.9.3))
|
||||
transitivePeerDependencies:
|
||||
- '@vue/composition-api'
|
||||
- vue
|
||||
|
||||
'@fontsource/nunito@5.2.7': {}
|
||||
|
||||
'@hono/node-server@1.19.11(hono@4.12.17)':
|
||||
@ -11474,6 +11575,11 @@ snapshots:
|
||||
'@iconify/types': 2.0.0
|
||||
vue: 3.5.34(typescript@5.9.3)
|
||||
|
||||
'@iconify/vue@5.0.1(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
|
||||
'@ide/backoff@1.0.0': {}
|
||||
|
||||
'@internationalized/date@3.12.1':
|
||||
@ -11918,7 +12024,7 @@ snapshots:
|
||||
- utf-8-validate
|
||||
- vue
|
||||
|
||||
'@nuxt/fonts@0.11.4(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(ioredis@5.10.1)(magicast@0.5.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))':
|
||||
'@nuxt/fonts@0.11.4(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(ioredis@5.10.1)(magicast@0.5.3)':
|
||||
dependencies:
|
||||
'@nuxt/devtools-kit': 2.7.0(magicast@0.5.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))
|
||||
'@nuxt/kit': 3.21.4(magicast@0.5.3)
|
||||
@ -12026,6 +12132,28 @@ snapshots:
|
||||
- vite
|
||||
- vue
|
||||
|
||||
'@nuxt/icon@1.15.0(magicast@0.5.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@iconify/collections': 1.0.680
|
||||
'@iconify/types': 2.0.0
|
||||
'@iconify/utils': 2.3.0
|
||||
'@iconify/vue': 5.0.1(vue@3.5.35(typescript@5.9.3))
|
||||
'@nuxt/devtools-kit': 2.7.0(magicast@0.5.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))
|
||||
'@nuxt/kit': 3.21.4(magicast@0.5.3)
|
||||
consola: 3.4.2
|
||||
local-pkg: 1.1.2
|
||||
mlly: 1.8.2
|
||||
ohash: 2.0.11
|
||||
pathe: 2.0.3
|
||||
picomatch: 4.0.4
|
||||
std-env: 3.10.0
|
||||
tinyglobby: 0.2.16
|
||||
transitivePeerDependencies:
|
||||
- magicast
|
||||
- supports-color
|
||||
- vite
|
||||
- vue
|
||||
|
||||
'@nuxt/icon@2.2.2(magicast@0.5.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.34(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@iconify/collections': 1.0.680
|
||||
@ -12047,6 +12175,27 @@ snapshots:
|
||||
- vite
|
||||
- vue
|
||||
|
||||
'@nuxt/icon@2.2.2(magicast@0.5.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@iconify/collections': 1.0.680
|
||||
'@iconify/types': 2.0.0
|
||||
'@iconify/utils': 3.1.3
|
||||
'@iconify/vue': 5.0.1(vue@3.5.35(typescript@5.9.3))
|
||||
'@nuxt/devtools-kit': 3.2.4(magicast@0.5.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))
|
||||
'@nuxt/kit': 4.4.4(magicast@0.5.3)
|
||||
consola: 3.4.2
|
||||
local-pkg: 1.1.2
|
||||
mlly: 1.8.2
|
||||
ohash: 2.0.11
|
||||
pathe: 2.0.3
|
||||
picomatch: 4.0.4
|
||||
std-env: 4.1.0
|
||||
tinyglobby: 0.2.16
|
||||
transitivePeerDependencies:
|
||||
- magicast
|
||||
- vite
|
||||
- vue
|
||||
|
||||
'@nuxt/image@1.11.0(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(ioredis@5.10.1)(magicast@0.5.3)':
|
||||
dependencies:
|
||||
'@nuxt/kit': 3.21.4(magicast@0.5.3)
|
||||
@ -12242,7 +12391,7 @@ snapshots:
|
||||
rc9: 3.0.1
|
||||
std-env: 4.1.0
|
||||
|
||||
'@nuxt/ui@4.7.1(@internationalized/date@3.12.1)(@internationalized/number@3.6.6)(@tiptap/extensions@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(embla-carousel@8.6.0)(ioredis@5.10.1)(magicast@0.5.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.2.4)(typescript@5.9.3)(valibot@1.4.1(typescript@5.9.3))(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-router@4.6.4(vue@3.5.34(typescript@5.9.3)))(vue@3.5.34(typescript@5.9.3))(yjs@13.6.30)(zod@3.25.76)':
|
||||
'@nuxt/ui@4.7.1(@internationalized/date@3.12.1)(@internationalized/number@3.6.6)(@tiptap/extensions@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(embla-carousel@8.6.0)(ioredis@5.10.1)(magicast@0.5.3)(qrcode@1.5.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.2.4)(typescript@5.9.3)(valibot@1.4.1(typescript@5.9.3))(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-router@4.6.4(vue@3.5.34(typescript@5.9.3)))(vue@3.5.34(typescript@5.9.3))(yjs@13.6.30)(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@floating-ui/dom': 1.7.6
|
||||
'@iconify/vue': 5.0.1(vue@3.5.34(typescript@5.9.3))
|
||||
@ -12275,7 +12424,7 @@ snapshots:
|
||||
'@tiptap/vue-3': 3.23.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(vue@3.5.34(typescript@5.9.3))
|
||||
'@unhead/vue': 2.1.13(vue@3.5.34(typescript@5.9.3))
|
||||
'@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.9.3))
|
||||
'@vueuse/integrations': 14.3.0(fuse.js@7.3.0)(vue@3.5.34(typescript@5.9.3))
|
||||
'@vueuse/integrations': 14.3.0(fuse.js@7.3.0)(qrcode@1.5.4)(vue@3.5.34(typescript@5.9.3))
|
||||
'@vueuse/shared': 14.3.0(vue@3.5.34(typescript@5.9.3))
|
||||
colortranslator: 5.0.0
|
||||
consola: 3.4.2
|
||||
@ -12356,6 +12505,120 @@ snapshots:
|
||||
- vue
|
||||
- yjs
|
||||
|
||||
'@nuxt/ui@4.7.1(@internationalized/date@3.12.1)(@internationalized/number@3.6.6)(@tiptap/extensions@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(embla-carousel@8.6.0)(ioredis@5.10.1)(magicast@0.5.3)(qrcode@1.5.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.2.4)(typescript@5.9.3)(valibot@1.4.1(typescript@5.9.3))(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-router@4.6.4(vue@3.5.35(typescript@5.9.3)))(vue@3.5.35(typescript@5.9.3))(yjs@13.6.30)(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@floating-ui/dom': 1.7.6
|
||||
'@iconify/vue': 5.0.1(vue@3.5.35(typescript@5.9.3))
|
||||
'@nuxt/fonts': 0.14.0(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(ioredis@5.10.1)(magicast@0.5.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))
|
||||
'@nuxt/icon': 2.2.2(magicast@0.5.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.35(typescript@5.9.3))
|
||||
'@nuxt/kit': 4.4.4(magicast@0.5.3)
|
||||
'@nuxt/schema': 4.4.4
|
||||
'@nuxtjs/color-mode': 3.5.2(magicast@0.5.3)
|
||||
'@standard-schema/spec': 1.1.0
|
||||
'@tailwindcss/postcss': 4.2.4
|
||||
'@tailwindcss/vite': 4.2.4(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))
|
||||
'@tanstack/vue-table': 8.21.3(vue@3.5.35(typescript@5.9.3))
|
||||
'@tanstack/vue-virtual': 3.13.24(vue@3.5.35(typescript@5.9.3))
|
||||
'@tiptap/core': 3.23.1(@tiptap/pm@3.23.1)
|
||||
'@tiptap/extension-bubble-menu': 3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)
|
||||
'@tiptap/extension-code': 3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))
|
||||
'@tiptap/extension-collaboration': 3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30)
|
||||
'@tiptap/extension-drag-handle': 3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/extension-collaboration@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))
|
||||
'@tiptap/extension-drag-handle-vue-3': 3.23.1(@tiptap/extension-drag-handle@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/extension-collaboration@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)))(@tiptap/pm@3.23.1)(@tiptap/vue-3@3.23.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(vue@3.5.35(typescript@5.9.3)))(vue@3.5.35(typescript@5.9.3))
|
||||
'@tiptap/extension-floating-menu': 3.23.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)
|
||||
'@tiptap/extension-horizontal-rule': 3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)
|
||||
'@tiptap/extension-image': 3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))
|
||||
'@tiptap/extension-mention': 3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(@tiptap/suggestion@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))
|
||||
'@tiptap/extension-node-range': 3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)
|
||||
'@tiptap/extension-placeholder': 3.23.1(@tiptap/extensions@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))
|
||||
'@tiptap/markdown': 3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)
|
||||
'@tiptap/pm': 3.23.1
|
||||
'@tiptap/starter-kit': 3.23.1
|
||||
'@tiptap/suggestion': 3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)
|
||||
'@tiptap/vue-3': 3.23.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(vue@3.5.35(typescript@5.9.3))
|
||||
'@unhead/vue': 2.1.13(vue@3.5.35(typescript@5.9.3))
|
||||
'@vueuse/core': 14.3.0(vue@3.5.35(typescript@5.9.3))
|
||||
'@vueuse/integrations': 14.3.0(fuse.js@7.3.0)(qrcode@1.5.4)(vue@3.5.35(typescript@5.9.3))
|
||||
'@vueuse/shared': 14.3.0(vue@3.5.35(typescript@5.9.3))
|
||||
colortranslator: 5.0.0
|
||||
consola: 3.4.2
|
||||
defu: 6.1.7
|
||||
embla-carousel-auto-height: 8.6.0(embla-carousel@8.6.0)
|
||||
embla-carousel-auto-scroll: 8.6.0(embla-carousel@8.6.0)
|
||||
embla-carousel-autoplay: 8.6.0(embla-carousel@8.6.0)
|
||||
embla-carousel-class-names: 8.6.0(embla-carousel@8.6.0)
|
||||
embla-carousel-fade: 8.6.0(embla-carousel@8.6.0)
|
||||
embla-carousel-vue: 8.6.0(vue@3.5.35(typescript@5.9.3))
|
||||
embla-carousel-wheel-gestures: 8.1.0(embla-carousel@8.6.0)
|
||||
fuse.js: 7.3.0
|
||||
hookable: 6.1.1
|
||||
knitwork: 1.3.0
|
||||
magic-string: 0.30.21
|
||||
mlly: 1.8.2
|
||||
motion-v: 2.2.1(@vueuse/core@14.3.0(vue@3.5.35(typescript@5.9.3)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(vue@3.5.35(typescript@5.9.3))
|
||||
ohash: 2.0.11
|
||||
pathe: 2.0.3
|
||||
reka-ui: 2.9.6(vue@3.5.35(typescript@5.9.3))
|
||||
scule: 1.3.0
|
||||
tailwind-merge: 3.5.0
|
||||
tailwind-variants: 3.2.2(tailwind-merge@3.5.0)(tailwindcss@4.2.4)
|
||||
tailwindcss: 4.2.4
|
||||
tinyglobby: 0.2.16
|
||||
typescript: 5.9.3
|
||||
ufo: 1.6.4
|
||||
unplugin: 3.0.0
|
||||
unplugin-auto-import: 21.0.0(@nuxt/kit@4.4.4(magicast@0.5.3))(@vueuse/core@14.3.0(vue@3.5.35(typescript@5.9.3)))
|
||||
unplugin-vue-components: 32.0.0(@nuxt/kit@4.4.4(magicast@0.5.3))(vue@3.5.35(typescript@5.9.3))
|
||||
vaul-vue: 0.4.1(reka-ui@2.9.6(vue@3.5.35(typescript@5.9.3)))(vue@3.5.35(typescript@5.9.3))
|
||||
vue-component-type-helpers: 3.2.8
|
||||
optionalDependencies:
|
||||
'@internationalized/date': 3.12.1
|
||||
'@internationalized/number': 3.6.6
|
||||
valibot: 1.4.1(typescript@5.9.3)
|
||||
vue-router: 4.6.4(vue@3.5.35(typescript@5.9.3))
|
||||
zod: 3.25.76
|
||||
transitivePeerDependencies:
|
||||
- '@azure/app-configuration'
|
||||
- '@azure/cosmos'
|
||||
- '@azure/data-tables'
|
||||
- '@azure/identity'
|
||||
- '@azure/keyvault-secrets'
|
||||
- '@azure/storage-blob'
|
||||
- '@capacitor/preferences'
|
||||
- '@deno/kv'
|
||||
- '@emotion/is-prop-valid'
|
||||
- '@netlify/blobs'
|
||||
- '@planetscale/database'
|
||||
- '@tiptap/extensions'
|
||||
- '@tiptap/y-tiptap'
|
||||
- '@upstash/redis'
|
||||
- '@vercel/blob'
|
||||
- '@vercel/functions'
|
||||
- '@vercel/kv'
|
||||
- '@vue/composition-api'
|
||||
- async-validator
|
||||
- aws4fetch
|
||||
- axios
|
||||
- change-case
|
||||
- db0
|
||||
- drauu
|
||||
- embla-carousel
|
||||
- focus-trap
|
||||
- idb-keyval
|
||||
- ioredis
|
||||
- jwt-decode
|
||||
- magicast
|
||||
- nprogress
|
||||
- qrcode
|
||||
- react
|
||||
- react-dom
|
||||
- sortablejs
|
||||
- universal-cookie
|
||||
- uploadthing
|
||||
- vite
|
||||
- vue
|
||||
- yjs
|
||||
|
||||
'@nuxt/vite-builder@4.1.3(@types/node@22.19.17)(eslint@10.3.0(jiti@2.7.0))(lightningcss@1.32.0)(magicast@0.5.3)(optionator@0.9.4)(rollup@4.60.3)(terser@5.46.2)(typescript@5.9.3)(vue@3.5.34(typescript@5.9.3))(yaml@2.8.4)':
|
||||
dependencies:
|
||||
'@nuxt/kit': 4.1.3(magicast@0.5.3)
|
||||
@ -13679,11 +13942,21 @@ snapshots:
|
||||
'@tanstack/table-core': 8.21.3
|
||||
vue: 3.5.34(typescript@5.9.3)
|
||||
|
||||
'@tanstack/vue-table@8.21.3(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@tanstack/table-core': 8.21.3
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
|
||||
'@tanstack/vue-virtual@3.13.24(vue@3.5.34(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@tanstack/virtual-core': 3.14.0
|
||||
vue: 3.5.34(typescript@5.9.3)
|
||||
|
||||
'@tanstack/vue-virtual@3.13.24(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@tanstack/virtual-core': 3.14.0
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
|
||||
'@tauri-apps/api@2.11.0': {}
|
||||
|
||||
'@tauri-apps/cli-darwin-arm64@2.11.2':
|
||||
@ -13782,6 +14055,13 @@ snapshots:
|
||||
'@tiptap/vue-3': 3.23.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(vue@3.5.34(typescript@5.9.3))
|
||||
vue: 3.5.34(typescript@5.9.3)
|
||||
|
||||
'@tiptap/extension-drag-handle-vue-3@3.23.1(@tiptap/extension-drag-handle@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/extension-collaboration@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)))(@tiptap/pm@3.23.1)(@tiptap/vue-3@3.23.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(vue@3.5.35(typescript@5.9.3)))(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@tiptap/extension-drag-handle': 3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/extension-collaboration@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))
|
||||
'@tiptap/pm': 3.23.1
|
||||
'@tiptap/vue-3': 3.23.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(vue@3.5.35(typescript@5.9.3))
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
|
||||
'@tiptap/extension-drag-handle@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/extension-collaboration@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))':
|
||||
dependencies:
|
||||
'@floating-ui/dom': 1.7.6
|
||||
@ -13948,6 +14228,16 @@ snapshots:
|
||||
'@tiptap/extension-bubble-menu': 3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)
|
||||
'@tiptap/extension-floating-menu': 3.23.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)
|
||||
|
||||
'@tiptap/vue-3@3.23.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@floating-ui/dom': 1.7.6
|
||||
'@tiptap/core': 3.23.1(@tiptap/pm@3.23.1)
|
||||
'@tiptap/pm': 3.23.1
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
optionalDependencies:
|
||||
'@tiptap/extension-bubble-menu': 3.23.1(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)
|
||||
'@tiptap/extension-floating-menu': 3.23.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.1(@tiptap/pm@3.23.1))(@tiptap/pm@3.23.1)
|
||||
|
||||
'@tiptap/y-tiptap@3.0.3(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)':
|
||||
dependencies:
|
||||
lib0: 0.2.117
|
||||
@ -14031,6 +14321,10 @@ snapshots:
|
||||
|
||||
'@types/prop-types@15.7.15': {}
|
||||
|
||||
'@types/qrcode@1.5.6':
|
||||
dependencies:
|
||||
'@types/node': 22.19.17
|
||||
|
||||
'@types/react-dom@18.3.7(@types/react@18.3.31)':
|
||||
dependencies:
|
||||
'@types/react': 18.3.31
|
||||
@ -14115,6 +14409,12 @@ snapshots:
|
||||
unhead: 2.1.13
|
||||
vue: 3.5.34(typescript@5.9.3)
|
||||
|
||||
'@unhead/vue@2.1.13(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
hookable: 6.1.1
|
||||
unhead: 2.1.13
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
|
||||
'@urql/core@5.2.0':
|
||||
dependencies:
|
||||
'@0no-co/graphql.web': 1.2.0
|
||||
@ -14359,7 +14659,7 @@ snapshots:
|
||||
|
||||
'@vue-macros/common@1.16.1(vue@3.5.34(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@vue/compiler-sfc': 3.5.34
|
||||
'@vue/compiler-sfc': 3.5.35
|
||||
ast-kit: 1.4.3
|
||||
local-pkg: 1.1.2
|
||||
magic-string-ast: 0.7.1
|
||||
@ -14370,7 +14670,7 @@ snapshots:
|
||||
|
||||
'@vue-macros/common@3.0.0-beta.16(vue@3.5.34(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@vue/compiler-sfc': 3.5.34
|
||||
'@vue/compiler-sfc': 3.5.35
|
||||
ast-kit: 2.2.0
|
||||
local-pkg: 1.1.2
|
||||
magic-string-ast: 1.0.3
|
||||
@ -14390,7 +14690,7 @@ snapshots:
|
||||
'@babel/types': 7.29.0
|
||||
'@vue/babel-helper-vue-transform-on': 2.0.1
|
||||
'@vue/babel-plugin-resolve-type': 2.0.1(@babel/core@7.29.0)
|
||||
'@vue/shared': 3.5.34
|
||||
'@vue/shared': 3.5.35
|
||||
optionalDependencies:
|
||||
'@babel/core': 7.29.0
|
||||
transitivePeerDependencies:
|
||||
@ -14403,7 +14703,7 @@ snapshots:
|
||||
'@babel/helper-module-imports': 7.28.6
|
||||
'@babel/helper-plugin-utils': 7.28.6
|
||||
'@babel/parser': 7.29.3
|
||||
'@vue/compiler-sfc': 3.5.34
|
||||
'@vue/compiler-sfc': 3.5.35
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
@ -14513,8 +14813,8 @@ snapshots:
|
||||
'@vue/language-core@3.2.8':
|
||||
dependencies:
|
||||
'@volar/language-core': 2.4.28
|
||||
'@vue/compiler-dom': 3.5.34
|
||||
'@vue/shared': 3.5.34
|
||||
'@vue/compiler-dom': 3.5.35
|
||||
'@vue/shared': 3.5.35
|
||||
alien-signals: 3.1.2
|
||||
muggle-string: 0.4.1
|
||||
path-browserify: 1.0.1
|
||||
@ -14578,6 +14878,16 @@ snapshots:
|
||||
- '@vue/composition-api'
|
||||
- vue
|
||||
|
||||
'@vueuse/core@10.11.1(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@types/web-bluetooth': 0.0.20
|
||||
'@vueuse/metadata': 10.11.1
|
||||
'@vueuse/shared': 10.11.1(vue@3.5.35(typescript@5.9.3))
|
||||
vue-demi: 0.14.10(vue@3.5.35(typescript@5.9.3))
|
||||
transitivePeerDependencies:
|
||||
- '@vue/composition-api'
|
||||
- vue
|
||||
|
||||
'@vueuse/core@13.9.0(vue@3.5.34(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@types/web-bluetooth': 0.0.21
|
||||
@ -14592,13 +14902,30 @@ snapshots:
|
||||
'@vueuse/shared': 14.3.0(vue@3.5.34(typescript@5.9.3))
|
||||
vue: 3.5.34(typescript@5.9.3)
|
||||
|
||||
'@vueuse/integrations@14.3.0(fuse.js@7.3.0)(vue@3.5.34(typescript@5.9.3))':
|
||||
'@vueuse/core@14.3.0(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@types/web-bluetooth': 0.0.21
|
||||
'@vueuse/metadata': 14.3.0
|
||||
'@vueuse/shared': 14.3.0(vue@3.5.35(typescript@5.9.3))
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
|
||||
'@vueuse/integrations@14.3.0(fuse.js@7.3.0)(qrcode@1.5.4)(vue@3.5.34(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.9.3))
|
||||
'@vueuse/shared': 14.3.0(vue@3.5.34(typescript@5.9.3))
|
||||
vue: 3.5.34(typescript@5.9.3)
|
||||
optionalDependencies:
|
||||
fuse.js: 7.3.0
|
||||
qrcode: 1.5.4
|
||||
|
||||
'@vueuse/integrations@14.3.0(fuse.js@7.3.0)(qrcode@1.5.4)(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@vueuse/core': 14.3.0(vue@3.5.35(typescript@5.9.3))
|
||||
'@vueuse/shared': 14.3.0(vue@3.5.35(typescript@5.9.3))
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
optionalDependencies:
|
||||
fuse.js: 7.3.0
|
||||
qrcode: 1.5.4
|
||||
|
||||
'@vueuse/metadata@10.11.1': {}
|
||||
|
||||
@ -14620,7 +14947,7 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- magicast
|
||||
|
||||
'@vueuse/nuxt@14.3.0(magicast@0.5.3)(nuxt@4.1.3(@electric-sql/pglite@0.4.1)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@parcel/watcher@2.5.6)(@types/node@22.19.17)(@vue/compiler-sfc@3.5.35)(cac@6.7.14)(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(eslint@10.3.0(jiti@2.7.0))(ioredis@5.10.1)(lightningcss@1.32.0)(magicast@0.5.3)(mysql2@3.15.3)(optionator@0.9.4)(rollup@4.60.3)(terser@5.46.2)(typescript@5.9.3)(yaml@2.8.4))(vue@3.5.34(typescript@5.9.3))':
|
||||
'@vueuse/nuxt@14.3.0(magicast@0.5.3)(nuxt@4.1.3(@electric-sql/pglite@0.4.1)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@parcel/watcher@2.5.6)(@types/node@22.19.17)(@vue/compiler-sfc@3.5.35)(cac@6.7.14)(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(eslint@10.3.0(jiti@2.7.0))(ioredis@5.10.1)(lightningcss@1.32.0)(magicast@0.5.3)(mysql2@3.15.3)(optionator@0.9.4)(rollup@4.60.3)(terser@5.46.2)(typescript@5.9.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4))(vue@3.5.34(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@nuxt/kit': 4.4.4(magicast@0.5.3)
|
||||
'@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.9.3))
|
||||
@ -14631,6 +14958,17 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- magicast
|
||||
|
||||
'@vueuse/nuxt@14.3.0(magicast@0.5.3)(nuxt@4.1.3(@electric-sql/pglite@0.4.1)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@parcel/watcher@2.5.6)(@types/node@22.19.17)(@vue/compiler-sfc@3.5.35)(cac@6.7.14)(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(eslint@10.3.0(jiti@2.7.0))(ioredis@5.10.1)(lightningcss@1.32.0)(magicast@0.5.3)(mysql2@3.15.3)(optionator@0.9.4)(rollup@4.60.3)(terser@5.46.2)(typescript@5.9.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4))(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
'@nuxt/kit': 4.4.4(magicast@0.5.3)
|
||||
'@vueuse/core': 14.3.0(vue@3.5.35(typescript@5.9.3))
|
||||
'@vueuse/metadata': 14.3.0
|
||||
local-pkg: 1.1.2
|
||||
nuxt: 4.1.3(@electric-sql/pglite@0.4.1)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@parcel/watcher@2.5.6)(@types/node@22.19.17)(@vue/compiler-sfc@3.5.35)(cac@6.7.14)(db0@0.3.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3))(eslint@10.3.0(jiti@2.7.0))(ioredis@5.10.1)(lightningcss@1.32.0)(magicast@0.5.3)(mysql2@3.15.3)(optionator@0.9.4)(rollup@4.60.3)(terser@5.46.2)(typescript@5.9.3)(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4)
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
transitivePeerDependencies:
|
||||
- magicast
|
||||
|
||||
'@vueuse/shared@10.11.1(vue@3.5.34(typescript@5.9.3))':
|
||||
dependencies:
|
||||
vue-demi: 0.14.10(vue@3.5.34(typescript@5.9.3))
|
||||
@ -14638,6 +14976,13 @@ snapshots:
|
||||
- '@vue/composition-api'
|
||||
- vue
|
||||
|
||||
'@vueuse/shared@10.11.1(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
vue-demi: 0.14.10(vue@3.5.35(typescript@5.9.3))
|
||||
transitivePeerDependencies:
|
||||
- '@vue/composition-api'
|
||||
- vue
|
||||
|
||||
'@vueuse/shared@13.9.0(vue@3.5.34(typescript@5.9.3))':
|
||||
dependencies:
|
||||
vue: 3.5.34(typescript@5.9.3)
|
||||
@ -14646,6 +14991,10 @@ snapshots:
|
||||
dependencies:
|
||||
vue: 3.5.34(typescript@5.9.3)
|
||||
|
||||
'@vueuse/shared@14.3.0(vue@3.5.35(typescript@5.9.3))':
|
||||
dependencies:
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
|
||||
'@xmldom/xmldom@0.8.13': {}
|
||||
|
||||
'@xmldom/xmldom@0.9.10': {}
|
||||
@ -15273,6 +15622,12 @@ snapshots:
|
||||
|
||||
client-only@0.0.1: {}
|
||||
|
||||
cliui@6.0.0:
|
||||
dependencies:
|
||||
string-width: 4.2.3
|
||||
strip-ansi: 6.0.1
|
||||
wrap-ansi: 6.2.0
|
||||
|
||||
cliui@8.0.1:
|
||||
dependencies:
|
||||
string-width: 4.2.3
|
||||
@ -15545,6 +15900,8 @@ snapshots:
|
||||
dependencies:
|
||||
ms: 2.1.3
|
||||
|
||||
decamelize@1.2.0: {}
|
||||
|
||||
decode-uri-component@0.2.2: {}
|
||||
|
||||
decompress-response@6.0.0:
|
||||
@ -15634,6 +15991,8 @@ snapshots:
|
||||
|
||||
diff@9.0.0: {}
|
||||
|
||||
dijkstrajs@1.0.3: {}
|
||||
|
||||
dlv@1.1.3: {}
|
||||
|
||||
dom-serializer@2.0.0:
|
||||
@ -15719,6 +16078,12 @@ snapshots:
|
||||
embla-carousel-reactive-utils: 8.6.0(embla-carousel@8.6.0)
|
||||
vue: 3.5.34(typescript@5.9.3)
|
||||
|
||||
embla-carousel-vue@8.6.0(vue@3.5.35(typescript@5.9.3)):
|
||||
dependencies:
|
||||
embla-carousel: 8.6.0
|
||||
embla-carousel-reactive-utils: 8.6.0(embla-carousel@8.6.0)
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
|
||||
embla-carousel-wheel-gestures@8.1.0(embla-carousel@8.6.0):
|
||||
dependencies:
|
||||
embla-carousel: 8.6.0
|
||||
@ -17801,6 +18166,19 @@ snapshots:
|
||||
- react
|
||||
- react-dom
|
||||
|
||||
motion-v@2.2.1(@vueuse/core@14.3.0(vue@3.5.35(typescript@5.9.3)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(vue@3.5.35(typescript@5.9.3)):
|
||||
dependencies:
|
||||
'@vueuse/core': 14.3.0(vue@3.5.35(typescript@5.9.3))
|
||||
framer-motion: 12.38.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||
hey-listen: 1.0.8
|
||||
motion-dom: 12.38.0
|
||||
motion-utils: 12.36.0
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
transitivePeerDependencies:
|
||||
- '@emotion/is-prop-valid'
|
||||
- react
|
||||
- react-dom
|
||||
|
||||
mri@1.2.0: {}
|
||||
|
||||
mrmime@2.0.1: {}
|
||||
@ -18675,6 +19053,8 @@ snapshots:
|
||||
|
||||
pngjs@3.4.0: {}
|
||||
|
||||
pngjs@5.0.0: {}
|
||||
|
||||
popmotion@11.0.5:
|
||||
dependencies:
|
||||
framesync: 6.1.2
|
||||
@ -19073,6 +19453,12 @@ snapshots:
|
||||
|
||||
qrcode-terminal@0.11.0: {}
|
||||
|
||||
qrcode@1.5.4:
|
||||
dependencies:
|
||||
dijkstrajs: 1.0.3
|
||||
pngjs: 5.0.0
|
||||
yargs: 15.4.1
|
||||
|
||||
qs@6.15.1:
|
||||
dependencies:
|
||||
side-channel: 1.1.0
|
||||
@ -19468,12 +19854,30 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- '@vue/composition-api'
|
||||
|
||||
reka-ui@2.9.6(vue@3.5.35(typescript@5.9.3)):
|
||||
dependencies:
|
||||
'@floating-ui/dom': 1.7.6
|
||||
'@floating-ui/vue': 1.1.11(vue@3.5.35(typescript@5.9.3))
|
||||
'@internationalized/date': 3.12.1
|
||||
'@internationalized/number': 3.6.6
|
||||
'@tanstack/vue-virtual': 3.13.24(vue@3.5.35(typescript@5.9.3))
|
||||
'@vueuse/core': 14.3.0(vue@3.5.35(typescript@5.9.3))
|
||||
'@vueuse/shared': 14.3.0(vue@3.5.35(typescript@5.9.3))
|
||||
aria-hidden: 1.2.6
|
||||
defu: 6.1.7
|
||||
ohash: 2.0.11
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
transitivePeerDependencies:
|
||||
- '@vue/composition-api'
|
||||
|
||||
remeda@2.33.4: {}
|
||||
|
||||
require-directory@2.1.1: {}
|
||||
|
||||
require-from-string@2.0.2: {}
|
||||
|
||||
require-main-filename@2.0.0: {}
|
||||
|
||||
requireg@0.2.2:
|
||||
dependencies:
|
||||
nested-error-stacks: 2.0.1
|
||||
@ -19693,6 +20097,8 @@ snapshots:
|
||||
|
||||
server-only@0.0.1: {}
|
||||
|
||||
set-blocking@2.0.0: {}
|
||||
|
||||
set-function-length@1.2.2:
|
||||
dependencies:
|
||||
define-data-property: 1.1.4
|
||||
@ -20379,6 +20785,18 @@ snapshots:
|
||||
'@nuxt/kit': 4.4.4(magicast@0.5.3)
|
||||
'@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.9.3))
|
||||
|
||||
unplugin-auto-import@21.0.0(@nuxt/kit@4.4.4(magicast@0.5.3))(@vueuse/core@14.3.0(vue@3.5.35(typescript@5.9.3))):
|
||||
dependencies:
|
||||
local-pkg: 1.1.2
|
||||
magic-string: 0.30.21
|
||||
picomatch: 4.0.4
|
||||
unimport: 5.7.0
|
||||
unplugin: 2.3.11
|
||||
unplugin-utils: 0.3.1
|
||||
optionalDependencies:
|
||||
'@nuxt/kit': 4.4.4(magicast@0.5.3)
|
||||
'@vueuse/core': 14.3.0(vue@3.5.35(typescript@5.9.3))
|
||||
|
||||
unplugin-utils@0.2.5:
|
||||
dependencies:
|
||||
pathe: 2.0.3
|
||||
@ -20404,6 +20822,21 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@nuxt/kit': 4.4.4(magicast@0.5.3)
|
||||
|
||||
unplugin-vue-components@32.0.0(@nuxt/kit@4.4.4(magicast@0.5.3))(vue@3.5.35(typescript@5.9.3)):
|
||||
dependencies:
|
||||
chokidar: 5.0.0
|
||||
local-pkg: 1.1.2
|
||||
magic-string: 0.30.21
|
||||
mlly: 1.8.2
|
||||
obug: 2.1.1
|
||||
picomatch: 4.0.4
|
||||
tinyglobby: 0.2.16
|
||||
unplugin: 3.0.0
|
||||
unplugin-utils: 0.3.1
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
optionalDependencies:
|
||||
'@nuxt/kit': 4.4.4(magicast@0.5.3)
|
||||
|
||||
unplugin-vue-router@0.12.0(vue-router@4.6.4(vue@3.5.34(typescript@5.9.3)))(vue@3.5.34(typescript@5.9.3)):
|
||||
dependencies:
|
||||
'@babel/types': 7.29.0
|
||||
@ -20578,6 +21011,14 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- '@vue/composition-api'
|
||||
|
||||
vaul-vue@0.4.1(reka-ui@2.9.6(vue@3.5.35(typescript@5.9.3)))(vue@3.5.35(typescript@5.9.3)):
|
||||
dependencies:
|
||||
'@vueuse/core': 10.11.1(vue@3.5.35(typescript@5.9.3))
|
||||
reka-ui: 2.9.6(vue@3.5.35(typescript@5.9.3))
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
transitivePeerDependencies:
|
||||
- '@vue/composition-api'
|
||||
|
||||
vaul@1.1.2(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
|
||||
dependencies:
|
||||
'@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||
@ -20815,6 +21256,10 @@ snapshots:
|
||||
dependencies:
|
||||
vue: 3.5.34(typescript@5.9.3)
|
||||
|
||||
vue-demi@0.14.10(vue@3.5.35(typescript@5.9.3)):
|
||||
dependencies:
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
|
||||
vue-devtools-stub@0.1.0: {}
|
||||
|
||||
vue-i18n@10.0.8(vue@3.5.34(typescript@5.9.3)):
|
||||
@ -20829,6 +21274,11 @@ snapshots:
|
||||
'@vue/devtools-api': 6.6.4
|
||||
vue: 3.5.34(typescript@5.9.3)
|
||||
|
||||
vue-router@4.6.4(vue@3.5.35(typescript@5.9.3)):
|
||||
dependencies:
|
||||
'@vue/devtools-api': 6.6.4
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
|
||||
vue-virtual-scroller@3.0.4(vue@3.5.35(typescript@5.9.3)):
|
||||
dependencies:
|
||||
vue: 3.5.35(typescript@5.9.3)
|
||||
@ -20888,6 +21338,8 @@ snapshots:
|
||||
|
||||
wheel-gestures@2.2.48: {}
|
||||
|
||||
which-module@2.0.1: {}
|
||||
|
||||
which-typed-array@1.1.20:
|
||||
dependencies:
|
||||
available-typed-arrays: 1.0.7
|
||||
@ -20919,6 +21371,12 @@ snapshots:
|
||||
|
||||
word-wrap@1.2.5: {}
|
||||
|
||||
wrap-ansi@6.2.0:
|
||||
dependencies:
|
||||
ansi-styles: 4.3.0
|
||||
string-width: 4.2.3
|
||||
strip-ansi: 6.0.1
|
||||
|
||||
wrap-ansi@7.0.0:
|
||||
dependencies:
|
||||
ansi-styles: 4.3.0
|
||||
@ -20990,6 +21448,8 @@ snapshots:
|
||||
lib0: 0.2.117
|
||||
yjs: 13.6.30
|
||||
|
||||
y18n@4.0.3: {}
|
||||
|
||||
y18n@5.0.8: {}
|
||||
|
||||
yallist@3.1.1: {}
|
||||
@ -21003,10 +21463,29 @@ snapshots:
|
||||
|
||||
yaml@2.8.4: {}
|
||||
|
||||
yargs-parser@18.1.3:
|
||||
dependencies:
|
||||
camelcase: 5.3.1
|
||||
decamelize: 1.2.0
|
||||
|
||||
yargs-parser@21.1.1: {}
|
||||
|
||||
yargs-parser@22.0.0: {}
|
||||
|
||||
yargs@15.4.1:
|
||||
dependencies:
|
||||
cliui: 6.0.0
|
||||
decamelize: 1.2.0
|
||||
find-up: 4.1.0
|
||||
get-caller-file: 2.0.5
|
||||
require-directory: 2.1.1
|
||||
require-main-filename: 2.0.0
|
||||
set-blocking: 2.0.0
|
||||
string-width: 4.2.3
|
||||
which-module: 2.0.1
|
||||
y18n: 4.0.3
|
||||
yargs-parser: 18.1.3
|
||||
|
||||
yargs@17.7.2:
|
||||
dependencies:
|
||||
cliui: 8.0.1
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user