{
  "sha": "076199724f6a01cabba5a9e93965be521b8dcae1",
  "message": "Merge pull request #116 from nnneeeooo-nnneeeooo/fix/canonical-logo-everywhere\n\nRestore canonical SKYTICAL logo everywhere",
  "author": {
    "login": "nnneeeooo-nnneeeooo",
    "name": "",
    "email": ""
  },
  "committer": {
    "login": "web-flow",
    "name": "",
    "email": ""
  },
  "created_at": "2026-08-15T05:55:44Z",
  "files": [
    {
      "filename": "static/logo-fix.css",
      "previous_filename": "",
      "status": "removed",
      "additions": 0,
      "deletions": 45,
      "changes": 45
    },
    {
      "filename": "static/skytical-wing.svg",
      "previous_filename": "",
      "status": "removed",
      "additions": 0,
      "deletions": 5,
      "changes": 5
    },
    {
      "filename": "templates/base.html",
      "previous_filename": "",
      "status": "modified",
      "additions": 6,
      "deletions": 15,
      "changes": 21
    },
    {
      "filename": "tests/test_logo_assets.py",
      "previous_filename": "",
      "status": "modified",
      "additions": 5,
      "deletions": 16,
      "changes": 21
    }
  ],
  "diff": "@@ -1,45 +0,0 @@\\n-/* Keep the approved wordmark paths, but cover the raster wing embedded in the\\n-   Canva SVG with a matching vector wing. This avoids the grey/white fringe\\n-   Safari can expose when the embedded PNG is resampled on high-DPI screens. */\\n-.skytical-logo-wrap {\\n-  position: relative;\\n-  display: block;\\n-  width: 100%;\\n-  line-height: 0;\\n-}\\n-.skytical-logo-wrap::after {\\n-  content: \"\";\\n-  position: absolute;\\n-  z-index: 1;\\n-  inset: 0 auto 0 0;\\n-  width: 24.5%;\\n-  background: var(--color-bg);\\n-  pointer-events: none;\\n-}\\n-.skytical-logo-wrap > .skytical-wing-overlay {\\n-  position: absolute;\\n-  z-index: 2;\\n-  inset: 0 auto 0 0;\\n-  width: 25%;\\n-  height: 100%;\\n-  display: block;\\n-  object-fit: fill;\\n-  pointer-events: none;\\n-}\\n-.skytical-logo-wrap > .brand-logo,\\n-.skytical-logo-wrap > .footer-logo {\\n-  width: 100%;\\n-  max-width: none;\\n-}\\n-.brand-logo-wrap {\\n-  max-width: 320px;\\n-}\\n-.footer-logo-wrap {\\n-  width: min(100%, 300px);\\n-}\\n-\\n-@media (max-width: 720px) {\\n-  .brand-logo-wrap {\\n-    max-width: 224px;\\n-  }\\n-}\\n@@ -1,5 +0,0 @@\\n-<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"250\" height=\"220\" viewBox=\"0 0 250 220\" role=\"img\" aria-label=\"SKYTICAL wing mark\" shape-rendering=\"geometricPrecision\">\\n-  <path fill=\"#EC3013\" d=\"M21.4 38.6C53 42 125 54 168.5 63C184 66 197 69 204 73C210 76 215 80 216.7 83.9L42 73C34 63 25 50 21.4 38.6Z\"/>\\n-  <path fill=\"#F2643C\" d=\"M48.6 85.7C83 85 164 85 216.7 84.4C218 86 218.5 89 218 91.3C215 98 211 105 206.6 111.4L64.3 104C58 99 52 92 48.6 85.7Z\"/>\\n-  <path fill=\"#F2A23A\" d=\"M205.7 111.4L67.8 112.7C70 120 76 129 82.3 134.5L157.6 137.1L89.7 141.9C82 149 75 160 70 173.3L162.4 170.6C174 169.8 183 163 189 154C195 145 200 129 205.7 111.4Z\"/>\\n-</svg>\\n@@ -37,7 +37,6 @@\\n <link href=\"https://fonts.googleapis.com/css2?family=Archivo:wght@400;600;800&family=Noto+Sans+TC:wght@400;500;700;900&display=swap\" rel=\"stylesheet\">\\n <link rel=\"stylesheet\" href=\"{{ base }}/assets/modernist.css\">\\n <link rel=\"stylesheet\" href=\"{{ base }}/assets/site.css?v={{ asset_version }}\">\\n-<link rel=\"stylesheet\" href=\"{{ base }}/assets/logo-fix.css?v=20260814a\">\\n {% block head_extra %}{% endblock %}\\n <script src=\"{{ base }}/assets/app.js?v={{ asset_version }}\" defer></script>\\n </head>\\n@@ -86,12 +85,8 @@\\n   <div class=\"brand-shell\">\\n     <div class=\"brand-row\">\\n       <a class=\"brand-link\" href=\"{{ home_url }}\" aria-label=\"SKYTICAL — {{ t.homeLabel }}\">\\n-        <span class=\"skytical-logo-wrap brand-logo-wrap\">\\n-          <img class=\"brand-logo\" src=\"{{ base }}/assets/skytical-logo.svg?v={{ asset_version }}\"\\n-               alt=\"SKYTICAL — SKYLINE TO AVIATION NEWS\" width=\"1000\" height=\"220\">\\n-          <img class=\"skytical-wing-overlay\" src=\"{{ base }}/assets/skytical-wing.svg?v=20260814a\"\\n-               alt=\"\" aria-hidden=\"true\" width=\"250\" height=\"220\">\\n-        </span>\\n+        <img class=\"brand-logo\" src=\"{{ base }}/assets/skytical-logo.svg?v={{ asset_version }}\"\\n+             alt=\"SKYTICAL — SKYLINE TO AVIATION NEWS\" width=\"1000\" height=\"220\">\\n       </a>\\n       <button class=\"nav-toggle\" type=\"button\" data-nav-toggle aria-expanded=\"false\" aria-controls=\"site-nav\">\\n         <span class=\"nav-toggle-icon\" aria-hidden=\"true\">☰</span>\\n@@ -117,7 +112,7 @@\\n           {%- else -%}\\n           <span class=\"ticker-item\"><b class=\"ticker-time{% if it.hot %} hot{% endif %}\">{{ it.time }}</b>&#8195;{{ it.text }}</span>\\n           {%- endif -%}\\n-          {%- if not loop.last %}<span class=\"ticker-sep\">▪</span>{% endif -%}\\n+          {%- if not loop.last %}<span class=\"ticker-sep\">▪</span>{% endif %}\\n           {%- endfor -%}\\n         </span>\\n         {% endfor %}\\n@@ -129,13 +124,9 @@\\n   <div style=\"border-top:2px solid var(--color-divider);\">\\n     <div class=\"footer-grid\">\\n       <div>\\n-        <span class=\"skytical-logo-wrap footer-logo-wrap\">\\n-          <img class=\"footer-logo\" src=\"{{ base }}/assets/skytical-logo.svg?v={{ asset_version }}\"\\n-               alt=\"SKYTICAL — SKYLINE TO AVIATION NEWS\" width=\"1000\" height=\"220\"\\n-               loading=\"lazy\">\\n-          <img class=\"skytical-wing-overlay\" src=\"{{ base }}/assets/skytical-wing.svg?v=20260814a\"\\n-               alt=\"\" aria-hidden=\"true\" width=\"250\" height=\"220\" loading=\"lazy\">\\n-        </span>\\n+        <img class=\"footer-logo\" src=\"{{ base }}/assets/skytical-logo.svg?v={{ asset_version }}\"\\n+             alt=\"SKYTICAL — SKYLINE TO AVIATION NEWS\" width=\"1000\" height=\"220\"\\n+             loading=\"lazy\">\\n         <p class=\"text-muted\" style=\"font-size:12.5px;line-height:1.8;margin-top:8px;\">{{ t.footerAbout }}</p>\\n         <p class=\"text-muted\" style=\"font-size:11.5px;letter-spacing:.04em;margin:8px 0 0;\">{{ t.lastBuild }} {{ build.stamp }} UTC</p>\\n         <a class=\"btn btn-secondary footer-changelog-button\" href=\"{{ changelog_url }}\">{{ t.footerChangelog }} →</a>\\n@@ -26,14 +26,10 @@ def main() -> None:\\n     logo_path = ROOT / \"static\" / \"skytical-logo.svg\"\\n     mark_path = ROOT / \"static\" / \"skytical-mark.svg\"\\n     social_path = ROOT / \"static\" / \"skytical-social.png\"\\n-    wing_path = ROOT / \"static\" / \"skytical-wing.svg\"\\n-    logo_fix_path = ROOT / \"static\" / \"logo-fix.css\"\\n     home = (ROOT / \"site\" / \"index.html\").read_text(encoding=\"utf-8\")\\n     css = (ROOT / \"static\" / \"site.css\").read_text(encoding=\"utf-8\")\\n     logo = logo_path.read_text(encoding=\"utf-8\")\\n     mark = mark_path.read_text(encoding=\"utf-8\")\\n-    wing = wing_path.read_text(encoding=\"utf-8\")\\n-    logo_fix = logo_fix_path.read_text(encoding=\"utf-8\")\\n \\n     assert hashlib.sha256(master.read_bytes()).hexdigest() == (\\n         \"53ccee38ecb372a446ebd89737070852e0d8876b04af7efdb1709e78d8553621\"\\n@@ -64,20 +60,13 @@ def main() -> None:\\n         ) in asset\\n \\n     assert png_dimensions(social_path) == (1200, 630)\\n-    assert f'/assets/skytical-logo.svg?v={build.ASSET_VERSION}' in home\\n+    assert home.count(f'/assets/skytical-logo.svg?v={build.ASSET_VERSION}') >= 2\\n     assert f'/assets/skytical-mark.svg?v={build.ASSET_VERSION}' in home\\n     assert f'/assets/skytical-social.png?v={build.ASSET_VERSION}' in home\\n-    assert '/assets/logo-fix.css?v=20260814a' in home\\n-    assert '/assets/skytical-wing.svg?v=20260814a' in home\\n-    assert (ROOT / \"site\" / \"assets\" / \"logo-fix.css\").is_file()\\n-    assert (ROOT / \"site\" / \"assets\" / \"skytical-wing.svg\").is_file()\\n-    assert \"data:image/\" not in wing.lower()\\n-    assert wing.count(\"<path \") == 3\\n-    assert 'fill=\"#EC3013\"' in wing\\n-    assert 'fill=\"#F2643C\"' in wing\\n-    assert 'fill=\"#F2A23A\"' in wing\\n-    assert \".skytical-wing-overlay\" in logo_fix\\n-    assert \"width: 25%;\" in logo_fix\\n+    assert \"/assets/logo-fix.css\" not in home\\n+    assert \"/assets/skytical-wing.svg\" not in home\\n+    assert \"skytical-wing-overlay\" not in home\\n+    assert \"skytical-logo-wrap\" not in home\\n     assert \"brightness(0) invert(1)\" not in css\\n \\n     print(\"test_logo_assets: OK\")"
}
