From 9dd24d77fce33a3ddd508f82b401a3e9feeb6e3c Mon Sep 17 00:00:00 2001 From: Izan Gil <66965250+SrIzan10@users.noreply.github.com> Date: Wed, 22 Apr 2026 20:31:46 +0200 Subject: [PATCH] fix: android app corners and new downloads page --- app/layouts/default.vue | 1 + app/pages/downloads.vue | 176 ++++++++++++++++++++++ i18n/locales/en.json | 16 +- i18n/locales/es.json | 16 +- native-app/package.json | 1 + native-app/src/screens/StreamerScreen.tsx | 2 +- package.json | 2 +- pnpm-lock.yaml | 14 ++ 8 files changed, 224 insertions(+), 4 deletions(-) create mode 100644 app/pages/downloads.vue diff --git a/app/layouts/default.vue b/app/layouts/default.vue index f7e28a5..a07b68b 100644 --- a/app/layouts/default.vue +++ b/app/layouts/default.vue @@ -33,6 +33,7 @@ const navLinks = [ { to: "/", label: "home" }, { to: "/stream", label: "stream" }, { to: "/about", label: "about" }, + { to: "/downloads", label: "downloads" }, { to: "/presets", label: "presets", requiresAuth: true }, ]; diff --git a/app/pages/downloads.vue b/app/pages/downloads.vue new file mode 100644 index 0000000..f5fe2df --- /dev/null +++ b/app/pages/downloads.vue @@ -0,0 +1,176 @@ + + + diff --git a/i18n/locales/en.json b/i18n/locales/en.json index 68dc59b..036b960 100644 --- a/i18n/locales/en.json +++ b/i18n/locales/en.json @@ -5,6 +5,7 @@ "home": "Home", "about": "About", "contact": "Contact", + "downloads": "Downloads", "stream": "Stream", "presets": "Presets", "effortlessScreensharing": "effortless screensharing powered by webrtc", @@ -62,5 +63,18 @@ "audioSupported": "Audio Supported", "failedToStartScreenShare": "Failed to start screen share.", "screenRecordingPermissionRequired": "macOS blocked screen capture. Allow Helium in System Settings > Privacy & Security > Screen Recording, then restart Helium.", - "screenRecordingPermissionRequiredNoShortcut": "macOS blocked screen capture. Open System Settings > Privacy & Security > Screen Recording, allow Helium, then restart Helium." + "screenRecordingPermissionRequiredNoShortcut": "macOS blocked screen capture. Open System Settings > Privacy & Security > Screen Recording, allow Helium, then restart Helium.", + "downloadHelium": "Download Helium", + "downloadHeliumDescription": "Get the best screensharing experience with our native apps. Available for desktop and Android.", + "desktopApp": "Desktop App", + "desktopAppDescription": "The full-featured Electron app with system audio support.", + "androidApp": "Android App", + "androidAppDescription": "Stream directly from your Android device.", + "desktopAppNote": "Includes advanced features like system audio capture, venmic support on Linux, and native screen recording permissions.", + "androidAppNote": "Install the APK directly on your Android device. Make sure to allow installation from unknown sources if prompted.", + "downloadFromGitHub": "Download from GitHub", + "viewSourceCode": "View Source Code", + "preferTheBrowser": "Prefer the browser?", + "browserVersionDescription": "The web version works great too. No installation required — just open the page and start streaming or watching.", + "useWebVersion": "Use Web Version" } diff --git a/i18n/locales/es.json b/i18n/locales/es.json index 87f578f..b15654a 100644 --- a/i18n/locales/es.json +++ b/i18n/locales/es.json @@ -5,6 +5,7 @@ "home": "Inicio", "about": "Acerca de", "contact": "Contacto", + "downloads": "Descargas", "stream": "Transmisión", "presets": "Ajustes predefinidos", "effortlessScreensharing": "comparte pantalla sin complicaciones", @@ -62,5 +63,18 @@ "audioSupported": "Audio soportado", "failedToStartScreenShare": "No se pudo iniciar el uso compartido de pantalla.", "screenRecordingPermissionRequired": "macOS bloqueó la captura de pantalla. Permite Helium en Configuración del Sistema > Privacidad y seguridad > Grabación de pantalla y luego reinicia Helium.", - "screenRecordingPermissionRequiredNoShortcut": "macOS bloqueó la captura de pantalla. Abre Configuración del Sistema > Privacidad y seguridad > Grabación de pantalla, permite Helium y luego reinicia Helium." + "screenRecordingPermissionRequiredNoShortcut": "macOS bloqueó la captura de pantalla. Abre Configuración del Sistema > Privacidad y seguridad > Grabación de pantalla, permite Helium y luego reinicia Helium.", + "downloadHelium": "Descargar Helium", + "downloadHeliumDescription": "Obtén la mejor experiencia de compartir pantalla con nuestras aplicaciones nativas. Disponible para escritorio y Android.", + "desktopApp": "Aplicación de Escritorio", + "desktopAppDescription": "La aplicación Electron completa con soporte de audio del sistema.", + "androidApp": "Aplicación Android", + "androidAppDescription": "Transmite directamente desde tu dispositivo Android.", + "desktopAppNote": "Incluye funciones avanzadas como captura de audio del sistema, soporte de venmic en Linux y permisos de grabación de pantalla nativos.", + "androidAppNote": "Instala el APK directamente en tu dispositivo Android. Asegúrate de permitir la instalación desde fuentes desconocidas si se te solicita.", + "downloadFromGitHub": "Descargar desde GitHub", + "viewSourceCode": "Ver Código Fuente", + "preferTheBrowser": "¿Prefieres el navegador?", + "browserVersionDescription": "La versión web también funciona muy bien. No requiere instalación: simplemente abre la página y empieza a transmitir o ver.", + "useWebVersion": "Usar Versión Web" } diff --git a/native-app/package.json b/native-app/package.json index 422ad9b..b68bb39 100644 --- a/native-app/package.json +++ b/native-app/package.json @@ -17,6 +17,7 @@ "expo-splash-screen": "~31.0.13", "react": "19.2.0", "react-native": "0.82.0", + "react-native-safe-area-context": "^5.7.0", "react-native-url-polyfill": "^2.0.0", "react-native-webrtc": "^124.0.7" }, diff --git a/native-app/src/screens/StreamerScreen.tsx b/native-app/src/screens/StreamerScreen.tsx index 70e44d7..8491066 100644 --- a/native-app/src/screens/StreamerScreen.tsx +++ b/native-app/src/screens/StreamerScreen.tsx @@ -2,7 +2,6 @@ import { useAuth } from "@clerk/clerk-expo"; import { useEffect, useMemo, useState } from "react"; import { Pressable, - SafeAreaView, ScrollView, StyleSheet, Text, @@ -17,6 +16,7 @@ import { getPresets } from "../lib/presets"; import type { NativeIceServer, PresetUser } from "../types/presets"; import { Button } from "../components/ui/Button"; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "../components/ui/Card"; +import { SafeAreaView } from 'react-native-safe-area-context'; export function StreamerScreen() { const { getToken, signOut } = useAuth(); diff --git a/package.json b/package.json index cd3f523..1a9c8d6 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "main": "./electron/dist/main/index.js", "scripts": { "build": "nuxt build", - "dev": "nuxt dev", + "dev": "nuxt dev --host", "generate": "nuxt generate", "preview": "nuxt preview", "postinstall": "nuxt prepare", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f6c5d6f..73f02c9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -163,6 +163,9 @@ importers: react-native: specifier: 0.82.0 version: 0.82.0(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10) + react-native-safe-area-context: + specifier: ^5.7.0 + version: 5.7.0(react-native@0.82.0(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0) react-native-url-polyfill: specifier: ^2.0.0 version: 2.0.0(react-native@0.82.0(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)) @@ -7215,6 +7218,12 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-native-safe-area-context@5.7.0: + resolution: {integrity: sha512-/9/MtQz8ODphjsLdZ+GZAIcC/RtoqW9EeShf7Uvnfgm/pzYrJ75y3PV/J1wuAV1T5Dye5ygq4EAW20RoBq0ABQ==} + peerDependencies: + react: '*' + react-native: '*' + react-native-url-polyfill@2.0.0: resolution: {integrity: sha512-My330Do7/DvKnEvwQc0WdcBnFPploYKp9CYlefDXzIdEaA+PAhDYllkvGeEroEzvc4Kzzj2O4yVdz8v6fjRvhA==} peerDependencies: @@ -16987,6 +16996,11 @@ snapshots: react-is@18.3.1: {} + react-native-safe-area-context@5.7.0(react-native@0.82.0(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0): + dependencies: + react: 19.2.0 + react-native: 0.82.0(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10) + react-native-url-polyfill@2.0.0(react-native@0.82.0(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)): dependencies: react-native: 0.82.0(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)