pandorga 1.6.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/_layouts/articles.html +19 -3
- data/assets/css/ledger/writing.css +4 -1
- data/lib/pandorga/version.rb +1 -1
- data/scripts/test/test-hydrate-reserve.rb +5 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5686edc300ca78ccb310e5f59909212720c54656998508c697f56e2689e4c21b
|
|
4
|
+
data.tar.gz: 8b6a24524c80d7e9917c784d6230016406fc5e2791f5349ca09aa509ef650fd3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c649b33b2fa0afdc8f93c3558a9e07ba8d56f18e4dff63064d9eecdca0701587c7d64fcb030ddcfc51f71f6169ba3ef8745e1c555ad8cbcc10215baf7a82d81a
|
|
7
|
+
data.tar.gz: 79ad62fc9e7cfca6a70416fed7865ce1a4c70be646c05262ad2fe37579f4281b0ad4eaf1a5732b8fb70879c2269759b566750a6b49ee7e4f6dda19f36e282195
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.6.1] — 2026-10-10
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- The articles featured slot reserved 16rem whenever it was empty, so page 2
|
|
8
|
+
and later kept a blank band between the header rule and the filter. The
|
|
9
|
+
reserve now lasts only until the listing decides. A page with no specimen
|
|
10
|
+
collapses that slot.
|
|
11
|
+
|
|
12
|
+
No `pandorga:` config keys were added or renamed.
|
|
13
|
+
|
|
3
14
|
## [1.6.0] — 2026-10-10
|
|
4
15
|
|
|
5
16
|
### Added
|
data/_layouts/articles.html
CHANGED
|
@@ -30,7 +30,16 @@ layout: shell
|
|
|
30
30
|
image column, and one that reserves space for a picture that does not
|
|
31
31
|
exist is worse than no panel at all.
|
|
32
32
|
{%- endcomment -%}
|
|
33
|
-
<div id="articles-lead"></div>
|
|
33
|
+
<div id="articles-lead" class="is-pending"></div>
|
|
34
|
+
<script>
|
|
35
|
+
(function () {
|
|
36
|
+
var page = parseInt(new URLSearchParams(window.location.search).get('page') || '1', 10);
|
|
37
|
+
var lead = document.getElementById('articles-lead');
|
|
38
|
+
if (!lead || !(page > 1)) return;
|
|
39
|
+
lead.classList.remove('is-pending');
|
|
40
|
+
lead.hidden = true;
|
|
41
|
+
})();
|
|
42
|
+
</script>
|
|
34
43
|
|
|
35
44
|
<div class="writing-body">
|
|
36
45
|
|
|
@@ -259,7 +268,11 @@ layout: shell
|
|
|
259
268
|
function renderListing(state) {
|
|
260
269
|
Array.from(grid.querySelectorAll('[data-dynamic-article]')).forEach(function (el) { el.remove(); });
|
|
261
270
|
if (emptyState) emptyState.remove();
|
|
262
|
-
if (leadRoot)
|
|
271
|
+
if (leadRoot) {
|
|
272
|
+
leadRoot.classList.remove('is-pending');
|
|
273
|
+
leadRoot.innerHTML = '';
|
|
274
|
+
leadRoot.hidden = true;
|
|
275
|
+
}
|
|
263
276
|
|
|
264
277
|
var visible = visibleArticles(state);
|
|
265
278
|
if (orderNote) orderNote.textContent = SORT_LABELS[state.sort] || SORT_LABELS.updated;
|
|
@@ -287,7 +300,10 @@ layout: shell
|
|
|
287
300
|
|
|
288
301
|
var totalPages = Math.max(1, Math.ceil(rest.length / perPage));
|
|
289
302
|
if (currentPage > totalPages) currentPage = totalPages;
|
|
290
|
-
if (currentPage === 1)
|
|
303
|
+
if (currentPage === 1) {
|
|
304
|
+
renderLead(featured);
|
|
305
|
+
if (leadRoot && leadRoot.childElementCount) leadRoot.hidden = false;
|
|
306
|
+
}
|
|
291
307
|
|
|
292
308
|
rest.slice((currentPage - 1) * perPage, currentPage * perPage).forEach(renderRow);
|
|
293
309
|
listing.renderPagination(controls, currentPage, totalPages);
|
|
@@ -297,7 +297,10 @@ html[data-theme="light"] .writing-index .writing-lead-media .ledger-poster {
|
|
|
297
297
|
background: var(--color-surface-card);
|
|
298
298
|
}
|
|
299
299
|
|
|
300
|
-
|
|
300
|
+
/* Hold the featured panel only until the listing decides. A standing
|
|
301
|
+
:empty rule kept this 16rem gap on page 2 and later, where no specimen
|
|
302
|
+
is drawn, between the header rule and the filter. */
|
|
303
|
+
#articles-lead.is-pending:empty {
|
|
301
304
|
min-height: 16rem;
|
|
302
305
|
margin-bottom: var(--space-xl);
|
|
303
306
|
}
|
data/lib/pandorga/version.rb
CHANGED
|
@@ -45,7 +45,11 @@ fail!("tagline is not body size") unless tagline.include?("font-size: var(--type
|
|
|
45
45
|
fail!("hero summary has no reserved box") unless home_css.include?(".home-hero-summary:empty")
|
|
46
46
|
|
|
47
47
|
fail!("articles listing has no row reserve") unless articles.include?("writing-reserve-row")
|
|
48
|
-
fail!("articles lead has no reserved box") unless writing_css.include?("#articles-lead:empty")
|
|
48
|
+
fail!("articles lead has no reserved box") unless writing_css.include?("#articles-lead.is-pending:empty")
|
|
49
|
+
fail!("articles lead reserve stays after the listing decides") if writing_css.match?(/^#articles-lead:empty/m)
|
|
50
|
+
fail!("articles lead is not pending until the listing decides") unless articles.include?('id="articles-lead" class="is-pending"')
|
|
51
|
+
fail!("page 2 does not drop the lead reserve before paint") unless articles.include?("!(page > 1)")
|
|
52
|
+
fail!("listing never clears the lead reserve") unless articles.include?("leadRoot.classList.remove('is-pending')")
|
|
49
53
|
fail!("CV experience has no reserve") unless cv.include?('id="cv-experience-list"') && cv.include?("data-content-reserve")
|
|
50
54
|
fail!("CV summary still ships Loading...") if cv.include?("Loading...")
|
|
51
55
|
fail!("showLoadingState collapses a reserve") unless listing.include?("data-content-reserve")
|