fix(admin): library row button renamed 'Scan' -> 'Force Rescan', per owner
Owner ruling that closed the scan-semantics discussion: the code is
correct (per-library scan IS a force scan — hx-vals force:true since
706be09d), but the label hid that. Now the naming invariant holds
everywhere: anything with Force/Rescan in its name re-reads everything
in its scope; plain 'Scan' only exists at folder scope ('Scan this
folder', shallow) and in auto mode. Book-level Rescan verified as the
per-item force path (extractMetadata re-reads sidecars/tags regardless
of file size; recomputeHashInfo follows) — it is the documented answer
to 'I changed this book's sidecar'.
Glossary Scan entry replaced with Force Rescan (old label kept in also:),
scanning.md table + prose pick up the new label. Generated file
regenerated with the Dockerfile-pinned templ version from inside
templates/ so the diff is exactly the label strings.
This commit is contained in:
1 parent
ed550fa914
commit
b3a8cbd582
4 files changed
+9
-7
No files matched your search
@@ -36,7 +36,7 @@ Every scan is one of two kinds:
|
|||||||
| Control | Where | Kind | Scope |
|
| Control | Where | Kind | Scope |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| **Force Rescan All Libraries** | Admin dashboard → Quick Actions | Force | Every library |
|
| **Force Rescan All Libraries** | Admin dashboard → Quick Actions | Force | Every library |
|
||||||
| **Scan** (library row) | Admin → Libraries | Force | That library |
|
| **Force Rescan** (library row) | Admin → Libraries | Force | That library |
|
||||||
| **Scan this folder** (folder-row icon) | Admin → Libraries → a library's panel | Shallow | That folder's subtree |
|
| **Scan this folder** (folder-row icon) | Admin → Libraries → a library's panel | Shallow | That folder's subtree |
|
||||||
| **Auto-Scan** + **Scan Interval (seconds)** | Admin → Settings → Scanning | Shallow | Every library |
|
| **Auto-Scan** + **Scan Interval (seconds)** | Admin → Settings → Scanning | Shallow | Every library |
|
||||||
| **Retry** / **Retry all** | Admin → Libraries → Processing Issues | Per-item | Failed items only |
|
| **Retry** / **Retry all** | Admin → Libraries → Processing Issues | Per-item | Failed items only |
|
||||||
@@ -48,8 +48,8 @@ The details behind the table:
|
|||||||
force scan job for each. Libraries that already have a scan running are
|
force scan job for each. Libraries that already have a scan running are
|
||||||
left alone — the button reports which libraries started and which were
|
left alone — the button reports which libraries started and which were
|
||||||
skipped because a scan was already in flight.
|
skipped because a scan was already in flight.
|
||||||
- **Scan** on a library row is the same force rescan, scoped to that one
|
- **Force Rescan** on a library row is the same force rescan, scoped to
|
||||||
library. It shares the dashboard button's semantics exactly.
|
that one library. It shares the dashboard button's semantics exactly.
|
||||||
- **Scan this folder** is the only folder-sized scan, and the only shallow
|
- **Scan this folder** is the only folder-sized scan, and the only shallow
|
||||||
one an admin triggers by hand: unchanged files are skipped, and only
|
one an admin triggers by hand: unchanged files are skipped, and only
|
||||||
that folder's subtree is walked. Because a partial scan can't vouch for
|
that folder's subtree is walked. Because a partial scan can't vouch for
|
||||||
|
|||||||
@@ -218,9 +218,11 @@ does: Force-rescans every library — re-reads each file, re-extracts metadata w
|
|||||||
also: Scan All Libraries
|
also: Scan All Libraries
|
||||||
note: renamed 2026-11-02 — the old label under-promised a heavy operation
|
note: renamed 2026-11-02 — the old label under-promised a heavy operation
|
||||||
|
|
||||||
label: Scan
|
label: Force Rescan
|
||||||
where: Admin → Libraries → a library's card row
|
where: Admin → Libraries → a library's card row
|
||||||
does: Force-rescans that one library (same semantics as Force Rescan All Libraries, scoped to a single library).
|
does: Force-rescans that one library — re-reads and re-extracts every file in it. Same semantics as Force Rescan All Libraries, scoped to a single library.
|
||||||
|
also: Scan
|
||||||
|
note: renamed 2026-11-02 per owner — the label now carries the force semantics instead of hiding them
|
||||||
|
|
||||||
label: Scan this folder
|
label: Scan this folder
|
||||||
where: Admin → Libraries → a library's panel → a folder row
|
where: Admin → Libraries → a library's panel → a folder row
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ templ LibraryList(user User, libraries []LibraryData, users []User) {
|
|||||||
class="btn btn-secondary text-xs px-3 py-1.5"
|
class="btn btn-secondary text-xs px-3 py-1.5"
|
||||||
>
|
>
|
||||||
@Icon("refresh", "h-4 w-4")
|
@Icon("refresh", "h-4 w-4")
|
||||||
Scan
|
Force Rescan
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
data-lib-id={ library.ID }
|
data-lib-id={ library.ID }
|
||||||
|
|||||||
@@ -397,7 +397,7 @@ func LibraryList(user User, libraries []LibraryData, users []User) templ.Compone
|
|||||||
if templ_7745c5c3_Err != nil {
|
if templ_7745c5c3_Err != nil {
|
||||||
return templ_7745c5c3_Err
|
return templ_7745c5c3_Err
|
||||||
}
|
}
|
||||||
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "Scan</button> <button data-lib-id=\"")
|
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "Force Rescan</button> <button data-lib-id=\"")
|
||||||
if templ_7745c5c3_Err != nil {
|
if templ_7745c5c3_Err != nil {
|
||||||
return templ_7745c5c3_Err
|
return templ_7745c5c3_Err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user