portrait: lock orientation + portrait-optimized felt table
CI/CD / CI - API (dotnet build + engine sim) (push) Successful in 38s
CI/CD / CI - Web (tsc + next build) (push) Successful in 1m9s
CI/CD / Deploy - local stack (db + server + web) (push) Successful in 57s

- Lock the app to portrait: AndroidManifest screenOrientation="portrait" and PWA
  manifest orientation "portrait".
- GameTable felt now occupies the middle band (between top HUD and the hand) with
  portrait proportions (w<=560, tall) so the you/partner/opponents diamond fits a
  tall screen comfortably instead of a wide landscape ellipse.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-12 07:51:04 +03:30
parent a7c0900c3b
commit 6c431fee3e
3 changed files with 5 additions and 4 deletions
+1
View File
@@ -15,6 +15,7 @@
android:label="@string/title_activity_main"
android:theme="@style/AppTheme.NoActionBarLaunch"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:exported="true">
<intent-filter>
+1 -1
View File
@@ -7,7 +7,7 @@
"start_url": "/",
"display": "fullscreen",
"display_override": ["fullscreen", "standalone", "minimal-ui"],
"orientation": "any",
"orientation": "portrait",
"background_color": "#060c1f",
"theme_color": "#060c1f",
"icons": [
+3 -3
View File
@@ -184,9 +184,9 @@ export function GameTable({
)}
</AnimatePresence>
{/* Felt table */}
<div className="absolute inset-0 flex items-center justify-center p-4">
<div className="felt relative w-[min(94vw,1100px)] h-[min(82vh,720px)] rounded-[42%]">
{/* Felt table — portrait proportions (tall, centered between HUD and hand) */}
<div className="absolute inset-x-0 top-16 bottom-44 flex items-center justify-center p-3">
<div className="felt relative w-[min(96vw,560px)] h-full max-h-[680px] rounded-[44%]">
{/* opponent + partner seats */}
<SeatAvatar seat={2} className="absolute top-3 left-1/2 -translate-x-1/2" />
<SeatAvatar seat={1} className="absolute top-1/2 right-3 -translate-y-1/2" />