This website requires JavaScript.
e4ac3ae51c
refactor(native): central Button component + sweep across devices/plan flows
chahinebrini
2026-05-15 23:31:26 +02:00
e8ea00568e
feat(native): devices page — 2-line entries, single UIMenu CTA, dynamic counter, slimmer buttons
chahinebrini
2026-05-15 23:10:09 +02:00
8851f36f65
fix(native): protectedDevices store — unwrap response shape
chahinebrini
2026-05-15 23:02:26 +02:00
db7875fb34
feat(ops/mdm): AdGuard ClientID handshake — nginx + watcher
chahinebrini
2026-05-15 22:41:38 +02:00
42a8223bfc
feat(native): auto-detect Mac activation via Supabase Realtime
chahinebrini
2026-05-15 22:41:25 +02:00
0e4c3787c2
feat(backend): DoH handshake endpoint for protected-device auto-activation
chahinebrini
2026-05-15 22:41:17 +02:00
db377da7ce
fix(native): realtime disconnect bug — accessToken callback + AppState handler
chahinebrini
2026-05-15 21:48:54 +02:00
cd5efab6e1
feat(native): use expo-device for reliable device-info headers
chahinebrini
2026-05-15 21:45:33 +02:00
60f608d891
fix(backend): backfill device name/model/osVersion on touch + auto-register
chahinebrini
2026-05-15 21:27:58 +02:00
e1ba0ebeaf
chore(native): bump versionCode/buildNumber to 7 for device-info + i18n release
chahinebrini
2026-05-15 21:17:43 +02:00
d55cbc11b2
fix(native): mail-sheet modal-conflict + google-oauth picker + feed-bg contrast
chahinebrini
2026-05-15 21:16:34 +02:00
804d4a5861
feat(native): device-info api headers + DeviceLimitSheet UI + profile i18n sweep
chahinebrini
2026-05-15 21:16:22 +02:00
5b1f89e749
feat(backend): device-info schema + merge heuristic + test-user detection
chahinebrini
2026-05-15 21:16:05 +02:00
0452007daf
chore(native): bump iOS buildNumber 4 → 6 for fr-locale + lyra-voice release
chahinebrini
2026-05-15 16:41:13 +02:00
fb29c061c3
chore(native): bump android versionCode to 6 for fr-locale + lyra-voice release
chahinebrini
2026-05-15 11:03:43 +02:00
10219e5f68
feat(i18n): add french as 3rd app language
chahinebrini
2026-05-15 11:03:37 +02:00
740589db5b
chore(native): bump android versionCode to 5 for mail-page-ui release
chahinebrini
2026-05-14 20:58:56 +02:00
a0d67f33a8
feat(native): realtime debug page + protected-devices array guard
chahinebrini
2026-05-14 22:15:57 +02:00
d9bb7ef91a
feat(native): lyra voice picker UI + me-hydration
chahinebrini
2026-05-14 22:15:49 +02:00
76f8595a4f
feat(backend): lyra voice picker for legend (mvp)
chahinebrini
2026-05-14 22:15:42 +02:00
f2e3c00943
refactor(mail): remove groq llm layer — deterministic pipeline only
chahinebrini
2026-05-14 22:15:32 +02:00
343f9ab567
fix(mail): DSGVO Art. 17 — manuelles Sample-Cleanup bei Account-Delete
chahinebrini
2026-05-14 08:29:32 +02:00
bdd93668ae
feat(mail): multi-layer classifier — Brand+Random, Relay-Decoder, Score, Groq + ML-Sampling
chahinebrini
2026-05-14 08:19:51 +02:00
c218287c5e
fix(mail): legend bottom-aligned mit donut-baseline für visuelle zentrierung
chahinebrini
2026-05-14 01:08:53 +02:00
1d93ada275
fix(mail): revert marginBottom hack — layout was breaking out of card
chahinebrini
2026-05-14 01:02:56 +02:00
778d3b6746
fix(mail): legend vertikal zentral gegenüber donut-center-number
chahinebrini
2026-05-14 00:57:18 +02:00
55cba9a3fe
fix(mail): legend takes natural width inside card + bar-chart always trims to hit-range
chahinebrini
2026-05-14 00:53:08 +02:00
b47ac2427e
fix(mail): legend rows justify-between + per-connection chart sparse-data zoom
chahinebrini
2026-05-14 00:48:51 +02:00
aac6c00720
fix(mail): donut card layout — justify-start statt center
chahinebrini
2026-05-14 00:36:12 +02:00
2ea0cfec96
fix(mail): donut card layout from scratch — center, breathing room, no truncation
chahinebrini
2026-05-14 00:33:39 +02:00
4580a197dd
fix(mail): reactive page (refresh stats + status on scan/connect) + center donut+legend
chahinebrini
2026-05-14 00:16:53 +02:00
30ed4b90b4
chore(native): bump build number to 4 for staging release
chahinebrini
2026-05-14 00:02:49 +02:00
8075c8e79c
feat(mail): outlook-OAuth scan + daemon initial-sweep + page polish v4
chahinebrini
2026-05-13 23:55:18 +02:00
fd1cb912f7
fix(idle-daemon): sync MS_OAUTH_SCOPES with backend — drop User.Read, add email
chahinebrini
2026-05-13 23:33:39 +02:00
2e285beefd
chore(mail): bump distribution donut to 240 + trim card padding
chahinebrini
2026-05-13 23:31:06 +02:00
c8a18baf75
chore(mail): drop distribution chart title + bump donut width 168→200
chahinebrini
2026-05-13 23:28:37 +02:00
1dfb0c647c
feat(mail-page): polish v3 + shared HalfDonut + status-dot heartbeat-aware
chahinebrini
2026-05-13 23:23:45 +02:00
206941e5e1
fix(mail-page): UX polish — FAB-revert, legend cap, activity NaNd, instant heartbeat
chahinebrini
2026-05-13 22:55:50 +02:00
432d9d27a3
feat(mail-page): hero-donut + FAB + collapsible bar-chart + legend truncation
chahinebrini
2026-05-13 22:39:45 +02:00
cb5c193980
fix(mail/oauth): add email OIDC scope — id_token Email-Claim für Personal-Accounts
chahinebrini
2026-05-13 22:21:31 +02:00
09d85180b6
fix(mail/oauth): drop User.Read scope — MS rejects multi-resource at /token
chahinebrini
2026-05-13 22:16:01 +02:00
7fb76465f0
fix(mail): explicit imports for MS-OAuth handlers (createOauthPendingState et al.)
chahinebrini
2026-05-13 21:25:43 +02:00
fc69a14f25
feat(mail): outlook oauth — full end-to-end (backend + daemon + frontend)
chahinebrini
2026-05-13 21:04:14 +02:00
275637f0b0
feat(mail): separate mail_blocked_stats table — preserves charts beyond 24h cleanup
chahinebrini
2026-05-13 19:13:24 +02:00
b7909d77e4
feat(mail): custom title + settings collapsible + stats charts + provider filter
chahinebrini
2026-05-13 19:06:01 +02:00
0ab635c74a
feat: art-9 consent flow + outlook-oauth schema + cooldown patterns + mail draft persist
chahinebrini
2026-05-13 16:35:18 +02:00
01d515d137
feat(rebreak-native): persistent FaceID-sign-in + iOS-grouped UI + Outlook guard + sparkline cooldowns
chahinebrini
2026-05-13 16:15:54 +02:00
a3f892ddac
fix(native/mail): duplicate add-button in empty state + intro hints in ConnectMailSheet
chahinebrini
2026-05-12 23:39:22 +02:00
3eaf3f098a
refactor(rebreak-native): migrate device sheets to FormSheet, delete KeyboardAwareSheet (phase 3C)
chahinebrini
2026-05-12 22:12:35 +02:00
f24c364c81
feat(rebreak-native): KeyboardAwareScreen composable + full-screen form migration (phase 3A)
chahinebrini
2026-05-12 22:12:29 +02:00
7ec4be810b
feat(rebreak-native): AppAlert composable, avatar compression, FamilyControls gate
chahinebrini
2026-05-12 21:47:18 +02:00
e48a3187a6
chore(rebreak-native): expose familyControlsEnabled flag to the JS bundle
chahinebrini
2026-05-12 21:39:37 +02:00
7ad523f8ba
feat(rebreak-native): phase 2 sheet standardisation — SheetFieldStack + FormSheet migrations
chahinebrini
2026-05-12 21:37:46 +02:00
448d64dbd5
fix(ios): re-enable family-controls entitlement for development builds
chahinebrini
2026-05-12 21:30:45 +02:00
a841b32c31
feat(rebreak-native): <FormSheet> — one reusable bottom-sheet composable (phase 1)
chahinebrini
2026-05-12 21:03:17 +02:00
52fd1bcce3
feat(rebreak-native): Android counterpart for the app lock
chahinebrini
2026-05-12 20:42:52 +02:00
4a17c7942d
fix(rebreak-native): don't crash on old dev-clients missing ExpoLocalAuthentication
chahinebrini
2026-05-12 19:57:53 +02:00
aa9466aa92
feat(rebreak-native): Face ID app lock (opt-in)
chahinebrini
2026-05-12 19:41:56 +02:00
5d2db6d642
fix(ios): register RebreakURLFilter extension with EAS for credential generation
chahinebrini
2026-05-12 17:50:48 +02:00
398b7b9d58
fix(ios): two real build blockers — FC entitlement and extension dev team
chahinebrini
2026-05-11 23:57:43 +02:00
572766ab88
fix(ios): broaden resource-bundle signing fix — disable code-signing on all Pods targets
chahinebrini
2026-05-11 23:48:29 +02:00
ac956b8311
fix(ios): config plugin to disable code-signing for pod resource bundles
chahinebrini
2026-05-11 23:35:32 +02:00
1a201289cc
chore(eas): drop the update channels (no expo-updates installed yet)
chahinebrini
2026-05-11 23:30:18 +02:00
c004dc7517
chore(eas): preview profile → distribution: store (for TestFlight uploads)
chahinebrini
2026-05-11 23:11:07 +02:00
5b12f14a90
feat(rebreak-native): Nuxt-style splash, domain normalization on blur, app-wide keyboard fix
chahinebrini
2026-05-11 22:58:59 +02:00
0bad2185ec
chore(ios): set ios.buildNumber to 3 (matches Android versionCode) for TestFlight
chahinebrini
2026-05-11 22:42:50 +02:00
af87893eb9
fix(android): self-heal — restart VpnService if it should be running but isn't
chahinebrini
2026-05-11 20:10:43 +02:00
4492c7b265
feat(blocker): reactivation only re-arms the VPN/filter; a11y setup is first-time-only
chahinebrini
2026-05-11 18:46:21 +02:00
3c2aee7bda
fix(android): tamper-lock can't linger armed while protection is off (stuck "locked" UI)
chahinebrini
2026-05-11 18:34:45 +02:00
fc7a243c9b
refactor(android): a11y service is now tamper-lock only — no browser URL filtering
chahinebrini
2026-05-11 17:42:05 +02:00
a80cc8b08d
fix(rebreak-native): track custom native module source (was swallowed by .gitignore)
chahinebrini
2026-05-11 17:22:22 +02:00
5291a8a95a
fix(realtime): domainRealtime CHANNEL_ERROR — wrong filter column + missing publication
chahinebrini
2026-05-11 17:19:37 +02:00
33f411ab55
feat(blocker): post-cooldown disable shows a11y-settings notice (DiGA — user must be able to fully exit)
chahinebrini
2026-05-11 17:12:39 +02:00
aac709ec41
fix(android): forceDisable disarms the tamper-lock — protection stayed enforced after cooldown
chahinebrini
2026-05-11 16:59:58 +02:00
184a601616
fix(blocker): relabel deactivate button 'Wie funktioniert der Cooldown?' → 'Schutz deaktivieren' (+ lock-open icon), remove debug marker
chahinebrini
2026-05-11 16:51:09 +02:00
4bed8a1e5a
debug(blocker): temporary red marker at bottom of ProtectionDetailsSheet ScrollView (to diagnose the 'can't scroll to the bottom' report — revert after)
chahinebrini
2026-05-11 16:48:38 +02:00
d5b753d329
fix(blocker): trim ProtectionDetailsSheet bottom padding (was over-padded → empty space under the bottom button)
chahinebrini
2026-05-11 16:46:57 +02:00
4e73d2ac92
fix(blocker): ProtectionDetailsSheet — taller sheet (0.9) + bigger bottom padding so the bottom button clears the nav bar
chahinebrini
2026-05-11 16:44:26 +02:00
6870f71265
feat(blocker): __DEV__ test-cooldown toggle (40s) + auto-disable on elapse + safe-area fixes for deactivation sheets
chahinebrini
2026-05-11 16:40:58 +02:00
335945fe2c
feat(tier): plan limits Rev.2 + downgrade reconciliation + change-preview (Phase 2 backend)
chahinebrini
2026-05-11 16:23:02 +02:00
51697c3aa4
feat(tier): plan-change briefing sheet + over-limit cards (Phase 2 UI)
chahinebrini
2026-05-11 16:21:47 +02:00
16c2e40242
chore(android): versionCode 3 (build v0.1.0 vc3 — icon fix + updates)
chahinebrini
2026-05-11 16:18:03 +02:00
17ad591c3f
docs(pricing): synthesis — the design constraint is 'avoid 1-star reviews' + the must-have corollaries
chahinebrini
2026-05-11 16:01:11 +02:00
83d4e93f38
docs(pricing): mail=safety-feature for this audience, target-group device/mailbox reality, founding-members (first 100 → Pro)
chahinebrini
2026-05-11 16:00:30 +02:00
45f57bfda7
docs(pricing): capture the strategic bet — full protection = Legend-only, by design
chahinebrini
2026-05-11 15:56:34 +02:00
c2ad1a1780
docs(pricing): capture conversion philosophy (membership/community framing, not frustration-gating)
chahinebrini
2026-05-11 15:55:36 +02:00
2dcff6408c
feat(chat): redesign chat list + conversation view
chahinebrini
2026-05-11 15:52:45 +02:00
7369912d60
feat(dev): switch plan-override to POST /api/dev/set-plan + add Settings debug row
chahinebrini
2026-05-11 15:51:14 +02:00
5c9f3f687f
docs(pricing): §0.5 Rev.2 — incorporate accepted strategist critique
chahinebrini
2026-05-11 15:51:11 +02:00
a8e638ed88
feat(profile): replace system-crop with custom gesture-based AvatarCropSheet
chahinebrini
2026-05-11 15:51:09 +02:00
3da76bcb15
docs(pricing): §7 — strategist's marketing critique of the final plan
chahinebrini
2026-05-11 15:49:50 +02:00
e93f580f3b
docs(pricing): final tier decision (User 2026-05-11) + open impl points
chahinebrini
2026-05-11 15:44:26 +02:00
eb871073f2
feat(backend): __DEV__ /api/dev/set-plan — user sets own plan (non-prod only)
chahinebrini
2026-05-11 15:44:26 +02:00
14452b2a46
refactor(native): Pressable → TouchableOpacity sweep (style-fn swallows Android styles)
chahinebrini
2026-05-11 15:43:10 +02:00
1ad964f54b
fix(backend): alias NUXT_*_BOT_USER_ID env vars in start-staging.sh
chahinebrini
2026-05-11 15:37:38 +02:00
f6852be760
fix(native): useUserPlan derive from useMe (was a stale module cache)
chahinebrini
2026-05-11 15:18:59 +02:00
790b5e5c24
feat(admin): surface Lyra-Posts page in nav + dashboard grid
chahinebrini
2026-05-11 15:06:12 +02:00
297ad7437b
fix(android): adaptive icon — white bg + padded dark logo (was zoomed/clipped)
chahinebrini
2026-05-11 15:06:12 +02:00
c6a4b04383
chore(deps): pin metro-* family to 0.83.3 via pnpm.overrides
chahinebrini
2026-05-11 15:06:12 +02:00
385f0b42a9
fix(android): blocker toggles + invisible avatar + adaptive icon
chahinebrini
2026-05-11 14:52:42 +02:00