{
  "sha": "5f29896586be218c4b732454a345417d5b62e845",
  "message": "Fix iPad portrait homepage ordering (#184)",
  "author": {
    "login": "nnneeeooo-nnneeeooo",
    "name": "",
    "email": ""
  },
  "committer": {
    "login": "web-flow",
    "name": "",
    "email": ""
  },
  "created_at": "2026-09-12T01:46:59Z",
  "files": [
    {
      "filename": "static/app.js",
      "previous_filename": "",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2
    },
    {
      "filename": "static/site.css",
      "previous_filename": "",
      "status": "modified",
      "additions": 3,
      "deletions": 3,
      "changes": 6
    },
    {
      "filename": "tests/test_mobile_layout.py",
      "previous_filename": "",
      "status": "modified",
      "additions": 3,
      "deletions": 2,
      "changes": 5
    }
  ],
  "diff": "@@ -111,7 +111,7 @@\\n     document.addEventListener(\"keydown\", function (event) {\\n       if (event.key === \"Escape\") setNavOpen(false);\\n     });\\n-    var desktopNav = window.matchMedia(\"(min-width: 901px)\");\\n+    var desktopNav = window.matchMedia(\"(min-width: 1101px)\");\\n     desktopNav.addEventListener(\"change\", function (event) {\\n       if (event.matches) setNavOpen(false);\\n     });\\n@@ -570,9 +570,9 @@ a.flash-row:hover { color: inherit; }\\n   .changelog-group { grid-template-columns: 96px minmax(0, 1fr); }\\n }\\n \\n-/* Tablet portrait (including the 820px-wide iPad Air): use the compact\\n-   navigation before the full desktop nav starts scrolling or squeezing. */\\n-@media (max-width: 900px) {\\n+/* Tablet portrait, including iPad desktop-site mode with its wider layout\\n+   viewport: keep the headline first and use compact navigation. */\\n+@media (max-width: 1100px) {\\n   .page { width: 100%; overflow-x: clip; }\\n   .brand-row {\\n     padding: 9px 16px; gap: 12px; flex-wrap: wrap;\\n@@ -83,7 +83,8 @@ def main() -> None:\\n         \"China Airlines Adjusts Two Taoyuan-Fukuoka Flights After Airport Restrictions\")\\n     assert len(en_short.split()) <= 14 and \"…\" not in en_short\\n \\n-    assert \"@media (max-width: 900px)\" in css\\n+    assert css.count(\"@media (max-width: 1100px)\") == 2\\n+    assert \"@media (max-width: 900px)\" not in css\\n     assert \"@media (max-width: 720px)\" in css\\n     assert \".page { width: 100%; overflow-x: clip; }\" in css\\n     assert \"aspect-ratio: 50 / 11; overflow: hidden;\" in css\\n@@ -117,7 +118,7 @@ def main() -> None:\\n     assert \".marquee-track .ticker-pass:nth-child(2) { display: none; }\" in css\\n     assert 'setAttribute(\"aria-expanded\"' in script\\n     assert 'event.key === \"Escape\"' in script\\n-    assert 'matchMedia(\"(min-width: 901px)\")' in script\\n+    assert 'matchMedia(\"(min-width: 1101px)\")' in script\\n     assert 'matches ? 32 : 52' in script\\n     assert 'style.setProperty(\"--ticker-duration\"' in script\\n "
}
