chahinebrini
abeb1462f4
Add Woodpecker CI pipeline for staging deploys
Deploy Staging / Build backend (Nitro) (push) Has been cancelled
Deploy Staging / Deploy zu Hetzner (push) Has been cancelled
2026-06-18 07:24:35 +02:00
chahinebrini
709f8cb32e
chore: remove accidentally added embedded repo
Deploy Staging / Build backend (Nitro) (push) Has been cancelled
Deploy Staging / Deploy zu Hetzner (push) Has been cancelled
2026-06-18 07:10:27 +02:00
chahinebrini
e6fad4f51e
fix(magic): always show supervised + lock profile true/false; company from exists
2026-06-18 07:10:12 +02:00
chahinebrini
dd84f8ec38
fix(backend): mdm.get must use status.enrolled, not hardcoded true
2026-06-18 06:47:05 +02:00
chahinebrini
0efdf2f8f1
fix(magic): show complete protection button for known disenrolled devices
2026-06-18 06:28:04 +02:00
chahinebrini
e14a36f95a
fix(backend): keep mdmId when device exists but is disenrolled; add exists flag
2026-06-18 06:28:03 +02:00
chahinebrini
bb8e0d3f62
fix(backend): mdm.get always returns full status shape even when not enrolled
2026-06-18 06:10:33 +02:00
chahinebrini
ac7bd800bc
fix(magic): inline iPhone search in device card instead of detect page
2026-06-18 06:03:04 +02:00
chahinebrini
5117c7b37c
fix(backend): getMdmStatusByUdid must check enrollments.enabled
2026-06-18 06:03:01 +02:00
chahinebrini
2919ce45b8
feat(magic): sync current ReBreak Magic app state
...
Include recent Magic app work: Tauri native shell, iOS device detection
via supervise-magic sidecar, MDM client, local HTTP server, new pages
(detect, enroll, supervise, sideload, pair, preflight, configure, done),
and updated device section/status UI.
2026-06-18 05:23:26 +02:00
chahinebrini
b9dddc00e7
ci: remove temporary test workflows
2026-06-18 05:17:33 +02:00
chahinebrini
cb6dd0555a
fix(magic): show backend MDM status even when iPhone is not connected via USB
2026-06-18 05:16:22 +02:00
chahinebrini
c1f5f5804d
ci: add temporary ubuntu test workflow
2026-06-18 05:09:29 +02:00
chahinebrini
7d76c5168b
ci: add temporary runner test workflow
2026-06-18 05:03:00 +02:00
chahinebrini
85cadd19a0
ci: use self-hosted runner raynis-builder for backend and admin deploys
2026-06-18 04:58:21 +02:00
chahinebrini
c8f5bfc82e
fix(backend): make user_devices migration idempotent for fresh DBs
...
Add CREATE TABLE IF NOT EXISTS for rebreak.user_devices to the
hardware_id migration so fresh databases can migrate despite the
alphabetical ordering mismatch with 20260430_add_user_devices.
Also apply Prettier formatting to mdm.ts.
2026-06-18 04:04:05 +02:00
chahinebrini
7bf26a3138
test(backend): add unit tests for MDM health-check DB helpers
2026-06-18 03:53:26 +02:00
chahinebrini
15b4441deb
feat(backend): add MDM health check cron
2026-06-18 03:42:18 +02:00
chahinebrini
74784fc4da
feat(backend): add bulk MDM health status helpers
...
Add MdmEnrollmentStatus, UserDeviceMdmHealthRecord types and helpers:
- getLinkedUserDevices() to load iOS devices with NanoMDM UDIDs
- getMdmEnrollmentStatusesByUdids() for bulk NanoMDM lookups
- updateUserDeviceMdmHealth() to mirror status on UserDevice
Also fix PoolConfig option casing: queryTimeout -> query_timeout.
2026-06-18 03:36:13 +02:00
chahinebrini
b107262d60
feat(mdm): add NanoMDM health columns migration for UserDevice
...
Adds mdm_id, mdm_enrolled, mdm_supervised, mdm_last_seen_at and an
index on mdm_id. Uses IF NOT EXISTS to stay idempotent because mdm_id
was added manually before the migration was created.
2026-06-18 03:29:30 +02:00
chahinebrini
9065543b5a
feat(backend): extend UserDevice with MDM health columns
...
Add mirrored NanoMDM enrollment, supervision and last-seen fields
(mdm_enrolled, mdm_supervised, mdm_last_seen_at) to UserDevice model.
Migration will follow in a separate task.
2026-06-18 03:15:09 +02:00
chahinebrini
943efe4b45
fix(backend): remove hardwareId references, use deviceId only
2026-06-18 00:06:39 +02:00
chahinebrini
a60def33d9
Merge feat/magic-ios-section into main
2026-06-17 23:51:29 +02:00
chahinebrini
6245fc4573
fix(magic): real MDM supervised state, mdmId matching, MDM status for unknown USB devices
2026-06-17 23:47:33 +02:00
chahinebrini
75d1b06105
feat(magic): iOS device card warning badge, USB hint, split backend/local cards and auto-sync
2026-06-17 23:32:41 +02:00
chahinebrini
b87ec08431
feat(mdm): remove mdm_lock type, derive lockProfileInstalled from nefilter state
2026-06-17 22:32:40 +02:00
chahinebrini
5b0a4d03d2
feat(magic): identify current device via hardwareId, migrate existing devices
2026-06-17 17:18:40 +02:00
chahinebrini
e4b28be5be
feat(magic): dedicated iOS section in dashboard with on-demand sync
2026-06-17 07:44:24 +02:00
chahinebrini
48af756a86
tmp(magic): debug logging for current device matching
2026-06-17 03:19:10 +02:00
chahinebrini
10ca1c4bc5
tmp(backend): debug bypass code 000000 -> charioanouar session
2026-06-17 03:13:36 +02:00
chahinebrini
b829f9ba3e
fix(magic): match current device by session deviceId, remove confusing overall status card
2026-06-17 03:06:38 +02:00
chahinebrini
4c46ac69c9
fix(magic): remove device-release from Magic sheet, Magic does not remove devices
2026-06-17 02:59:05 +02:00
chahinebrini
81c516b831
fix(magic): robust hostname matching for current device detection
2026-06-17 02:52:00 +02:00
chahinebrini
6b44fb2927
chore(prisma): add migration_lock.toml for deploy
2026-06-17 02:38:44 +02:00
chahinebrini
026c319b30
fix(magic): robust device parsing, dashboard only protects current device
2026-06-17 02:29:35 +02:00
chahinebrini
37f3173539
chore: add scripts/dev.sh for local app dev against server
2026-06-16 22:05:53 +02:00
chahinebrini
2f1d5ec83c
fix(magic): use solid heroicon for star rating
2026-06-16 20:55:25 +02:00
chahinebrini
298a0089bb
feat(magic): redesign status dashboard with hero cards and device sheet
2026-06-16 20:53:39 +02:00
chahinebrini
b5e89b5973
feat(magic): add DeviceDetailSheet component
2026-06-16 20:49:39 +02:00
chahinebrini
0258c818f3
feat(magic): add DeviceHeroCard and DeviceListItem components
2026-06-16 20:45:43 +02:00
chahinebrini
118269a8c9
feat(magic): add IosStarRating and CooldownCountdown components
2026-06-16 20:42:59 +02:00
chahinebrini
8953e1f7d6
feat(magic): add useDeviceStatus composable
2026-06-16 20:41:53 +02:00
chahinebrini
8f5e34ae67
feat(magic): expose cooldown commands and extend device types
2026-06-16 20:35:20 +02:00
chahinebrini
97977011ae
feat(backend): include status, cooldownUntil, lastSeenAt and sleep flag
2026-06-16 20:28:21 +02:00
chahinebrini
4ee6849f3f
feat(backend): add cooldown and cancel-cooldown endpoints
2026-06-16 20:24:57 +02:00
chahinebrini
b9bd577e47
feat(backend): add magicCooldownUntil to UserDevice
2026-06-16 20:13:23 +02:00
chahinebrini
1a270739bc
feat(coach): Lyra-LLM auf direkten Anthropic Haiku 4.5 + SOS-Fallback-Kette; ElevenLabs reaktiviert
...
- Chat (message.post.ts): neuer nativer anthropic-Branch in tryModel
(api.anthropic.com/v1/messages, x-api-key, system top-level), führt die
Fallback-Kette claude-haiku-4-5 → gemini-flash-lite → gemini-flash → gpt-4o-mini.
- SOS (sos-stream.get.ts): Dispatch-Refactor mit buildUpstream() + Kandidaten-
Fallback-Kette (anthropic → gemini → openai). Behebt strukturell den Bug
"SOS liefert nur Krisen-Text" (vorher single fetch ohne Fallback). Nativer
Anthropic-Stream: Delta-Parser liest content_block_delta.delta.text.
- nitro.config.ts: anthropicApiKey deklariert (ANTHROPIC_API_KEY).
- plan-features.ts: Legend-Voice zurück auf ElevenLabs eleven_turbo_v2_5
(Cartesia-Übergang nach Zahlungsproblem 2026-06-08 aufgehoben, neuer Key).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 22:41:59 +02:00
chahinebrini
21c1e31877
docs(diga): Nacht-Session — Eval-Records, Akte 10/11, Magic-Scope-Entscheidung
...
- Lyra-Eval Live-Runs (2x): Crisis-Recall-Gate auf Produktionsmodell
(Groq llama-3.3-70b) BESTANDEN (6/6=100%); gpt-4o-mini-Fallback 83%
-> Modellwahl sicherheitsrelevant -> Model-Pinning vorgeschlagen.
Records unter docs/specs/diga/eval-records/.
- 05d: Mail- + Anonymitäts-Strang (+18 Zeilen); username-GAP verifiziert
+ Fix dokumentiert. 04 (R-LYRA-01, R-DATA-07) + 05b nachgezogen.
- Dok 07 Gebrauchsanweisung, Dok 09 PMS-Plan, Dok 10 QMS-Templates (v0).
- Scope-Entscheidung Gründer 2026-06-11: RebreakMagic (inkl. Desktop)
vorerst NICHT im zertifizierten DiGA-Scope (01/03/07 umgesetzt).
- graphify-Artefakte (Hook-Rebuild) mitgenommen.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 06:36:33 +02:00
chahinebrini
444688b6e9
test(eval): Concurrency-Limit + 429-Retry für Lyra-Eval-Suite
...
LYRA_EVAL_CONCURRENCY (Batch statt Promise.all-30-parallel) und
LYRA_EVAL_TIMEOUT_MS als Env-Schalter, plus 429-Retry mit Backoff —
nötig für Live-Runs gegen Provider mit niedrigem TPM-Limit (Groq
on-demand 12k). Default-Verhalten unverändert; Prompts/Regeln/
System-Prompt nicht angefasst.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 06:36:32 +02:00
chahinebrini
2c33ba55a4
fix(backend): username (Login-Identifikator) aus öffentlichen Payloads entfernt
...
community/posts.get.ts + social/profile/[userId].get.ts lieferten neben
nickname auch username an fremde Clients — username ist der Login-
Identifikator ({username}@rebreak.internal ) und verletzt die Nickname-
Anonymitäts-Invariante (REQ-COMM-005 / R-DATA-07) + exponiert das halbe
Login-Credential-Paar. Frontend rendert das Feld nirgends (verifiziert);
totes Typ-Feld in stores/community.ts entfernt.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 06:36:16 +02:00