tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1534Shell 199Rust 109Markdown 993713 Sutichaykuna

atuq v0.4: el branding que se VE estaba en las imágenes del zip, no en el texto

Capturé la pantalla con `grim` y por fin miré lo que el usuario miraba. El diagnóstico cambió
entero: la ventana SÍ estaba —el título decía «New Tab — atuq» y el icono del lanzador era el
zorro— pero la PÁGINA mostraba el logo y la palabra «Nightly».

O sea que la v0.2 rebrandeó lo que se lee y no lo que se ve. El branding de Gecko vive en TRES
sitios y sólo uno es texto FTL:

  · `brand.ftl`        — las cadenas nuevas (título de ventana, menús). Ya estaba.
  · `brand.properties` — las cadenas VIEJAS, formato heredado. Seguía diciendo Nightly, y nadie lo
                         habría notado leyendo la receta: son 71 bytes en otra ruta del mismo zip.
  · las imágenes de `chrome/browser/content/branding/` — TODO lo visible: el favicon de las páginas
                         internas (ese orbe azul en la pestaña), el logo de about:, y el «wordmark»,
                         que es una IMAGEN con la palabra dibujada, no un texto traducible.

Se reemplazan 10 imágenes + las dos tablas de cadenas + los dos wordmarks. Cada imagen va con LAS
MISMAS DIMENSIONES que la que sustituye (192, 384, 300x236, 16/32/48/64/128): son tamaños que el CSS
del chrome da por sentados, y meter otro tamaño descoloca la página en vez de rebrandearla. El
`about.png` (300x236, no cuadrado) lleva el medallón ENCAJADO y centrado, no estirado.

El wordmark conserva el `viewBox` exacto del original (0 0 372 99) y `fill="context-fill"`, que es
la convención de Gecko para que el color lo ponga quien lo usa — así sigue el tema claro/oscuro solo
en vez de imponer un color.

La variante «private» usa el mismo medallón a propósito: inventar una segunda marca para un modo del
navegador es ruido, y ese modo ya se distingue por su propio chrome.

MÉTODO, que es lo que más vale de esta vuelta: `grim` está en el corpus (incoming-wlr), se hidrata
en el mismo rootfs y captura la pantalla real desde dentro de la jaula. Dejé de decir «mirá tu
pantalla» y pasé a mirarla yo.

2660063f99a19c0fa83e474dafc6d9453a4099e2 · ruwaq Sergio · (1 killa ñawpaq) · tayta 17a7eda1c · kay commitpi sach'ata qhaway

Semántico sayk'uy · 2

recipes/atuq/tools/rebrand.py

6 qillqakuna · +64 −6

diff --git a/recipes/atuq/branding/brand.properties b/recipes/atuq/branding/brand.properties
new file mode 100644
index 00000000..7fb8af3a
--- /dev/null
+++ b/recipes/atuq/branding/brand.properties
@@ -0,0 +1,3 @@
+brandShorterName=atuq
+brandShortName=atuq
+brandFullName=atuq
diff --git a/recipes/atuq/branding/icons/atuq-about-300x236.png b/recipes/atuq/branding/icons/atuq-about-300x236.png
new file mode 100644
index 00000000..59e52d88
Binary files /dev/null and b/recipes/atuq/branding/icons/atuq-about-300x236.png differ
diff --git a/recipes/atuq/branding/icons/atuq192.png b/recipes/atuq/branding/icons/atuq192.png
new file mode 100644
index 00000000..d5af06ca
Binary files /dev/null and b/recipes/atuq/branding/icons/atuq192.png differ
diff --git a/recipes/atuq/branding/icons/atuq384.png b/recipes/atuq/branding/icons/atuq384.png
new file mode 100644
index 00000000..6b9056f3
Binary files /dev/null and b/recipes/atuq/branding/icons/atuq384.png differ
diff --git a/recipes/atuq/branding/wordmark.svg b/recipes/atuq/branding/wordmark.svg
new file mode 100644
index 00000000..f43484fc
--- /dev/null
+++ b/recipes/atuq/branding/wordmark.svg
@@ -0,0 +1,10 @@
+<!-- Reemplaza a `about-wordmark.svg` y `firefox-wordmark.svg` dentro de browser/omni.ja.
+   - El `viewBox` se conserva EXACTO (0 0 372 99): es el del original, y cambiarlo descolocaría
+   - todo lo que lo posiciona desde CSS.
+   - `fill="context-fill"` es la convención de Gecko para que el color lo ponga quien lo usa —
+   - así el wordmark sigue el tema claro/oscuro solo, en vez de imponer un color. -->
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 372 99">
+  <text x="186" y="76" text-anchor="middle" fill="context-fill"
+        font-family="system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
+        font-size="82" font-weight="600" letter-spacing="2">atuq</text>
+</svg>
diff --git a/recipes/atuq/tools/rebrand.py b/recipes/atuq/tools/rebrand.py
index 61ead1f4..c53d2322 100644
--- a/recipes/atuq/tools/rebrand.py
+++ b/recipes/atuq/tools/rebrand.py
@@ -179,6 +179,55 @@ def escribir_iconos():
     return escritos
 
 
+# ── 3.bis QUÉ SE REEMPLAZA DENTRO DE browser/omni.ja ───────────────────────────────────────────
+# La v0.2 cambió sólo `brand.ftl` y el resultado se vio en pantalla: el TÍTULO de la ventana decía
+# «New Tab — atuq» y la PÁGINA seguía mostrando el logo y la palabra «Nightly». La lección es que el
+# branding de Gecko vive en tres sitios y sólo uno es texto FTL:
+#
+#   · `brand.ftl`        — las cadenas nuevas (título de ventana, menús). Ya estaba.
+#   · `brand.properties` — las cadenas VIEJAS, formato heredado. Seguía diciendo Nightly.
+#   · los PNG y SVG de `chrome/browser/content/branding/` — TODO lo que se ve: el favicon de las
+#     páginas internas (ese orbe azul en la pestaña), el logo de about:, y el «wordmark» que es una
+#     IMAGEN con la palabra dibujada, no un texto traducible.
+#
+# Cada imagen se reemplaza por otra de LAS MISMAS DIMENSIONES: son tamaños que el CSS del chrome da
+# por sentados, y meter un PNG de otro tamaño descoloca la página en vez de rebrandearla.
+IMAGENES = {
+    "chrome/browser/content/branding/icon16.png": "atuq16.png",
+    "chrome/browser/content/branding/icon32.png": "atuq32.png",
+    "chrome/browser/content/branding/icon48.png": "atuq48.png",
+    "chrome/browser/content/branding/icon64.png": "atuq64.png",
+    "chrome/browser/content/branding/icon128.png": "atuq128.png",
+    "chrome/browser/content/branding/about-logo.png": "atuq192.png",
+    "chrome/browser/content/branding/about-logo@2x.png": "atuq384.png",
+    # La variante «private» existe para distinguir la ventana privada. Se usa el mismo medallón a
+    # propósito: inventar una segunda marca para un modo del navegador es ruido, y el modo ya se
+    # distingue por su propio chrome.
+    "chrome/browser/content/branding/about-logo-private.png": "atuq192.png",
+    "chrome/browser/content/branding/about-logo-private@2x.png": "atuq384.png",
+    "chrome/browser/content/branding/about.png": "atuq-about-300x236.png",
+}
+
+
+def reemplazos_branding():
+    r = {}
+    for destino, fuente in IMAGENES.items():
+        ruta = os.path.join(OVERLAY, "branding", "icons", fuente)
+        if not os.path.isfile(ruta) or os.path.getsize(ruta) == 0:
+            fatal(f"falta o está vacío el asset {ruta}")
+        with open(ruta, "rb") as fh:
+            r[destino] = fh.read()
+    for destino, fuente in (
+        ("localization/en-US/branding/brand.ftl", "brand.ftl"),
+        ("chrome/en-US/locale/branding/brand.properties", "brand.properties"),
+        ("chrome/browser/content/branding/about-wordmark.svg", "wordmark.svg"),
+        ("chrome/browser/content/branding/firefox-wordmark.svg", "wordmark.svg"),
+    ):
+        with open(os.path.join(OVERLAY, "branding", fuente), "rb") as fh:
+            r[destino] = fh.read()
+    return r
+
+
 # ── 4.bis La extensión de sistema: página de inicio y pestaña nueva ────────────────────────────
 # POR QUÉ UNA EXTENSIÓN Y NO UNA PREF. `browser.startup.homepage` acepta una URL, pero la pestaña
 # NUEVA no se puede redirigir con una pref desde hace años: el único mecanismo soportado es
@@ -280,12 +329,7 @@ def main():
     huella = huella_overlay()
     bid = build_id(huella)
     claves = rebrandear_application_ini(bid)
-    with open(os.path.join(OVERLAY, "branding", "brand.ftl"), "rb") as fh:
-        brand = fh.read()
-    n = repack_omni(
-        os.path.join(APPDIR, "browser", "omni.ja"),
-        {"localization/en-US/branding/brand.ftl": brand},
-    )
+    n = repack_omni(os.path.join(APPDIR, "browser", "omni.ja"), reemplazos_branding())
     iconos = escribir_iconos()
     binarios = renombrar_binarios()
     # Después del renombrado: los ficheros ya se llaman atuq/atuq-bin.
@@ -295,6 +339,7 @@ def main():
     print(f"rebrand: overlay {huella[:16]}… ⇒ BuildID {bid}")
     print(f"rebrand: application.ini {sorted(claves)}")
     print(f"rebrand: browser/omni.ja re-empacado, {n} entradas, orden y STORED preservados")
+    print(f"rebrand: branding dentro del zip — {len(IMAGENES)} imágenes + brand.ftl + brand.properties + 2 wordmarks")
     print(f"rebrand: {len(iconos)} iconos escritos ({', '.join(str(s) for s in TAMANOS)} px)")
     print(f"rebrand: binarios {', '.join(binarios)} (+ symlink firefox → {MARCA})")
     for l in parches: