@natjswenson/devlog 0.5.1 → 0.5.2
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.
- package/lib/publish_entry.mjs +23 -5
- package/package.json +1 -1
package/lib/publish_entry.mjs
CHANGED
|
@@ -7,12 +7,30 @@ import { join } from 'node:path';
|
|
|
7
7
|
import { RE_PROJECT_KEY, RE_FINAL_RELEASE, atomicWriteJSON } from './core.mjs';
|
|
8
8
|
import { parseFrontmatter } from './lint_post.mjs';
|
|
9
9
|
|
|
10
|
-
// Newest-first by date; ties
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
10
|
+
// Newest-first by date; same-date ties break by version, highest first.
|
|
11
|
+
// Without the tiebreak, several releases cut on one day render oldest-on-top
|
|
12
|
+
// in the feed (stable sort keeps insertion order), burying the newest post
|
|
13
|
+
// under its predecessors. Date still wins overall because a backported tag
|
|
14
|
+
// (v1.9.1 tagged after v2.0.0) must sort by when it was released.
|
|
15
|
+
function versionNums(entry) {
|
|
16
|
+
const m = /^v(\d+(?:\.\d+)*)$/.exec(entry.version || '');
|
|
17
|
+
return m ? m[1].split('.').map(Number) : null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function compareVersionsDesc(a, b) {
|
|
21
|
+
const va = versionNums(a);
|
|
22
|
+
const vb = versionNums(b);
|
|
23
|
+
if (!va || !vb) return 0; // legacy rows without a version keep their order
|
|
24
|
+
for (let i = 0; i < Math.max(va.length, vb.length); i++) {
|
|
25
|
+
const d = (vb[i] ?? 0) - (va[i] ?? 0);
|
|
26
|
+
if (d !== 0) return d;
|
|
27
|
+
}
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
14
31
|
function sortEntries(entries) {
|
|
15
|
-
return entries.slice().sort((a, b) =>
|
|
32
|
+
return entries.slice().sort((a, b) =>
|
|
33
|
+
String(b.date).localeCompare(String(a.date)) || compareVersionsDesc(a, b));
|
|
16
34
|
}
|
|
17
35
|
|
|
18
36
|
export function publishEntry({ cloneDir, project, version, entryPath }) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@natjswenson/devlog",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Release dev log generator \u2014 Claude Code skill + preview app for publishing version-release dev logs, written in your voice, to your site",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Nate Swenson",
|