Compare commits
94 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 65b7fc2964 | |||
| 2227e49993 | |||
| dbd97d3cf4 | |||
| b687f790ba | |||
| 65ae75494f | |||
| 54b4331e1e | |||
| 8e52b05032 | |||
| 1972c4d1b4 | |||
| f2aebcbad9 | |||
| 4722e1a0ee | |||
| 242f67ec2b | |||
| 1ee800f451 | |||
| 8a6625b117 | |||
| 906d462eee | |||
| b3c87ad7b7 | |||
| 75882545c8 | |||
| 4b4db6885b | |||
| f0e7b04758 | |||
| 5b91975061 | |||
| a58b5073c6 | |||
| e1bee1bcf6 | |||
| 7acc2b7329 | |||
| 62d5d73c74 | |||
| 1afb47c49c | |||
| 483957b272 | |||
| 5af0587d00 | |||
| aaf97b7904 | |||
| e11610985d | |||
| 806bc57944 | |||
| 7d74dd091b | |||
| 86d8489078 | |||
| da52556c26 | |||
| 47ed8de586 | |||
| 47cd730fd1 | |||
| 0bd7e5bf83 | |||
| 8968db27c0 | |||
| 45c3e30843 | |||
| 9f2d898d82 | |||
| 800a57d28a | |||
| c23e4ff1ad | |||
| 1d48dbe7d5 | |||
| cd9d8cda1f | |||
| 08256c6113 | |||
| 8d7bb90a82 | |||
| 706005d7f5 | |||
| 6a04d861bd | |||
| 8dfda37ef5 | |||
| 58a862c98d | |||
| feba1ca13f | |||
| dd23b6f352 | |||
| 6964fdcae1 | |||
| c7e509a04c | |||
| 22d16dbdc7 | |||
| 0868c3c59f | |||
| 58c709f196 | |||
| 29e175e75f | |||
| f0f3b40a30 | |||
| 4893d5e2ba | |||
| 72fdebe50d | |||
| 9cad631015 | |||
| fcb22f60d3 | |||
| 571345ed0d | |||
| 34353493b5 | |||
| 087aee88d3 | |||
| 882adb2dea | |||
| 4dd9599c47 | |||
| 618248e8df | |||
| 364cf378b3 | |||
| 9783de85f5 | |||
| 3a82f9bab0 | |||
| 0beef70651 | |||
| ac1e5c332f | |||
| 5e2b31385f | |||
| c711899e4d | |||
| f0b4e586c0 | |||
| c255a85ffb | |||
| 8853ec697d | |||
| 258f6e0629 | |||
| 42d1cce567 | |||
| 580141fa17 | |||
| 2e4a12c812 | |||
| b3a2fd7092 | |||
| 9b101e9c9f | |||
| 3baa67d8de | |||
| 537c5b06c1 | |||
| eaa0c2bcbe | |||
| dc8ff7a406 | |||
| c5d835ea09 | |||
| 71f9ae221c | |||
| dd12a49aaf | |||
| e951fc712f | |||
| b5f1bf6d2c | |||
| afcd45d32f | |||
| c67da1d085 |
@@ -5,6 +5,15 @@
|
||||
# openssl rand -hex 32
|
||||
ARIA_AUTH_TOKEN=change-me-to-a-long-random-string
|
||||
|
||||
# RVS — Rendezvous-Server (Bridge + App verbinden sich hierüber)
|
||||
RVS_HOST=rvs.example.de
|
||||
RVS_PORT=443
|
||||
RVS_TLS=true
|
||||
# Bei TLS-Fehler automatisch auf ws:// (ohne TLS) fallback?
|
||||
# true = Fallback erlaubt, false = nur mit TLS verbinden
|
||||
RVS_TLS_FALLBACK=true
|
||||
RVS_TOKEN=
|
||||
|
||||
# Gitea (for release.sh — Kennwort wird interaktiv abgefragt)
|
||||
GITEA_URL=https://git.hacker-net.de
|
||||
GITEA_REPO=Hacker-Software/ARIA-AGENT
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
!.env.*.example
|
||||
aria-data/config/*.env
|
||||
!aria-data/config/*.env.example
|
||||
!aria-data/config/openclaw.env
|
||||
|
||||
# ── ARIAs Gedächtnis (nur per tar gesichert) ────
|
||||
aria-data/brain/
|
||||
|
||||
Binary file not shown.
+244
@@ -0,0 +1,244 @@
|
||||
# ARIA — Changelog
|
||||
|
||||
Alle Änderungen am Projekt. Format: [Keep a Changelog](https://keepachangelog.com/de/1.1.0/)
|
||||
|
||||
---
|
||||
|
||||
## [0.0.0.5] — 2026-03-13
|
||||
|
||||
### Hinzugefügt
|
||||
|
||||
**Diagnostic — Pipeline-Tab**
|
||||
- Neuer "Pipeline"-Tab im Log-Bereich — zeigt den kompletten Nachrichtenfluss wenn eine Chat-Nachricht über die Diagnostic-UI gesendet wird
|
||||
- Tracking aller Schritte: Senden → Gateway ACK → Streaming Deltas → Finale Antwort (oder Fehler)
|
||||
- Zeitmessung: Jeder Schritt zeigt Elapsed-Time seit Pipeline-Start
|
||||
- Farbcodierung: Blau (Schritte), Grün (Erfolg), Rot (Fehler)
|
||||
- 60s Timeout — markiert Pipeline als fehlgeschlagen wenn keine Antwort kommt
|
||||
- Funktioniert für Gateway-direkt und RVS-Nachrichten
|
||||
|
||||
### Behoben
|
||||
|
||||
**OpenClaw Gateway Event-Format — ARIA antwortet jetzt**
|
||||
- OpenClaw sendet `event: "agent"` (Streaming-Deltas in `payload.data.delta`) und `event: "chat"` mit `payload.state: "delta"|"final"|"error"` — **nicht** `chat:delta`/`chat:final`/`chat:error` wie angenommen
|
||||
- Antworttext steckt in `payload.message.content[0].text` (Array von Content-Blöcken, nicht flacher String) — `text.slice is not a function` Fehler behoben
|
||||
- `ackReactionScope` von `"group-mentions"` auf `"all"` geändert — Agent reagierte nur auf @mentions, nicht auf direkte Nachrichten
|
||||
- Diagnostic Server und Bridge auf neues Event-Format umgestellt
|
||||
- Legacy-Event-Namen (`chat:delta`, `chat:final`, `chat:error`) als Fallback beibehalten
|
||||
|
||||
### Geändert
|
||||
|
||||
**OpenClaw Config — Custom Provider Format**
|
||||
- `openclaw.json` nutzt `models.providers` (Object, nicht Array) mit `api: "openai-completions"`
|
||||
- Model-Einträge brauchen sowohl `id` als auch `name` Feld
|
||||
- `aria-setup.sh` schreibt korrekte Config mit Heredoc-Pattern (`'"'"'INNEREOF'"'"'`)
|
||||
- `DEFAULT_MODEL=proxy/claude-sonnet-4` — mit Provider-Prefix für Custom Provider
|
||||
- `OPENAI_BASE_URL` und `OPENAI_API_KEY` entfernt — OpenClaw ignoriert diese Env-Vars, nutzt nur `models.providers` Config
|
||||
|
||||
---
|
||||
|
||||
## [0.0.0.4] — 2026-03-11 / 2026-03-12
|
||||
|
||||
### Hinzugefügt
|
||||
|
||||
**Diagnostic Container — Selbstcheck-UI**
|
||||
- Neuer Container `aria-diagnostic` mit Web-UI auf Port 3001
|
||||
- Status-Karten: OpenClaw Gateway, RVS, Claude Proxy — jeweils mit Dot-Indicator
|
||||
- Claude Proxy Test: Prüft Erreichbarkeit (`/v1/models`) und sendet Test-Prompt an Claude — zeigt verfügbare Modelle als Tags + `DEFAULT_MODEL` Hinweis für docker-compose.yml
|
||||
- Auth-Check: "Auth prüfen" Button durchsucht alle bekannten Credential-Pfade im Proxy-Container (`/root/.config/claude/`, `/root/.claude/`, `/root/.claude/auth/`) rekursiv — zeigt gefundene Dateien und deren Inhalt
|
||||
- Claude Login via UI: "Login starten" Button öffnet interaktives Terminal (xterm.js) in einem Modal-Overlay — führt `claude login` im Proxy-Container aus, volle TUI-Unterstützung (kein ANSI-Stripping mehr nötig)
|
||||
- xterm.js Terminal: Bidirektionaler Stream über Docker Exec API mit `Tty: true` + HTTP Upgrade auf Raw-TCP-Socket — echtes interaktives Terminal im Browser
|
||||
- UTF-8 Fix: Eingehende Daten werden als `Uint8Array` an xterm.write() übergeben (statt `atob()` → Latin-1 String, der Multi-Byte UTF-8 zerstört), ausgehende Daten über `TextEncoder` UTF-8-safe kodiert
|
||||
- Credentials manuell einfügen: "Credentials einfügen" Button — JSON von einem eingeloggten Rechner kopieren und direkt in den Container schreiben (schreibt in beide mögliche Pfade: `.config/claude/` und `.claude/`)
|
||||
- Docker Exec API: Generische `dockerExec()` (nicht-interaktiv, multiplexed stream) + `attachTerminal()` (interaktiv, Tty, raw TCP socket) für Befehle in laufenden Containern (via Docker Socket)
|
||||
- Chat-Test: Nachrichten direkt über Gateway oder via RVS senden
|
||||
- Tabbed Logs: Separate Tabs für Alle, Gateway, RVS, Proxy, Server — mit Zähler pro Tab
|
||||
- Autoscroll-Pause: Automatisch wenn hochgescrollt, "Nach unten" Button zum Fortsetzen
|
||||
- TLS Fallback für RVS-Verbindung (wie Bridge und App)
|
||||
|
||||
### Geändert
|
||||
|
||||
**Bridge → aria-core: OpenClaw Gateway Protokoll**
|
||||
- Bridge nutzt jetzt das echte OpenClaw Gateway WebSocket-Protokoll (Port 18789 statt 8080)
|
||||
- Vollständiger Handshake: `connect.challenge` → `connect` Request (mit Auth-Token) → `hello-ok`
|
||||
- Nachrichten über `chat.send` Method mit `message` und `idempotencyKey`
|
||||
- Antworten über `chat:final` Events (statt custom JSON)
|
||||
- Streaming-Support vorbereitet (`chat:delta` Events werden empfangen)
|
||||
- Fehlerbehandlung für `chat:error` Events — werden an die App weitergeleitet
|
||||
- Client-ID: `gateway-client` / Mode: `backend` (OpenClaw akzeptiert nur bestimmte Werte)
|
||||
|
||||
**Docker-Compose Überarbeitung**
|
||||
- Bridge + Diagnostic nutzen `network_mode: "service:aria"` — teilen Netzwerk mit aria-core, kein separates Netz nötig
|
||||
- `ANTHROPIC_API_KEY` + `ANTHROPIC_BASE_URL` entfernt — OpenClaw rief damit die echte Anthropic API direkt an (401 `invalid x-api-key`), statt den Proxy zu nutzen. Nur noch `OPENAI_*` Vars aktiv
|
||||
- `DEFAULT_MODEL=openai/claude-sonnet-4-6` — mit `openai/` Prefix, damit OpenClaw den OpenAI-Provider und somit den Proxy nutzt
|
||||
- `openclaw.env` erstellt — Volume-Mount schlug fehl weil die Datei nicht existierte (Docker erstellte stattdessen ein leeres Verzeichnis)
|
||||
- `OPENCLAW_GATEWAY_TOKEN` statt `AUTH_TOKEN` — korrekter Env-Var-Name
|
||||
- `ARIA_AUTH_TOKEN` an Bridge und Diagnostic durchgereicht
|
||||
- Port 3001 auf aria-Service gemappt (für Diagnostic Web-UI)
|
||||
- Proxy Claude-Config Volume `:ro` → `:rw` — Login via Diagnostic-UI braucht Schreibzugriff
|
||||
|
||||
**OpenClaw Config-Persistenz**
|
||||
- Named Docker Volume `openclaw-config` für `/home/node/.openclaw` — OpenClaw-Konfiguration (Model, Auth, Sessions) überlebt Container-Neustarts
|
||||
- `aria-setup.sh` — Einmaliges Setup-Skript: wartet auf aria-core, setzt Model auf `openai/claude-sonnet-4-6`, startet Container neu
|
||||
|
||||
### Behoben
|
||||
|
||||
- Handshake fehlgeschlagen `[object Object]` — Fehlermeldung wurde nicht korrekt stringifiziert
|
||||
- `client.id` und `client.mode` im Connect-Request — OpenClaw akzeptiert nur vordefinierte Werte (`cli`, `gateway-client`, `webchat` etc.)
|
||||
- `chat.send` nutzt `message` statt `text` als Parameter — OpenClaw Schema-Validierung
|
||||
- **Claude Proxy bindet auf 0.0.0.0** — `claude-max-api-proxy` bindet hardcoded auf `127.0.0.1`, nicht erreichbar im Docker-Netz. Fix: `standalone.js` wird beim Start gepatcht, liest jetzt `HOST` Env-Var (Upstream-Bug: `startServer()` unterstützt `host`, aber CLI übergibt es nicht)
|
||||
- **Claude Proxy Crash bei Chat-Completion** — `normalizeModelName()` in `cli-to-openai.js` crasht wenn `model` undefined ist (`TypeError: Cannot read properties of undefined`). Fix: Null-Guard-Patch mit Fallback auf `claude-sonnet-4`
|
||||
- **OpenClaw 401 `invalid x-api-key`** — OpenClaw rief mit `ANTHROPIC_BASE_URL` + `ANTHROPIC_API_KEY=not-needed` die echte Anthropic API an, nicht den Proxy. Fix: Anthropic-Vars entfernt, nur OpenAI-Provider aktiv (`OPENAI_BASE_URL=http://proxy:3456/v1`). Proxy unterstützt nur `/v1/chat/completions` (OpenAI-Format), nicht `/v1/messages` (Anthropic-Format)
|
||||
- **App Echo-Bug** — Chat-Nachrichten von RVS wurden ohne Sender-Prüfung als ARIA-Nachricht angezeigt. Bei Ghost-Clients (Doppel-Connections nach Reconnect) erschien die eigene Nachricht nochmals. Fix: `message.payload.sender` wird geprüft, Nachrichten von `user` und `diagnostic` werden ignoriert
|
||||
|
||||
---
|
||||
|
||||
## [0.0.0.3] — 2026-03-09
|
||||
|
||||
### Geändert
|
||||
|
||||
**RVS — Architektur-Umbau**
|
||||
- RVS ist jetzt reiner Relay — kennt keine Tokens, keine Expiry, leitet nur durch
|
||||
- `TOKEN_EXPIRY` und `RVS_PUBLIC_HOST`/`RVS_PUBLIC_PORT` entfernt
|
||||
- Rooms leben solange Clients verbunden sind (statt fester Ablaufzeit)
|
||||
- Multi-Instanz: Mehrere ARIA-VMs können denselben RVS nutzen (z.B. Stefan + Papa)
|
||||
|
||||
**Token-Erzeugung auf ARIA-VM statt RVS**
|
||||
- `generate-token.js` aus `rvs/` entfernt
|
||||
- Neues `generate-token.sh` im Hauptverzeichnis (läuft auf ARIA-VM)
|
||||
- Token wird automatisch in `.env` geschrieben
|
||||
- `./generate-token.sh show` zeigt bestehendes Token als QR nochmal an
|
||||
|
||||
**Konfiguration vereinfacht**
|
||||
- `RVS_URL` ersetzt durch `RVS_HOST`, `RVS_PORT`, `RVS_TLS` (klare Einzelfelder)
|
||||
- Port einmal in `.env` ändern → wirkt auf RVS docker-compose, Bridge und QR-Code
|
||||
- `rvs/docker-compose.yml` nutzt `${RVS_PORT:-443}` statt hardcoded Port
|
||||
|
||||
**Android App — QR-Code Scanner**
|
||||
- Echter QR-Code Scanner statt Platzhalter-Alert (`react-native-camera-kit`)
|
||||
- Vollbild-Kamera mit Overlay, Validierung des QR-Formats
|
||||
- Kamera-Berechtigung (Android Runtime Permission)
|
||||
- `AndroidManifest.xml` — `CAMERA` Permission hinzugefügt
|
||||
|
||||
**Voice Bridge — RVS-Anbindung**
|
||||
- Bridge verbindet sich jetzt parallel zu aria-core (lokal) UND zum RVS (öffentlich)
|
||||
- Nachrichten von der App werden über RVS → Bridge → aria-core weitergeleitet
|
||||
- Antworten von aria-core werden über Bridge → RVS → App zurückgeschickt
|
||||
- Auto-Reconnect mit Exponential Backoff für beide WebSocket-Verbindungen
|
||||
- Neue Message-Handler: chat, mode, location, file, audio
|
||||
|
||||
**Android Build-Fixes**
|
||||
- `kotlin_version` (snake_case) in `build.gradle` hinzugefügt — `react-native-camera-kit` braucht beide Varianten
|
||||
- `build.sh` schreibt `org.gradle.java.home` dynamisch in `gradle.properties` — verhindert dass Gradle kaputte JVM-Pfade findet (`/usr/lib/jvm/openjdk-17` ohne bin/java)
|
||||
- `minSdkVersion` 21 → 23 — `react-native-camera-kit` braucht mindestens API 23
|
||||
|
||||
**Android App — Credentials Persistenz**
|
||||
- Verbindungsdaten (Host, Port, Token) werden nach QR-Scan in AsyncStorage gespeichert
|
||||
- Beim App-Start automatisch geladen und verbunden — einmal scannen, nie wieder
|
||||
- Neue Dependency: `@react-native-async-storage/async-storage`
|
||||
|
||||
**Docker & Infrastruktur**
|
||||
- OpenClaw Image fix: `openclaw/openclaw:latest` → `ghcr.io/openclaw/openclaw:latest`
|
||||
- Proxy fix: Binary heißt `claude-max-api`, braucht `@anthropic-ai/claude-code` als Peer-Dependency
|
||||
- Proxy Binary-Name fix: `claude-max-api-proxy` → `claude-max-api` (npm-Paket heißt anders als die Binary)
|
||||
- `libportaudio2` in Bridge Dockerfile hinzugefügt — `sounddevice` braucht PortAudio
|
||||
- `aria-data/config/aria.env.example` hinzugefügt — Voice Bridge Konfigurationsvorlage
|
||||
|
||||
**Wake-Word Fix (openwakeword)**
|
||||
- `WakeWordDetector` umgebaut — sucht Custom-Modell `/voices/wake_aria.onnx`, Fallback auf eingebautes `hey_jarvis`
|
||||
- Alter Code crashte: `wakeword_models=["aria"]` erwartet Dateipfad, kein Keyword
|
||||
|
||||
**TLS Fallback (Bridge → RVS)**
|
||||
- Bridge versucht zuerst `wss://` (TLS), bei `ssl.SSLError` automatisch Fallback auf `ws://`
|
||||
- Konfigurierbar über `RVS_TLS_FALLBACK=true` in `.env`
|
||||
- Loggt deutlich wenn TLS gewollt aber nicht verfügbar ist
|
||||
|
||||
**Audio-Rendering für App (Piper TTS via RVS)**
|
||||
- Bridge rendert Piper TTS → WAV → base64, sendet Text UND Audio gleichzeitig über RVS
|
||||
- App spielt Audio ab und zeigt Text parallel — Modus entscheidet ob Sprache oder nur Text
|
||||
- Voice Engine initialisiert IMMER (auch ohne Soundkarte in der VM)
|
||||
- STT/Wake-Word nur wenn Audio-Hardware vorhanden — graceful degradation
|
||||
- Neue Dependency: `react-native-fs` (base64 → temp WAV → Sound abspielen)
|
||||
|
||||
**Chat-Persistenz (Android App)**
|
||||
- Chat-Verlauf wird in AsyncStorage gespeichert (letzte 500 Nachrichten)
|
||||
- Beim App-Start automatisch geladen — Konversation bleibt erhalten
|
||||
- Linearer 1:1 Chat, keine Threads
|
||||
|
||||
**TLS Fallback + Verbindungslog (Android App)**
|
||||
- App versucht zuerst `wss://`, bei Fehler automatisch Fallback auf `ws://`
|
||||
- `network_security_config.xml` hinzugefuegt — Android 9+ blockiert sonst `ws://` (Cleartext)
|
||||
- Verbindungslog im Settings-Tab — zeigt jeden Verbindungsversuch, Fehler, Fallback (scrollbar, max 200px)
|
||||
- Gespeicherte Config wird beim Start in die Einstellungsfelder geladen
|
||||
- Fix: TLS-Fallback erzeugte Doppel-Verbindungen (onerror + onclose beide reconnected)
|
||||
|
||||
**RVS — Ghost-Client Fix**
|
||||
- Heartbeat-Intervall 30s → 15s, Cleanup 60s → 30s — tote Clients werden schneller entfernt
|
||||
- `heartbeat` als erlaubter Nachrichtentyp hinzugefuegt — App-Heartbeats halten Verbindung lebendig
|
||||
- App-seitiger JSON-Heartbeat zaehlt als Lebenszeichen (zusaetzlich zu WebSocket Ping/Pong)
|
||||
|
||||
**Neues Script: `get-voices.sh`**
|
||||
- Lädt Piper Stimmen (Ramona + Thorsten) von HuggingFace herunter
|
||||
- Neuer Installationsschritt in README
|
||||
|
||||
**ARIA Persönlichkeit**
|
||||
- `AGENT.md` überarbeitet — ARIA ist jetzt Partnerin auf Augenhöhe (Claude-Charakter)
|
||||
- Direkt, ehrlich, humorvoll, lösungsorientiert, kein Theater
|
||||
|
||||
---
|
||||
|
||||
## [0.0.0.2] — 2026-03-08
|
||||
|
||||
### Geändert
|
||||
|
||||
**Build-Fixes**
|
||||
- `CI=true` in `build.sh` — verhindert EMFILE durch Metro File-Watcher im Release-Build
|
||||
- `setup.sh` erstellt Metro-Config-Dateien automatisch (metro.config.js, babel.config.js, .watchmanconfig)
|
||||
|
||||
**Release-Script**
|
||||
- `release.sh` komplett umgebaut — Kennwort wird interaktiv abgefragt statt Token in `.env`
|
||||
- Gitea-Upload fix: `-F` multipart statt `--data-binary`
|
||||
- Login-Test vor Release, CHANGELOG.md-Integration für Release Notes
|
||||
|
||||
---
|
||||
|
||||
## [0.0.0.1] — 2026-03-08
|
||||
|
||||
### Hinzugefügt
|
||||
|
||||
**Infrastruktur**
|
||||
- `docker-compose.yml` — ARIA-VM mit Proxy, OpenClaw, Voice Bridge
|
||||
- `.env.example` — Konfigurationsvorlage (ohne Secrets)
|
||||
- `release.sh` — Automatisiertes Release (Build, Tag, Gitea Upload mit Kennwort-Abfrage)
|
||||
|
||||
**RVS (Rendezvous-Server)**
|
||||
- WebSocket Relay Server (`rvs/server.js`) — Token-Rooms, Heartbeat, Message Types
|
||||
- Docker Setup (`rvs/Dockerfile`, `rvs/docker-compose.yml`)
|
||||
|
||||
**Token & Pairing**
|
||||
- `generate-token.sh` — Token-Generator mit QR-Code (läuft auf ARIA-VM, schreibt Token in `.env`)
|
||||
|
||||
**Voice Bridge**
|
||||
- Python Voice Bridge (`bridge/aria_bridge.py`) — Whisper STT, Piper TTS, Wake-Word
|
||||
- 5 Betriebsmodi (`bridge/modes.py`) — Normal, DND, Whisper, Hangar, Gaming
|
||||
- Docker Setup (`bridge/Dockerfile`, `bridge/requirements.txt`)
|
||||
|
||||
**Android App (ARIA Cockpit)**
|
||||
- Chat-Screen mit Texteingabe, Voice-Button, Datei/Kamera-Upload
|
||||
- Settings-Screen mit Verbindungsstatus, Token-Eingabe, Modus-Auswahl, GPS-Toggle, Log-Viewer
|
||||
- WebSocket-Service mit Auto-Reconnect und Exponential Backoff
|
||||
- Audio-Service (Mikrofon-Aufnahme, TTS-Wiedergabe)
|
||||
- Push-to-Talk Button mit Puls-Animation
|
||||
- Modus-Selektor (5 Modi)
|
||||
- Build-Tooling: `setup.sh` (7-Schritt Dev-Setup), `build.sh` (Release/Debug APK)
|
||||
- Metro-Config, Babel-Config, Watchman-Config
|
||||
|
||||
**Konfiguration & Daten**
|
||||
- `aria-data/config/AGENT.md` — ARIAs Persönlichkeit und Sicherheitsregeln
|
||||
- `aria-data/config/USER.md` — Stefans Präferenzen
|
||||
- `aria-data/config/TOOLING.md` — VM-Tooling Liste
|
||||
- `aria-data/skills/README.md` — Skill-Bauanleitung
|
||||
|
||||
### Bekannte Probleme
|
||||
- Android Release-Build: `EMFILE: too many open files` — Fix: `CI=true` in `build.sh`
|
||||
- JDK 21 inkompatibel mit AGP 8.1 — Fix: Automatischer Fallback auf JDK 17
|
||||
- `react-native-screens` > 3.27.0 inkompatibel mit RN 0.73.4 — Fix: Version gepinnt
|
||||
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,2 +1,2 @@
|
||||
#Sun Mar 08 23:07:31 CET 2026
|
||||
#Sun Mar 29 11:32:18 CEST 2026
|
||||
gradle.version=8.3
|
||||
|
||||
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 134 B |
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 100 B |
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 913 B |
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 134 B |
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 167 B |
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 207 B |
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<!-- Automatically generated file. DO NOT MODIFY -->
|
||||
|
||||
<!-- Value from default config. -->
|
||||
<integer name="react_native_dev_server_port">8081</integer>
|
||||
<!-- Value from default config. -->
|
||||
<integer name="react_native_inspector_proxy_port">8081</integer>
|
||||
|
||||
</resources>
|
||||
+16
-1
@@ -25,6 +25,16 @@ import com.reactnativecommunity.geolocation.GeolocationPackage;
|
||||
import com.imagepicker.ImagePickerPackage;
|
||||
// react-native-permissions
|
||||
import com.zoontek.rnpermissions.RNPermissionsPackage;
|
||||
// react-native-camera-kit
|
||||
import com.rncamerakit.RNCameraKitPackage;
|
||||
// @react-native-async-storage/async-storage
|
||||
import com.reactnativecommunity.asyncstorage.AsyncStoragePackage;
|
||||
// react-native-fs
|
||||
import com.rnfs.RNFSPackage;
|
||||
// react-native-audio-recorder-player
|
||||
import com.dooboolab.audiorecorderplayer.RNAudioRecorderPlayerPackage;
|
||||
// react-native-live-audio-stream
|
||||
import com.imxiqi.rnliveaudiostream.RNLiveAudioStreamPackage;
|
||||
|
||||
public class PackageList {
|
||||
private Application application;
|
||||
@@ -76,7 +86,12 @@ public class PackageList {
|
||||
new RNSoundPackage(),
|
||||
new GeolocationPackage(),
|
||||
new ImagePickerPackage(),
|
||||
new RNPermissionsPackage()
|
||||
new RNPermissionsPackage(),
|
||||
new RNCameraKitPackage(),
|
||||
new AsyncStoragePackage(),
|
||||
new RNFSPackage(),
|
||||
new RNAudioRecorderPlayerPackage(),
|
||||
new RNLiveAudioStreamPackage()
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
-1
@@ -1 +0,0 @@
|
||||
{}
|
||||
@@ -1,2 +0,0 @@
|
||||
#- File Locator -
|
||||
listingFile=../../../outputs/apk/release/output-metadata.json
|
||||
@@ -1,2 +0,0 @@
|
||||
appMetadataVersion=1.1
|
||||
androidGradlePluginVersion=8.1.1
|
||||
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
-10
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"artifactType": {
|
||||
"type": "COMPATIBLE_SCREEN_MANIFEST",
|
||||
"kind": "Directory"
|
||||
},
|
||||
"applicationId": "com.ariacockpit",
|
||||
"variantName": "release",
|
||||
"elements": []
|
||||
}
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
-117
@@ -1,117 +0,0 @@
|
||||
# This is a configuration file for ProGuard.
|
||||
# http://proguard.sourceforge.net/index.html#manual/usage.html
|
||||
#
|
||||
# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with
|
||||
# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and
|
||||
# will be ignored by new version of the Android plugin for Gradle.
|
||||
|
||||
# Optimizations: If you don't want to optimize, use the proguard-android.txt configuration file
|
||||
# instead of this one, which turns off the optimization flags.
|
||||
# Adding optimization introduces certain risks, since for example not all optimizations performed by
|
||||
# ProGuard works on all versions of Dalvik. The following flags turn off various optimizations
|
||||
# known to have issues, but the list may not be complete or up to date. (The "arithmetic"
|
||||
# optimization can be used if you are only targeting Android 2.0 or later.) Make sure you test
|
||||
# thoroughly if you go this route.
|
||||
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
|
||||
-optimizationpasses 5
|
||||
-allowaccessmodification
|
||||
|
||||
-dontusemixedcaseclassnames
|
||||
-dontskipnonpubliclibraryclasses
|
||||
-verbose
|
||||
|
||||
# Preserve some attributes that may be required for reflection.
|
||||
-keepattributes AnnotationDefault,
|
||||
EnclosingMethod,
|
||||
InnerClasses,
|
||||
RuntimeVisibleAnnotations,
|
||||
RuntimeVisibleParameterAnnotations,
|
||||
RuntimeVisibleTypeAnnotations,
|
||||
Signature
|
||||
|
||||
-keep public class com.google.vending.licensing.ILicensingService
|
||||
-keep public class com.android.vending.licensing.ILicensingService
|
||||
-keep public class com.google.android.vending.licensing.ILicensingService
|
||||
-dontnote com.android.vending.licensing.ILicensingService
|
||||
-dontnote com.google.vending.licensing.ILicensingService
|
||||
-dontnote com.google.android.vending.licensing.ILicensingService
|
||||
|
||||
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
|
||||
-keepclasseswithmembernames,includedescriptorclasses class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
# Keep setters in Views so that animations can still work.
|
||||
-keepclassmembers public class * extends android.view.View {
|
||||
void set*(***);
|
||||
*** get*();
|
||||
}
|
||||
|
||||
# We want to keep methods in Activity that could be used in the XML attribute onClick.
|
||||
-keepclassmembers class * extends android.app.Activity {
|
||||
public void *(android.view.View);
|
||||
}
|
||||
|
||||
# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
|
||||
-keepclassmembers enum * {
|
||||
public static **[] values();
|
||||
public static ** valueOf(java.lang.String);
|
||||
}
|
||||
|
||||
-keepclassmembers class * implements android.os.Parcelable {
|
||||
public static final ** CREATOR;
|
||||
}
|
||||
|
||||
# Preserve annotated Javascript interface methods.
|
||||
-keepclassmembers class * {
|
||||
@android.webkit.JavascriptInterface <methods>;
|
||||
}
|
||||
|
||||
# The support libraries contains references to newer platform versions.
|
||||
# Don't warn about those in case this app is linking against an older
|
||||
# platform version. We know about them, and they are safe.
|
||||
-dontnote android.support.**
|
||||
-dontnote androidx.**
|
||||
-dontwarn android.support.**
|
||||
-dontwarn androidx.**
|
||||
|
||||
# This class is deprecated, but remains for backward compatibility.
|
||||
-dontwarn android.util.FloatMath
|
||||
|
||||
# Understand the @Keep support annotation.
|
||||
-keep class android.support.annotation.Keep
|
||||
-keep class androidx.annotation.Keep
|
||||
|
||||
-keep @android.support.annotation.Keep class * {*;}
|
||||
-keep @androidx.annotation.Keep class * {*;}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@android.support.annotation.Keep <methods>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@androidx.annotation.Keep <methods>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@android.support.annotation.Keep <fields>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@androidx.annotation.Keep <fields>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@android.support.annotation.Keep <init>(...);
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@androidx.annotation.Keep <init>(...);
|
||||
}
|
||||
|
||||
# These classes are duplicated between android.jar and org.apache.http.legacy.jar.
|
||||
-dontnote org.apache.http.**
|
||||
-dontnote android.net.http.**
|
||||
|
||||
# These classes are duplicated between android.jar and core-lambda-stubs.jar.
|
||||
-dontnote java.lang.invoke.**
|
||||
-116
@@ -1,116 +0,0 @@
|
||||
# This is a configuration file for ProGuard.
|
||||
# http://proguard.sourceforge.net/index.html#manual/usage.html
|
||||
#
|
||||
# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with
|
||||
# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and
|
||||
# will be ignored by new version of the Android plugin for Gradle.
|
||||
|
||||
# Optimization is turned off by default. Dex does not like code run
|
||||
# through the ProGuard optimize steps (and performs some
|
||||
# of these optimizations on its own).
|
||||
# Note that if you want to enable optimization, you cannot just
|
||||
# include optimization flags in your own project configuration file;
|
||||
# instead you will need to point to the
|
||||
# "proguard-android-optimize.txt" file instead of this one from your
|
||||
# project.properties file.
|
||||
-dontoptimize
|
||||
|
||||
-dontusemixedcaseclassnames
|
||||
-dontskipnonpubliclibraryclasses
|
||||
-verbose
|
||||
|
||||
# Preserve some attributes that may be required for reflection.
|
||||
-keepattributes AnnotationDefault,
|
||||
EnclosingMethod,
|
||||
InnerClasses,
|
||||
RuntimeVisibleAnnotations,
|
||||
RuntimeVisibleParameterAnnotations,
|
||||
RuntimeVisibleTypeAnnotations,
|
||||
Signature
|
||||
|
||||
-keep public class com.google.vending.licensing.ILicensingService
|
||||
-keep public class com.android.vending.licensing.ILicensingService
|
||||
-keep public class com.google.android.vending.licensing.ILicensingService
|
||||
-dontnote com.android.vending.licensing.ILicensingService
|
||||
-dontnote com.google.vending.licensing.ILicensingService
|
||||
-dontnote com.google.android.vending.licensing.ILicensingService
|
||||
|
||||
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
|
||||
-keepclasseswithmembernames,includedescriptorclasses class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
# Keep setters in Views so that animations can still work.
|
||||
-keepclassmembers public class * extends android.view.View {
|
||||
void set*(***);
|
||||
*** get*();
|
||||
}
|
||||
|
||||
# We want to keep methods in Activity that could be used in the XML attribute onClick.
|
||||
-keepclassmembers class * extends android.app.Activity {
|
||||
public void *(android.view.View);
|
||||
}
|
||||
|
||||
# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
|
||||
-keepclassmembers enum * {
|
||||
public static **[] values();
|
||||
public static ** valueOf(java.lang.String);
|
||||
}
|
||||
|
||||
-keepclassmembers class * implements android.os.Parcelable {
|
||||
public static final ** CREATOR;
|
||||
}
|
||||
|
||||
# Preserve annotated Javascript interface methods.
|
||||
-keepclassmembers class * {
|
||||
@android.webkit.JavascriptInterface <methods>;
|
||||
}
|
||||
|
||||
# The support libraries contains references to newer platform versions.
|
||||
# Don't warn about those in case this app is linking against an older
|
||||
# platform version. We know about them, and they are safe.
|
||||
-dontnote android.support.**
|
||||
-dontnote androidx.**
|
||||
-dontwarn android.support.**
|
||||
-dontwarn androidx.**
|
||||
|
||||
# This class is deprecated, but remains for backward compatibility.
|
||||
-dontwarn android.util.FloatMath
|
||||
|
||||
# Understand the @Keep support annotation.
|
||||
-keep class android.support.annotation.Keep
|
||||
-keep class androidx.annotation.Keep
|
||||
|
||||
-keep @android.support.annotation.Keep class * {*;}
|
||||
-keep @androidx.annotation.Keep class * {*;}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@android.support.annotation.Keep <methods>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@androidx.annotation.Keep <methods>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@android.support.annotation.Keep <fields>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@androidx.annotation.Keep <fields>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@android.support.annotation.Keep <init>(...);
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@androidx.annotation.Keep <init>(...);
|
||||
}
|
||||
|
||||
# These classes are duplicated between android.jar and org.apache.http.legacy.jar.
|
||||
-dontnote org.apache.http.**
|
||||
-dontnote android.net.http.**
|
||||
|
||||
# These classes are duplicated between android.jar and core-lambda-stubs.jar.
|
||||
-dontnote java.lang.invoke.**
|
||||
-117
@@ -1,117 +0,0 @@
|
||||
# This is a configuration file for ProGuard.
|
||||
# http://proguard.sourceforge.net/index.html#manual/usage.html
|
||||
#
|
||||
# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with
|
||||
# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and
|
||||
# will be ignored by new version of the Android plugin for Gradle.
|
||||
|
||||
# Optimizations can be turned on and off in the 'postProcessing' DSL block.
|
||||
# The configuration below is applied if optimizations are enabled.
|
||||
# Adding optimization introduces certain risks, since for example not all optimizations performed by
|
||||
# ProGuard works on all versions of Dalvik. The following flags turn off various optimizations
|
||||
# known to have issues, but the list may not be complete or up to date. (The "arithmetic"
|
||||
# optimization can be used if you are only targeting Android 2.0 or later.) Make sure you test
|
||||
# thoroughly if you go this route.
|
||||
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
|
||||
-optimizationpasses 5
|
||||
-allowaccessmodification
|
||||
|
||||
-dontusemixedcaseclassnames
|
||||
-dontskipnonpubliclibraryclasses
|
||||
-verbose
|
||||
|
||||
# Preserve some attributes that may be required for reflection.
|
||||
-keepattributes AnnotationDefault,
|
||||
EnclosingMethod,
|
||||
InnerClasses,
|
||||
RuntimeVisibleAnnotations,
|
||||
RuntimeVisibleParameterAnnotations,
|
||||
RuntimeVisibleTypeAnnotations,
|
||||
Signature
|
||||
|
||||
-keep public class com.google.vending.licensing.ILicensingService
|
||||
-keep public class com.android.vending.licensing.ILicensingService
|
||||
-keep public class com.google.android.vending.licensing.ILicensingService
|
||||
-dontnote com.android.vending.licensing.ILicensingService
|
||||
-dontnote com.google.vending.licensing.ILicensingService
|
||||
-dontnote com.google.android.vending.licensing.ILicensingService
|
||||
|
||||
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
|
||||
-keepclasseswithmembernames,includedescriptorclasses class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
# Keep setters in Views so that animations can still work.
|
||||
-keepclassmembers public class * extends android.view.View {
|
||||
void set*(***);
|
||||
*** get*();
|
||||
}
|
||||
|
||||
# We want to keep methods in Activity that could be used in the XML attribute onClick.
|
||||
-keepclassmembers class * extends android.app.Activity {
|
||||
public void *(android.view.View);
|
||||
}
|
||||
|
||||
# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
|
||||
-keepclassmembers enum * {
|
||||
public static **[] values();
|
||||
public static ** valueOf(java.lang.String);
|
||||
}
|
||||
|
||||
-keepclassmembers class * implements android.os.Parcelable {
|
||||
public static final ** CREATOR;
|
||||
}
|
||||
|
||||
# Preserve annotated Javascript interface methods.
|
||||
-keepclassmembers class * {
|
||||
@android.webkit.JavascriptInterface <methods>;
|
||||
}
|
||||
|
||||
# The support libraries contains references to newer platform versions.
|
||||
# Don't warn about those in case this app is linking against an older
|
||||
# platform version. We know about them, and they are safe.
|
||||
-dontnote android.support.**
|
||||
-dontnote androidx.**
|
||||
-dontwarn android.support.**
|
||||
-dontwarn androidx.**
|
||||
|
||||
# This class is deprecated, but remains for backward compatibility.
|
||||
-dontwarn android.util.FloatMath
|
||||
|
||||
# Understand the @Keep support annotation.
|
||||
-keep class android.support.annotation.Keep
|
||||
-keep class androidx.annotation.Keep
|
||||
|
||||
-keep @android.support.annotation.Keep class * {*;}
|
||||
-keep @androidx.annotation.Keep class * {*;}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@android.support.annotation.Keep <methods>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@androidx.annotation.Keep <methods>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@android.support.annotation.Keep <fields>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@androidx.annotation.Keep <fields>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@android.support.annotation.Keep <init>(...);
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
@androidx.annotation.Keep <init>(...);
|
||||
}
|
||||
|
||||
# These classes are duplicated between android.jar and org.apache.http.legacy.jar.
|
||||
-dontnote org.apache.http.**
|
||||
-dontnote android.net.http.**
|
||||
|
||||
# These classes are duplicated between android.jar and core-lambda-stubs.jar.
|
||||
-dontnote java.lang.invoke.**
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user