From bcf1b87e821bc6f04599606a61b0eb295125f7c1 Mon Sep 17 00:00:00 2001 From: KenanZhu Date: Sun, 11 Oct 2026 16:59:00 +0800 Subject: [PATCH] preview: remove screenshot export and restore UI animations --- .github/scripts/package_release.py | 3 - .github/scripts/test_package_release.py | 10 - README.md | 1 - docs/README.zh-CN.md | 2 +- preview/index.html | 238 ++++++--------------- preview/lib/html2canvas/LICENSE | 22 -- preview/lib/html2canvas/README.md | 11 - preview/lib/html2canvas/html2canvas.min.js | 20 -- 8 files changed, 70 insertions(+), 237 deletions(-) delete mode 100644 preview/lib/html2canvas/LICENSE delete mode 100644 preview/lib/html2canvas/README.md delete mode 100644 preview/lib/html2canvas/html2canvas.min.js diff --git a/.github/scripts/package_release.py b/.github/scripts/package_release.py index 3b0171c..eecc0de 100644 --- a/.github/scripts/package_release.py +++ b/.github/scripts/package_release.py @@ -21,9 +21,6 @@ REQUIRED_FILES = ( "docs/README.zh-CN.md", "docs/CONTRIBUTING.zh-CN.md", "preview/index.html", - "preview/lib/html2canvas/html2canvas.min.js", - "preview/lib/html2canvas/LICENSE", - "preview/lib/html2canvas/README.md", ) OPTIONAL_ROOT_DOCUMENTS = ("AGENTS.md", "THIRD_PARTY_NOTICES.md") DOCUMENTATION_DIRECTORIES = ("docs", ".github/release-notes") diff --git a/.github/scripts/test_package_release.py b/.github/scripts/test_package_release.py index 33f6476..4118c1b 100644 --- a/.github/scripts/test_package_release.py +++ b/.github/scripts/test_package_release.py @@ -30,9 +30,6 @@ class PackagingTests(unittest.TestCase): "docs/README.zh-CN.md", "docs/CONTRIBUTING.zh-CN.md", "preview/index.html", - "preview/lib/html2canvas/html2canvas.min.js", - "preview/lib/html2canvas/LICENSE", - "preview/lib/html2canvas/README.md", "docs/images/README.md", ) @@ -133,15 +130,8 @@ class PackagingTests(unittest.TestCase): self.assertEqual(expected_members, zipped) self.assertEqual(expected_members, tarred) self.assertIn(prefix + "themes/demo/mail/base/head.tmpl", zipped) - for name in ("html2canvas.min.js", "LICENSE", "README.md"): - self.assertIn(prefix + "preview/lib/html2canvas/" + name, zipped) self.assertFalse(any("stale" in name or "/build/" in name for name in zipped)) - def test_missing_screenshot_library_is_rejected(self): - (self.root / "preview/lib/html2canvas/html2canvas.min.js").unlink() - with self.assertRaisesRegex(ValueError, "Expected regular file"): - PACKER.collect(self.root, self.VERSION) - def test_existing_archives_are_not_overwritten(self): PACKER.package(self.root, self.VERSION, self.output) original_archives = { diff --git a/README.md b/README.md index 6a5213b..560f3ce 100644 --- a/README.md +++ b/README.md @@ -203,7 +203,6 @@ Contributions to themes, tools, documentation and translations are welcome. The This project is licensed under [MIT](LICENSE). Generated release archives retain Gitea's license and snapshot provenance. --- - ### Notes [1](#notes): [Mail templates | Gitea Documentation](https://docs.gitea.com/administration/mail-templates/) diff --git a/docs/README.zh-CN.md b/docs/README.zh-CN.md index fefd2db..935a244 100644 --- a/docs/README.zh-CN.md +++ b/docs/README.zh-CN.md @@ -199,7 +199,7 @@ preview/rendered/.js # 各语言的预览数据 ## 许可证 -本项目采用 [MIT 许可证](../LICENSE)。生成的发行包保留 Gitea 许可证和快照来源信息,详见[第三方声明](../THIRD_PARTY_NOTICES.md)。 +本项目采用 [MIT 许可证](../LICENSE)。生成的发行包保留 Gitea 许可证和快照来源信息。 --- ### 注释 diff --git a/preview/index.html b/preview/index.html index 3649999..f593798 100644 --- a/preview/index.html +++ b/preview/index.html @@ -29,10 +29,6 @@ body{font-family:system-ui,-apple-system,sans-serif;background:var(--bg);color:v #topbar .btn-group button+button{border-left:none} #topbar .btn-group button.on{background:var(--accent);color:#000;border-color:var(--accent);font-weight:600} #topbar .hint{font-size:10px;color:var(--muted);opacity:.5;white-space:nowrap} -#btn-screenshot{display:inline-flex;align-items:center;gap:6px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:var(--rad);padding:6px 12px;font-size:12px;cursor:pointer} -#btn-screenshot svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;flex-shrink:0} -#btn-screenshot:hover:not(:disabled){border-color:var(--accent)} -#btn-screenshot:disabled{opacity:.45;cursor:wait} button:focus-visible{outline:2px solid var(--accent);outline-offset:3px} /* Topbar responsive — progressively compact as width shrinks */ @@ -129,12 +125,15 @@ section.collapsed .section-chevron{transform:rotate(-90deg)} /* Collapsible content wrapper */ .section-content{ - margin-top:10px; + display:grid;grid-template-rows:1fr;opacity:1;margin-top:10px; + transition:grid-template-rows .3s ease,opacity .25s ease,margin-top .3s ease; } +.section-content-inner{min-height:0;overflow:hidden} section.collapsed .section-content{ - display:none; + grid-template-rows:0fr;opacity:0;margin-top:0; } -#sec-params .section-content{max-height:50vh;overflow:auto;overscroll-behavior:contain} +#sec-params .section-content-inner{max-height:50vh;overflow:auto;overscroll-behavior:contain} +section.collapsed .section-content-inner{overflow:hidden} #panel .card{background:var(--bg);border-radius:var(--rad);padding:10px 12px;margin-bottom:8px} #panel .card:last-child{margin-bottom:0} @@ -151,12 +150,12 @@ section.collapsed .section-content{ #panel .stat{font-size:10px;color:var(--muted);margin-top:6px} /* Viewport */ -#viewport{border-radius:var(--rad);box-shadow:0 8px 32px rgba(0,0,0,.45);flex-shrink:0;max-width:100%;overflow:hidden;background:#fff} +#viewport{border:0 solid #1e293b;border-radius:var(--rad);box-shadow:0 8px 32px rgba(0,0,0,.45);flex-shrink:0;max-width:100%;overflow:hidden;background:#fff;display:flex;flex-direction:column;transition:width .3s ease,border-radius .3s ease,border-width .3s ease,box-shadow .3s ease} #viewport.desktop{width:100%;max-width:1386px;height:780px} #viewport.mobile{width:390px;height:780px;border-radius:28px;border:3px solid #1e293b;box-shadow:0 8px 32px rgba(0,0,0,.5),inset 0 0 0 1px #0f172a;display:flex;flex-direction:column} -#viewport.mobile #preview-frame{flex:1;min-height:0} -#viewport.mobile::before{content:'';display:block;height:24px;background:#1e293b;flex-shrink:0} -#preview-frame{width:100%;height:100%;border:none;display:block;background:#fff} +#viewport::before{content:'';display:block;height:0;background:#1e293b;flex-shrink:0;transition:height .3s ease} +#viewport.mobile::before{height:24px} +#preview-frame{width:100%;height:100%;flex:1;min-height:0;border:none;display:block;background:#fff} #viewport.desktop #preview-frame{border-radius:var(--rad)} /* Loading */ @@ -171,7 +170,7 @@ section.collapsed .section-content{ .message code{background:rgba(0,0,0,0.12);padding:1px 6px;border-radius:3px} /* Scrollbar — neutral gray, consistent across all browsers */ -html,body,#preview-area,#panel-body,#sec-params .section-content{ +html,body,#preview-area,#panel-body,#sec-params .section-content-inner{ scrollbar-width:thin; scrollbar-color:rgba(107,125,153,.25) transparent; } @@ -179,30 +178,30 @@ html,body,#preview-area,#panel-body,#sec-params .section-content{ -ms-overflow-style:-ms-autohiding-scrollbar; } #preview-area::-webkit-scrollbar, -#sec-params .section-content::-webkit-scrollbar, +#sec-params .section-content-inner::-webkit-scrollbar, #panel-body::-webkit-scrollbar { width:6px; height:6px } #preview-area::-webkit-scrollbar-track, -#sec-params .section-content::-webkit-scrollbar-track, +#sec-params .section-content-inner::-webkit-scrollbar-track, #panel-body::-webkit-scrollbar-track { background:transparent } #preview-area::-webkit-scrollbar-thumb, -#sec-params .section-content::-webkit-scrollbar-thumb, +#sec-params .section-content-inner::-webkit-scrollbar-thumb, #panel-body::-webkit-scrollbar-thumb { background-color:rgba(107,125,153,.25); border-radius:3px; border:1px solid rgba(255,255,255,.06); } #preview-area::-webkit-scrollbar-thumb:hover, -#sec-params .section-content::-webkit-scrollbar-thumb:hover, +#sec-params .section-content-inner::-webkit-scrollbar-thumb:hover, #panel-body::-webkit-scrollbar-thumb:hover { background-color:rgba(107,125,153,.45) } #preview-area::-webkit-scrollbar-corner, -#sec-params .section-content::-webkit-scrollbar-corner, +#sec-params .section-content-inner::-webkit-scrollbar-corner, #panel-body::-webkit-scrollbar-corner { background:transparent } @media(max-width:700px){ #panel{--panel-w:50vw;margin-top:6px;margin-bottom:6px;margin-right:6px} #preview-area{padding:12px} } -@media(prefers-reduced-motion:reduce){#panel,#panel-handle svg{transition:none}} +@media(prefers-reduced-motion:reduce){#panel,#panel-handle svg,.section-content,.section-chevron,#viewport,#viewport::before{transition:none}} @@ -237,10 +236,6 @@ html,body,#preview-area,#panel-body,#sec-params .section-content{ - keys: d/m   ←→ tab   ↑↓ select   p toggle panel @@ -270,15 +265,17 @@ html,body,#preview-area,#panel-body,#sec-params .section-content{
-
-
Type
-
-
+
+
+
Type
+
-
+
+
+
Description
+
-
+
+
-
-
Description
-
-
-
-
@@ -288,7 +285,9 @@ html,body,#preview-area,#panel-body,#sec-params .section-content{
-
-
+
+
-
+
@@ -298,14 +297,15 @@ html,body,#preview-area,#panel-body,#sec-params .section-content{
-
-
+
+
-
+
-