From 0baf85faa920ad471694181c31b3221e04b25218 Mon Sep 17 00:00:00 2001 From: oasis-bot Date: Mon, 19 Oct 2026 02:17:12 +0200 Subject: [PATCH] skins: elegir el aspecto en el movil con tarjetas de un toque En Ajustes del movil, Tema y Flujos de trabajo dejan de ser desplegables: cada skin es una tarjeta con su miniatura y cada workflow un boton grande, y se aplican al tocarlos. Solo se ofrecen los skins que tienen maqueta de movil (Acampada y Oasis Mobile); el servidor rechaza un tema de escritorio, que dejaba la app sin maqueta. La bienvenida tambien ofrece elegir skin. Aplicar un workflow ya no cambia el skin: se queda el que haya elegido cada cual. OasisMobile.css se carga con su propio versionado antes de Acampada.css, en vez de con @import: el @import sin ?v= se quedaba en la cache del WebView y tras actualizar se veia la maqueta vieja. --- src/backend/backend.js | 4 ++- src/client/assets/images/theme-acampada.png | Bin 0 -> 43684 bytes .../assets/images/theme-oasismobile.png | Bin 0 -> 45697 bytes src/client/assets/themes/Acampada.css | 7 ++-- src/client/assets/themes/OasisMobile.css | 21 +++++++++++ src/client/assets/translations/i18n_fork.js | 33 ++++++++++++++++++ src/models/workflows_model.js | 12 ++++--- src/views/main_views.js | 18 +++++++--- src/views/settings_view.js | 25 +++++++++++-- 9 files changed, 103 insertions(+), 17 deletions(-) create mode 100644 src/client/assets/images/theme-acampada.png create mode 100644 src/client/assets/images/theme-oasismobile.png diff --git a/src/backend/backend.js b/src/backend/backend.js index 68bf26e..2b9ac3a 100644 --- a/src/backend/backend.js +++ b/src/backend/backend.js @@ -8487,7 +8487,7 @@ router profile: true, ux: true, workflow: isLoopbackRequest(ctx), - theme: process.env.OASIS_MOBILE !== '1', + theme: true, // en el movil ofrece los skins de movil (WIZARD_THEMES) community: checkMod(ctx, 'invitesMod'), greeting: checkMod(ctx, 'feedMod') }; @@ -14669,6 +14669,8 @@ router }) .post("/settings/theme", koaBody(), async (ctx) => { const theme = String(ctx.request.body.theme || "").trim(), cfg = getConfig(); + // en el movil solo los skins de movil: un tema de escritorio deja la app sin maqueta + if (process.env.OASIS_MOBILE === '1' && !require('../views/main_views').MOBILE_THEMES.some(([value]) => value === theme)) { ctx.redirect("/settings#theme"); return; } cfg.themes.current = theme || "Dark-SNH"; saveConfig(cfg); ctx.cookies.set("theme", cfg.themes.current, { httpOnly: true, sameSite: 'strict', secure: ctx.secure }); diff --git a/src/client/assets/images/theme-acampada.png b/src/client/assets/images/theme-acampada.png new file mode 100644 index 0000000000000000000000000000000000000000..c635277faec3cd85ba5415d1beb764a19f9619e3 GIT binary patch literal 43684 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 MJok9q5QIzr57X1y7XSbN literal 0 HcmV?d00001 diff --git a/src/client/assets/images/theme-oasismobile.png b/src/client/assets/images/theme-oasismobile.png new file mode 100644 index 0000000000000000000000000000000000000000..2f9bfaf49af4b84d0e2099d0cc69ba33f9a04d37 GIT binary patch literal 45697 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

+GDU%!5N<${|lZZk^nK6@9_ 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 versionado (no con @import: se quedaba en la cache del + * WebView); aqui solo se cambian colores, letra y formas encima. Por eso casi todo lleva * !important: OasisMobile.css tambien lo usa. Las piezas propias de la rama * (panal, barras) se ajustan en styles/hive_acampada.css. */ -@import url("OasisMobile.css"); - @font-face { font-family: "Anton"; src: url("../fonts/Anton-Regular.ttf") format("truetype"); diff --git a/src/client/assets/themes/OasisMobile.css b/src/client/assets/themes/OasisMobile.css index c7172c6..1c94839 100644 --- a/src/client/assets/themes/OasisMobile.css +++ b/src/client/assets/themes/OasisMobile.css @@ -1258,3 +1258,24 @@ body:has(.oasis-nav-side-toggle) { padding-top: 84px !important; } align-items: center !important; justify-content: center !important; } + +/* Skins y workflows en Ajustes (views/settings_view.js): tarjetas de un toque */ +.skin-pick { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin: 0; } +.skin-card { + display: flex !important; flex-direction: column; align-items: stretch; gap: 8px; + width: 100% !important; height: auto !important; min-height: 0 !important; margin: 0 !important; padding: 8px !important; + background: #1c1c1c !important; color: #e6e6e6 !important; + border: 1px solid #444 !important; border-radius: 16px !important; cursor: pointer; +} +.skin-card .skin-shot { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; object-position: top; border-radius: 10px; display: block; } +.skin-card .skin-name { font-size: 17px; font-weight: 700; text-align: center; } +.skin-card.is-current { border: 2px solid #FFD700 !important; background: #2a2412 !important; } +.skin-card.is-current .skin-name::after { content: " \2713"; } +.workflow-pick { display: flex !important; flex-direction: column; gap: 10px; margin: 0; } +.workflow-card { + width: 100% !important; min-height: 56px !important; margin: 0 !important; padding: 10px 16px !important; + font-size: 18px !important; text-align: left !important; + background: #1c1c1c !important; color: #e6e6e6 !important; border: 1px solid #444 !important; border-radius: 14px !important; +} +.workflow-card.is-current { border: 2px solid #FFD700 !important; background: #2a2412 !important; color: #FFD700 !important; } +.workflow-card.is-current::after { content: " \2713"; } diff --git a/src/client/assets/translations/i18n_fork.js b/src/client/assets/translations/i18n_fork.js index 6eb8379..6baf961 100644 --- a/src/client/assets/translations/i18n_fork.js +++ b/src/client/assets/translations/i18n_fork.js @@ -17,6 +17,9 @@ module.exports = { en: { + // skins y workflows en el movil (settings_view.js) + skinIntroMobile: "Pick how Oasis looks on your phone. It applies as soon as you tap it.", + workflowsDescriptionMobile: "A workflow sets which modules are on. On the phone your skin stays as it is.", // fotos que no se pueden limpiar (blobHandler.js) imageMetadataUnsafe: "This image could not be cleaned of its metadata (location, camera…), so it has not been uploaded. Save it as JPEG or PNG and try again.", // Karvan @@ -82,6 +85,9 @@ module.exports = { spreadMore: "more" }, es: { + // skins y workflows en el movil (settings_view.js) + skinIntroMobile: "Elige cómo se ve Oasis en tu móvil. Se aplica al tocarlo.", + workflowsDescriptionMobile: "Un workflow fija qué módulos están activos. En el móvil tu skin se queda como está.", // fotos que no se pueden limpiar (blobHandler.js) imageMetadataUnsafe: "No se han podido quitar los metadatos de esta imagen (ubicación, cámara…), así que no se ha subido. Guárdala como JPEG o PNG y vuelve a intentarlo.", // Karvan @@ -153,6 +159,9 @@ module.exports = { totalspreads: "Réplicas totales" }, fr: { + // skins y workflows en el movil (settings_view.js) + skinIntroMobile: "Choisis l'apparence d'Oasis sur ton téléphone. Elle s'applique dès que tu touches.", + workflowsDescriptionMobile: "Un workflow fixe les modules actifs. Sur le téléphone, ton thème ne change pas.", // fotos que no se pueden limpiar (blobHandler.js) imageMetadataUnsafe: "Impossible de retirer les métadonnées de cette image (position, appareil…), elle n'a donc pas été envoyée. Enregistrez-la en JPEG ou PNG et réessayez.", // Karvan @@ -218,6 +227,9 @@ module.exports = { spreadMore: "plus" }, eu: { + // skins y workflows en el movil (settings_view.js) + skinIntroMobile: "Aukeratu nolakoa den Oasis zure mugikorrean. Ukitu bezain laster aplikatzen da.", + workflowsDescriptionMobile: "Workflow batek zein modulu dauden aktibo finkatzen du. Mugikorrean zure itxura ez da aldatzen.", // fotos que no se pueden limpiar (blobHandler.js) imageMetadataUnsafe: "Ezin izan dira irudi honen metadatuak kendu (kokapena, kamera…), beraz ez da igo. Gorde JPEG edo PNG gisa eta saiatu berriro.", // Karvan @@ -283,6 +295,9 @@ module.exports = { spreadMore: "gehiago" }, de: { + // skins y workflows en el movil (settings_view.js) + skinIntroMobile: "Wähle, wie Oasis auf deinem Handy aussieht. Es wird beim Antippen übernommen.", + workflowsDescriptionMobile: "Ein Workflow legt fest, welche Module aktiv sind. Auf dem Handy bleibt dein Skin, wie er ist.", // fotos que no se pueden limpiar (blobHandler.js) imageMetadataUnsafe: "Die Metadaten dieses Bildes (Standort, Kamera…) konnten nicht entfernt werden, daher wurde es nicht hochgeladen. Speichere es als JPEG oder PNG und versuche es erneut.", // Karvan @@ -348,6 +363,9 @@ module.exports = { spreadMore: "mehr" }, it: { + // skins y workflows en el movil (settings_view.js) + skinIntroMobile: "Scegli come appare Oasis sul tuo telefono. Si applica appena lo tocchi.", + workflowsDescriptionMobile: "Un workflow stabilisce quali moduli sono attivi. Sul telefono la tua skin resta com'è.", // fotos que no se pueden limpiar (blobHandler.js) imageMetadataUnsafe: "Non è stato possibile rimuovere i metadati di questa immagine (posizione, fotocamera…), quindi non è stata caricata. Salvala come JPEG o PNG e riprova.", // Karvan @@ -413,6 +431,9 @@ module.exports = { spreadMore: "altro" }, pt: { + // skins y workflows en el movil (settings_view.js) + skinIntroMobile: "Escolhe como o Oasis aparece no teu telemóvel. Aplica-se ao tocar.", + workflowsDescriptionMobile: "Um workflow define que módulos estão ativos. No telemóvel o teu tema fica como está.", // fotos que no se pueden limpiar (blobHandler.js) imageMetadataUnsafe: "Não foi possível remover os metadados desta imagem (localização, câmara…), por isso não foi enviada. Guarda-a como JPEG ou PNG e tenta de novo.", // Karvan @@ -478,6 +499,9 @@ module.exports = { spreadMore: "mais" }, zh: { + // skins y workflows en el movil (settings_view.js) + skinIntroMobile: "选择 Oasis 在手机上的外观。点一下就会生效。", + workflowsDescriptionMobile: "工作流决定启用哪些模块。在手机上,你的外观保持不变。", // fotos que no se pueden limpiar (blobHandler.js) imageMetadataUnsafe: "无法清除这张图片的元数据(位置、相机等),因此没有上传。请另存为 JPEG 或 PNG 后重试。", // Karvan @@ -543,6 +567,9 @@ module.exports = { spreadMore: "更多" }, ar: { + // skins y workflows en el movil (settings_view.js) + skinIntroMobile: "اختر مظهر Oasis على هاتفك. يُطبَّق بمجرد اللمس.", + workflowsDescriptionMobile: "يحدد سير العمل الوحدات المفعّلة. على الهاتف يبقى مظهرك كما هو.", // fotos que no se pueden limpiar (blobHandler.js) imageMetadataUnsafe: "تعذّر إزالة البيانات الوصفية من هذه الصورة (الموقع، الكاميرا…)، لذلك لم تُرفع. احفظها بصيغة JPEG أو PNG وحاول مجددًا.", // Karvan @@ -608,6 +635,9 @@ module.exports = { spreadMore: "المزيد" }, hi: { + // skins y workflows en el movil (settings_view.js) + skinIntroMobile: "चुनें कि आपके फ़ोन पर Oasis कैसा दिखे। छूते ही लागू हो जाता है।", + workflowsDescriptionMobile: "वर्कफ़्लो तय करता है कि कौन-से मॉड्यूल चालू हैं। फ़ोन पर आपकी स्किन वैसी ही रहती है।", // fotos que no se pueden limpiar (blobHandler.js) imageMetadataUnsafe: "इस छवि का मेटाडेटा (स्थान, कैमरा…) हटाया नहीं जा सका, इसलिए इसे अपलोड नहीं किया गया। इसे JPEG या PNG के रूप में सहेजें और फिर कोशिश करें।", // Karvan @@ -673,6 +703,9 @@ module.exports = { spreadMore: "और" }, ru: { + // skins y workflows en el movil (settings_view.js) + skinIntroMobile: "Выберите, как Oasis выглядит на телефоне. Применяется сразу по нажатию.", + workflowsDescriptionMobile: "Рабочий процесс задаёт, какие модули включены. На телефоне ваше оформление не меняется.", // fotos que no se pueden limpiar (blobHandler.js) imageMetadataUnsafe: "Не удалось удалить метаданные этого изображения (местоположение, камера…), поэтому оно не загружено. Сохраните его как JPEG или PNG и попробуйте снова.", // Karvan diff --git a/src/models/workflows_model.js b/src/models/workflows_model.js index 947e8fd..85a1230 100644 --- a/src/models/workflows_model.js +++ b/src/models/workflows_model.js @@ -89,10 +89,14 @@ const WORKFLOWS = [ const WORKFLOW_KEYS = WORKFLOWS.map(w => w.key); const isMobile = () => process.env.OASIS_MOBILE === '1'; -// en el movil todos los workflows llevan el tema Acampada; quien venga de OasisMobile -// sigue reconociendo su workflow (Acampada es OasisMobile con otros colores) +// en el movil el workflow no toca el skin: se queda el que haya elegido cada cual +// (Acampada u OasisMobile); si no hay ninguno de movil, Acampada const MOBILE_THEMES = ['Acampada', 'OasisMobile']; -const themeOf = (workflow) => (isMobile() ? 'Acampada' : workflow.theme); +const mobileSkin = (cfg) => { + const cur = cfg && cfg.themes && cfg.themes.current; + return MOBILE_THEMES.includes(cur) ? cur : 'Acampada'; +}; +const themeOf = (workflow, cfg) => (isMobile() ? mobileSkin(cfg) : workflow.theme); const sameTheme = (theme, workflow) => (isMobile() ? MOBILE_THEMES.includes(theme) : theme === workflow.theme); const getWorkflow = (key) => WORKFLOWS.find(w => w.key === String(key || '')) || null; @@ -117,7 +121,7 @@ const applyWorkflow = (cfg, workflow) => { const enabled = new Set(modulesOf(workflow)); cfg.modules = cfg.modules || {}; ALL_MODULES.forEach(mod => { cfg.modules[`${mod}Mod`] = enabled.has(mod) ? 'on' : 'off'; }); - if (workflow.theme) cfg.themes = { ...(cfg.themes || {}), current: themeOf(workflow) }; + if (workflow.theme) cfg.themes = { ...(cfg.themes || {}), current: themeOf(workflow, cfg) }; if (workflow.homePage) cfg.homePage = workflow.homePage; return cfg; }; diff --git a/src/views/main_views.js b/src/views/main_views.js index 2ab5424..faf4d70 100644 --- a/src/views/main_views.js +++ b/src/views/main_views.js @@ -438,9 +438,17 @@ exports.CONTENT_SPREADABLE = CONTENT_SPREADABLE; exports.CONTENT_TORRENTABLE = CONTENT_TORRENTABLE; exports.contentDeleteAction = contentDeleteAction; exports.THEMES = [['Acampada', 'Acampada'], ['Dark-SNH', 'Dark-SNH'], ['Clear-SNH', 'Clear-SNH'], ['Purple-SNH', 'Purple-SNH'], ['Matrix-SNH', 'Matrix-SNH'], ['OasisMobile', 'Oasis-Mobile']]; -// Acampada importa la maqueta de OasisMobile.css: los dos son solo de movil -exports.WIZARD_THEMES = exports.THEMES.filter(([value]) => value !== 'OasisMobile' && value !== 'Acampada'); -// con el tema Acampada, hive_acampada.css va detras del tema: pinta lanzador, barras y tarjetas +// Acampada importa la maqueta de OasisMobile.css: los dos son solo de movil, y en el +// movil son los unicos que valen (los de escritorio no traen la maqueta) +exports.MOBILE_THEMES = [['Acampada', 'Acampada'], ['OasisMobile', 'Oasis Mobile']]; +exports.WIZARD_THEMES = process.env.OASIS_MOBILE === '1' + ? exports.MOBILE_THEMES + : exports.THEMES.filter(([value]) => value !== 'OasisMobile' && value !== 'Acampada'); +// el tema Acampada es la maqueta de OasisMobile.css con otros colores. OasisMobile.css va +// en su propio versionado y no como @import dentro de Acampada.css: un @import sin +// ?v= se queda en la cache del WebView y tras actualizar se veia la maqueta vieja. +// hive_acampada.css va detras del tema: pinta lanzador, barras y tarjetas. +const acampadaBase = (theme) => theme === 'Acampada' ? link({ rel: "stylesheet", href: `/assets/themes/OasisMobile.css?v=${assetVersion()}` }) : null; const acampadaLink = (theme) => theme === 'Acampada' ? link({ rel: "stylesheet", href: `/assets/styles/hive_acampada.css?v=${assetVersion()}` }) : null; const renderDocumentActions = (kind, id, leadingNodes = []) => { @@ -2006,7 +2014,7 @@ const template = (titlePrefix, ...elements) => { // movil: el tema va DESPUES de mobile.css para ganar por cascada sin !important; // escritorio: orden original de epsylon ...(process.env.OASIS_MOBILE === '1' - ? [ link({ rel: "stylesheet", href: `/assets/styles/mobile.css?v=${assetVersion()}` }), themeLink, acampadaLink(theme) ] + ? [ link({ rel: "stylesheet", href: `/assets/styles/mobile.css?v=${assetVersion()}` }), acampadaBase(theme), themeLink, acampadaLink(theme) ] : [ themeLink, link({ rel: "stylesheet", href: `/assets/styles/mobile.css?v=${assetVersion()}`, media: "(max-width: 768px)" }) ]), // el modulo Karvan trae su propia hoja: asi se ve igual en cualquier tema // y tambien en escritorio, donde no se carga OasisMobile.css @@ -2395,7 +2403,7 @@ exports.ainavHomeView = ({ recentTags = [] } = {}) => { // movil: el tema va DESPUES de mobile.css para ganar por cascada sin !important; // escritorio: orden original de epsylon ...(process.env.OASIS_MOBILE === '1' - ? [ link({ rel: "stylesheet", href: `/assets/styles/mobile.css?v=${assetVersion()}` }), link({ rel: "stylesheet", href: `/assets/themes/${theme}.css?v=${assetVersion()}` }), acampadaLink(theme) ] + ? [ link({ rel: "stylesheet", href: `/assets/styles/mobile.css?v=${assetVersion()}` }), acampadaBase(theme), link({ rel: "stylesheet", href: `/assets/themes/${theme}.css?v=${assetVersion()}` }), acampadaLink(theme) ] : [ link({ rel: "stylesheet", href: `/assets/themes/${theme}.css?v=${assetVersion()}` }), link({ rel: "stylesheet", href: `/assets/styles/mobile.css?v=${assetVersion()}`, media: "(max-width: 768px)" }) ]), // el modulo Karvan trae su propia hoja: asi se ve igual en cualquier tema // y tambien en escritorio, donde no se carga OasisMobile.css diff --git a/src/views/settings_view.js b/src/views/settings_view.js index df412f4..ded6bc8 100644 --- a/src/views/settings_view.js +++ b/src/views/settings_view.js @@ -2,7 +2,7 @@ const { form, button, div, h2, h3, p, section, select, option, input, br, a, lab const fs = require('fs'); const path = require('path'); const { getConfig } = require('../configs/config-manager.js'); -const { template, selectedLanguage, i18n, setLanguage, INBOX_BOT_ORDER, inboxBotLabel, THEMES, userLink } = require('./main_views'); +const { template, selectedLanguage, i18n, setLanguage, INBOX_BOT_ORDER, inboxBotLabel, THEMES, MOBILE_THEMES, userLink } = require('./main_views'); const i18nBase = require("../client/assets/translations/i18n"); const moment = require("../server/node_modules/moment"); const { WORKFLOWS, currentWorkflow } = require('../models/workflows_model'); @@ -58,7 +58,26 @@ const settingsView = (params) => { const modOn = (name) => (currentConfig.modules || {})[`${name}Mod`] === 'on'; const isMobile = process.env.OASIS_MOBILE === '1'; - const workflowSection = section({ id: "workflows" }, + // movil: skins y workflows como tarjetas que se aplican al tocarlas (un boton + // de envio por opcion); el desplegable de escritorio quedaba enterrado y dejaba + // poner temas de escritorio, que en el movil se quedan sin maqueta + const skinPicker = () => section({ id: "theme" }, + div({ class: "tags-header" }, h2(i18n.theme), p(i18n.skinIntroMobile)), + form({ action: "/settings/theme", method: "post", class: "skin-pick" }, + ...MOBILE_THEMES.map(([value, name]) => button({ type: "submit", name: "theme", value, class: theme === value ? "skin-card is-current" : "skin-card" }, + img({ src: `/assets/images/theme-${value.toLowerCase()}.png`, alt: "", class: "skin-shot" }), + span({ class: "skin-name" }, name))) + ) + ); + const workflowPicker = () => section({ id: "workflows" }, + div({ class: "tags-header" }, h2(i18n.workflowsTitle), p(i18n.workflowsDescriptionMobile)), + form({ action: "/settings/workflow", method: "POST", class: "workflow-pick" }, + ...WORKFLOWS.map(w => button({ type: "submit", name: "workflow", value: w.key, class: activeWorkflow === w.key ? "workflow-card is-current" : "workflow-card" }, + i18n[`workflow_${w.key}`] || w.key)) + ) + ); + + const workflowSection = isMobile ? workflowPicker() : section({ id: "workflows" }, div({ class: "tags-header" }, h2(i18n.workflowsTitle), p(i18n.workflowsDescription), @@ -181,7 +200,7 @@ const settingsView = (params) => { ) ) ), - section({ id: "theme" }, + isMobile ? skinPicker() : section({ id: "theme" }, div({ class: "tags-header" }, h2(i18n.theme), p(i18n.themeIntro),