v0.5.1 fixed mobile PWA refesh

This commit is contained in:
2026-03-10 12:08:49 -04:00
parent 110624c866
commit 605d10ae02
6 changed files with 31 additions and 4 deletions

View File

@@ -7,7 +7,7 @@ TZ=UTC
# Copy this file to .env and customize
# Image version to run (set by build.sh, or use 'latest')
JAMA_VERSION=0.5.0
JAMA_VERSION=0.5.1
# Default admin credentials (used on FIRST RUN only)
ADMIN_NAME=Admin User

View File

@@ -1,6 +1,6 @@
{
"name": "jama-backend",
"version": "0.5.0",
"version": "0.5.1",
"description": "TeamChat backend server",
"main": "src/index.js",
"scripts": {

View File

@@ -13,7 +13,7 @@
# ─────────────────────────────────────────────────────────────
set -euo pipefail
VERSION="${1:-0.5.0}"
VERSION="${1:-0.5.1}"
ACTION="${2:-}"
REGISTRY="${REGISTRY:-}"
IMAGE_NAME="jama"

View File

@@ -1,6 +1,6 @@
{
"name": "jama-frontend",
"version": "0.5.0",
"version": "0.5.1",
"private": true,
"scripts": {
"dev": "vite",

View File

@@ -30,6 +30,11 @@
html, body, #root { height: 100%; min-width: 320px; font-family: var(--font); color: var(--text-primary); background: var(--background); }
/* Disable pull-to-refresh in PWA standalone mode — prevents viewport shift bug */
html {
overscroll-behavior-y: none;
}
button { font-family: var(--font); cursor: pointer; border: none; background: none; }
input, textarea { font-family: var(--font); }
a { color: inherit; text-decoration: none; }

View File

@@ -17,6 +17,28 @@ if ('serviceWorker' in navigator) {
}
// Disable pull-to-refresh in PWA standalone mode to prevent viewport shift bug.
// The CSS overscroll-behavior-y:none handles most browsers; this catches the rest.
(function () {
const isStandalone = window.matchMedia('(display-mode: standalone)').matches
|| window.navigator.standalone === true;
if (!isStandalone) return;
let startY = 0;
document.addEventListener('touchstart', e => {
startY = e.touches[0].clientY;
}, { passive: true });
document.addEventListener('touchmove', e => {
// Only block downward pull at the very top of the document
const dy = e.touches[0].clientY - startY;
if (dy > 0 && (document.documentElement.scrollTop === 0 || document.body.scrollTop === 0)) {
e.preventDefault();
}
}, { passive: false });
})();
// Clear badge count when user focuses the app
window.addEventListener('focus', () => {
if (navigator.clearAppBadge) navigator.clearAppBadge().catch(() => {});