diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 229a4d599..5d70ee765 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -256,3 +256,10 @@ jobs:
env:
PYTEST_SHARD: ${{ matrix.shard }}
run: python -m pytest -q -rs --durations=25 --shard "$PYTEST_SHARD"
+
+ - name: Playwright mobile layout checks (shard 1/4 only)
+ if: steps.docs-check.outputs.docs_only != 'true' && matrix.shard == '1/4'
+ run: |
+ ODYSSEUS_TEST_PYTHON=python ODYSSEUS_LAYOUT_BROWSER=chromium npx --no-install playwright test \
+ --config tests/e2e/ios-layout.config.cjs \
+ --reporter=line
diff --git a/package.json b/package.json
index aa454e017..79cf83c3d 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,11 @@
"test:photo-editor": "playwright test --config tests/e2e/playwright.config.js",
"test:photo-editor:install": "playwright install chromium firefox webkit",
"test:photo-editor:firefox": "PHOTO_EDITOR_E2E_BROWSER=firefox playwright test --config tests/e2e/playwright.config.js",
- "test:photo-editor:webkit": "PHOTO_EDITOR_E2E_BROWSER=webkit playwright test --config tests/e2e/playwright.config.js"
+ "test:photo-editor:webkit": "PHOTO_EDITOR_E2E_BROWSER=webkit playwright test --config tests/e2e/playwright.config.js",
+ "test:ios-layout": "playwright test --config tests/e2e/ios-layout.config.cjs",
+ "test:ios-layout:chromium": "ODYSSEUS_LAYOUT_BROWSER=chromium playwright test --config tests/e2e/ios-layout.config.cjs",
+ "test:ios-layout:webkit": "ODYSSEUS_LAYOUT_BROWSER=webkit playwright test --config tests/e2e/ios-layout.config.cjs",
+ "test:ios-layout:install": "playwright install chromium webkit"
},
"devDependencies": {
"@antithesishq/bombadil": "^0.7.0",
diff --git a/static/css/17-research.css b/static/css/17-research.css
index c4de5cb75..2c43aa2c8 100644
--- a/static/css/17-research.css
+++ b/static/css/17-research.css
@@ -2690,11 +2690,14 @@ body.theme-frosted .modal {
max-height: 95dvh !important;
}
+ /* Notes and Documents must respect the same viewport and safe-area
+ top as other mobile full-height sheets. Keep these authoritative rules
+ consistent with 05-documents.css and 14-email.css. */
body.doc-view .doc-editor-pane,
body.notes-view .notes-pane {
- inset: auto 0 0 !important;
- height: 95dvh !important;
- max-height: 95dvh !important;
+ inset: var(--sheet-top) 0 0 !important;
+ height: calc(var(--app-height) - var(--sheet-top)) !important;
+ max-height: calc(var(--app-height) - var(--sheet-top)) !important;
}
}
diff --git a/static/index.html b/static/index.html
index aafacc2e1..df3045af3 100644
--- a/static/index.html
+++ b/static/index.html
@@ -16,13 +16,6 @@