fix: join recognized photo people with ampersands [skip ci]
This commit is contained in:
@@ -29,4 +29,4 @@ CMD ["python", "-m", "uvicorn", "pigway_frame_flow.main:app", "--host", "0.0.0.0
|
||||
ARG BUILD_COMMIT
|
||||
ARG BUILD_TIME
|
||||
ENV BUILD_COMMIT=$BUILD_COMMIT BUILD_TIME=$BUILD_TIME
|
||||
LABEL org.opencontainers.image.title="Pigway Frame Flow" org.opencontainers.image.version="0.1.12" org.opencontainers.image.revision=$BUILD_COMMIT
|
||||
LABEL org.opencontainers.image.title="Pigway Frame Flow" org.opencontainers.image.version="0.1.13" org.opencontainers.image.revision=$BUILD_COMMIT
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
# v0.1.13
|
||||
|
||||
照片底部同时显示所有已识别且已命名的人物,人物之间使用 ` & `;日期、人物、主题、地点及文件名之间继续使用 ` · `。例如 `2026-10-18 · Alice & Bob · Family · one.jpg`。人物仍来自 Photos 实际相册归属,未命名人物不显示;历史生成图片不自动重绘。
|
||||
@@ -126,7 +126,7 @@ def create_app(settings=None, start_worker=True):
|
||||
app = FastAPI(
|
||||
title="Pigway Frame Flow API",
|
||||
docs_url=None,
|
||||
version="0.1.12",
|
||||
version="0.1.13",
|
||||
lifespan=lifespan,
|
||||
responses=error_responses,
|
||||
)
|
||||
@@ -1032,7 +1032,7 @@ def create_app(settings=None, start_worker=True):
|
||||
supports_upload=True,
|
||||
),
|
||||
],
|
||||
version="0.1.12",
|
||||
version="0.1.13",
|
||||
mock=settings.mock,
|
||||
write_enabled=settings.write_enabled,
|
||||
api_key_configured=bool(settings.api_key)
|
||||
|
||||
@@ -366,7 +366,7 @@ class SettingsView(BaseModel):
|
||||
|
||||
class Health(BaseModel):
|
||||
status: str
|
||||
version: str = "0.1.12"
|
||||
version: str = "0.1.13"
|
||||
|
||||
|
||||
class Readiness(BaseModel):
|
||||
@@ -396,7 +396,7 @@ class RestoreRequest(StrictModel):
|
||||
|
||||
class Version(BaseModel):
|
||||
product: str = "Pigway Frame Flow"
|
||||
version: str = "0.1.12"
|
||||
version: str = "0.1.13"
|
||||
api_version: str = "v1"
|
||||
commit: str = "development"
|
||||
build_time: str = "unknown"
|
||||
|
||||
@@ -623,7 +623,7 @@ class PhotoSources:
|
||||
caption = dict(item.get("caption") or {})
|
||||
caption["filename"] = item["name"]
|
||||
try:
|
||||
caption["people"] = " · ".join(
|
||||
caption["people"] = " & ".join(
|
||||
self.synology.item_people(item["id"], space=source.people_space)
|
||||
)
|
||||
except FlowError:
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover"><meta name="color-scheme" content="light dark"><title>Pigway Frame Flow</title><link rel="stylesheet" href="/ui/style.css"></head>
|
||||
<body><aside class="sidebar"><a class="brand" href="/"><span class="brand-icon">F<span>↗</span></span><span>Frame Flow<small>Pigway · Smart Frame Automation</small></span></a><nav id="nav"></nav><div class="sidebar-bottom"><small>Version 0.1.12</small></div></aside><div class="workspace"><header><div><span class="eyebrow">PIGWAY FRAME FLOW</span><h1 id="page-title"></h1></div><div class="toolbar"><select id="device" aria-label="Device"></select><button id="lang" class="icon-button" aria-label="Change language">EN</button><button id="theme" class="icon-button" aria-label="Change theme">◐</button></div></header><main id="main"></main><footer id="footer"></footer></div><div id="toast" role="status" aria-live="polite"></div><dialog id="modal"><div id="modal-content"></div></dialog><script src="/ui/i18n.js?v=restore-reference-v0112"></script><script src="/ui/features.js?v=restore-reference-v0112"></script><script src="/ui/extensions.js?v=restore-reference-v0112"></script><script src="/ui/app.js?v=restore-reference-v0112"></script></body></html>
|
||||
<body><aside class="sidebar"><a class="brand" href="/"><span class="brand-icon">F<span>↗</span></span><span>Frame Flow<small>Pigway · Smart Frame Automation</small></span></a><nav id="nav"></nav><div class="sidebar-bottom"><small>Version 0.1.13</small></div></aside><div class="workspace"><header><div><span class="eyebrow">PIGWAY FRAME FLOW</span><h1 id="page-title"></h1></div><div class="toolbar"><select id="device" aria-label="Device"></select><button id="lang" class="icon-button" aria-label="Change language">EN</button><button id="theme" class="icon-button" aria-label="Change theme">◐</button></div></header><main id="main"></main><footer id="footer"></footer></div><div id="toast" role="status" aria-live="polite"></div><dialog id="modal"><div id="modal-content"></div></dialog><script src="/ui/i18n.js?v=people-caption-v0113"></script><script src="/ui/features.js?v=people-caption-v0113"></script><script src="/ui/extensions.js?v=people-caption-v0113"></script><script src="/ui/app.js?v=people-caption-v0113"></script></body></html>
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "pigway-frame-flow"
|
||||
version = "0.1.12"
|
||||
version = "0.1.13"
|
||||
requires-python = ">=3.12"
|
||||
dependencies = ["paho-mqtt==2.1.0", "python-dateutil==2.9.0.post0", "fastapi==0.142.2", "uvicorn==0.54.0", "pillow==12.3.0", "requests==2.34.2", "croniter==6.2.4", "python-multipart==0.0.32", "pyyaml==6.0.3"]
|
||||
[project.optional-dependencies]
|
||||
|
||||
@@ -151,7 +151,7 @@ def release(lock):
|
||||
assert dst.execute("pragma quick_check").fetchone()[0] == "ok"
|
||||
base = "pigway-frame-flow:release-base-" + commit[:12]
|
||||
run("docker", "image", "tag", before["Image"], base)
|
||||
image = "pigway-frame-flow:0.1.12-" + commit[:12]
|
||||
image = "pigway-frame-flow:0.1.13-" + commit[:12]
|
||||
try:
|
||||
run(
|
||||
"docker",
|
||||
|
||||
@@ -24,12 +24,12 @@ def test_watermark_includes_filename_and_recognized_people(service, monkeypatch)
|
||||
"date": "2026-10-17",
|
||||
"title": "Family",
|
||||
"filename": "one.jpg",
|
||||
"people": "Alice · Bob",
|
||||
"people": "Alice & Bob",
|
||||
},
|
||||
service.renderer.font,
|
||||
size=(1600, 1200),
|
||||
)
|
||||
assert drawn == ["2026-10-17 · Alice · Bob · Family · one.jpg"]
|
||||
assert drawn == ["2026-10-17 · Alice & Bob · Family · one.jpg"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("size", [(1600, 1200), (1200, 1600)])
|
||||
|
||||
@@ -134,7 +134,7 @@ def test_api_caption_keeps_filename_and_folder_with_optional_people(
|
||||
assert caption["date"] == "2026-10-17"
|
||||
assert caption["title"] == "Family"
|
||||
assert caption["filename"] == "one.jpg"
|
||||
assert caption.get("people", "") == ("Alice · Bob" if labels_available else "")
|
||||
assert caption.get("people", "") == ("Alice & Bob" if labels_available else "")
|
||||
|
||||
|
||||
def test_source_without_mount_pagination_scope_and_session(
|
||||
|
||||
Reference in New Issue
Block a user