Files
lsky-pro-docker/docker-compose.yaml
T
mole404 565aa3fefc feat: iOS 长按菜单修复 + 源码钉死在 911275c + GHCR 发布
问题:iOS WebKit 永远不派发 contextmenu(WebKit bug 213953),长按图片只弹系统
callout,导致"我的图片"页的自定义菜单在 iPhone/iPad 上完全不可用
(resources/js/context-js.js 的菜单只挂在 contextmenu 上)。

改动:
- overlay/context-js.js:纯增量补丁。新增仅 iOS 生效的长按分支(touchstart+500ms,
  移动 >10px / 多指 / 短按都取消),复用原本的开菜单逻辑(beforeOpen/afterOpen 照旧);
  注入 -webkit-touch-callout:none 压掉原生菜单(只作用于本库绑定的元素范围);
  抬手吞掉 iOS 补发的 click,避免长按后误开图片预览;长按与 contextmenu 之间 700ms 去重。
  判定只在 iPad/iPhone/iPod(含 iPadOS 伪装的 MacIntel+maxTouchPoints>1)为真,
  Android / Windows / 真 Mac(含 M 系列,maxTouchPoints=0)一行新代码都不执行。
- overlay/images.blade.php:只给脚本加 ?v=ios-longpress,绕开 Safari 的启发式缓存
- Dockerfile:源码钉死 911275c(= 2024-04-29 那版线上镜像使用的 master HEAD);
  基础镜像显式 bookworm;install-php-extensions 钉版本;构建期两处 md5 自证
- .github/workflows/build-image.yaml:替换上游的定时构建,改推 GHCR + 构建后真机自证
  (核 md5、记录 PHP/扩展/Debian、真起容器 curl 安装页)
- test/:node + jsdom 行为测试(23 项,覆盖 iOS/iPad/Mac/Android/Windows 五类场景)
- README:补丁原理、跨平台隔离说明、升级/回滚步骤(含"换镜像不会更新已有卷代码"这个坑)

致谢与许可保留上游全部署名与 LICENSE(AGPL-3.0)。
2026-09-28 16:41:41 +08:00

39 lines
1.1 KiB
YAML

version: '3'
services:
lskypro:
# 本 fork 的镜像(含 iOS 长按菜单修复)
image: ghcr.io/mole404/lsky-pro-docker:latest
restart: unless-stopped
hostname: lskypro
container_name: lskypro
environment:
- WEB_PORT=8089
volumes:
- $PWD/web:/var/www/html/
ports:
- "9080:8089"
networks:
- lsky-net
# 注:arm64的无法使用该镜像,请选择sqlite或自建数据库
mysql-lsky:
image: mysql:5.7.22
restart: unless-stopped
# 主机名,可作为"数据库连接地址"
hostname: mysql-lsky
# 容器名称
container_name: mysql-lsky
# 修改加密规则
command: --default-authentication-plugin=mysql_native_password
volumes:
- $PWD/mysql/data:/var/lib/mysql
- $PWD/mysql/conf:/etc/mysql
- $PWD/mysql/log:/var/log/mysql
environment:
MYSQL_ROOT_PASSWORD: lAsWjb6rzSzENUYg # 数据库root用户密码,自行修改
MYSQL_DATABASE: lsky-data # 可作为"数据库名称/路径"
networks:
- lsky-net
networks:
lsky-net: {}