Skip to content

Commit 872a08e

Browse files
committed
Deduplicate photography archive
1 parent 9abdda3 commit 872a08e

5 files changed

Lines changed: 39 additions & 5 deletions

File tree

docs/agent/photography.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Photography should feel like an immersive portfolio, not a blog article with a p
2020
- Dates should appear once per card and use semantic `<time datetime="...">` where relevant.
2121
- EXIF details should be minimal on the list page; details belong on the detail page.
2222
- Card heights should feel stable on mobile and desktop.
23+
- Selected works should not be repeated again at the top of the archive; the archive begins after the selected set.
2324

2425
## Detail Page Rules
2526

docs/uiux-20-round-log.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,38 @@
22

33
This log tracks the repeated screenshot-led UI/UX improvement rounds for Joey's Notes.
44

5+
## Round 60 - 2026-07-10 - Photography Archive Deduplication
6+
7+
Evidence:
8+
9+
- Browser review: `/photography/` selected and archive sections at `768x1024`.
10+
- Baseline screenshot: `/tmp/oiahoon-uiux-rounds/round59-after-photo-archive-ipad.png`.
11+
- Baseline measurement: all six selected works appeared again as the first six of `109` archive cards.
12+
13+
Findings:
14+
15+
- Repeating the same works makes the archive opening feel longer without increasing discovery.
16+
- The archive heading said `2025` because it mirrored the full collection, even though the selected set already owned that opening.
17+
- The two sections should have distinct jobs: curation first, chronological continuation second.
18+
19+
Changes:
20+
21+
- Started the archive after the six selected works, reducing it from `109` to `103` unique continuation cards.
22+
- Derived the archive heading year from the first remaining archive item.
23+
- Added the no-duplication rule to the photography agent context for future work.
24+
- Bumped the app version to `0.0.61`.
25+
26+
Validation plan:
27+
28+
Results:
29+
30+
- Browser verification: selected and archive title sets have zero overlap.
31+
- Browser verification: the archive begins with the next chronological work and its heading year matches that work.
32+
- `npm run check:content-health` passed.
33+
- `npm run build` passed.
34+
- `git diff --check` passed.
35+
- `npm run check:security` reports the known `4 vulnerabilities (3 low, 1 moderate)`; the full fix requires a breaking Astro upgrade.
36+
537
## Round 59 - 2026-07-10 - Photography Archive Focus
638

739
Evidence:

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "joey-notes-astro",
33
"type": "module",
4-
"version": "0.0.60",
4+
"version": "0.0.61",
55
"scripts": {
66
"dev": "astro dev",
77
"build": "astro build",

src/pages/photography.astro

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import ProgressiveImage from '../components/ProgressiveImage.astro';
66
const photos = await getCollection('posts', ({ data }) => !data.draft && data.type === 'photography');
77
const sorted = photos.sort((a, b) => new Date(b.data.date).getTime() - new Date(a.data.date).getTime());
88
const selected = sorted.slice(0, 6);
9-
const archive = sorted.slice(0);
9+
const archive = sorted.slice(selected.length);
1010
const filters = [
1111
{ label: 'All', value: 'all' },
1212
{ label: 'Cafe', value: 'cafe' },
@@ -17,6 +17,7 @@ const filters = [
1717
{ label: 'Film', value: 'film' },
1818
] as const;
1919
const years = [...new Set(sorted.map((photo) => photo.data.date.getFullYear()))].sort((a, b) => b - a);
20+
const archiveStartYear = archive[0]?.data.date.getFullYear() ?? years[0];
2021
2122
function firstImage(photo: typeof sorted[number]) {
2223
return photo.data.gallery?.[0];
@@ -130,7 +131,7 @@ function filterGroups(photo: typeof sorted[number]) {
130131
<div class="photo-section__head">
131132
<div>
132133
<p class="eyebrow">Archive</p>
133-
<h2 id="archive-title">Archive · {years[0]}</h2>
134+
<h2 id="archive-title">Archive · {archiveStartYear}</h2>
134135
</div>
135136
</div>
136137

0 commit comments

Comments
 (0)