pandorga 1.3.9 → 1.3.10
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 +8 -0
- data/_layouts/home.html +64 -2
- data/assets/css/ledger/home.css +7 -6
- data/lib/pandorga/commands/new.rb +1 -1
- data/lib/pandorga/version.rb +1 -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: 6e1b4a81b0f15cc63c471a6155e9461c404a7d4e2b895943d5e39c5377b1dd0d
|
|
4
|
+
data.tar.gz: a31bf308547ba1420c975fbb456613df770ce9a133e7a98156ef80be28ef0cee
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a198e7195cbe489baefc18341cfe8b6a255b07f1e02aa3b11b44079334eef29ab0a85807f9ff617aeb5d951ba2cb7f776776613e90ee359587089ce1c1193640
|
|
7
|
+
data.tar.gz: 2256c6c0c0fc51da5846b7f97c0937b3ac0b48dd2945fe6a42d6973717a750fa6b5f8a843a392fedd600a4360e8ce6257bb230caec0a1659339e3d7f69430036
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.3.10] — 2026-10-06
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- Home specimen height is measured from the tallest project and locked, so
|
|
8
|
+
swapping projects no longer resizes the bench or the inventory; taglines
|
|
9
|
+
and wrapping chips still fit without clipping
|
|
10
|
+
|
|
3
11
|
## [1.3.9] — 2026-10-06
|
|
4
12
|
|
|
5
13
|
### Changed
|
data/_layouts/home.html
CHANGED
|
@@ -247,8 +247,9 @@ layout: shell
|
|
|
247
247
|
return 0;
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
-
/*
|
|
251
|
-
|
|
250
|
+
/* Lock height to the tallest project so swapping never moves the
|
|
251
|
+
inventory. Remeasure on resize when the specimen column width
|
|
252
|
+
changes (chip wrap / plate width). */
|
|
252
253
|
function paintSpecimen(entry) {
|
|
253
254
|
specimenSlot.innerHTML = '';
|
|
254
255
|
specimenSlot.appendChild(runtime.renderProjectSpecimen(asItem(entry), {
|
|
@@ -259,6 +260,53 @@ layout: shell
|
|
|
259
260
|
}));
|
|
260
261
|
}
|
|
261
262
|
|
|
263
|
+
function measureTallestSpecimen() {
|
|
264
|
+
var bench = specimenSlot.closest('.home-projects-bench');
|
|
265
|
+
if (!bench) return 0;
|
|
266
|
+
var width = specimenSlot.getBoundingClientRect().width;
|
|
267
|
+
if (width < 1) return 0;
|
|
268
|
+
|
|
269
|
+
var probe = document.createElement('div');
|
|
270
|
+
probe.setAttribute('aria-hidden', 'true');
|
|
271
|
+
probe.style.cssText = [
|
|
272
|
+
'position:absolute',
|
|
273
|
+
'visibility:hidden',
|
|
274
|
+
'pointer-events:none',
|
|
275
|
+
'left:0',
|
|
276
|
+
'top:0',
|
|
277
|
+
'width:' + Math.round(width) + 'px',
|
|
278
|
+
'height:auto',
|
|
279
|
+
'overflow:visible'
|
|
280
|
+
].join(';');
|
|
281
|
+
bench.appendChild(probe);
|
|
282
|
+
|
|
283
|
+
var max = 0;
|
|
284
|
+
portfolio.forEach(function (entry, i) {
|
|
285
|
+
probe.innerHTML = '';
|
|
286
|
+
var card = runtime.renderProjectSpecimen(asItem(entry), {
|
|
287
|
+
href: entry.url || runtime.projectUrl(entry.slug),
|
|
288
|
+
tagHref: systemTagHref,
|
|
289
|
+
folio: i + 1,
|
|
290
|
+
openLabel: 'Open project'
|
|
291
|
+
});
|
|
292
|
+
card.style.height = 'auto';
|
|
293
|
+
card.style.minHeight = '0';
|
|
294
|
+
probe.appendChild(card);
|
|
295
|
+
max = Math.max(max, Math.ceil(card.getBoundingClientRect().height));
|
|
296
|
+
});
|
|
297
|
+
probe.remove();
|
|
298
|
+
return max;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
function lockSpecimenHeight() {
|
|
302
|
+
var bench = specimenSlot.closest('.home-projects-bench');
|
|
303
|
+
if (!bench) return;
|
|
304
|
+
var tallest = measureTallestSpecimen();
|
|
305
|
+
if (tallest > 0) {
|
|
306
|
+
bench.style.setProperty('--home-specimen-height', tallest + 'px');
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
262
310
|
function select(slug) {
|
|
263
311
|
if (selectedSlug === slug) return;
|
|
264
312
|
selectedSlug = slug;
|
|
@@ -293,8 +341,22 @@ layout: shell
|
|
|
293
341
|
});
|
|
294
342
|
}
|
|
295
343
|
|
|
344
|
+
lockSpecimenHeight();
|
|
296
345
|
paintSpecimen(entryBySlug(selectedSlug));
|
|
297
346
|
paintInventory();
|
|
347
|
+
|
|
348
|
+
var resizeTimer = null;
|
|
349
|
+
var lastMeasureWidth = Math.round(specimenSlot.getBoundingClientRect().width);
|
|
350
|
+
window.addEventListener('resize', function () {
|
|
351
|
+
window.clearTimeout(resizeTimer);
|
|
352
|
+
resizeTimer = window.setTimeout(function () {
|
|
353
|
+
var nextWidth = Math.round(specimenSlot.getBoundingClientRect().width);
|
|
354
|
+
if (nextWidth === lastMeasureWidth) return;
|
|
355
|
+
lastMeasureWidth = nextWidth;
|
|
356
|
+
lockSpecimenHeight();
|
|
357
|
+
paintSpecimen(entryBySlug(selectedSlug));
|
|
358
|
+
}, 120);
|
|
359
|
+
});
|
|
298
360
|
return;
|
|
299
361
|
}
|
|
300
362
|
|
data/assets/css/ledger/home.css
CHANGED
|
@@ -944,9 +944,11 @@ html[data-theme="light"] .home-hero-plate {
|
|
|
944
944
|
}
|
|
945
945
|
|
|
946
946
|
/* ── Engineering artifacts: specimen bench ──
|
|
947
|
-
A specimen card beside a filing rack of project cards.
|
|
948
|
-
|
|
949
|
-
|
|
947
|
+
A specimen card beside a filing rack of project cards. Height is locked to
|
|
948
|
+
the tallest project (home.html measures once, then sets
|
|
949
|
+
`--home-specimen-height`), so swapping projects never resizes the band or
|
|
950
|
+
the inventory. Taglines stay full length and chips wrap whole pills like
|
|
951
|
+
the projects index; spare height parks chips and the foot on the floor.
|
|
950
952
|
Every plate is 16:9, the ratio the thumbnails are drawn at, with the title
|
|
951
953
|
below it. From 900px the specimen is half the band and the rack a narrower
|
|
952
954
|
column beside it, the rest left blank. Below 900px the rack is an icon strip
|
|
@@ -966,8 +968,7 @@ html[data-theme="light"] .home-hero-plate {
|
|
|
966
968
|
}
|
|
967
969
|
|
|
968
970
|
.home-project-specimen {
|
|
969
|
-
|
|
970
|
-
height: auto;
|
|
971
|
+
height: var(--home-specimen-height);
|
|
971
972
|
overflow: hidden;
|
|
972
973
|
gap: var(--space-sm);
|
|
973
974
|
padding: var(--space-md);
|
|
@@ -1266,7 +1267,7 @@ html[data-theme="light"] .home-hero-plate {
|
|
|
1266
1267
|
|
|
1267
1268
|
@media (min-width: 900px) {
|
|
1268
1269
|
|
|
1269
|
-
/*
|
|
1270
|
+
/* Desktop fallback before JS measures the tallest specimen. */
|
|
1270
1271
|
.home-projects-bench {
|
|
1271
1272
|
--home-specimen-height: 36rem;
|
|
1272
1273
|
display: grid;
|
|
@@ -24,7 +24,7 @@ module Pandorga
|
|
|
24
24
|
|
|
25
25
|
gem "pandorga", "~> 1.3"
|
|
26
26
|
# Local checkout: gem "pandorga", path: "../pandorga"
|
|
27
|
-
# GitHub tag: gem "pandorga", github: "alexandrelheinen/pandorga", tag: "v1.3.
|
|
27
|
+
# GitHub tag: gem "pandorga", github: "alexandrelheinen/pandorga", tag: "v1.3.10"
|
|
28
28
|
gem "csv"
|
|
29
29
|
gem "base64"
|
|
30
30
|
RUBY
|
data/lib/pandorga/version.rb
CHANGED