From c28e37278687f7dfce6310ba747228c842376e51 Mon Sep 17 00:00:00 2001 From: Oliver <20591763+Cryptoom@users.noreply.github.com> Date: Fri, 4 Sep 2026 12:05:00 +0300 Subject: [PATCH 1/2] fix(auth): show Privacy/ToS footer links on login too, point at madevisible.io TikTok's App Review rejected the connected app "madevisible.io Social" on 04.09.2026: the site had no visible Privacy Policy/Terms of Service links at all, without opening a menu or logging in. Live-verified via Playwright with a fresh, cookie-cleared session: the login page shows only a "Forgot password?" link, nothing else. Root cause: the only legal footer (auth.legal translation) was gated behind v-if="!isSelfHosted" in Register.vue, and Login.vue never had it. This deployment runs trypost.self_hosted=true (single-operator model, not multi-tenant SaaS like trypost.it itself), so the footer was unconditionally hidden on both pages that matter for App Review. - lang/*/auth.php (all 16 locales): auth.legal's hardcoded https://trypost.it/terms and /privacy URLs -> https://madevisible.io/agb/ and /privacy/ (both now name "madevisible.io Social" explicitly, see Cryptoom/digital-mind-agency#396). - Register.vue: dropped the isSelfHosted guard, footer always shows. - Login.vue: added the same footer block (didn't exist before). See PATCHES.md Patch 4 for the full merge-safety marker strings. Co-Authored-By: Claude Sonnet 5 --- PATCHES.md | 41 ++++++++++++++++++++++++++++ lang/ar/auth.php | 2 +- lang/de/auth.php | 2 +- lang/el/auth.php | 2 +- lang/en/auth.php | 2 +- lang/es/auth.php | 2 +- lang/fr/auth.php | 2 +- lang/it/auth.php | 2 +- lang/ja/auth.php | 2 +- lang/ko/auth.php | 2 +- lang/nl/auth.php | 2 +- lang/pl/auth.php | 2 +- lang/pt-BR/auth.php | 2 +- lang/ru/auth.php | 2 +- lang/tr/auth.php | 2 +- lang/uk/auth.php | 2 +- lang/zh/auth.php | 2 +- resources/js/pages/auth/Login.vue | 6 ++++ resources/js/pages/auth/Register.vue | 2 -- 19 files changed, 63 insertions(+), 18 deletions(-) diff --git a/PATCHES.md b/PATCHES.md index 7012b0308b..5a9c50d7a5 100644 --- a/PATCHES.md +++ b/PATCHES.md @@ -94,6 +94,47 @@ unbenutzten Icon-Imports. `grep -n "trypost.it/discord\|affiliates.trypost.it" resources/js/components/AppSidebar.vue` muss leer bleiben. +### Patch 4 · madevisible-legal-footer-links + +Grund: TikToks App-Review lehnte "madevisible.io Social" am 04.09.2026 ab, unter anderem weil +`social.madevisible.io/login` **ueberhaupt keine** Privacy-/ToS-Links zeigte (live per Playwright +mit frisch gecleartem Cookie-Zustand als echter ausgeloggter Besucher verifiziert). Root-Cause: +Upstream haengt den einzigen Legal-Footer-Block (`auth.legal`-Uebersetzung) an +`v-if="!isSelfHosted"` in `Register.vue`, und `Login.vue` hatte den Block gar nicht erst. Unser +Docker-Deployment laeuft mit `trypost.self_hosted=true` (Betreiber-Modell, nicht Multi-Tenant- +SaaS wie trypost.it selbst), darum blieb der Footer bei uns immer unsichtbar, upstream-seitig +vermutlich bewusst so gedacht ("Self-Hoster bringt eigene Legal-Links mit"), was fuer uns aber +nie zutraf. + +- **Dateien**: + - `lang/*/auth.php` (alle 16 Locales): der `legal`-String zeigte in JEDER Sprache hart auf + `https://trypost.it/terms` und `https://trypost.it/privacy`. Beide URLs auf + `https://madevisible.io/agb/` bzw. `https://madevisible.io/privacy/` umgestellt (reiner + URL-Tausch, uebersetzter Fliesstext unveraendert). Diese beiden Seiten nennen + "madevisible.io Social" seit `Cryptoom/digital-mind-agency#396` explizit beim Namen. + - `resources/js/pages/auth/Register.vue`: `v-if="!isSelfHosted"`-Guard auf dem Legal-Footer-Div + entfernt (zeigt jetzt immer), dadurch wurde die `isSelfHosted`-Computed-Variable unbenutzt und + wurde mitentfernt. `page`/`usePage()` bleiben (weiterhin fuer `hasSocial` gebraucht). + - `resources/js/pages/auth/Login.vue`: denselben Legal-Footer-Block (identisches Markup wie + `Register.vue`, `v-html="$t('auth.legal')"`) direkt nach dem `` neu ergaenzt, vorher + gab es dort ueberhaupt keinen. +- **Marker-Strings zum Wiedererkennen nach `git merge upstream/main`**: `madevisible.io` in + `lang/en/auth.php`s `legal`-Zeile (kommt upstream nicht vor). In `Login.vue`: das + `v-html="$t('auth.legal')"`-Div direkt vor dem schliessenden `` + (existiert upstream nicht in dieser Datei). In `Register.vue`: Abwesenheit von + `v-if="!isSelfHosted"` auf dem Legal-Div (upstream hat es). +- **Bruchbedingung**: Upstream aendert den `auth.legal`-Text selbst (neue Formulierung, neue + Platzhalter) und `git merge upstream/main` ueberschreibt konfliktfrei unsere URL-Werte mit den + originalen `trypost.it`-URLs zurueck, weil beide Seiten dieselbe Zeile aendern koennten aber + Git bei reinem Text-Unterschied idR einen Konflikt meldet (text-basiertes 3-Way-Merge), pruefen + nach jedem Merge trotzdem gezielt: `grep -rn "trypost.it/terms\|trypost.it/privacy" lang/*/auth.php` + muss leer bleiben. Ergaenzt upstream `Login.vue`/`Register.vue` selbst einen aehnlichen + Legal-Footer oder aendert die `isSelfHosted`-Logik grundlegend, Patch-Platzierung manuell + gegenpruefen statt blind erneut einzufuegen. +- **Test**: keine automatisierten Tests vorhanden (reine Template-/Copy-Aenderung), Verifikation + ueber Live-Check nach Deploy (siehe unten). +- **Deployed**: . + ## Geprueft und NICHT gepatcht: is_aigc-Composer-Toggle (25.08.2026) Der urspruenglich fuer diesen Fork geplante Patch (TikTok-`is_aigc`-Toggle im Post-Composer, diff --git a/lang/ar/auth.php b/lang/ar/auth.php index 180f90dd24..890f87ca26 100644 --- a/lang/ar/auth.php +++ b/lang/ar/auth.php @@ -22,7 +22,7 @@ 'welcome_trial' => 'مرحبًا بك في TryPost! لقد بدأت فترتك التجريبية.', ], - 'legal' => 'بمتابعتك، فإنك توافق على شروط الخدمة وسياسة الخصوصية.', + 'legal' => 'بمتابعتك، فإنك توافق على شروط الخدمة وسياسة الخصوصية.', 'slides' => [ 'calendar' => [ diff --git a/lang/de/auth.php b/lang/de/auth.php index 33733248f5..82f1e7742a 100644 --- a/lang/de/auth.php +++ b/lang/de/auth.php @@ -24,7 +24,7 @@ 'welcome_trial' => 'Willkommen bei TryPost! Deine Testphase hat begonnen.', ], - 'legal' => 'Indem du fortfährst, stimmst du unseren Nutzungsbedingungen und unserer Datenschutzerklärung zu.', + 'legal' => 'Indem du fortfährst, stimmst du unseren Nutzungsbedingungen und unserer Datenschutzerklärung zu.', 'slides' => [ 'calendar' => [ diff --git a/lang/el/auth.php b/lang/el/auth.php index 2b480cda72..92e6e65731 100644 --- a/lang/el/auth.php +++ b/lang/el/auth.php @@ -22,7 +22,7 @@ 'welcome_trial' => 'Καλώς ήρθατε στο TryPost! Η δοκιμαστική σας περίοδος ξεκίνησε.', ], - 'legal' => 'Συνεχίζοντας, συμφωνείτε με τους Όρους Χρήσης και την Πολιτική Απορρήτου μας.', + 'legal' => 'Συνεχίζοντας, συμφωνείτε με τους Όρους Χρήσης και την Πολιτική Απορρήτου μας.', 'slides' => [ 'calendar' => [ diff --git a/lang/en/auth.php b/lang/en/auth.php index 637a94412c..20aecd20ca 100644 --- a/lang/en/auth.php +++ b/lang/en/auth.php @@ -22,7 +22,7 @@ 'welcome_trial' => 'Welcome to TryPost! Your trial has started.', ], - 'legal' => 'By continuing, you agree to our Terms of Service and Privacy Policy.', + 'legal' => 'By continuing, you agree to our Terms of Service and Privacy Policy.', 'slides' => [ 'calendar' => [ diff --git a/lang/es/auth.php b/lang/es/auth.php index 77445a992b..449512ab3f 100644 --- a/lang/es/auth.php +++ b/lang/es/auth.php @@ -10,7 +10,7 @@ 'welcome_trial' => '¡Bienvenido a TryPost! Tu prueba ha comenzado.', ], - 'legal' => 'Al continuar, aceptas nuestros Términos de Servicio y Política de Privacidad.', + 'legal' => 'Al continuar, aceptas nuestros Términos de Servicio y Política de Privacidad.', 'slides' => [ 'calendar' => [ diff --git a/lang/fr/auth.php b/lang/fr/auth.php index 904b4c1c4c..74373db6e0 100644 --- a/lang/fr/auth.php +++ b/lang/fr/auth.php @@ -22,7 +22,7 @@ 'welcome_trial' => 'Bienvenue sur TryPost ! Votre essai a commencé.', ], - 'legal' => 'En continuant, vous acceptez nos Conditions d\'utilisation et notre Politique de confidentialité.', + 'legal' => 'En continuant, vous acceptez nos Conditions d\'utilisation et notre Politique de confidentialité.', 'slides' => [ 'calendar' => [ diff --git a/lang/it/auth.php b/lang/it/auth.php index 44511b142f..195229af65 100644 --- a/lang/it/auth.php +++ b/lang/it/auth.php @@ -22,7 +22,7 @@ 'welcome_trial' => 'Benvenuto su TryPost! La tua prova è iniziata.', ], - 'legal' => 'Continuando, accetti i nostri Termini di servizio e la nostra Informativa sulla privacy.', + 'legal' => 'Continuando, accetti i nostri Termini di servizio e la nostra Informativa sulla privacy.', 'slides' => [ 'calendar' => [ diff --git a/lang/ja/auth.php b/lang/ja/auth.php index 98df02db96..1017296286 100644 --- a/lang/ja/auth.php +++ b/lang/ja/auth.php @@ -22,7 +22,7 @@ 'welcome_trial' => 'TryPost へようこそ!トライアルが開始されました。', ], - 'legal' => '続行すると、利用規約およびプライバシーポリシーに同意したものとみなされます。', + 'legal' => '続行すると、利用規約およびプライバシーポリシーに同意したものとみなされます。', 'slides' => [ 'calendar' => [ diff --git a/lang/ko/auth.php b/lang/ko/auth.php index cdf172d59f..8defc8b534 100644 --- a/lang/ko/auth.php +++ b/lang/ko/auth.php @@ -22,7 +22,7 @@ 'welcome_trial' => 'TryPost에 오신 것을 환영합니다! 체험이 시작되었습니다.', ], - 'legal' => '계속 진행하면 서비스 약관 및 개인정보 처리방침에 동의하는 것입니다.', + 'legal' => '계속 진행하면 서비스 약관 및 개인정보 처리방침에 동의하는 것입니다.', 'slides' => [ 'calendar' => [ diff --git a/lang/nl/auth.php b/lang/nl/auth.php index 471c680133..a74abcca62 100644 --- a/lang/nl/auth.php +++ b/lang/nl/auth.php @@ -22,7 +22,7 @@ 'welcome_trial' => 'Welkom bij TryPost! Je proefperiode is gestart.', ], - 'legal' => 'Door door te gaan ga je akkoord met onze Servicevoorwaarden en Privacybeleid.', + 'legal' => 'Door door te gaan ga je akkoord met onze Servicevoorwaarden en Privacybeleid.', 'slides' => [ 'calendar' => [ diff --git a/lang/pl/auth.php b/lang/pl/auth.php index 1cce8921bd..93d3ed6528 100644 --- a/lang/pl/auth.php +++ b/lang/pl/auth.php @@ -22,7 +22,7 @@ 'welcome_trial' => 'Witamy w TryPost! Twój okres próbny właśnie się rozpoczął.', ], - 'legal' => 'Kontynuując, akceptujesz nasze Warunki korzystania z usługi oraz Politykę prywatności.', + 'legal' => 'Kontynuując, akceptujesz nasze Warunki korzystania z usługi oraz Politykę prywatności.', 'slides' => [ 'calendar' => [ diff --git a/lang/pt-BR/auth.php b/lang/pt-BR/auth.php index 2ba690c7bc..0dfa2bafb3 100644 --- a/lang/pt-BR/auth.php +++ b/lang/pt-BR/auth.php @@ -22,7 +22,7 @@ 'welcome_trial' => 'Bem-vindo ao TryPost! Seu período de teste começou.', ], - 'legal' => 'Ao continuar, você concorda com nossos Termos de Serviço e Política de Privacidade.', + 'legal' => 'Ao continuar, você concorda com nossos Termos de Serviço e Política de Privacidade.', 'slides' => [ 'calendar' => [ diff --git a/lang/ru/auth.php b/lang/ru/auth.php index e813ed655b..15b336386c 100644 --- a/lang/ru/auth.php +++ b/lang/ru/auth.php @@ -22,7 +22,7 @@ 'welcome_trial' => 'Добро пожаловать в TryPost! Ваш пробный период начался.', ], - 'legal' => 'Продолжая, вы соглашаетесь с нашими Условиями использования и Политикой конфиденциальности.', + 'legal' => 'Продолжая, вы соглашаетесь с нашими Условиями использования и Политикой конфиденциальности.', 'slides' => [ 'calendar' => [ diff --git a/lang/tr/auth.php b/lang/tr/auth.php index d11255b48f..18787233f9 100644 --- a/lang/tr/auth.php +++ b/lang/tr/auth.php @@ -24,7 +24,7 @@ 'welcome_trial' => 'TryPost\'a hoş geldiniz! Deneme süreniz başladı.', ], - 'legal' => 'Devam ederek Hizmet Şartları ve Gizlilik Politikası\'nı kabul etmiş olursunuz.', + 'legal' => 'Devam ederek Hizmet Şartları ve Gizlilik Politikası\'nı kabul etmiş olursunuz.', 'slides' => [ 'calendar' => [ diff --git a/lang/uk/auth.php b/lang/uk/auth.php index 33918920fe..50aa35f4ee 100644 --- a/lang/uk/auth.php +++ b/lang/uk/auth.php @@ -22,7 +22,7 @@ 'welcome_trial' => 'Ласкаво просимо до TryPost! Ваш пробний період розпочато.', ], - 'legal' => 'Продовжуючи, ви погоджуєтеся з нашими Умовами використання та Політикою конфіденційності.', + 'legal' => 'Продовжуючи, ви погоджуєтеся з нашими Умовами використання та Політикою конфіденційності.', 'slides' => [ 'calendar' => [ diff --git a/lang/zh/auth.php b/lang/zh/auth.php index 4d3528fdc3..3da0b35991 100644 --- a/lang/zh/auth.php +++ b/lang/zh/auth.php @@ -22,7 +22,7 @@ 'welcome_trial' => '欢迎使用 TryPost!你的试用已开始。', ], - 'legal' => '继续即表示你同意我们的服务条款和隐私政策。', + 'legal' => '继续即表示你同意我们的服务条款和隐私政策。', 'slides' => [ 'calendar' => [ diff --git a/resources/js/pages/auth/Login.vue b/resources/js/pages/auth/Login.vue index 02eab22688..4ad30081aa 100644 --- a/resources/js/pages/auth/Login.vue +++ b/resources/js/pages/auth/Login.vue @@ -183,6 +183,12 @@ const pageErrors = usePageErrors(); }} + + +
diff --git a/resources/js/pages/auth/Register.vue b/resources/js/pages/auth/Register.vue index 4daf4da12b..7e9a757930 100644 --- a/resources/js/pages/auth/Register.vue +++ b/resources/js/pages/auth/Register.vue @@ -29,7 +29,6 @@ const showPassword = ref(false); const showEmailForm = ref(false); const page = usePage(); -const isSelfHosted = computed(() => Boolean(page.props.selfHosted)); const hasSocial = computed( () => Boolean(page.props.googleAuthEnabled) || @@ -178,7 +177,6 @@ const emailFormVisible = computed(() => !hasSocial.value || showEmailForm.value)
From 48c3bf7e572929ac0eda59a1170974a9dcde4884 Mon Sep 17 00:00:00 2001 From: Oliver <20591763+Cryptoom@users.noreply.github.com> Date: Fri, 4 Sep 2026 12:16:32 +0300 Subject: [PATCH 2/2] docs(patches): note the vite-build deploy trap for Patch 4 Round-2 review flagged that lang/*/auth.php only take effect after a real `docker compose up -d --build`: laravel-vue-i18n compiles the PHP locale files to gitignored lang/php_*.json at build time, so a plain file-copy-and-restart on web02 would silently keep serving the old trypost.it URLs. Co-Authored-By: Claude Sonnet 5 --- PATCHES.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/PATCHES.md b/PATCHES.md index 5a9c50d7a5..51ba84298d 100644 --- a/PATCHES.md +++ b/PATCHES.md @@ -133,6 +133,12 @@ nie zutraf. gegenpruefen statt blind erneut einzufuegen. - **Test**: keine automatisierten Tests vorhanden (reine Template-/Copy-Aenderung), Verifikation ueber Live-Check nach Deploy (siehe unten). +- **Deploy-Falle (Review Round 2)**: `lang/*/auth.php` wirken erst nach einem ECHTEN Frontend- + Build. `vite.config.ts` nutzt `laravel-vue-i18n/vite`, das die PHP-Locales zur Build-Zeit nach + `lang/php_*.json` kompiliert (die JSON-Dateien selbst stehen in `.gitignore`). Ein reines + Kopieren der geaenderten PHP-Datei in den laufenden Container plus Neustart behaelt die alten + `trypost.it`-URLs im bereits gebundelten JSON, ohne Fehlermeldung. Zwingend + `docker compose up -d --build` (voller Rebuild), NICHT nur `restart`. - **Deployed**: . ## Geprueft und NICHT gepatcht: is_aigc-Composer-Toggle (25.08.2026)